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

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

192109_2_0.jpg

4.2 与滤波器系数相乘

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

192109_2_1.jpg

192109_2_2.jpg

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

192109_2_3.jpg

为了便于仿真测试,乘法器单元一开始只设置了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所示。

192109_2_4.jpg

4.3 乘法器输出结果相加

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

192109_2_5.jpg

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

192109_2_6.jpg

4.4 截位输出

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值