新闻中心

EEPW首页>EDA/PCB>设计应用> 基于Matlab和FPGA的FIR数字滤波器设计及实现

基于Matlab和FPGA的FIR数字滤波器设计及实现

作者: 时间:2009-03-31 来源:网络 收藏

移位相加单元时序仿真:仿真结果如图5所示,输入一个阶跃信号(8191),从图5中可以看出,输出数据从D_out_a到D_out_p依次有一个时钟周期的时延,并且总的时延和滤波器阶数(32)相等,最后输出数据是16 382=8 191*2,和理论计算值相同。

4.2 与滤波器系数相乘
数据首尾相加输出后与滤波器系数h(n)相乘,由于滤波器的结构是对称的,因而只需16个乘法器即可。乘法器直接调用QuartusⅡ里面的参数化元件库,系数的位宽设为18。关键Verilog语句如下:


以上为一个乘法器设置方法,16个乘法器的整体模块图如图6所示。

为了便于仿真测试,乘法器单元一开始只设置了4个输入。其中h(0)=100,h(1)=200,h(2)=300,h(3)=400,a,b,c,d为4个输入数据,与h(n)相乘后对应输出分别为R_a,R_b,R_c和R_d。这样设计不失一般性,仿真无误后再扩充到16个即可。仿真结果如图7所示。

4.3 乘法器输出结果相加
16路数据相加后位数被扩为33+4=37,另外要在其输出端加一寄存器,以消除毛刺。此模块原理图如图8所示。

相加输出模块仿真:实际用到的是16输入的加法器,为便于仿真测试.输入先设为4路,仿真结果如图9所示。

4.4 截位输出



关键词:MatlabFPGAFIR数字

评论


相关推荐

技术专区

关闭