FIR滤波器的FPGA实现方法
- 格式:pdf
- 大小:839.45 KB
- 文档页数:7
vivado fir 原理Vivado FIR滤波器原理FIR(Finite Impulse Response)滤波器是一种常见的数字信号处理滤波器,它的设计和实现对于数字信号的处理非常重要。
Vivado 是一款由Xilinx公司开发的集成电路设计工具,可以用于FPGA (Field-Programmable Gate Array)的设计和实现。
本文将介绍Vivado中FIR滤波器的原理以及相关实现方法。
FIR滤波器是一种线性时不变系统,通过对输入信号进行加权求和来实现滤波效果。
其基本原理是,将输入信号与一组可调节的滤波系数进行卷积运算,得到输出信号。
滤波系数决定了滤波器的特性,可以通过调节系数来实现不同的滤波效果。
在FPGA中,FIR滤波器可以通过硬件电路实现,也可以通过硬件描述语言进行描述并在FPGA上实现。
Vivado中的FIR滤波器实现主要包括以下几个步骤:1. 设计滤波器:在Vivado中,可以使用FIR Compiler来设计FIR 滤波器。
FIR Compiler是Vivado中的一个IP核,可以根据用户定义的滤波器规格自动生成滤波器的硬件描述代码。
用户可以通过设置滤波器的通带频率、阻带频率、过渡带宽等参数来定义滤波器的特性。
2. 生成硬件描述代码:FIR Compiler会根据用户设置的滤波器规格生成相应的硬件描述代码,这些代码描述了滤波器的结构和功能。
可以使用Vivado中的HDL语言(如VHDL或Verilog)来编写这些描述代码。
3. 综合和实现:使用Vivado中的综合工具将硬件描述代码综合为逻辑门级的网表。
然后,使用实现工具将网表映射到目标FPGA器件上,并生成配置比特流文件。
4. 下载和验证:将生成的比特流文件下载到目标FPGA器件上,通过FPGA的输入输出端口连接输入信号和输出信号。
使用测试向量对FIR滤波器进行验证,确保其滤波效果符合设计要求。
在Vivado中实现FIR滤波器的过程中,需要注意以下几个关键点:1. 选择适当的滤波器类型:FIR滤波器可以有不同的类型,如低通、高通、带通和带阻等。
32阶FIR 滤波器的FPGA 实现范晓东1,蔡德林2,桂 岳1,梁本仁1(1.安徽大学电子科学与技术学院 安徽合肥 230039;2.中国电子科技集团公司第38研究所 安徽合肥 230031)摘 要:阐述了有限冲击响应(FIR )低通滤波器的窗函数设计方法,利用并行分布式算法在现场可编程门阵列上实现了32阶FIR 低通滤波器。
采用Altera 公司中Stratix 系列芯片内部的ROM 实现了一种基于查找表结构的FIR 数字滤波器,从而将卷积运算变换成一种查表后的加法运算,提高了运算速度,节省了逻辑单元。
仿真结果表面,基于并行分布式算法的FIR 滤波器最大处理速度可以达到200M Hz 。
关键词:FIR 滤波器;FP GA ;并行分布式算法;Matlab ;Quartus Ⅱ中图分类号:TN713 文献标识码:A 文章编号:10042373X (2009)212186203Implement of 32Orders FIR Filter on FPG AFAN Xiaodong 1,CAI Delin 2,GU I Yue 1,L IAN G Benren 1(1.Electronic Science and Technology Institute ,Anhui University ,Hefei ,230039,China ;2.No.38Institute ,China Electronics Technology Group Corporation ,Hefei ,230031,China )Abstract :Windows function design method of FIR digital filter is introduced ,and the parallel distributed arithmetic is used to implement a 32orders FIR digital ing the Altera ′s Stratix series FP GA to design a new structure of ing the ROM in FP GA ,this design can convert convolution to summation.Thus ,a high process speed is improved and the Logic Ele 2ments (L E )is saved.The result of simulation shows that the max speed of FIR filter can arrive at 200M Hz based on parallel distributed arithmetic.K eywords :FIR filter ;FP GA ;parallel distributed arithmetic ;Matlab ;Quartus Ⅱ收稿日期:2009204222 随着软件无线电的发展,对于滤波器的处理速度要求越来越高。
FPGA的FIR抽取滤波器设计用FPGA实现抽取滤波器比较复杂,主要是因为在FPGA中缺乏实现乘法运算的有效结构,现在,FPGA中集成了硬件乘法器,使FPGA在数字信号处理方面有了长足的进步。
本文介绍了一种采用Xilinx公司的XC2V1000实现FIR抽取滤波器的设计方法。
具体实现结构设计基于抽取滤波器的工作原理,本文采用XC2V1000实现了一个抽取率为2、具有线性相位的3阶FIR抽取滤波器,利用原理图和VHDL共同完成源文件设计。
图1是抽取滤波器的顶层原理图。
其中,clock是工作时钟,reset是复位信号,enable是输入数据有效信号,data_in(17:0)是输入数据,data_out(17:0)是输出数据,valid是输出数据有效信号。
adder18是加法器模块,mult18是乘法器模块,acc36是累加器模块,signal_36to18是数据截位器模块,fir_controller是控制器模块。
控制器定时向加法器、乘法器和累加器发送数据或控制信号,实现流水线操作。
图1 抽取滤波器顶层原理图控制器控制器是抽取滤波器的核心模块,有两个功能:一是接收输入数据,二是向其它模块发送数据和控制信号。
它根据加法器、乘法器和累加器的时序特性,有规律地向加法器发送抽头数据,向乘法器发送系数,向累加器发送控制信号,让加法器、乘法器和累加器在每个时钟周期都完成指定的任务,从而实现流水线操作。
控制器用VHDL语言描述,用寄存器存放抽头和系数。
加法器加法器的输入和输出都是18 bit,用VHDL语言描述实现。
它有两个工作时钟的延迟,在输入数据准备好的情况下,第一个时钟得出相加结果,第二个时钟把相加结果锁存输出。
乘法器乘法器为18 bit输入,36bit输出,用库元件MULT18X18S和36 bit锁存器实现。
MULT18X18S是XC2V1000自带的18×18bit硬件乘法器,单个时钟就可完成乘法运算。
基于FPGA乘法器的FIR滤波器系统设计FPGA(Field Programmable Gate Array)是一种可编程逻辑器件,可以根据设计者的需求和要求进行编程,实现各种数字电路功能。
FIR (Finite Impulse Response)滤波器是一种常用的数字滤波器,其特点是能够对输入信号的有限长度的响应进行滤波处理。
本文将介绍基于FPGA乘法器的FIR滤波器系统设计。
首先,介绍FIR滤波器的原理。
FIR滤波器是一种线性时不变系统,其输出信号由输入信号的加权和组成。
FIR滤波器的输入经过一串系数的加权运算后,得到滤波器的输出。
FIR滤波器的传输函数为:H(z) = b0 + b1*z^(-1) + b2*z^(-2) + ... + bn*z^(-n)其中,bi是滤波器的系数,n是滤波器的阶数,z为单位延迟。
FIR 滤波器的输出信号可以表示为:y(n) = b0*x(n) + b1*x(n-1) + b2*x(n-2) + ... + bn*x(n-n)其中,x是输入信号,y是输出信号。
FIR滤波器的阶数决定了滤波器的性能,阶数越高,滤波器的频率响应越陡峭。
接下来,介绍基于FPGA乘法器的FIR滤波器系统设计。
FPGA乘法器是FPGA中的一种硬件资源,通常用于实现乘法运算。
FPGA乘法器的乘法操作可以并行地执行,可以大大提高FIR滤波器的运算速度。
在设计基于FPGA乘法器的FIR滤波器系统时,首先需要确定FIR滤波器的阶数和系数。
根据滤波器的需求,可以选择不同的阶数和系数。
然后,根据FIR滤波器的传输函数,可以将其转化为差分方程形式。
差分方程形式如下:y(n) = b0*x(n) + b1*x(n-1) + b2*x(n-2) + ... + bn*x(n-n)然后,将差分方程形式转化为数据流形式。
数据流形式中的每一步计算只涉及到少量的数据,可以并行地执行。
数据流形式如下:y(n) = b0*x(n) + b1*x(n-1) + b2*x(n-2) + ... + bn*x(0)接下来,需要将数据流形式转化为硬件电路。
基于fpga的滤波器设计与实现基于FPGA的滤波器设计与实现一、引言滤波器是信号处理中常用的一种工具,它可以通过剔除或增强信号中的特定频率分量来改变信号的特性。
而基于FPGA的滤波器是一种利用可编程逻辑器件FPGA来实现滤波功能的方法。
本文将介绍基于FPGA的滤波器的设计与实现过程。
二、滤波器的基本原理滤波器主要通过改变信号的频谱特征来实现滤波效果。
它可以分为两类:低通滤波器和高通滤波器。
低通滤波器通过剔除高频分量,保留低频分量;高通滤波器则相反,剔除低频分量,保留高频分量。
滤波器的设计需要根据具体的需求选择合适的滤波器类型和参数。
三、基于FPGA的滤波器设计与实现基于FPGA的滤波器设计与实现可以分为以下几个步骤:1. 确定滤波器类型和参数:根据实际需求,选择合适的滤波器类型和参数。
例如,如果需要设计一个低通滤波器,需要确定截止频率和滤波器阶数等参数。
2. 数字滤波器设计:将滤波器的模拟设计转化为数字滤波器的设计。
常见的数字滤波器设计方法有FIR滤波器设计和IIR滤波器设计。
FIR滤波器是一种无反馈的滤波器,具有线性相位特性;IIR滤波器则具有反馈结构,可以实现更高阶的滤波器。
3. 将数字滤波器转化为FPGA可实现的结构:将数字滤波器转化为FPGA可实现的结构,可以采用直接形式实现、级联形式实现或者管线化实现等方法。
其中,直接形式实现是最简单直观的方法,但其硬件资源占用较多;级联形式实现可以减少硬件资源的占用,但增加了延迟;管线化实现则可以兼顾硬件资源和延迟。
4. 使用HDL语言进行FPGA设计:使用HDL语言,如VHDL或Verilog,进行FPGA设计。
根据设计的结构和功能,编写相应的HDL代码。
在编写代码时,需要注意代码的可重用性和可维护性,以便后续的设计和调试。
5. 硬件验证和性能优化:完成HDL代码后,进行FPGA的硬件验证和性能优化。
通过仿真和验证,确保设计的正确性和稳定性。
同时,可以根据实际需求对硬件进行优化,如减小资源占用、降低功耗等。
FIR滤波器的FPGA实现方法关键字::FIR FFT FPGA关键字在数字信号处理系统中,有限脉冲响应(finite impulse response,FIR)数字滤波器是一个非常重要的基本单元。
近年来,由于FPGA具有高速度、高集成度和高可靠性的特点而得到快速发展。
随着现代数字通信系统对于高精度、高处理速度的需求,越来越多的研究转向采用FPGA来实现FIR滤波器。
而对于FIR滤波器要充分考虑其资源与运行速度的合理优化,各种不同的FIR滤波结构各具优缺点,在了解各种结构优缺点后才能更好地选择合适结构来实现FIR滤波。
1FIR数字滤波器FIR数字滤波器由有限个采样值组成,设计中在满足幅值特性时,还能保证精确、严格的相位特性,因此在信号处理等领域得到广泛的应用。
对于FIR滤波器,其输出y(n)表示为如下形式:式中:N为滤波器的阶数(或抽头数);x(i)表示第i时刻的输入样本;h(i)为FIR滤波器的第i级抽头系数。
由于FIR滤波器的冲击响应为一个有限序列,其系统函数可表示为:FIR滤波器的基本结构如图1所示。
FIR滤波器只在原点处存在极点,所以这使得FIR 滤波器具有全局稳定性。
同时FIR滤波器满足线性相位条件,其冲击响应序列为实数且满足奇对称或偶对称条件,即:2实现方法运用FPGA来实现FIR数字滤波器的结构多种多样,但是主要有以下几类:串行结构、并行结构、转置型结构、基于FFT算法结构、分布式结构。
其他类型的FIR滤波器结构都可以由以上几种结构衍生而来。
2.1串行结构由表达式(1)可知,FIR滤波器实质是做一个乘累加运算,其滤波器的阶数决定了一次乘累加的次数,其串行结构如图2所示。
串行结构的FIR滤波器结构简单,硬件资源占用少,只需要复用1个乘法器和1个加法器,所以成本较低。
但是,这种结构的FIR滤波器要经过多个时钟周期才有输出,同时,内部时钟周期还受到乘法器运算速度的影响,所以该结构的FIR滤波器处理速度慢,只适用于滤波阶数较低且处理速度要求低的系统。
2.2并行结构将串行结构的FIR滤波器展开就可以得到并行结构的FIR滤波器,并行FIR滤波器结构又称作直接型FIR滤波器结构,这种结构是直接根据图1的滤波器结构,用多个乘法器和加法器并行实现。
通常考虑到其滤波器系数的对称性,先对输入值进行加法运算,再进行乘法运算,最后累加输出,以此来减少乘法器的个数,其结构如图3所示。
并行结构的FIR滤波器在1个周期内可以完成1次滤波,运行速度快,虽然利用滤波系数对称性,但仍要占用大量的乘法器和加法器,特别对于滤波阶数高的滤波器,其资源占用较多,如对于256阶的滤波器,其需要128个乘法器来实现。
为提高滤波器速度,常引入流水线结构,即在每次加法或者乘法运算后加入1个寄存器存储数据,使得滤波器可以运行在更高的频率上。
2.3转置型结构根据转置定理,如果将网络中所有的支路方向倒转,并将输入x(n)和输出y(n)相互交换,则其系统函数H(z)不变。
通过转置定理,将并行结构的FIR滤波器变换就可以得到转置型FIR滤波器,其结构如图4所示。
基于并行结构的转置型FIR滤波器实现了数据的并行输入,在1个周期内就能完成1次滤波,并且各级结构相同,在每个阶段都可以读出数据,可以对滤波阶数进行扩展或者缩减,实现任意阶数的滤波器。
但是由于基于的是并行结构,便有着并行结构的一些缺点,主要是对于高阶的滤波器,其资源占用量是巨大的,设计成本高。
虽然这样,转置型FIR滤波器仍是应用广泛的一种滤波器。
2.4基于FFT的结构应用快速傅里叶变换(fast fourier transform,FFT)实现FIR滤波器是一种快速实现滤波算法的重要途径。
由式(1)可知,FIR滤波器的输出y(n)是输入x(n)与系统冲击响应序列h(n)的卷积,应用FFT可以快速实现卷积变换。
如图5所示,先将输入信号x(n)通过FFT变换为它的频谱采样值X(k),然后再与FIR滤波器的频响采样值H(k)相乘,H(k)可事先存放在存储器中,最后再将乘积X(k)H(k)通过快速傅里叶反变换(IF-FT)还原为时域序列,即得到输出y(n)。
为实现FFT,根据两有限长序列的线性卷积可用其循环卷积代替而不发生混叠,必须选择循环卷积长度N≥N1+N2-1,即将x(n)和h(n)补零至长度为N的序列,即:在基于FFT的FIR滤波器结构中,求X(k),H(k)以及反傅里叶变换y(n)需要的乘法次数均为N/2log2N,而计算X(k)H(k)需要N次乘法,所以基于FFT的总乘法次数为mf=3/2Nlog2N+N。
由于h(n)满足式(3)条件,所以直接卷积所需的乘法次数为md=1/2N1N2。
假设N1=N2,则比较这两种乘法计算量有:从表1可知,当N1<42时,FFT法的运算量小于直接卷积的运算量,当N1=42时,FFT 法的运算量与直接卷积的运算量相当,当N1>42时,FFT法的运算量大于直接卷积的运算量,并且随着N1增加,FFT法的运算速度越来越快,特别是N1=8192时,FFT法的运算速度与直接卷积相比快上将近100倍。
2.5分布式结构2.5.1分布式算法原理分布式算法(distributed arithmetic,DA)于1973年就由Croisier提出,但是直到FPGA出现,才广泛的被应用于FPGA中计算乘累积和。
对于有符号数x(n)可以用下式的补码形式表示:对于式(7)中的h(i)xb(n-i)代表着输入数据x(n-i)的第i位与抽头系数h(i)的乘积,对于FIR滤波器,其系数h(i)是常数,所以可以事先构造一个查找表。
该查找表存储所有h(i)xb(n-i)的乘积值,通过输入(xb(N-1),xb(N-2),…,xb(0))对该表寻址,然后将查得的值乘上2b后移位累加便得到滤波器输出y(n)。
该查找表构造规则如表2所示。
2.5.2基于分布式算法的FIR滤波器结构基于分布式算法的FIR滤波器主要有3种结构类型。
(1)第一种结构为串行分布式结构。
串行分布式FIR滤波器的原理为,首先用所有N个输入量的最低位对DA查找表进行寻址查值,得到一个部分积,将部分积右移一位即相当于除以2后放到寄存器中暂存。
同时,N个输入量的次低位开始对DA查找表进行寻址查值,得到另一个部分积,把该部分积与上一个储存在寄存器中的值进行相加,相加后的值再右移一位放到寄存器中。
以此重复循环累加,直到所有位数都寻址完成,注意最高位寻址后的部分积是相减,最后所得到的值就是所需要的结果。
当N过大,即FIR滤波器的滤波阶数很高时,采用一个查找表来实现将使得存储查找表的ROM变得十分庞大。
为此可采用部分表结构,即将查找表划分为多个部分,N个输入量的同一位对应不同的部分表寻址。
图6所示即为基于4输入部分表结构的串行DA结构。
(2)第二种结构为并行分布式结构。
并行分布式结构就是将N个输入量的不同位进行同时查表,而相同位送入同一个ROM寻址,不同位有不同的ROM。
其结构如图7所示。
第三种结构为串并结合分布式结构。
它是一种折中方案,既要求速度不太高又要求资源占用少。
对于串行分布式算法,是一次一位(one bit-at-a-time,1BAAT)查找表,而并行分布式算法是一次B位(B bits-at-a-time)。
所以串并结合分布式算法采用一次多位,如2BAAT,3BA-AT。
图8所示为4BAAT查找表结构图。
图8中位数B是4的倍数,SRL为移位寄存器。
SRL中第1行从右边数第1列为数据的0位,第2列为数据的1位,第3列为数据的2位,第4列为数据的3位。
类似地,第2行右数第1列为数据的4位,第2列为数据的5位,第3列为数据的6位,第4列为数据的7位。
以后各行按相似的数位顺序排列。
在第一个时钟周期,数据的0,4,…,B-4位同时进入查找表ROM中,查出所要的数据,第二个时钟周期,1,5,…,B-3位同时进入ROM中,查出所要的数据,所查得的数据传递给下一级累加器进行累加,这样依次对剩下的各数据位进行同样的操作。
由于每个块之间相差4位,即16倍,为了对应位相加,所以乘16。
FIR滤波器的分布式算法结构比单独用乘法器实现的速度快,特别是滤波阶数越高,其优势更加明显。
分布式结构中,串行结构是1次查询1位,所以对B位的数据在不算上移位寄存等的时间,完成1次滤波需要B个时钟周期;而并行结构只需要1个时钟周期便完成滤波,所以并行结构是速度最优的结构,但是并行结构需要B个DA查找表,需要大量的ROM来储存,加大了硬件资源的消耗,特别是阶数越高,硬件规模将十分膨大;串并结构综合两种结构优势,实现在速度和规模上的协调。
实际应用中。
需根据系统的要求来选择合适的结构。
3结语本文定性地分析了各种FIR滤波器的FPGA实现方法。
对于低阶的FIR滤波器可采用串行结构、并行结构以及转置型结构来实现,而并行结构和转置型结构的FIR滤波器以牺牲资源损耗来实现了速度上优势;对于高阶的FIR滤波器,基于乘法器结构的串行结构、并行结构及转置型结构在速度上难以达到高速处理的要求,而分布式算法将乘法转换为查表和累加的结构,使得分布式结构的FIR滤波器在速度上得到了提高,但三种不同形式的分布式结构要在综合考虑资源以及速度的基础上进行合理选择;同样采用FFT实现的FIR滤波器以减少运算量来获得了速度上的提高,特别是滤波阶数越高其速度提升越明显。
现代工程技术领域对滤波系统的带宽、高速、信号的实时性处理等方面要求越来越高,在运用FPGA来实现FIR滤波中,基于乘法器结构的FIR滤波器无法满足以上要求,而分布式结构的FIR滤波器巧妙地运用ROM查找表来实现固定系数的乘累加运算,避免了乘法运算,并且在随后的每级加法运算中引入流水线结构,提高了速度。
因此采用分布式算法实现FIR滤波器是目前研究的热点,同时无论哪种分布式算法都要使用ROM来做查找表,但是随着滤波阶数的增加,ROM的数量将会增加,在进一步提高速度的情况下如何减少ROM的数量是今后亟待解决的问题。