不计较的心
摘 要 FIR数字滤波器是数字信号处理的经典方法,其设计方法有多种,用DSP芯片对FIR滤波器进行设计时可以先在MATLAB上对FIR数字滤波器进行仿真,所产生的滤波器系数可以直接倒入到DSP中进行编程,在编程时可以采用DSP独特的循环缓冲算法对FIR数字滤波器进行设计,这样可以大大减少设计的复杂度,使滤波器的设计快捷、简单。关键词 FIR;DSP;循环缓冲算法1 引言在信号处理中,滤波占有十分重要的地位。数字滤波是数字信号处理的基本方法。数字滤波与模拟滤波相比有很多优点,它除了可避免模拟滤波器固有的电压漂移、温度漂移和噪声等问题外,还能满足滤波器对幅度和相位的严格要求。低通有限冲激响应滤波器(低通FIR滤波器)有其独特的优点,因为FIR系统只有零点,因此,系统总是稳定的,而且容易实现线性相位和允许实现多通道滤波器。2 FIR滤波器的基本结构及设计方法2.1 FIR滤波器的基本结构设a i(i=0,1,2,…,N一1)为滤波器的冲激响应,输入信号为 x(n),则FIR滤波器的输入输出关系为: FIR滤波器的结构如图1所示:图12.2 FIR滤波器的设计方法 (1) 窗函数设计法 从时域出发,把理想的无限长的hd(n)用一定形状的窗函数截取成有限长的h(n),以此h(n)来逼近hd(n),从而使所得到的频率响应H(ejω)与所要求的理想频率响应Hd(ejω) 相接近。优点是简单、实用,缺点是截止频率不易控制。 (2) 频率抽样设计法从频域出发, 把给定的理想频率响应Hd(ejω)以等间隔抽样,所得到的H(k)作逆离散傅氏变换,从而求得h(k),并用与之相对应的频率响应H(ejω)去逼近理想频率响应Hd(ejω)。优点是直接在频域进行设计,便于优化,缺点是截止频率不能自由取值。(3) 等波纹逼近计算机辅助设计法前面两种方法虽然在频率取样点上的误差非常小,但在非取样点处的误差沿频率轴不是均匀分布的,而且截止频率的选择还受到了不必要的限制。因此又由切比雪夫理论提出了等波纹逼近计算机辅助设计法。它不但能准确地指定通带和阻带的边缘,而且还在一定意义上实现对所期望的频率响应实行最佳逼近。3 循环缓冲算法对于N级的FIR滤波器,在数据存储器中开辟一个称之为滑窗的N个单元的缓冲区,滑窗中存放最新的N个输入样本。每次输入新的样本时,一新样本改写滑窗中的最老的数据,而滑窗中的其他数据不需要移动。利用片内BK(循环缓冲区长度)寄存器对滑窗进行间接寻址,环缓冲区地址首位相邻。下面,以N=5的FIR滤波器循环缓冲区为例,说明循环缓冲区中数据是如何寻址的。5级循环缓冲区的结构如图所示,顶部为低地址。……由上可见,虽然循环缓冲区中新老数据不很直接明了,但是利用循环缓冲区实现Z-1的优点还是很明显的:它不需要数据移动,不存在一个极其周期中要求能进行一次读和一次写的数据存储器,因而可以将循环缓冲区定位在数据存储器的任何位置(线性缓冲区要求定位在DARAM中)。实现循环缓冲区间接寻址的关键问题是:如何使N个循环缓冲区单元首位相邻?要做到这一点,必须利用BK(循环缓冲器长度)器存器实现按模间接寻址。可用的指令有:… *ARx+% ;增量、按模修正ARx:addr=ARx,ARx=circ(ARx+1)… *ARx-% ;减量、按模修正ARx:addr=ARx,ARx=circ(ARx-1)… *ARx+0% ;增AR0、按模修正ARx:addr=ARx,ARx=circ(ARx+AR0)… *ARx-0% ;减AR0、按模修正ARx:addr=ARx,ARx=circ(ARx-AR0)… *+ARx(lk)% ;加(lk)、按模修正ARx:addr=circ(ARx+lk),ARx=circ(ARx+AR0)其中符号“circ”就是按照BK(循环缓冲器长度)器存器中的值(如FIR滤波其中的N值),对(ARx+1)、(ARx-1)、(ARx+AR0)、(ARx-AR0)或(ARx+lk)值取模。这样就能保证循环缓冲区的指针ARx始终指向循环缓冲区,实现循环缓冲区顶部和底部单元相邻。循环寻址的算法可归纳为:if 0 index + step < BK: index = index + stepelse if index + step BK: index = index + step – BKelse if index + step < BK: index = index + step + BK上述算法中,index是存放在辅助寄存器中的地址指针,step为步长(亦即变址值。步长可正可负,其绝对值晓予或等于循环缓冲区长度BK)。依据以上循环寻址算法,就可以实现循环缓冲区首位单元相邻了。 为了使循环缓冲区正常进行,除了用循环缓冲区长度寄存器(BK)来规定循环缓冲区的大小外,循环缓冲区的起始地址的k个最低有效位必须为0。K值满足2k>N,N微循环缓冲区的长度。4 FIR滤波器在DSP上的实现对于系数对称的FIR滤波器,由于其具有线性相位特征,因此应用很广,特别实在对相位失真要求很高的场合,如调制解调器(MODEM)。例如:一个N=8的FIR滤波器,若a(n)=a(N-1-n),就是对称FIR滤波器,其输出方程为:y(n)= a0x(n)+ a1x(n-1)+ a 2x(n-2)+ a 3x(n-3)+ a 3x(n-4)+ a 2x(n-5)+ a1x(n-6)+ a0x(n-7)总共有8次乘法和7次加法,如果改写成: y(n)= a0 [x(n)+ x(n-7)]+ a1 [ x(n-1)+ x(n-6)]+ a 2 [ x(n-2)+ x(n-5)]+ a 3 [ x(n-3)+ x(n-4)]则变成4次乘法和7次加法。可见,乘法运算的次数减少了一半。这是对称FIR的又一个优点。对称FIR滤波器C54X实现的要点如下:(1)数据存储器中开辟两个循环缓冲算区:新循环缓冲区中存放新数据,旧循环缓冲区中存放老数据。循环缓冲区的长度为N/2。 (2)设置循环缓冲区指针:AR2指向新循环缓冲区中最新的数据,AR3指向旧循环缓冲区中最老的数据。 (3)在程序存储器中设置系数表。 (4)AR2+ AR3 AH(累加器A的高位),AR2-1AR2,AR3-1 AR3 (5)将累加器B清零,重复执行4次(i=0,1,2,3):AH*系数ai+B B,系数指针(PAR)加1。AR2+ AR3AH,AR2和AR3减1。 (6)保存和输出结果。 (7)修正数据指针,让AR2和AR3分别指向新循环缓冲区中最老的数据和旧循环缓冲区中最老的数据。 (8)用新循环缓冲区中最老的数据替代旧循环缓冲区中最老的数据,旧循环缓冲区指针减1。 (9)输入一个新的数据替代新循环缓冲区中最老的数据。 重复执行第(4)至(9)步。 在编程中要用到FIRS(系数对称有限冲击响应滤波器)指令,其操作步骤如下: FIR Xmem,Ymem,Pmem 执行 Pmad PAR 当(RC)≠0 (B)+(A(32-16))×(由PAR寻址Pmem)B ((Xmem)+(Ymem))<<16A (PAR)+1PAR (RC)-1RC FIRS指令在同一个及其周期内,通过C和D总线读2次数据存储器,同时通过P总线读一个系数 本文对FIR滤波器在DSP上的实现借助了MATLAB,其设计思路为:(1)MATLAB环境下产生滤波器系数和输入的数据,并仿真滤波器的滤波过程,可视化得到滤波器对动态输入数据的实时滤波效果;(2)将所得滤波器系数直接导入CCStudio中,再把滤波器的输入数据作为CCStudio设计的滤波起的输入测试数据存储在C54x数据空间中; (3)在CCStudio环境下结合FIR滤波的公式适用汇编语言设计FIR滤波程序,使用MATLAB产生的滤波器系数和输入测试数据进行计算,把输入数据和滤波结果借助CCStudio菜单中的View/Graph/Time/Frequency子菜单用图形方式显示出来(结果如图2);图2 (a)输入数据(Input)图2(b)滤波后的数据(Output) 将FIR滤波的入口数据地址改为外部I/O空间或McBSP口的读写数据地址,或数据空间内建缓冲地址;将FIR滤波的结果数据地址改为外部I/O空间或McBSP口的输出数据地址,或数据空间内建缓冲地址,则完成了基于C54xDSP的实时数据FIR滤波程序。参考文献:[1] 程佩青.数字信号处理教程[M].北京:清华大学出版社 1999年[2] 孙宗瀛,谢鸿林.TMS320C5xDSP原理设计与应用[M].北京:清华大学出版社.2002年[3] 陈亚勇等 编著.MATLAB信号处理详解[M].北京:人民邮电出版社.2001年[4] Texas Instruments.TMS320C54x Assembly Language Tools User’s Guide[5] Texas Instruments.TMS320C54x DSP Programmer’s Guide
爱吃糖z
·ADSL接入网技术研究 (字数:24985,页数:36) ·直序扩频技术的仿真与应用 (字数:14521,页数:37) ·音频数字水印的实现 (字数:15331,页数:28) ·DVB系统设计 (字数:14318,页数:28) ·PAM调制解调系统设计 二 (字数:9181,页数:31 ) ·上位PC机与下位单片机之间进行串口通信 (字数:12645,页数:30) ·图像梯形退化校正的研究与实现 (字数:12616,页数:34) ·简易数字电压表设计实现 (字数:7436,页数:24 ) ·基于计算机视觉库OpenCV的文本定位算法改进 (字数:9674,页数:32 ) ·基于编码的OFDM系统的C语言设计与实 (字数:11190,页数:34) ·基于ofdm系统的接受分集技术 (字数:11057,页数:28) ·基于FPGA的交织编码器设计 (字数:13239,页数:39) ·红外异步数字通信的数据采集装置设计与实现 (字数:19577,页数:68) ·Visual C++环境下的基于肤色图像的人脸检测算法 (字数:11186,页数:28) ·PAM调制解调系统设计 (字数:13922,页数:43) ·P2P网络通信设计 (字数:8075,页数:39 ) ·NAND Flash设备 (字数:10928,页数:49) ·MPEG4播放技术 (字数:13207,页数:38) ·Butterworth滤波器设计 (字数:8348,页数:28 ) ·基于单片机的智能教师点名器 (字数:10627,页数:29) ·基于CPLD的CDMA扩频调制解调器建模设计与实现 (字数:14327,页数:63) ·带CC1100无线收发模块基本控制系统 (字数:15224,页数:50) ·基于CPLD的CMI码传输系统设计 (字数:11429,页数:41) ·一个简单光纤传输系统的设计 (字数:12785,页数:37) ·基于MCS51微控制器的FSK调制解调器设计——电路设计 (字数:13439,页数:39) ·中小型网络的设计与配置 (字数:16254,页数:42) ·基于AT89S52的FSK调制解调器设计 (字数:14064,页数:45) ·远端光纤收发器断电断纤的识别 (字数:15759,页数:89) ·脉冲成形BPSK调制电路的设计与实现 (字数:11472,页数:36) ·基于XR2206的函数信号发生器设计与实现 (字数:9179,页数:31 ) ·基于MCS51微控制器的FSK调制解调器的设计——程序设计 (字数:12191,页数:46) ·基于CPLD的QPSK调制器实现——电路设计 (字数:11621,页数:33) ·QPSK调制器的CPLD实现——程序设计 (字数:5973,页数:30 ) ·基于卷积码的BPSK基带系统C语言实现 (字数:9361,页数:30 ) ·白噪声发生器的设计 (字数:11398,页数:34) ·基于单片机的机床控制系统 (字数:12085,页数:35) ·低压电力线载波通信模块设计 (字数:15460,页数:68) ·基于SH框架的电子技术交流平台 (字数:10333,页数:38) ·带隙基准电压源的设计 (字数:10396,页数:31) ·电子计时器系统设计与实现 (字数:9780,页数:31 ) ·无线局域网的组建与测试 (字数:17392,页数:48) ·抑制载波双边带调幅电路的设计 (字数:9787,页数:24 ) ·宽带放大器的设计与实现 (字数:12200,页数:36) ·基于单片机的遥控芯片解码的设计与实现 (字数:9802,页数:39 ) ·多种正交幅度调制QAM误码率仿真及星座图的优化 (字数:10967,页数:43)
1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激光打标机运动控制卡软件系统设计 6.
图中的元件参数是从何而来?有没有遵照正规有源滤波器设计手册进行选取?大概是想当然地引用无源滤波的截止频率计算方法自己算出来的吧?包括系统增益也是随心所欲的设定的
这个我也想要啊,编程了用matlab 但是老师就说我算法不对,当给出噪声大于输入信号就是错的了--------------------------------
论文开题报告基本要素 各部分撰写内容 论文标题应该简洁,且能让读者对论文所研究的主题一目了然。 摘要是对论文提纲的总结,通常不超过1或2页,摘要包含以下内容:
需要学习如何设计滤波器并仿真 我可以教你如何设计 但是你需要一整篇的毕业设计 还是你自己动手吧!