采用线性缓冲区和直接寻址方法的FIR滤波器设计.docx
- 文档编号:9054231
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:17
- 大小:275.14KB
采用线性缓冲区和直接寻址方法的FIR滤波器设计.docx
《采用线性缓冲区和直接寻址方法的FIR滤波器设计.docx》由会员分享,可在线阅读,更多相关《采用线性缓冲区和直接寻址方法的FIR滤波器设计.docx(17页珍藏版)》请在冰豆网上搜索。
采用线性缓冲区和直接寻址方法的FIR滤波器设计
采用线性缓冲区和直接寻址方法的FIR滤波器设计
学生姓名:
张帅指导老师:
邓晓红
摘要有限长单位冲激响应(FIR)数字滤波器可以在幅度特性随意设计的同时保证精确、严格的线性相位特性,FIR滤波器是肯定的稳定滤波器并且没有因果性困难。
本次设计采用线性缓冲区和直接寻址方法实现一个FIR滤波器设计,将产生的一个混叠输入波形绘制其时域波形后做傅立叶变换,得出一个频谱图,然后在TMS320C54X数字信号处理器中运行和调试程序编写程序,绘制滤波后的时域波形和频谱图,最后对比分析滤波前后的波形图。
关键词线性缓冲区;直接寻址;FIR滤波器;TMS320C54X
1引言
在信号处理过程中经常有额外的噪声,为得到所需的正确信号,一般都会采用滤波去噪来滤除没用的噪声,一般是从时域和频域两方面对信号进行滤波以保证得到所需信号。
本次课程设计采用线性缓冲区和直接寻址的方法实现FIR滤波器,并在TMS320C54X数字信号处理器上调试编写程序,完成实验。
1.1课程设计的目的
(1)熟悉和掌握FIR滤波器的设计和应用;
(2)掌握采用线性缓冲区和直接寻址的方法实现FIR滤波器的设计;
(3)初步熟悉和掌握TMS320C54X数字信号处理器在信号处理中的作用;
1.2课程设计的要求与目的
(1)采用线性缓冲区和直接寻址的方法设计正确合适的FIR滤波器;
(2)掌握TMS320C54X数字信号处理器的基本用法,可利用其进行本次实验;
(3)完成课程设计后按照要求写出详细的课程设计报告书;
1.3设计思路简介
在TMS320C54x系统开发环境CCS(CodeComposerStudio)下对FIR滤波器的DSP实现原理进行讨论。
利用C语言设计相应的滤波器,通过实验仿真,从输入信号和输出信号的时域和频域曲线可看出在DSP上实现的FIR滤波器能完成预定的滤波任务。
2系统开发平台与环境
2.1CCS开发环境
CCS提供了配置、建立、调试、跟踪和分析程序的工具,它便于实时、嵌入式信号处理程序的编制和测试,它能够加速开发进程,提高工作效率。
CCS提供了基本的代码生成工具,它们具有一系列的调试、分析能力。
CCS支持如下图1-1所示的开发周期的所有阶段。
图1-1开发周期的所有阶段
2.2SEED-DEC2812开发实验箱
SEED-DECxxxx系列嵌入式DSP开发板本着模块化、总线型、开放式、系列化的设计思想,采用统一的系统结构、模块结构和机械结构,以多种典型DSP处理器构成具有标准总线和相同物理尺寸的高性能嵌入式DSP开发板。
SEED-DEC2812嵌入式DSP开发板原理框图如图1-2所示:
图1-2DSP开发板原理框图
3FIR滤波器设计过程
3.1FIR滤波器设计总框图
FIR滤波器设计总框图如图3-1所示:
图3-1FIR滤波器设计总框图
3.2FIR滤波器设计的原理
设ai(i=0,1,2,…,N-1)为滤波器的冲激响应,输入信号为x(n),则FIR滤波器的输入输出关系为:
FIR滤波器的结构如图3-2所示:
图3.2FIR滤波器的结构
3.3 FIR滤波器的设计方法
循环缓冲算法:
对于N级的FIR滤波器,在数据存储器中开辟一个称之为滑窗的N个单元的缓冲区,滑窗中存放最新的N个输入样本。
每次输入新的样本时,一新样本改写滑窗中的最老的数据,而滑窗中的其他数据不需要移动。
利用片内BK(循环缓冲区长度)寄存器对滑窗进行间接寻址,环缓冲区地址首位相邻。
下面,以N=5的FIR滤波器循环缓冲区为例,说明循环缓冲区中数据是如何寻址的。
5级循环缓冲区的结构如图3-3所示,顶部为低地址。
图3-3循环缓冲区的结构
当第一次执行完
之后,间接寻址的辅助寄存器
指向x(n-4)。
然后,从I/O口输入数据x(n+1),将原来存放x(n-4)的数据存储单元改写为x(n+1)。
接着,进行第二次乘法累加运算,
,最后
指向x(n-3)。
然后从I/O口输入数据x(n+2),将原来存放x(n-4)的数据存储器单元改写为x(n+2)。
4系统软件设计
4.1程序流程图
程序流程图如图4-1所示:
图4-1程序流程图
4.2仿真设置
(1).fir_filter(Ad_data_signed,hfir,filter_result,ORDER_FIR,DataLong,ROUND_FIR)和adconvover=0处设置断点。
(2).在GraphPropertyDialog中设置StartAddress和DisplayType如图4-1、图4-2、图4-3、图4-4所示:
图4-1
图4-2
图4-3
图4-4
(3).设置实验板输入信号的参数,再运行程序得到仿真图。
4.3仿真图
(1)标准矩形波,频率为300Hz,振幅为800mV。
滤波前的波形如图4-5和图4-6:
图4.5滤波前的时域波形
图4-6滤波前的频域波形
滤波后的时域波形和频域波形如图4-7,4-8所示:
图4-7滤波后的时域波形
图4-8滤波后的频域波形
(2)噪声三角波,频率为400Hz,振幅为800mV。
滤波前的波形如图4-9和图4-10,滤波后的波形如图4-11和图4-12所示。
图4-9滤波前的时域波形
图4-10滤波前的频域波形
图4-11滤波后的时域波形
图4-12滤波后的频域波形
由4-5,4-9时域波形可以看出输入信号是为有一定起伏的方波和三角波,而4-6,4-10得到了相对光滑的方波和三角波,可以确定经过编程得到了采用线性缓冲区和直接寻址方法的FIR滤波器设计,能够完成滤波功能。
6总结
FIR滤波器的设计是数字信号处理技术的基础,也是DSP芯片的重要组成部分。
FIR滤波器性能的好坏直接影响着DSP的运行速度和精度,对现代电子技术的发展起决定性作用,FIR滤波器的设计在以后的一段相当长的时间里将持续主导DSP,而DSP随着电子技术的不断发展,应用领域愈来愈广泛。
这次课程设计实现了一个简单的FIR滤波器的设计,在老师和同学的指导和帮助以及自己上网查找资料,较好的完成了课程设计的任务并达到了理想的目的,在这里我对他们表示感谢。
通过这次课程设计使我对FIR滤波器及TMS320C54x系统有了更深一步的了解,也不断的强化了自己的基础知识。
参考文献
[[1]王金龙.DSP设计与实验教程.机械工业出版社,2007
[2]李利.DSP原理及应用.中国水利水电出版社,2004
[3]刘树棠.数字信号处理.西安交通大学出版社,2008
[4]乔瑞萍、催涛.TMS320C54xDSP原理及应用.西安电子科技大学出版社.2005
[5]戴明桢、周建江.TMS320C54xDSP结构、原理及应用.北京航空航天大学出版社.2006
[6]陶风、罗白玲.DSP基础理论与工程实现.国防工业出版社.2006
[7]张雄伟、陈亮.DSP芯片的原理与开发应用.电子工业出版社.2004
[8]TMS320C54xDSPReferenceSet,Volume1:
CPUandPeripherals(LiteratureNumberSPRU121G).TexasInstrumentIN2001
[9]TMS320C54xCodeComposerStudioHelp(version2).TexasInstrumentsIn.2001
附录:
FIR滤波器源程序
%程序名称:
FIR滤波器的设计
%程序作者:
张帅
/%最后修改日期:
2010-1-8
#include"DSP28_Device.h"
#include"filter.h"
#include"ext_inf.h"
unsignedintDataLong=1024;
unsignedinti,j;
unsignedintk=0;
unsignedshortAd_data[2048];
shortAd_data_signed[2048];
shortfilter_result[1024];
unsignedintconvcount=0;
volatileunsignedintadconvover=0;
interruptvoidISRTimer2(void);
interruptvoidad(void);
voidmain(void)
{
/*初始化系统*/
InitSysCtrl();
/*关中断*/
DINT;
IER=0x0000;
IFR=0x0000;
/*初始化PIE中断*/
InitPieCtrl();
/*初始化PIE中断矢量表*/
InitPieVectTable();
//初始化cputimer
InitCpuTimers();
/*设置中断服务程序入口地址*/
EALLOW;
PieVectTable.TINT2=&ISRTimer2;
PieVectTable.ADCINT=&ad;
EDIS;
/*开中断*/
IER|=M_INT1;//ADC中断
EINT;
ERTM;
/*设置CPU*/
DINT;
ConfigCpuTimer(&CpuTimer2,150,22);
StartCpuTimer2();
/*开中断*/
IER|=M_INT14;
EINT;
InitAdc();
for(;;){
if(adconvover==1){
/*fir滤波处理*/
for(i=0;i Ad_data_signed[i]=(short)(Ad_data[i]-0x5300);fir_filter(Ad_data_signed,hfir,filter_result,ORDER_FIR,DataLong,ROUND_FIR); adconvover=0; } } } interruptvoidad(void) { IFR=0x0000; PieCtrl.PIEACK.all=0xffff; if(adconvover==0){ Ad_data[convcount]=AdcRegs.RESULT0; convcount++; } if(convcount==DataLong){ convcount=0; adconvover=1;//接满标志 } } interruptvoidISRTimer2(void) { AdcRegs.ADC_ST_FLAG.bit.INT_SEQ1_CLR=1; AdcRegs.ADCTRL2.bit.SOC_SEQ1=1; } //程序名称: FIR_filter.c //程序作者: 张帅 //最后修改日期: 2010-1-8 //constshortx[]: 输入信号的缓冲数组,short类型 //constshorth[]: 滤波器的系数数组,short类型 //shorty[]: 输出信号的缓冲数组,short类型 //n: 滤波器长度 //m: 输入信号的长度,即x[]的长度 //s: 生成整型的滤波器系数时使用的移位数目 voidfir_filter(constshortx[],constshorth[],shorty[],intn,intm,ints) { inti,j; longy0; longacc; _nassert(m>=16); _nassert(n>=16); for(j=0;j { acc=0; for(i=0;i { if(i+j>=m) break; else { y0=(long)x[i+j]*(long)h[i]; acc=acc+y0; } } *y++=(short)(acc>>s); } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 采用 线性 缓冲区 直接 寻址 方法 FIR 滤波器 设计