成绩
课程设计报告
题 目 FIR
滤波器的实验
课 程 名 称 数字信号处理课程设计 院 部 名 称 电子信息工程学院 专 业 电子信息工程 班 级 学 生 姓 名 学 号 课程设计地点 课程设计学时 40 指 导 教 师 胡国兵
金陵科技学院教务处制
1 / 27
FIR
滤波器的实验
一、摘要(所进行设计工作的主旨、缘起、目的,设计工作的主要内容、过
程,采用的方法及取得的成果。关键字(key words):一般3~5个,最能代表报告内容特征,或在报告起关键作用,最能说明问题的词组)
数字信号处理(Digital Signal Processing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。数字信号处理是一种通过使用数学技巧执行转换或提取信息,来处理现实信号的方法,这些信号由数字序列表示。在过去的二十多年时间里,数字信号处理已经在通信等领域得到极为广泛的应用。德州仪器、Freescale等半导体厂商在这一领域拥有很强的实力。其工作原理是接收模拟信号,转换为0或1的数字信号。再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。它不仅具有可编程性,而且其实是运行速度可达每秒数以千万条复杂指令程序,远远超过通用微处理器,是数字化电子世界中日益重要的电脑芯片。它的强大数据处理能力和高运行速度,是最值得称道的两大特色。 关键字:数字滤波器、可编程、高速运行
2 / 27
二、目录
1、摘要 ………………………………………………………… 2 2、目录 ………………………………………………………… 3 3、前言 ………………………………………………………… 4 4、正文 ………………………………………………………… 5 4.1、设计理论 ……………………………………………… 4.2、程序分析 ……………………………………………… 4.3、设计步骤 ………………………………………………5、问题与心得 ………………………………………………… 5.1、实验问题 ……………………………………………… 5.2、心得体会 ………………………………………………6、参考文献 ……………………………………………………
3 / 27
5 11 14 24 24 25 26 三、前言(说明本次课程设计课题的意义,本课题相关技术特点,拟采用的
方案或路线)
在数字信号处理中,滤波占有极其重要的地位。数字滤波是语音处理、图像处理、模式识别、频谱分析等应用中的基本处理算法。与模拟滤波相比,数字滤波具有很突出的优点,例如它 可以满足滤波器对幅度和相位特性的严格要求,可以避免模拟滤波无法克服的电压飘移、温度飘移和噪声等问题;用DSP芯片实现数字滤波除了具有稳定性好、精确度高、不受环境影响等优点外,还具有灵活性好等特点。用可编程DSP芯片可通过修改滤波器的参数十分方便的改变滤波器的特性。
数字滤波器是DSP的基本应用,分为有限冲激响应滤波器FIR和无限冲激响应滤波器IIR。本设计选用TMS320C54x作为DSP处理芯片,在CCS软件中编程,并导入Matlab生成的待滤波数据、系数,实现FIR滤波器和IIR滤波器的设计,并将CCS仿真结果与Matlab相比较进行验证。
4 / 27
四、正文(包含所进行设计的整体内容)
1.设计理论
ⅰ.FIR滤波器的特点
FIR滤波器主要采用非递归结构,因而从理论上以及实际的有限精度的运算中,都是稳定的;可以得到严格的线性相位;可采用快速傅利叶变换算法;一般没有现成设计公式,窗函数法只给出窗函数的计算公式,计算通带、阻带衰减仍无显示表达式。
ⅱ.FIR滤波器的DSP实现
(1) 用线性缓冲区法实现z-1
数据存储器
数据存储器
数据存储器
线性缓冲区顶部
x(n) x(n-1) x(n-2) x(n-3) x(n-4) PORTR→ x(n+1) x(n) x(n-1) x(n-2) x(n-3) PORTR→
x(n+2) x(n+1) x(n) x(n-1) x(n-2) 5 / 27
↑
*ARx-
↑
x(n-5) *ARx-
x(n-4) ↑ *ARx-
x(n-3) N=6的线性缓冲区存存储器图
(2)用循环缓冲区法实现
z-1
数据存储器 x(n) x(n-1) x(n-2) x(n-3) x(n-4) x(n-5) x(n-6) x(n+1)
←ARx ↓
数据存储器 x(n) x(n-1) x(n-2) x(n-3) x(n-4) x(n-5) x(n+2) x(n+1)
←ARx ↓
循环缓冲区顶部
数据存储器 x(n) x(n-1) x(n-2) x(n-3) x(n-4) x(n-5) x(n-6) 循环缓冲区底部
x(n-7)
←ARx ↓
N=8的循环缓冲区存储器图
ⅲ.FIR滤波器的实现方法
(1)用线性缓冲区和直接寻址方法实现FIR滤波器
〖例7-1〗N=5,y(n)=h0x(n)+h1x(n-1)+h2x(n-2)+h3x(n-3)+h4x(n-4) 在数据存储器中存放系数h0~h4,并设置线性缓冲区存放输入数据,如图所示 : y XN
数据存储器 y(n) x(n) 6 / 27
XNM1 XNM2 XNM3 XNM4 H0 H1 H2 H3 H4
x(n-1) x(n-2) x(n-3) x(n-4) h0 h1 h2 h3 h4
直接寻址线性缓冲区数据分配
FIR滤波器的输出
(2) 用线性缓冲区和间接寻址方法实现FIR滤波器
〖例7-2〗N=5,y(n)=h0x(n)+h1x(n-1)+h2x(n-2)+h3x(n-3)+h4x(n-4)
在数据存储器中存放系数h0~h4,并设置线性缓冲区存放输入数据,如图所示,利用AR1和AR2分别作为间接寻址线性缓冲区和系数区的辅助寄存器。 y x
数据存储器 y(n) x(n) x(n-1) 7 / 27
AR1→ h AR2→
x(n-2) x(n-3) x(n-4) h0 h1 h2 h3 h4 间接寻址线性缓冲区数据分配
FIR滤波器的输出
(3)用线性缓冲区和带移位双操作数寻址方法实现FIR滤波器
〖例7-3〗N=5,y(n)=h0x(n)+h1x(n-1)+h2x(n-2)+h3x(n-3)+h4x(n-4)
数据存储器
x
暂存y(n) x(n) x(n-1) x(n-2)
PAR→COEF
程序存储器 h4 h3 h2 8 / 27
x(n-3) h1 AR1→
x(n-4)
h0 双操作数寻址线性缓冲区数据分配
(4)用循环缓冲区和双操作数寻址方法实现FIR滤波器
〖例7-4〗N=80,,存放h0~h79的系数表以及存放数据的循环缓冲区 均设在DARAM中,如图所示。
数据存储器
y y(n) 60h
… 数据存储器
xn x(n) 80h h h0 x(n-1) 81h
h1 x(n-2) h2 x(n-3) h3 x(n-4) h4 x(n-5) h5 …
… AR3→
x(n-79) cfh
AR4→ h79
双操作数寻址循环缓冲区数据分配
(5)系数对称FIR滤波器的实现方法
9 / 27
100h 101h 102h 103h 104h 105h 14fh
数据存储器 New循环 缓冲区
x(n) ←AR2
Old循环 缓冲区 x(n-4)
80h 88h
81h x(n-3) 89h 82h x(n-2)
8Ah 83h x(n-1) 8Bh 新旧缓冲区对比
程序存储器 系数表
COEF h0 低地址
h1
h2
h3 高地址
程序存储器存系数表
10 / 27
x(n-5) x(n-6) x(n-7) ←AR3
FIR滤波器单位脉冲响应
输入方波时FIR滤波器的输出
(6)Filter函数的作用
过滤一维数字滤波器。Y=filter(B,A,X)用向量A和B所描述的过滤器来过滤向量X中的数据,以创建过滤后的数据。输入X为滤波前序列,Y为滤波结果序列,B/A提供滤波器系数,B为分子,A为分母。整个滤波过程是通过下面差分方程实现的:
a(1)*y(n) = b(1)*x(n) + b(2)*x(n-1) + ... + b(nb+1)*x(n-nb) - a(2)*y(n-1)
- ... - a(na+1)*y(n-na)
2.程序分析(对每一程序逐一分析,CMD文件也要解释)包含主程序流程
图、各子程序的流程图、存储器的分配说明、关键函数或子程序、关键汇编语句的语法说明
11 / 27
● fir.m
12 / 27
● fir.asm
13 / 27
● fir.CMD
3.设计步骤(详细描述,给出主要步骤的界面,如FDATOOL的界面、CCS中的整体界面、以及一些关键的窗口截图、存储器的分配图。)
14 / 27
(1)、设计出线性相位FIR滤波器的参数如下:
● 滤波器名称: 带通滤波器 ● 采样频率: Fs=21KHz
● 通带: 2.5KHz~4.5KHz
● 过渡带: 2.5KHz~3.1KHz,3.9KHz~4.5KHz ● 带内波动: <0.8dB ● 阻带衰减: -68dB以下 ● 滤波器级数: N=75
● 滤波器系数 (偶对称,只需列出前一半系数):
12 -43 -79 -48 53 111 12 -177 -225 6 321 348 -22 -433 -419 34 433 357 -34 -236 -90 18 -212 -418 9 899 1138 -37 -1728 -1962 51 2539 2724 -43 -3147 -3250 17 3405
(2)、实验步骤
● 打开MATLAB,点击file下的open;打开fir.m文件;
● 点击右下角start ->Toolboxes->Filter Design HDL Coder->打开lter Design &Analysis Tool (fdatool)
15 / 27
● 根据.m文件设置参数,设置完点击Design Fitder
16 / 27
● 点击file下的export,导出滤波器系数
17 / 27
● 运行刚开始打开的.m文件,生成波形图
18 / 27
● 点击Targets->ccs->Export as->Signed 16 bit integer->Generate,生成.h文件并修改.h文件
19 / 27
● 打开Setup CCS,选择C5402Device芯片,保存后关闭
● 打开CCS,新建Project ,并保存到自己的文件夹内,右击新建的工程,然后点击Add Files to Project;打开两个脚本文件
20 / 27
● 打开Source下的fir.asm文件,根据.m文件的参数参照修改,点击运行
● 点击file 下的load program,打开生成的.out 文件;点击左边的run;
21 / 27
● 点击File下的Data -> Load Data,打开之前生成的input1文件,根据fir.CMD文件,将Address设置为input ,Length设置为200,Page设置为Data
● 点击View下的Graph->Time/Frequency,设置波形图参数
22 / 27
23 / 27
五、问题与心得(对整个设计工作的总结,可以包括作者提出的建议、
下一步工作的设想及改进意见等)
1、实验问题
(1) FIR有何特点?你做了什么?
FIR滤波器主要采用非递归结构,因而从理论上以及实际的有限精度的运算中,都是稳定的;可以得到严格的线性相位;可采用快速傅利叶变换算法;一般没有现成设计公式,窗函数法只给出窗函数的计算公式,计算通带、阻带衰减仍无显示表达式。
我做的带通滤波器。
(3) 加了噪声特有何影响?
加了噪声波形没有太大影响,就是滤出的波形中过渡带部分会出现毛刺。
(3)数据如何加载进来的?
通过Matlab中的fadtool中的Export to Code Composer Studio(tm)IDE导出.h 文件,把.h 文件修改成能被DSP识别再把.h文件复制到在CCS中新建的文件夹中,通过fir.asm文件copy,这样数据就加载进来了。
24 / 27
2、心得体会
经过这么长时间的课程设计,在老师的指导下,我终于如愿完成
了此次课程设计的各项任务。总体而言,此次课程设计收获颇丰,且算是比较成功。虽然此前对Matlab 已经略有了解,但是运用还是不太熟练,还是要查阅资料才能完成任务。本次实验也算是对之前的所学知识的复习巩固,我们不仅对滤波器有更加新的知识还对Matlab的实际操作有了更叫充分的了解,还学会了使用CCS。但是也暴露出了自身的一些缺点,例如自己解决问题的能力有所欠缺,在处理问题时思路不够清晰,滤波器的制作中对于问题的把握不够具体。好在后来老师给我们的问题都一一解惑了。
最后答辩时老师也问了我一些问题,大部分我都回答出来了,但是还是处于半懂不懂的状态。课后还是要好好学习巩固一下。通过本次课设,我们很好的复习巩固了之前所学的知识,也了解了许多关于滤波器的新的内容,在理论以及动手操作这方面我都得到了提高!
25 / 27
六、参考文献
[1]李朝青. DSP芯片的原理与开发应用[M]. 电子工业出版社, [2]蔡旭辉、刘卫国、蔡立燕. MATLAB基础与应用教程. 人民邮电出版社
[3]高西全、丁玉美. 数字信号处理(第三版). 西安电子科技大学出版社
26 / 27
因篇幅问题不能全部显示,请点此查看更多更全内容