《DSP原理及应用》――FIR滤波器的 C54X实现 一、 实验目的 用 matlab 获得 FIR 滤波器的抽头系数,用汇编语言实现 FIR 滤波器。产生一混频信号,用所设计的滤波器进行滤波,查看滤波器输出。 二、实验仪器 1.PC 一台(win7 系统); 2.Code Composer Studio 3.1 软件; 3.MATLAB 2009; 4.Dev C++ 6.0 软件。 三、实验要求 1.设计一个 FIR 低通滤波器,通带边界频率为 2500Hz,通带波纹小于 1dB;阻带边界频率为 3000Hz,阻带衰减大于 40dB;采样频率为 10000Hz。 2.设计一个采样频率 Fs 为 10000Hz,输入信号频率为 2000Hz 和 3250Hz 的合成信号,通过设计的低通滤波器将 3250Hz 信号滤掉,余下 2000Hz 信号。 3.用循环缓冲区和双操作数寻址方法编写实现 FIR 滤波的程序。 四、实验原理 如果 FIR 滤波器的冲激响应为 h(0),h(1), ...,h(N-1)。X(n)表示滤波器在 n 时刻的输入,则 n 时刻的输出为: y(n) = h(0)x(n) + h(1)x(n-1) + ... + h(N-1)x[n-(N-1)] 使用 MAC 或 FIRS 指令可以方便地实现上面的计算。 图 1 说明了使用循环寻址实现 FIR 滤波器的方法。为了能正确使用循环寻址,必须先初始化BK,块长为 N。同时,数据缓冲区和冲激响应(FIR 滤波器的系数)的开始地址必须是大于 N 的 2 的最小幂的倍数。例如,N=11,大于 N 的最小 2 的幂为 16,那么数据缓冲区的第一个地址应是 16 的倍数,因此循环缓冲区起始地址的最低 4 位必须是 0。 在图 1 中,滤波系数指针初始化时指向 h(N-1),经过一次 FIR 滤波计算后,在循环寻址的作用下,仍然指向 h(N-1)。而数据缓冲区指针指向的是需要更新的数据,如 x(n)。在写入新数据并完成FIR 运算后,该指针指向x(n-(N-1))。所以,使用循环寻址可以方便地完成滤波窗口数据的自动更新。 五、实验内容及步骤 1.FIR 滤波器的设计 FIR 滤波器的设计可以用MATLAB 软件的窗函数法进行,这里选择 Hamming 窗,程序为: b=fir1(16,1500/8000*2) 得到 FIR 数字滤波器系数b 为: b0 = 0 b9 = 0.2834 b1 = 0.0048 b10 = 0.0973 b2 = 0.008 b11 = -0.029 b3 = -0.0089 b12 = -0.0429 b4 = -0.0429 b13 = -0.0089 b5 = -0.029 b14 = 0.008 b6 = 0.0973 b15 = 0.0048 b7 = 0.2834 b16 = 0 b8 = 0.3745 在 DSP 汇编语言中,不能...