如何实现一种基于FPGA的横向FIR滤波器设计?.docx

上传人:lao****ou 文档编号:798964 上传时间:2024-05-26 格式:DOCX 页数:8 大小:194.80KB
下载 相关 举报
如何实现一种基于FPGA的横向FIR滤波器设计?.docx_第1页
第1页 / 共8页
如何实现一种基于FPGA的横向FIR滤波器设计?.docx_第2页
第2页 / 共8页
如何实现一种基于FPGA的横向FIR滤波器设计?.docx_第3页
第3页 / 共8页
如何实现一种基于FPGA的横向FIR滤波器设计?.docx_第4页
第4页 / 共8页
如何实现一种基于FPGA的横向FIR滤波器设计?.docx_第5页
第5页 / 共8页
亲,该文档总共8页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《如何实现一种基于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

5、assignmuItOmu1timu1t2mu1t3xn*xn_1xn2xn318,d162x(n)*h(0)*18,d134x(n-1)*h(1)*18,d218x(n-2)*h(2)*18,d262062;/x(n-3)*h(3)最后,采用一级加法电路完成整个求卷积和的过程,需要注意的是,有符号的加法操作,需要对符合位进行保护,完成加法后数据的长度应设为2*N+1og2(Tap+1)T(其中TaP表示抽头数),则本文需要的加法圉谖的长度为为19位(2*9+1og(4)-1),并且取其高11位作为y(n)输出(该操作等于除以256)其电路RT1视图如下,该结构的总体Veri1og代码如下。m

6、odu1efir(inpute1k,inputsigned8:0x_in,outputsigned10:0y_out);regsignedregsignedregsignedregsigned8:0xn;8:0xn_18:0xn_28:0xn_3wiresignedwiresignedwiresignedwiresignedwiresigned17:0mu1t;17:0mu1ti;17:0mu1t2;17:0mu1t3;18:0adder;a1ways(posedgee1k)beginxn=x_in;/x(n)xn_1=xn;/x(n-1)xn_2=xn_1;/x(n-2)xn_3=xn_2;

7、/x(n-3)endassignmu1t-xn*assignmu1ti-xn_1assignmu1t2=xn2assignmu1t3=xn318,d162x(n)*h(0)*18,d134x(n-1)*h(1)* 18,d218;/x(n-2)*h(2)* 18,d262062;/x(n-3)*h(3)assignadder=mu1t+mu1ti+mu1t2+mu1t3;/adder(n)=x(n)*h(0)+x(n-1)*h(1)+x(n-2)*h(2)+x(n-3)*h(3)assigny_out=adder18:8:/y(n)=adder(n)/256endmodu1e基于Mode1迎I

8、1求系统冲激响应与矩形脉冲响应列写testbench如下,timesca1e1ns1nsdefinead_c1k20modu1efirtb;regc1k;regsigned8:0x_in;wiresigned10:0y_out;firfir(.c1k(c1k),.x_in(x_in),.y_out(y_out);initia1e1k=1;a1ways#(adc1k2)e1k=c1k;initia1beginx#7#3x#7in=9,d;ad_c1k*20);#(X#7X#7X#7X#(in=9,d100;ad_c1k);in=9,d;ad_c1k*20);in=9,d100;ad_c1k);in=9,d1OO;ad_c1k);in=9,d100;ad_c1k);in=9,d100;ad_c1k);x_in=9,d1OO;#(ad_c1k);x_in=9d;#Cad_c1k*20);Jstop;endendmodu1e仿真求得对应的响应为显然,当输入为x(入为00(n)时,输出为y(出=IOoh(n)(存在着量化误差),输入为x(n)=100u(n)-u(n-5)时,输出y(n)=636(n)115(n-1)200(n-2)168(n-3)168(n-4)1056(x5)53(n-6)-33(-7)o审核刘清

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 应用文档 > 工作总结

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



客服