1.引言 数字滤波在图像处理、语音识别和模式识(2)
2013-05-17 01:13
导读:4.FIR 滤波器设计实现 4.1 总体设计思路 基于抽取滤波器的工作原理,本文采用FLEX10K 实现了一个具有线性相位的16 阶FIR抽取滤波器,利用原理图和VHDL 共同
4.FIR 滤波器设计实现
4.1 总体设计思路
基于抽取滤波器的工作原理,本文采用FLEX10K 实现了一个具有线性相位的16 阶FIR抽取滤波器,利用原理图和VHDL 共同完成源文件设计。
1.FIR 滤波器的设计指标
采样频率:5KHz截止频率:2KHz类型:低通 输入数据宽度: 8 位阶 数:16 阶 系数数据宽度: 8 位
2.参数提取
使用 MATLAB6.1 软件中Filter Design Toolbox 工具箱中的FDA Tool,选择低通滤波器,Kaiser 窗设计方法,Fs=5KHz,Fc=2KHz,阶数为16 位,线性相位。
根据数字系统输出与输入的关系,并根据模块化的设计思想,把系统分为六个模块,包括控制模块,数据寄存模块,加法模块,计数模块,数据选择模块以及乘加模块。其核心部分是控制模块,通过对控制模块编程,分别在相应的周期内实现A/D 读入,转换以及数据的读出,再经数据寄存器来储存数据,经加法模块后来实现系数相同的两个采样值相加,以节省储存空间。加完后的采样值通过计数部分的地址选择信号与乘加部分随机储存器部分的对应系数相乘后输出,乘加模块里包括有反馈环节以实现与前面乘加的结果进行累加,待完成8 次累加后,把数据送到输出端并再送往D/A 转换器,这时实现了把数字信号转化成模拟信号的工作。然后把输出接到示波器上,在输入端通过高频信号发生器输入一个模拟信号,如果信号的最高频率小于滤波器的截止频率,则示波器上显示信号能顺利通过,反之若信号的最高频率大于截止频率,则不能通过。
编程时考虑到应用模块化的设计思想,对各个模块分别进行编译仿真调试,保正每个部分的功能实现后再进行综合,这样有利于实现程序的最优化设计,如果有哪一部分出了问题可以单独进行修改仿真调试,避免了大规模设计中从头开始查找的繁琐问题。
4.2 各模块实现
(科教作文网http://zw.nseAc.com)
4.2.1 控制模块实现
控制器是抽取滤波器的核心模块,有两个功能:一是接收输入数据,二是向其它模块发送数据和控制信号。它根据加法器、乘法器和累加器的时序特性,有规律地向加法器发送抽头数据,向乘法器发送系数,向累加器发送控制信号,让加法器、乘法器和累加器在每个时钟周期都完成指定的任务,从而实现流水线操作。控制器的功能用VHDL 语言描述,用寄存器存放抽头和系数。
4.2.2 数据移位模块的实现
数据移位模块的符号图如图6 所示,其中:DATAIN[7..0]是来自A/D 转换器的数据;OUT0[7..0]~OUT15[7..0]是16 个输出数据,送往加法器;SCLK 是时钟信号,接控制器的ENSHIFT 端。数据移位寄存器中共有16 个触发器,每来一个脉冲,数据依次往后移。
4.2.3 加法模块实现本
所设计的滤波器是具有线性相位的FIR 滤波器,满足偶对称条件:h(n)=h(n-N-1)。
利用加法模块来减少乘法运算的计算量,提高运行速度、简化设计。加法模块的符号图如图8 所示,其中:ADDIN0[7..0]~ADDIN15[7..0]是输入数据,来自数据移位模块;ADDO0~ADDO7 是输出数据,送往乘法累加单元。
4.2.4 数据选择模块实现
根据计数器发送的的地址选择信号,依次输出D0~D7 八个数据,送往乘法累加单元,与ROM 中的特征参数对应进行乘法累加。
4.2.5 计数模块实现
计数模块按照控制器所产生的COM_CLK(于计数器的CLK 相连)信号,向数据选择模块和ROM 单元发送地址信号,取出数据于参数,送往乘法累加单元进行乘法累加。其中:CLK 是时钟信号,CLR 清零信号,Q[2..0]输出地址信号。
4.2.6 乘法累加模块实现
乘法累加单元接受来自数据选择单元的数据和ROM 单元内的特征参数,完成乘法累加的运算,并最总输出结果,送往D/A 转换器。
中国大学排名
其中:SEL[2..0]是地址选择信号,按时序选择ROM 中的特征参数,TAP_OUT[7..0]是来自数据选择单元的数据,/COM_CLK 是时钟信号,/ENCOM 清零信号 ,DA_WE 是输出数据的控制信号。