DSP课程设计报告--基于TMS320F2812 DSP处理器的FIR滤波器的设计与实现
更新时间:2024-01-10 00:58:01 阅读量: 教育文库 文档下载
- dsp课程设计题目推荐度:
- 相关推荐
DSP原理及应用课程设计报告
设计题目:基于TMS320F2812 DSP处理器的FIR滤波器的设计与实现
学 号: 0 9 13................. 姓 名: ................ 专 业: 电 子 信 息 工 程 设计日期: 2012年6月13日 指导老师: ........... ................
目 录
一、引言 二、设计目的 三、设计要求 四、总体设计
4.1利用Matlab软件的FDATool工具设计FIR滤波器 4.1.1有限冲击响应数字滤波器的基础理论
4.1.2 利用Matlab软件的FDATool设计FIR滤波器 4.1.3提取滤波器参数
4.2 CCS环境下FIR滤波器的设计及软件仿真 4.2.1 程序流程图
4.2.2 在CCS集成开发环境下新建FIR滤波器工程
4.2.3观察滤波前后的信号的时域波形及FFT Magnitude波形 4.2.4 程序清单
4.3 对实时采样信号进行滤波的FIR滤波器的实现 4.3.1 程序清单 4.3.2 测试效果 4.3.3 SCI串行数据传输 五、总结 六、参考文献
基于TMS320F2812 DSP处理器的FIR滤波器的设计与实现
一、引言
数字信号处理(DSP)包括两重含义:数字信号处理技术(Digital Signal Processing )和数字信号处理器( Digital Signal Processor )。在数字信号处理的基本方法中,滤波是应用非常广泛的一个环节,数字滤波器的理论与相关设计也一直都是人们研究的重点之一。数字滤波器根据其单位冲击响应函数的时域特性可分为两类:无限冲击响应(Infinite Impulse Response,IIR)滤波器和有限冲击响应(Finite Impulse Response,FIR)滤波器。与 IIR滤波器相比,FIR的实现是非递归的。
使用通用DSP芯片实现滤波方式较为简单,是一种实时的,快速的,特别适合于实现各种数字信号处理运算的微处理器,借助于通用数字计算机按滤波器的设计算法编出程序进行数字滤波计算。由于它具有丰富的硬件资源,改进哈弗结构,高速数据处理能力和强大的指令系统而在很多领域得到广泛应用。 二、设计目的
1、掌握用窗函数法设计FIR滤波器的原理及方法,掌握使用
matlab编程的基本方法。
2、掌握TMS320F2812 DSP处理器开发的程序框架结构,学习驱动TMS320F2812 DSP处理器程序编写并能使其正常工作。实习驱动ADC模块实现信号的实时采集与模数转换。
3、掌握使用TMS320F2812 DSP处理器实现FIR数字低通滤波器的设计方法,并能够实时采集输入信号并滤除高频信号再通过SCI串口传输到计算机显示。
三、设计要求
1、利用Matlab软件的FDATool工具设计FIR滤波器,并提取滤波器参数;
2、在CCS集成开发环境下,利用第1步得到的滤波器参数,利用窗函数法设计FIR滤波器程序,观察输入信号及滤波后得到的输出信号的时域波形及FFT Magnitude波形;
3、利用TMS320F2812的ADC片内外设的外围电路实时采集的混频信号数据,使用1个51阶的FIR低通滤波器,在CCS中设计FIR滤波器程序实现滤波,观察相关波形及滤波效果,通过SCI接口将数据传送到计算机上。 四、总体设计
4.1利用Matlab软件的FDATool工具设计FIR滤波器 4.1.1有限冲击响应数字滤波器的基础理论
滤波器就是在时间域或频域内,对已知激励产生规定响应的网络,使其能够从信号中提取有用的信号,抑制并衰减不需要的信号。滤波器的设计实质上就是对提出的要求给出相应的性能指标,再通过计算,使物理可实现的实际滤波器频率响应特性逼近给出的频率响应特性。FIR 数字滤波器系统的传递函数为:
Y(z)N?1 H(z)???b(n)z?n (1)
X(z)n?0由此得到系统的差分方程:
y(n)?b(0)?x(n)?b(1)?x(n?1)????????b(N?1)?x(n(N?1)) (2)
若FIR 数字滤波器的单位冲激响应序列为h(n),它就是滤波器系数向量b(n)。传统的滤波器分析与设计均使用繁琐的公式计算,改变参数后需要重新运算,从而在分析与设计滤波器尤其是高阶滤波器时工作量特别大。这里应用MATLAB 设计FIR滤波器,根据给定的性能指标设计一个H(z),使其逼近这一指标,进而计算并确定滤波器的系数b(n),再将所设计滤波器的幅频响应、相频响应曲线作为输出,与设计要求进行比较,对设计的滤波器进行优化。设计完成之后将得到FIR滤波器的单位冲激响应序列h(n)的各个参数值。 4.1.2 利用Matlab软件的FDATool设计FIR滤波器
(1) 打开
Matlab软件,首先在命令窗口键入FDAtool命令,启
动滤波器设计分析器,调出FDAtool界面.
(2) 在
Filter Type选项中选Lowpass,在Design Method中选
择FIR滤波器,接着在FIR中选择Window (窗函数) 法。
(3) 然后在Filter Order 中选择Specify Order (为指定阶数),
输入数值为“24”;在Opitions框中选中“Scale Passband”;在窗类型(Window:)下拉框选择“Blackman”。
(4) 在
Frenquency Specification选项中,将fs(为采样频率)、
fact (为通带截止频率)中分别键入30000 Hz和9600 Hz。
(5) 点击“Design Filter”按钮,完成滤波器的设计。具体参
数及设计成功后的结果如图所示
。
设计完成后,可以通过菜单选项Analysis 来分析滤波器的幅频响应和相频响应特性。点击Analysis 中的Magnitude Response和Phase Response 对幅频和相频响应进行分析。
4.1.3提取滤波器参数
(6) 在
FDATool 中,选择Targets -> Generate C Header...,
后,点击
如图设置
Generate按钮,选择路径,即可输出前一步设计出的FIR滤波器的系数表。默认的系数表文件为fdacoefs.h。
(7) 在
Matlab中打开得到的fdacoefs.h的文件,系数表如图
(8) 取系数表中的数据小数点后
3位有效值,得到如下内容:
const float B[25]= { 0.0,0.0,0.001,-0.002,-0.002,0.01,
-0.009,
-0.018,0.049,-0.02,-0.11,0.28,0.64,0.28,
-0.11,-0.02,0.049,-0.018,-0.009,0.01,
-0.002,-0.002,0.001,0.0,0.0 };
4.2 CCS环境下FIR滤波器的设计及软件仿真 4.2.1 程序流程图如下
初始化 输入低通滤波器各频率参数 构建滤波器频域特性波形 使用FDATool提取滤波器参数或用FIR滤波器计算程序计算得到滤波器参数 构建FIR滤波器进行滤波 无限循环
4.2.2 在CCS集成开发环境下新建FIR滤波器工程 (1)设置软件仿真模式,启动CCS。
(2)建立一个文件夹,存放在D:\\FIR,将D:\\课程设计\\FIR
滤波器\\Fir源程序文件夹下的工程全部复制到D:\\FIR,在CCS中打开D:\\FIR\\fir\\fir.pjt工程,打开fir.c文件,编译生成fir.out文件,通过File->Load Program?装载该文件。
(3)设置波形时域观察窗口,选择菜单View→Graph→Time/Frequency? ,如图设置
输入数据时域波形观察
滤波后输出波形观察
(4)设置频域观察窗口,选择View→Graph→Time/Frequency… ,分别进行如图设置
菜单
输入数据FFT分析图形观察
滤波后输出数据的FFT图形观察
4.2.3观察滤波前后的信号的时域波形及FFT Magnitude波形 (1)设置断点。在程序fir.c中,有注释断点的语句上设置软件断点。
(2)运行并观察结果。选择Debug菜单的Run项,或按F5键运行程序。观察到的图形如下图所示。
4.2.4 程序清单
#include\
#define FIRNUMBER 25 #define PI 3.1415926 float InputWave(); float FIR();
float fHn[FIRNUMBER]={ 0.0,0.0,0.001,-0.002,-0.002,0.01,-0.009, -0.018,0.049,-0.02,-0.11,0.28,0.64,0.28, -0.11,-0.02,0.049,-0.018,-0.009,0.01, -0.002,-0.002,0.001,0.0,0.0 };
float fXn[FIRNUMBER]={ 0.0 }; float fInput,fOutput; float fSignal1,fSignal2;
float fStepSignal1,fStepSignal2; float f2PI; int i;
float fIn[256],fOut[256]; int nIn,nOut; main(void) {
nIn=0; nOut=0; f2PI=2*PI; fSignal1=0.0; fSignal2=PI*0.1; fStepSignal1=2*PI/30; fStepSignal2=2*PI*1.4; while ( 1 )
{ fInput=InputWave(); fIn[nIn]=fInput; nIn++; nIn%=256; fOutput=FIR(); fOut[nOut]=fOutput; nOut++; if ( nOut>=256 ) { nOut=0; /* 请在此句上设置软件断点 */ } } }
float InputWave() { for ( i=FIRNUMBER-1;i>0;i-- ) fXn[i]=fXn[i-1]; fXn[0]=sin(fSignal1)+cos(fSignal2)/6.0; fSignal1+=fStepSignal1; if ( fSignal1>=f2PI ) fSignal1-=f2PI; fSignal2+=fStepSignal2; if ( fSignal2>=f2PI ) fSignal2-=f2PI; return(fXn[0]); }
float FIR() { float fSum; fSum=0; for ( i=0;i 4.3 对实时采样信号进行滤波的FIR滤波器的实现 4.3.1 程序清单 #include \ #include \ #include double npass,h[51], x, y, xmid[51]; int m=50; int n=256; interrupt void adc_isr(void); Uint16 LoopCount; Uint16 ConversionCount; void firdes(int m, double npass) { int t; for (t=0; t<=m; t++) { h[t] = sin((t-m/2.0)*npass*pi)/(pi*(t-m/2.0)); } if (t=m/2) h[t]=npass; } void main(void) { int xm,ym; double fs,fstop,r,rm; int i,j,p,k; InitSysCtrl(); EALLOW; SysCtrlRegs.HISPCP.all = 0x3; // HSPCLK = SYSCLKOUT/6 EDIS; DINT; InitPieCtrl(); IER = 0x0000; IFR = 0x0000; InitPieVectTable(); EALLOW; PieVectTable.ADCINT = &adc_isr; EDIS; InitAdc(); PieCtrlRegs.PIEIER1.bit.INTx6 = 1; IER |= M_INT1; EINT; ERTM; LoopCount = 0; ConversionCount = 0; AdcRegs.ADCTRL1.bit.SEQ_CASC = 1; AdcRegs.ADCMAXCONV.all=0x0000; AdcRegs.ADCCHSELSEQ1.bit.CONV00=0x4; AdcRegs.ADCTRL2.bit.EVA_SOC_SEQ1=1; AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1; EvaRegs.T1CMPR=0x0380; EvaRegs.T1PR=0x07FF; EvaRegs.GPTCONA.bit.T1TOADC = 1; EvaRegs.T1CON.all = 0x1042; k=0; fs = 250000; fstop = 20000; npass = fstop/fs; for (i=0; i<=m; i++) { xmid[i]=0; } for(;;) { firdes(m, npass); for (i=0; i<=n-1; i++) { xm = px[i]; x = xm/1023.0; for (p=0; p<=m; p++) { xmid[m-p] = xmid[m-p-1]; } xmid[0] = x; r = 0; rm= 0; for (j=0; j<=m; j++) { r = xmid[j] * h[j]; rm = rm + r; } y = rm; ym = (int)(1023.0 * y); py[i] = ym; } k++; //加断点,观察波形 } } interrupt void adc_isr(void) { px[ConversionCount] = AdcRegs.ADCRESULT0 >>4; if(ConversionCount == 256) { ConversionCount = 0; } else ConversionCount++; AdcRegs.ADCTRL2.bit.RST_SEQ1=1; AdcRegs.ADCST.bit.INT_SEQ1_CLR=1; PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; return; } 4.3.2 测试效果 如图所示 靠上的是滤波前时域波形,下面的是滤波后时域波形 分别为滤波前和滤波后的FFT分析图形 4.3.3 SCI串行数据传输 1、pc机采用串口调试工具软件,将PC机键盘的输入发送给DSP,DSP收到PC机发来的数据后,回送同一数据给PC机。 2、实验板使用串口通信电缆,启动串口调试助手.exe,设置数据格式为1位停止位,无奇偶校验,8位数据输出,串口波特率为9600bit/s。 支持ASCII码和十六进制数据格式的发送和接收。 五、总结 通过这次课程设计,我学到了很多知识并且巩固了以前所学的很多软件和课程。DSP不同于以前的单片机,它采用了多组总线技术实现并行运行机制,从而极大地提高了运算速度,也提供了非常灵活的 指令系统。通过这次课程设计使我对dsp有了更深入的了解,我不仅对以前所学的知识有了较深刻的理解,而且动手能力、独立解决问题的能力有所提高。熟练地运用Matlab工具设计滤波参数,很好的加深了我对课程的理解,方便我的思维。这次设计使我了解了MATLAB的使用方法,学会分析滤波器的优劣和性能,提高了分析和动手能力。 我也非常感谢老师的悉心指导,对报告的书写格式及内容,老师多次帮助分析思路,开拓视角。为以后的学习和就业奠定一定基础。 六、参考文献 [1] 赵成 DSP原理与应用 [2] 《数字信号处理教程》 程佩清 编著 清华大学出版社 [3] 《基于DSP的FIR滤波器的设计与实现》 长沙理工大学 指 导 教 师 评 语 成绩 指导教师 年 月 日
正在阅读:
DSP课程设计报告--基于TMS320F2812 DSP处理器的FIR滤波器的设计与实现01-10
建筑电气强条汇总03-28
班委会的建立和工作情况反思03-06
就业指导考试09-13
2012支教策划书105-29
2015-2020年中国磁铁矿滤料行业深度调研与行业运营态势报告01-03
16PF常模标准分换算表08-19
收音机课程设计报告06-01
钢制电缆桥架安装工艺 - secret05-29
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 设计
- 滤波器
- TMS320F2812
- 处理器
- DSP
- 基于
- 课程
- 实现
- 报告
- FIR
- 常州继续教育公共科目创新案例专题讲座考试试卷NO.1
- 会计从业资格证书有关问题解答
- 袁芙蓉幼儿卫生保健问卷调查表
- 青岛版三年级上册数学一二单元课本应用题精选
- 汽车自适应巡航控制系统的发展 - 张景波概要
- 上海高档别墅市场研究 - 图文
- 计算机电路基础习题参考答案
- 2016尔雅参考答案
- 学习新《律师法》的心得体会
- 摆喷灌浆施工组织设计
- 工程表格模板隧道开挖作业指导书
- 全市地名工作调研座谈会发言材料
- 2018年新人教版六年级下册数学全册教案
- 学习之星申报材料
- 2011年五年制病理学复习思考题—答案版
- 课内文言文复习
- 新目标八年级上Unit 6 Im going to study computer science.单元测试题附答案
- 应收账款研究现状
- 小学英语译林牛津版五年级下册Unit 4 Seeing the doctor 第四课时
- 不锈钢相图1