CN116366030A - 一种基于fpga的高性能fir滤波器计算电路结构 - Google Patents
一种基于fpga的高性能fir滤波器计算电路结构 Download PDFInfo
- Publication number
- CN116366030A CN116366030A CN202310238299.3A CN202310238299A CN116366030A CN 116366030 A CN116366030 A CN 116366030A CN 202310238299 A CN202310238299 A CN 202310238299A CN 116366030 A CN116366030 A CN 116366030A
- Authority
- CN
- China
- Prior art keywords
- fir filter
- circuit structure
- lut
- fpga
- calculation circuit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03H—IMPEDANCE NETWORKS, e.g. RESONANT CIRCUITS; RESONATORS
- H03H17/00—Networks using digital techniques
- H03H17/02—Frequency selective networks
- H03H17/0201—Wave digital filters
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03H—IMPEDANCE NETWORKS, e.g. RESONANT CIRCUITS; RESONATORS
- H03H17/00—Networks using digital techniques
- H03H17/0063—R, L, C, simulating networks
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03H—IMPEDANCE NETWORKS, e.g. RESONANT CIRCUITS; RESONATORS
- H03H17/00—Networks using digital techniques
- H03H2017/0072—Theoretical filter design
- H03H2017/0081—Theoretical filter design of FIR filters
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种基于FPGA的高性能FIR滤波器计算电路结构。本发明结合了GPC(3,3)结构和基于LUT结构进行分组的DA算法两种方法,充分利用了FPGA芯片上的进位链结构和LUT的结构特征,且采用了自底向上的程序构造方式,运用原语进行编写。本发明能减少FIR滤波器的硬件资源使用量。
Description
技术领域
本发明涉及FPGA底层计算电路设计领域,具体涉及一种基于FPGA的高性能FIR滤波器计算电路结构的实现。
背景技术
近年来,信息技术的飞速发展使得有越来越多的领域需要处理海量的数据,需处理的数据位宽越来越大,对精度、速度、资源利用率等的要求也越来越高,使得高性能计算在越来愈多的领域不断体现其价值。
FPGA(FieldProgrammableGateArray,现场可编程门阵列)技术可以提供丰富的计算资源和高度的设计灵活性,具有计算能力强、应用广泛、功耗较低等优点,基于FPGA研究上述高性能计算电路有着重要的优势和意义。
FIR滤波器作为数字信号处理的重要组成部分,在带宽选择、降噪等众多方面都起着至关重要的作用。其功能是把输入序列通过一定的运算变换成输出序列。不同的运算处理方法决定了不同的滤波器的不同实现功能。一个数字FIR滤波器主要由乘法器和加法器构成,因此,这两个部分的性能对于FIR滤波器的整体性能来说非常重要。
有鉴于此,基于FPGA设计出性能更佳的FIR滤波器计算电路结构有重要意义。
发明内容
本发明的目的在于提供一种基于FPGA的高性能FIR滤波器计算电路设计,旨在得到基于FPGA实现的硬件资源利用率更高的FIR滤波器计算电路结构。
本发明采用的技术方案是:针对高性能FIR滤波计算的需求,设计了结合基于LUT结构进行分组的DA算法和GPC(3,3)结构两种方法的高性能FIR滤波器计算电路结构。且基于原语(Primitive)进行编写。
分布式算法(DistributedArithmetic,DA)最初于1973年由Croisier提出,是一种重要的硬件实现技术,并常常被应用于FIR滤波器的设计中,基于该算法的FIR滤波器可以采用纯硬件的方式来实现数字FIR滤波。DA算法运用了FPGA中的查找表结构,将系数固定的乘积累加运算(MultiplyAccumulate,MAC)转换成查找表操作,用简单的加法代替了乘法运算。DA算法的优点是相较于直接实现乘法器,该算法运算速度更快,在硬件规模上也有一定的改善,适合应用在高速、实时、快变的数字信号处理中。
本发明中使用了基于LUT结构进行分组的DA算法。该算法根据FPGA中LUT的结构特点,对输入数据进行分组,可以得到更高的硬件利用效率。该算法针对LUT输入位数为5的情况,把输入数据分为5位一组,能得到更高的LUT资源利用率。具体可参看本发明实施例部分。
广义并行计数器(GeneralizedParallelCounter,GPC)结构于2009年被HadiParandeh-Afshar等人提出,GPC结构通过充分利用FPGA中查找表(LUT)与进位链(Carrychain)的关系,在完成多组多位数据的求和操作时,相比于传统的加法计算单元通常能够得到更优的运算性能,减少LUT资源的使用率,提高面积利用率。多种不同的GPC构成了庞大的GPC库,在设计过程中,人们可以根据操作数的的不同选取恰当的GPC结构来进行计算,与此同时,人们也继续设计着新的GPC结构以丰富已有的GPC库。
本发明中使用了GPC(3,3)结构,该GPC(3,3)结构可以一次性完成两列3位数据的求和运算;在其求和运算的过程中,LUT将某一列加数的和与进位拆分开,通过进位链计算该列中3位与上一位进位的和,再将这3位求和产生的进位与进位链中的进位传递到下一位。该GPC(3,3)结构的合理组合可以实现高效的高阶高位数加法操作。
本发明的高性能FIR滤波器计算电路中,上述基于LUT结构进行分组的DA算法应用于本高性能FIR滤波器计算单元中的数据输入部分及存储器部分,通过查找表操作得到部分积结果,上述GPC(3,3)结构应用于本高性能FIR滤波器计算单元的各组部分积求和;最后再通过寄存器移位相加得到最终的计算结果。
本发明的高性能FIR滤波器计算电路中,采用了自底向上(Bottom-Up)的程序构造方式,基于原语(Primitive)进行编写。上述采用了基于LUT结构进行分组的DA算法的存储器部分由多个ADD_LUT模块组成,上述GPC(3,3)结构由四个ADD_LUT模块以及一个CARRY4组成,这里的CARRY4为进位链的原语,ADD_LUT为LUT的原语(本发明中原语调用LUT和进位链的具体语法参考XilinxFPGA手册)。
附图说明
图1为用于说明FIR滤波器的基本结构示意图;
图2为用于说明基本的DA算法应用于FIR滤波器中的示意图;
图3为本发明实施例中基于LUT结构进行分组的DA算法的FIR滤波器整体结构示意图;
图4为本发明实施例中GPC(3,3)结构的功能示意图;
图5为本发明实施例中GPC(3,3)结构的电路结构示意图;
图6为本发明实施例中基于LUT结构进行分组的DA算法的结构示意图;
图7为本发明实施例中部分积求和部分的电路结构示意图;
图8为本发明实施例中部分积求和部分的计算过程示意图;
图9为本发明实施例中的高性能FIR滤波器计算电路结构与其他的FIR滤波器电路结构的硬件资源使用情况的图表。
具体实施方式
为进一步阐明本发明的技术方案及优点,以下结合附图和具体实施例对本发明作进一步详细的说明。本实施例设定需要滤波的数据为30组8位二进制数。应当理解,此处所描述的实施示例仅用于说明和解释本发明,并不用于限定本发明。
图1说明了FIR滤波器的基本结构示意图,由图可见,FIR滤波器中,加法器和乘法器是主要结构。
图2为基本的DA算法应用于FIR滤波器中的示意图,基本的DA算法的关键操作是:LUT中已存好这组滤波器系数与所有可能出现的地址信号的乘积结果,输入的数据需要被逐位拆分开,再将每个数据的同一位组合起来作为输入LUT的取地址信号得到一个部分积结果(Out_t),每一位作为一个周期输入一位。由于每个周期输入的地址信号与上个周期相比,在原输入数据中的位置左移了一位,因此每个周期LUT输出的部分积结果之间也相差一位,在进一步求和时需要先移位再进行累加操作。由于FIR滤波器的脉冲响应系数是固定的,因此这个LUT可以通过ROM来实现。
图3为本发明实施例中基于LUT结构进行分组的DA算法的FIR滤波器整体结构示意图,该结构中的数据输入部分采用上述基于LUT结构进行分组的DA算法,用多个查找表产生6个11位的部分积结果(Out_1至Out_6),每个查找表LUT只作用于输入数据的特定5位;部分积求和部分采用GPC(3,3)结构实现这6个11位的部分积结果的求和运算,最后添加输出移位寄存器用于移位累加。
图4为本发明实施例中GPC(3,3)结构的功能示意图,该GPC(3,3)结构应用于本发明实施例中的部分积求和部分,可以一次性完成两列3位数据的求和运算。在图4中,对于第一列,待求和的数为a2,a1,a0以及从上一位传递而来的信号cin以及bit_in;相邻的高位中待求和的数为b2,b1,b0以及上一位传递而来的进位;最终将信号bit_out以及carry_out传输至下一模块。
图5为本发明实例中GPC(3,3)结构的电路结构示意图,可以看到对应于输出结果每一位的3个待求和位来说,LUT将该位的和与进位拆分开,通过进位链计算这三个位与上一位进位的和,再将这三个位求和产生的进位与进位链中的进位传递到下一位。不同于其他GPC结构的是,GPC(3,3)结构将O6输出后连到了下一个进位链,在图5中已用红色线标出。该GPC(3,3)结构的合理组合可以实现高效的高阶高位数加法操作。
图6为本发明实施例中基于LUT结构进行分组的DA算法的结构示意图,在数据个数较多时,采用基于LUT的DA算法的FIR滤波器往往需要一个大地址位宽的ROM,这会带来大量的LUT资源消耗。因此,本发明实施例尝试将查找表的输入进行一定的拆分,以适应FPGA片上LUT资源的特点。本发明实施例基于FPGA芯片LUT的特点,将其拆分为5位一组,并通过约束将相邻的两个LUT-5合并为一个LUT-6。如图5所示,经过拆分后,每个周期将选取每个数据上的同一位共30位数送入查找表中查找出与滤波器系数的部分积结果。由于本设计中我们将这30位数据拆分为6组,每组5位的数据送入六个ROM中,将会得到6个部分积结果,图中用Out_1至Out_6表示。由于输出的部分积结果位宽为11位,因此理论上实现一个这样的ROM需要11个LUT-5。由于针对同一组5位输入数据,两个相邻的LUT-5具有相同的输入信号,因此我们可以通过将其合并为一个LUT-6。这样,得到一个部分积结果所需的LUT为5个LUT-6和1个LUT-5,即总共6个LUT,则每一周期得到6个部分积结果总共所需的LUT个数便由原来的11*6个变为6*6个,资源使用减少了45.5%。
图7为本发明实施例中部分积求和部分的电路结构示意图,从图5中可知,经过上述DA算法中6组查找表的操作,会得到6个11位的部分积结果(Out_1至Out_6),这六个部分积结果是对齐的。在该电路结构中,部分积求和部分的第一级加法主要用于完成图6中部分积结果Out_1至Out_3的求和运算,由于这三个部分积结果为11位数,所以该级加法最多需要11个LUT;该部分的和sum_1将继续参与第二级的求和运算,与部分积结果Out_4以及Out_5进行求和。由于sum_1最大为13位数,所以第二级求和最多需要13个LUT;该部分的和sum_2在部分积求和部分的第三级加法中将与移位寄存器R中的部分高位以及Out_6进行求和,由于sum_2最大为14位数,因此最多需要14个LUT,所得结果暂存入寄存器中等待下一次移位求和,如图8所示。该部分总共所需的LUT数最大为11+13+14=38个。
图9为本发明实施例中的高性能FIR滤波器计算电路结构与其他的FIR滤波器电路结构在系数为不同的十组随机数的情况下资源使用情况的图表。为了更客观地评估本发明的性能优势,我们随机生成了十组8位*30组的FIR滤波系数。在每一组系数中进行实验时,除了本发明实施例提出的结构,还设置了4组对照组,分别是:采用将输入数据分别划分为10位*3组、3位*10组,5位*6组以及6位*5组的不同分组方式的DA算法,并直接用可综合RTL代码编写;而本发明实施例提出的计算电路结构则是通过合并相邻的LUT使得到一个11位的部分积结果只需要5个2位输出的LUT与1个1位输出的LUT,且使用原语进行编写。经过测试,对应上述十组随机滤波器系数的FIR滤波器最终的LUT资源使用量的平均值如图9所示。可以看出,本发明需要的LUT个数和对照组相比是最少的。
综上所述,本发明提出的高性能FIR滤波器计算单元具有以下优点:
相较于基于其他分组的DA算法的FIR滤波器计算电路,本发明基于FPGA实现时,具有更佳的LUT资源利用率。
本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。
Claims (3)
1.一种基于FPGA的高性能计算电路结构,其特征在于:所述电路结构是针对高性能滤波计算的需求,提出了一种基于FPGA实现的高性能FIR滤波器计算电路结构,所述电路结构结合了广义并行计数器(GeneralizedParallelCounter,GPC)库中的GPC(3,3)结构和基于LUT结构进行分组的DA(DistributedArithmetic,分布式运算)算法的一种计算电路结构。
2.根据权利要求1所述的高性能FIR滤波器计算电路结构,其特征在于,相比于传统FIR滤波器计算电路结构采用自顶向下(Top-Down)的程序构造方式,且运用可综合RTL代码编写等特点,所述高性能FIR滤波器计算电路结构采用的是自底向上(Bottom-Up)的程序构造方式,且基于原语(Primitive)进行编写,可以针对FPGA进行更细粒度的优化。
3.根据权利要求1所述的基于LUT结构进行分组的DA算法,其特征在于:所述DA算法应用于本高性能FIR滤波器计算电路结构中的数据输入部分及存储器部分,根据FPGA中的LUT结构特点,对输入数据进行分组,能减少FIR滤波器的硬件资源使用量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310238299.3A CN116366030A (zh) | 2023-03-14 | 2023-03-14 | 一种基于fpga的高性能fir滤波器计算电路结构 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310238299.3A CN116366030A (zh) | 2023-03-14 | 2023-03-14 | 一种基于fpga的高性能fir滤波器计算电路结构 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116366030A true CN116366030A (zh) | 2023-06-30 |
Family
ID=86912178
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310238299.3A Pending CN116366030A (zh) | 2023-03-14 | 2023-03-14 | 一种基于fpga的高性能fir滤波器计算电路结构 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116366030A (zh) |
-
2023
- 2023-03-14 CN CN202310238299.3A patent/CN116366030A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0448367B1 (en) | High speed digital parallel multiplier | |
US5504915A (en) | Modified Wallace-Tree adder for high-speed binary multiplier, structure and method | |
CN111832719A (zh) | 一种定点量化的卷积神经网络加速器计算电路 | |
CN110413254B (zh) | 数据处理器、方法、芯片及电子设备 | |
CN112540743B (zh) | 面向可重构处理器的有无符号乘累加器及方法 | |
Jaberipur et al. | Efficient realisation of arithmetic algorithms with weighted collection of posibits and negabits | |
CN111047034B (zh) | 一种基于乘加器单元的现场可编程神经网络阵列 | |
CN110673823B (zh) | 乘法器、数据处理方法及芯片 | |
JPH07191832A (ja) | 2進数2乗回路 | |
US4545028A (en) | Partial product accumulation in high performance multipliers | |
CN116366030A (zh) | 一种基于fpga的高性能fir滤波器计算电路结构 | |
CN110825346A (zh) | 一种低逻辑复杂度的无符号近似乘法器 | |
CN209879493U (zh) | 乘法器 | |
Kumar et al. | Complex multiplier: implementation using efficient algorithms for signal processing application | |
CN210109863U (zh) | 乘法器、装置、神经网络芯片及电子设备 | |
CN113031911A (zh) | 乘法器、数据处理方法、装置及芯片 | |
CN110647307A (zh) | 数据处理器、方法、芯片及电子设备 | |
Wang et al. | A FPGA Embedded DSP Supporting Parallel Multiple Low Bit-Width Multiply-Accumulate Operations | |
Afreen et al. | Design and implementation of area-delay-power efficient CSLA based 32-bit array multiplier | |
CN115857873B (zh) | 乘法器、乘法计算方法、处理系统及存储介质 | |
CN117591068A (zh) | 一种基于压缩器的fpga近似乘法器 | |
Padmapriya et al. | Design of a power optimal reversible FIR filter for speech signal processing | |
Karunakaran et al. | Exploration on Power Delay Product of various VLSI Multiplier Architectures | |
CN117519641A (zh) | 基于重构计算的通用并行矩阵乘法器 | |
Karukumalli et al. | Design and Implementation of High-Performance Multi-Level Approximate Multiplier |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |