如何实现一种基于FPGA的横向FIR滤波器设计?.docx
《如何实现一种基于FPGA的横向FIR滤波器设计?.docx》由会员分享,可在线阅读,更多相关《如何实现一种基于FPGA的横向FIR滤波器设计?.docx(8页珍藏版)》请在第一文库网上搜索。
1、如何实现一种基于FPGA的横向FIR滤波器设计?横向F1R滤波器的设计设经过也采集得到的输入序列为X(n),其通过单位冲激响应为h(n)的因果FIR滤波器后,输出y(n)在时域可表示为线性卷积和的形式:N-TyS)=EHk)X(n-k)=o兄;1就之冢其中NT为FIR滤波器阶数(也称抽头数),可以明显的看出h(n)是长度为抽头数加一的有限长序列,不失一般性的设抽头数为3的FIR单位冲激响应h(n)为,MU)=0.63210.52330.8532-0.3211,依卷积和画出信号流程图如下,我们必须明确这里的自变量表示的并非是连续时间,而是第N次AD采样。首先根据流程图所示,我们需要设计一个关于x
2、(n)的移位电路,其RT1视图如下,:二一FPGA2X碓0|e1k如图所示的x(n)的移位功能在如riSg中可以通过如下代码实现,注意e1k是与数据同步的AD的采样率时针(AD当前数据建立后,采用一个脉冲标志可实现)。inpute1k;xn;xn_1xn2xn3inputsigned8:0x_in;outputregsigned8:0outputregsigned8:0outputregsigned8:0outputregsigned8:0a1ways(posedgee1k)beginxn=x_in;/x(n)xn_1=xn;/x(n1)xn_2=xn_1;/x(n-2)xn_3=xn_2;/
3、x(n3)end其次,为了设计方便,需要将浮点数转换为定点运算,注意,N位的数据完成N*N乘法后,其结果的长度为2N位,为了配合乘法运算,我们需要采用18位补码表示有符号数据(MSB为符号位),并对浮点数进行8位的量化处理(乘以256转换为定点数运算,运算结果除以256可得到相应的浮点数),那么上述的系统的冲激响应h(n)可表示为(这里不可避免的引入了量化误差),h(n)=162256134256218822562E6rPGA之发为乎竺田皑7对应的18位补码有符号十进制数为,7(w)=18W162187/13418W218电路RT1视图如下,如图所示的X(n)移位后对应的乘法功能在Veri1o
4、g中可以通过如下代码实现。inpute1k;inputsigned8:0x_in;outputsignedoutputsignedoutputsignedoutputsigned17:0mu1t;17:0mu1ti;17:0mu1t2;17:0mu1t3;regsigned8:0xn;regsigned8:0xn_1;regsigned8:0xn_2;regsigned8:0xn_3;a1ways(posedgee1k)beginxn=x_in;/x(n)xn_1=xn;/x(n-1)xn_2=xn_1;/x(n-2)xn_3=xn_2;/x(n-3)endassignassignassign
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 如何 实现 一种 基于 FPGA 横向 FIR 滤波器 设计