FIR数字滤波器的DSP课程设计Word下载.docx
- 文档编号:18998694
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:14
- 大小:258.95KB
FIR数字滤波器的DSP课程设计Word下载.docx
《FIR数字滤波器的DSP课程设计Word下载.docx》由会员分享,可在线阅读,更多相关《FIR数字滤波器的DSP课程设计Word下载.docx(14页珍藏版)》请在冰豆网上搜索。
图2.1SEED-DEC2812嵌入式DSP开发板原理框图
三、设计思路
3.1大致过程
在TMS320C54x系统开发环境CCS(CodeComposerStudio)下对FIR滤波器的DSP实现原理进行讨论。
利用C语言设计相应的滤波器,通过实验仿真,从输入信号和输出信号的时域和频域曲线可看出在DSP上实现的FIR滤波器能完成预定的滤波任务。
3.2FIR滤波器的设计方法
循环缓冲算法:
对于N级的FIR滤波器,在数据存储器中开辟一个称之为滑窗的N个单元的缓冲区,滑窗中存放最新的N个输入样本。
每次输入新的样本时,一新样本改写滑窗中的最老的数据,而滑窗中的其他数据不需要移动。
利用片内BK(循环缓冲区长度)寄存器对滑窗进行间接寻址,环缓冲区地址首位相邻。
下面,以N=5的FIR滤波器循环缓冲区为例,说明循环缓冲区中数据是如何寻址的5级循环缓冲区的结构如图3.1所示,顶部为低地址。
图3.1循环缓冲区的结构
当第一次执行完
之后,间接寻址的辅助寄存器
指向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.1FIR滤波器设计总框图
FIR滤波器设计总框图如图4.1所示
图4.1FIR滤波器设计总框图
4.2程序流程图
程序流程图如图4.2所示
图4.2程序流程图
4.3程序源代码
FILTER.c代码:
#include"
DSP28_Device.h"
filter.h"
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*/
ConfigCpuTimer(&
CpuTimer2,150,22);
StartCpuTimer2();
/*开中断*/
IER|=M_INT14;
InitAdc();
for(;
;
){
if(adconvover==1){
/*fir滤波处理*/
for(i=0;
i<
DataLong;
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代码:
//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>
for(j=0;
j<
m;
j++)
{
acc=0;
for(i=0;
n;
if(i+j>
=m)
break;
else
y0=(long)x[i+j]*(long)h[i];
acc=acc+y0;
*y++=(short)(acc>
>
s);
五、系统仿真
5.1仿真设置
1.fir_filter(Ad_data_signed,hfir,filter_result,ORDER_FIR,DataLong,ROUND_FIR)和adconvover=0处设置断点
2.在GraphPropertyDialog中设置StartAddress和DisplayType如图5.1、图5.2、图5.3、图5.4
图5.1GraphPropertyDialog
图5.2GraphPropertyDialog
图5.3GraphPropertyDialog
图5.4GraphPropertyDialog
3.设置实验板输入信号的参数,再运行程序得到仿真图。
5.2仿真图
(1)标准矩形波,频率为300Hz,振幅为800mV。
滤波前的波形如图5.5和图5.6,滤波后的波形如图5.7和图5.8。
图5.5标准矩形波滤波前波形
图5.6标准矩形波滤波前波形
图5.7标准矩形波滤波后波形
图5.8标准矩形波滤波后波形
(2)噪声三角波,频率为400Hz,振幅为800mV。
滤波前的波形如图5.9和图5.10,滤波后的波形如图5.11和图5.12。
图5.9噪声三角波滤波前波形
图5.10噪声三角波滤波前波形
图5.11噪声三角波滤波后波形
图5.12噪声三角波滤波后波形
六、参考文献
[1]程佩青.数字信号处理教程[M].北京:
清华大学出版社,1999年
[2]孙宗瀛,谢鸿林.TMS320C5xDSP原理设计与应用[M].北京:
清华大学出版社,2002年
[3]乔瑞萍,崔涛,张芳娟.TMS320C54xDSP原理及应用[M].西安:
西安电子科技大学出版社,2005年
[4]张雄伟.DSP芯片的原理与开发应用(第三版)[M].北京:
电子工业出版社,2003年
[5]郑红.TMS320C54XDSP应用系统设计[M].北京:
北京航空航天大学出版社,2002年
七、总结
FIR滤波器的设计是数字信号处理技术的基础,也是DSP芯片的重要组成部分。
FIR滤波器性能的好坏直接影响着DSP的运行速度和精度,对现代电子技术的发展起决定性作用,FIR滤波器的设计在以后的一段相当长的时间里将持续主导DSP,而DSP随着电子技术的不断发展,应用领域愈来愈广泛。
这次课程设计实现了一个简单的FIR滤波器的设计,在刘老师的精心指导和帮助以及自己上网查找资料,较好的完成了课程设计的任务并达到了理想的目的。
在这里我对刘老师表示感谢,感谢他的耐心和热心。
通过这次课程设计使我对DSP芯片有了更深一步的了解,也不断的强化了自己的基础知识。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FIR 数字滤波器 DSP 课程设计