FPGA实现FIR抽取滤波器的设计

上传人:jin****ng 文档编号:123894945 上传时间:2022-07-23 格式:DOC 页数:10 大小:621.50KB
返回 下载 相关 举报
FPGA实现FIR抽取滤波器的设计_第1页
第1页 / 共10页
FPGA实现FIR抽取滤波器的设计_第2页
第2页 / 共10页
FPGA实现FIR抽取滤波器的设计_第3页
第3页 / 共10页
亲,该文档总共10页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
FPGA 实现 FIR 抽取滤波器的设计FIR(fini te impulse response)滤波器是数字信号处理系统中最基本的元件,它可以在 保证 任意幅频特性的同时具有严格的线性相频特性,同时英单位冲激响应是有限的,没有输 入到输 岀的反馈,系统稳左。因此,FIR滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。 在工程实践中,往往要求对信号处理要有实时性和灵活性,而已有的一些软件 和硬件实现方式 则难以同时达到这两方而的要求。随着可编程逻辑器件的发展,使用FPG A来实现FIR滤波器, 既具有实时性,又兼顾了一立的灵活性,越来越多的电子工程师采用FPGA器件来实现FIR滤 波器。1 FIR滤波器工作原理在进入FIR滤波器前,首先要将信号通过A/D器件进行模数转换,使之成为8bit的 数字 信号,一般可用速度较髙的逐次逼进式A/D转换器,不论采用乘累加方法还是分布式算法设il- FIR滤波器,滤波器输岀的数据都是一串序列,要使它能直观地反应出来,还需经过数模转换, 因此由FPGA构成的FIR滤波器的输出须外接D / A模块。FPGA有着规 整的内部逻辑阵列和 丰富的连线资源,特别适合于数字信号处理任务,相对于串行运算为主导的通用DSP芯片来说, 其并行性和可扩展性更好,利用FPGA乘累加的快速算法,可以设计出髙速的FIR数字滤波器。图一 FIR 滤波器工作原理框图2 16 阶滤波器结构在滤波过程中实现抽取,对于抽取率为N的抽取滤波器而言,当进来N个数据时滤波 器 完成 1次滤波运算,输岀 1次滤波结果。抽取滤波器的结果和先滤波后抽取的结果是一 致的, 只是对于同样的数据,进行滤波运算的次数大大减少。在数字系统中采用拙取滤波器 的最大优 点是增加了每次滤波的可处理时间,从而达到实现髙速输入数拯的目的。采样数据 与滤波器系 数在控制电路的作用下,分别对应相乘并与前一个乘积累加,经过多次(有多少 阶就要多少次) 反复的乘累加最后输出滤波结果,将相同系数归类, 16 阶滤波器公式:+Xh(h;i(C)h飞+ . 1L.龙(1今r W)ll IIU图二16阶FIR滤波器结构乘法器的数量减少一半,但加法器的数量增多了,但相对乘法运算来说,加法运算所 占 用的资源少的多,运算的速度也快得多。3 滤波器系数的求取使用Matlab集成的滤波器设i卜工具FDAtooL可以完成多种滤波器的数值设计、分析与评估,设IM6阶低通滤波器参数如下:米样频率:Fs为50MH乙滤波器归一化截止频率:Fc为0. 4MH乙输入数据位宽:8位,输出 数据宽度:16位FDAtool采用汉宁窗函数(Hanning)设汁16阶线性相位FIR数字滤波器,并提取其特性参数h(n)浮点庶数值10100.01538120.00061110.01364130.002319120.01101740.004883130.00793550.007935140.00488360.011017150.00231970.013641160.0006180.01538117090.015991MATLAB中算出的系数h(n)的值是一组浮点数,进行浮点值到左点值的转换,用16位二进制补码表示为图三幅频相频特性Step Responsew.滤波器抽头数是16个,考虑到线性FIR滤波器的偶对称特性,只考虑8个独立滤波器抽头数,则需要一个28x8的表(英中指数8指的是8个滤波器抽头数,后面的8指的是 输入 数据的位宽)。但是Virrex-e FPGA只能提供4输入的杏找表,所以要对查找表的地 址进行电 路分割。将8位地址线分为高4位和低4位,分别作为两个24x8的查找表的地址 输入,从而 指数倍地节省了硬件资源。4 主程序及仿真 在时钟和计数器的控制下,根据查找表输岀结果位权的不同,将输入数据向左移动相 应的位数,低位按照位权的不同补上个数相当的0”, 然后将移位数据进行累加操作,输出 最终 滤波结果,这里的结果依旧是用二进制数据表示的,只是位数因为移位和累加操作增加 了 8 位。begin firFain: processtype shifiarr is array(15 downto 0) of signed (12 downto 0); variabletmp:signed(12downed0);variableold:signed(12downed0)variablepro:signed(12downed;variable acc : signed (12 downed 0) variable shift:shift_arr;begin reset_loop:loop for i in 0 to 14 loopshift (i) (others=, 0);end loop;result0if reset 二T then exitwait until elkevent and clk= f reset_loop; end if;main:looptmp: =/00000/,&sampl e; pro:=tmp*coefs (0);acc:=pro;for i in 14 downto 0 loop old:=shift(i);pro:二old*coefs(i+1); acc:=acc+pro;shift( i+1):=shift(i):end loop;shift(0):二 tmp;result=acc;wait until elk1 event and elk 二; if reset 二1 then exit resetJoop; end if;end loop main;end loop resetJoop;图五移位加法器的波形仿貞图以上便是基于分布式算法的FIR滤波器的三个主要模块的分析,为了能使该滤波器能正常工作,还需要用VHDL语言编写控制程序,使各模块连接起来,总的来说,该滤波器的实现原理图如下:FILTERINDATfiI “朋町 10. .flj OUTD4n(i0.DAW.OI5OK初师孔”MHDEM.射LCLK图六基于分布式算法的FIR滤波器顶层原理图在FPGA中,不论是基于乘累加的FI R滤波器,还是基于分布式算法的FIR滤波器(包括FIR滤波器的各模块)都是通过VHDL语言编程来实现的。Namew ctk3 addAe n-ti/ rsin data乏丿 outdataQZ $um111/ sum2Q/ sum3Q/ sum4d/ sum5Q/ sum6sum7Li/ count1.0J$4CO 0ns 6CD0ns 800 0ns ftf0Value:1 (HOOO HCOOO O dCOOO OH000001030001030004 00000 HOCOO J-100303HO1 2u$14us1 11.6u$1.8s000 001(002 (004 X Q35 X 006 X m7 K 003 I00000COCOOOOOOOC00000C00000000X 1 X 20000200CO80001800040w.5 结语000C000000)C)TX 5 _ 3(本文所介绍的基于FPGA、采用分布式算法实现FIR滤波器的方法,在提高系统运行速 度和肖省硬件资源方面具有很大的优势。基于分布式算法的FIR滤波器结构可以扩展成 任意阶 数的FIR滤波器。而且,通过改变阶数和查找表中的系数,还可以将此设计灵活地 运用于实现 髙通、低通和带阻滤波器,可移植性较好。因此,这种方法在髙速数字信号处理 中将有很好的 应用前景。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 活动策划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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