基于FPGA实现的数字滤波器
技术领域
本实用新型涉及一种数字滤波器,尤其是涉及一种基于现场可编程门阵列(FPGA,Field-Programmable Gate Array)实现的数字滤波器。
背景技术
在数字信号处理领域中,数字滤波器分为有限脉冲响应(FIR)和无限脉冲响应(IIR)两大类。FIR滤波器具有线性和稳定两大优点,在当今的数字信号处理系统中,采用FIR滤波器的应用很广泛。
数字滤波器的实现方案大致有如下几种:1、采用DSP芯片实现;2、采用专用芯片实现;3、采用现场可编程门阵列(FPGA,Field-Programmable Gate Array)来实现。而FPGA对于实现滤波器具有广泛的灵活性,且具有极高的并行处理能力,并可以较大的提高产品研发和生产的速度,所以通过FPGA来实现滤波器是目前数字信号处理领域实现集成化的重要方向。
FPGA是可以由用户进行编程来实现各种数字逻辑功能的数字集成电路,利用其内部的逻辑结构实现任何的布尔表达式、寄存器函数及各种时序控制。目前,随着FPGA技术的发展,FPGA 集成度越来越高(器件内部可用逻辑门可达数千万门),运行速度快(管脚间的延时小,仅几个ns)。各大生产厂商利用自己器件的优势,再配合软件构建了许多常用的知识产权(IP),用它来设计数字电路可以简化系统设计,缩小数据规模,提高系统的稳定性。
现在,越来越多的设计人员,将系统设计模块化,并将经过优化验证的模块代码设计进行重用,为设计带来了快捷和方便。这种方法极大的提高开发效率,降低研发费用,缩短研发周期,减少产品的上市时间。
现有的FPGA厂商随着技术的进步,在优化FPGA结构、增加内部缓存资源及增加各类可定制IP方面加大投入,使硬件设计人员有更大范围更好的借用其成熟的技术平台开发产品,比如:Xilinx的某些逻辑器件将其结构单元的Slice支持两个附加的功能,即用分布式RAM存储数据和用32位寄存器进行数据移位,加大内部RAM的容量,增加可用于信号处理的硬IP,等等。
在目前的数字滤波器的实现方案中,大都停留在常规的优化方向:减少关键路径的逻辑级数、资源共享、流水线、复制电路等方法去减少逻辑资源及改善时序,这种实现方案在芯片逻辑资源比较紧张的情况下将会引起时序问题,对系统稳定性产生不良的后果。
具体来说,目前数字滤波器的实现方案中以下一方面或多方面的缺陷:
1、未充分利用逻辑器件内部的特殊结构,这样就会无形的浪费了部分逻辑资源,从而增加逻辑资源的占有率,引起产品的性能、价格方面的弱势。
2、通过寄存器移位进行数据延时,采用查找表(LUT)进行打拍延时,如果移位信号小于或大于一个查找表(LUT)的输入位宽的话,那么数据延时将会成倍的增加查找表(LUT)的使用数量。从而造成资源的浪费。
3、采用资源共享的方法来优化逻辑资源,但造成了模块处理数据速率降低,使模块的数据吞吐下降。
4、采用复制电路来减小关键路径的扇出,从而达到改善时序的目的,但会造成逻辑资源的增加。
5、优化模块内部的运算模块,使加法器和乘法器运行速度更快或者使其占用的逻辑资源下降。
实用新型内容
为解决现有数字滤波器的不足,本实用新型提出一种基于FPGA实现的数字滤波器,占用FPGA内部的逻辑资源较少、系统稳定且实现成本低。
本实用新型采用如下技术方案实现:一种基于FPGA实现的数字滤波器,其包括:
用于存储待处理的滤波数据的滤波数据存储器;
用于存储滤波系数的滤波系数存储器;
用于控制滤波数据、滤波系数分别存入滤波数据存储器、滤波系数存储器,并控制滤波数据存储器和滤波系数存储器进行缓存移位操作,按序分别读出滤波数据和相应的滤波系数的读写控制单元,其分别连接滤波数据存储器和滤波系数存储器;
用于控制运算单元进行滤波运算的运算控制单元;
用于对滤波数据和相应的滤波系数进行滤波运算,输出滤波运算结果的运算单元,其分别连接滤波数据存储器、滤波系数存储器和运算控制单元。
其中,所述数字滤波器还包括:用于将滤波数据输入单元输出的多路的滤波数据通过分时复用,输出1路滤波数据至滤波数据存储器的第一分时复用电路,其连接在滤波数据输入单元与滤波数据存储器之间。
其中,所述数字滤波器还包括:在运算单元的输出端连接第二分时复用电路。
其中,所述数字滤波器还包括:与滤波系数存储器连接的滤波系数输入单元。
与现有技术相比,本实用新型具有如下有益效果:
本实用新型是从算法去优化数字滤波器,即采用某些逻辑器件的特殊结构实现缓存区(RAM)及寄存器的移位操作,并采用时分复用的方法来提高滤波器的数据吞吐率,以达到降低FPGA芯片内部逻辑资源的占用率,提高了FPGA芯片逻辑资源的利用率,并使数字滤波器的系统时序进行改善,从而提高数字滤波器的稳定性。
附图说明
图1是本实用新型的结构示意图;
图2是图1中滤波数据存储器的存储示意图;
图3是图1中运算单元对滤波数据、滤波系数进行运算的示意图;
图4是RAMH、RAMD中的数据排列示意图;
图5是一个优选实施例中运算单元对滤波数据、滤波系数进行运算的示意图。
具体实施方式
本实用新型提出的数字滤波器是基于FPGA芯片实现的,利用FPGA芯片内部的逻辑器件,采用RAM数据位的移位操作来实现数字滤波器。
如图1所示,本实用新型提出的数字滤波器包括:用于输入待滤波数据的滤波数据输入单元11,其可以为一个或多个并行的数据输出电路;用于在滤波数据输入单元11为多个并行输出的数据输出电路时,将输出的并行数据通过分时复用为串行数据的第一分时复用电路12;连接第一分时复用电路12输出端,用于存储待处理的滤波数据的滤波数据存储器13;用于输出滤波系数的滤波系数输入单元14,其输出滤波系数至滤波系数存储器15;分别连接滤波数据存储器13和滤波系数存储器15的读写控制单元16,并控制滤波数据、滤波系数按照读写控制单元16内部的循环寄存器值M进行读写操作;由运算控制单元17控制进行滤波运算的运算单元18,运算单元18分别连接运算控制单元17、滤波数据存储器13和滤波系数存储器15;依次连接在运算单元18输出端的第二分时复用电路19和滤波数据输出单元20,由第二分时复用电路19将运算单元18输出的滤波结果分时复用,由串行数据转换成并行的多路数据从滤波数据输出单元20输出。
其中,滤波数据存储器13是根据滤波数据的输入频率与滤波器的运行频率确定滤波器循环寄存器值M(Mmin=1)、滤波器的阶数N以及从滤波数据输入单元11输入的滤波数据D的位宽Db来定义,滤波数据存储器13存放与阶数相同个数的滤波数据。
其中,滤波系数存储器15是根据滤波器的阶数N及循环寄存器值M来定义,滤波系数存储器15中存储系数为滤波器阶数的1/2,即N/2的深度。
当滤波数据从滤波数据输入单元11输入之前,滤波器参数(因FIR滤波器的参数是对称的,所以可以只存储一半的参数即可)通过按照设计的顺序写入到滤波数据存储器13。
当滤波数据从滤波数据输入单元11输入时,读写控制单元16将根据循环寄存器M将滤波数据存入滤波数据存储器13。并随着数据的增加,数据存储区的地址也随着增加,直至将阶数相同个数的滤波数据存储完毕,存储示意图如图2所示。其中,RAM表示的滤波数据存储器13,N为存储系数,也就是数字滤波器的阶数。
同时,由读写控制单元16控制:当滤波数据被读出的时候,滤波参数也要相应被读出,并且是一一对应的关系。
如图3所示,具体来说,由读写控制单元16控制将第1组滤波数据从滤波数据存储器13读出、将第1组滤波参数从滤波系数存储器15读出,将第1组滤波数据、第1组滤波参数送入运算单元18,在运算控制单元17的控制下进行运算,此时将会得出第1个滤波运算结果。
当第2组滤波数据从滤波数据存储器13被读出,并且此时第2组滤波参数也从滤波系数存储器15被读出,将两者在运算单元18中进行滤波运算,得出第2个滤波运算结果,此时,第2个结果与第1个结果进行在运算控制单元17的控制下,由运算单元18中的累加器进行累加操作如图4所示。
依次类推,当第M组滤波数据与第M组滤波参数在运算单元18进行滤波运算,最终得出一个滤波器将要输出的值。随着滤波数据不断的输入,滤波器将不断的输出结果数据如图3所示。至此,整个数字滤波器开始随着输入数据进行滤波结果输出。
如果输入的滤波数据是并行的多组数据通道,也可以采用该结构实现,不同在于建立滤波数据的滤波数据存储器13的存储深度不同,输入滤波数据需要通过第一分时复用电路12存入滤波数据存储器13,在滤波数据输出时则需要通过第二分时复用电路19采用分时复用将数据再还原为输入时的并行结构即可。
以某设备的采用Xilinx公司Spartan-6系列器件去实现降采样(抽取)滤波器为例,说明本实用新型技术方案。该设备的降采样(抽取)滤波器参数为:系统时钟为120Mhz,滤波数据的输入频率为30Mhz,滤波器阶数为16阶,输入滤波器的数据为单通道(18bit),滤波系数为9bit。
RAMH表示滤波数据存储器13,滤波系数输入是 H0,H1,H2,……,H8。RAMD表示滤波系数存储器15,需要进行滤波处理的输入滤波数据输入是D0,D1,D2,……,D15。其中,RAMH、RAMD中的数据排列示意图如图4。
如图5在RAMD中输入到D15,而D16到来时,D16准备存入RAMD的最高位,此时RAMD输出的数据为:D15,D14,D13,D12,D11,D10,D9,D8,D7,D6,D5,D4,D3,D2,D1,D0。这时,运算单元18中的运算包括:D0+D15,D1+D14,D2+D13,D3+D12,D4+D11,D5+D10,D6+D9,D7+D8。又因为RAMH此时的输出数据为:H0,H1,H2,H3,H4,H5,H6,H7。至此,对应的滤波数据与滤波系数同时读出来,在接下的节拍下进行乘积与累加得到滤波器的第1个有效值(滤波结果)。
当D17到来时:D17准备存入RAMD的最高位,并按D16相同方式进行运算操作,由运算单元18进行运算得到第2个有效值。依次类推,即随着滤波数据的输入,数字滤波器将会按照时钟节拍来输出上边运算的结果,即流水线输出滤波有效值。
实验证明,本实用新型的数字滤波器中,FPGA芯片中Slices 从之前的216 降到了125;节省42.1%,Slice Reg 从之前的516降到了291,节省43.6%; LUTs 从之前的352降到了235,节省33.2%;。因此,本实用新型提出的数字滤波器可以较好的减少FPGA器件的逻辑资源,实现优化滤波器的目的,提高了数据处理的吞吐率,使逻辑资源降的更低,时序改善的更好,增加了系统的稳定性。
以上所述仅为本实用新型的较佳实施例而已,并不用以限制本实用新型,凡在本实用新型的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本实用新型的保护范围之内。