一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种批处理FIR算法的硬件实现方法和硬件系统与流程

2022-02-19 05:28:53 来源:中国专利 TAG:

一种批处理fir算法的硬件实现方法和硬件系统
技术领域
1.本发明涉及数字信号处理中fir算法及其硬件实现技术领域,更具体地说,涉及一种批处理fir算法的硬件实现方式和硬件系统。


背景技术:

2.数字信号处理技术在语音信号处理、雷达成像、航空航天等被广泛应用。它可以通过算法将信号中的特征参数提取出来,与已知的特征进行对比和匹配。数字信号处理技术在现代工程领域起到了非常重要的作用。
3.有限冲激响应(finite impulse response,fir)滤波器是其冲激响应为有线长度的滤波器,脉冲输入信号会在有限时间内变为零。批处理是现代硬件加速技术的一个重要概念。从并行计算到单指令流多数据流(single instruction multiple data,simd)。同时处理多批共性数据可以极大的节省硬件中控制和数据通信开销,提高运算的效率。
4.然而在现有的fir加速器设计中,往往在设计中注重单次计算并行度和运算流水线,而忽略了多批次、小规模数据对片上存储利用度不高的问题。同时在多批数据处理场景中,处理器中频繁调用加速器配置指令,会耗费大量的周期在控制逻辑上,降低数字信号处理的效率。
5.中国专利申请用于高效fft和fir硬件加速器的计算模块,申请号cn 200980139643.1,公开日2014年05月07日,公开了一种可运行在fft模式和fir模式的硬件加速器。硬件加速器可接收输入数据和系数数据并为所选择的模式执行计算。在fft模式,计算基2fft,产生对应于两个复数四个实数输出。在fir模式,产生一个实数输出。硬件加速器可使用三个复用器从fft模式向fir模式转换。所有fir组件可以在fft模式中使用。可以增加寄存器来提供流水线操作支持。硬件加速器可以支持多个数值表示系统,该方法重点在于对fir算法进行加速,但对于含有批处理的应用场景,仍然不能实现很高的性能。


技术实现要素:

6.1.要解决的技术问题
7.针对现有技术中存在的含有批处理的fir加速器性能不够,数字信号处理的效率不高等问题,本发明提供一种批处理fir算法的硬件实现方式和硬件系统,综合数字信号处理场景下的需要、面积功耗和系统运算速度,提出具有批处理功能的fir算法硬件实现方法以及对应的硬件系统,提高fir加速器性能,优化数字信号处理硬件设计。
8.2.技术方案
9.本发明的目的通过以下技术方案实现。
10.一种批处理fir算法的硬件实现方式,包括控制模块、源数据地址生成模块、系数地址生成模块、结果地址生成模块、计算模块、存储单元和数据搬运模块;控制模块分别与源数据地址生成模块、系数地址生成模块、结果地址生成模块、计算模块和数据搬运模块相连,源数据地址生成模块和系数地址生成模块均与计算模块连接,计算模块还连接结果地
址生成模块,源数据地址生成模块、系数地址生成模块和结果地址生成模块与存储单元均连接,数据搬运模块与存储单元相连;所述计算模块包括m路乘累加器,m为大于零的整数。
11.更进一步的,所述存储单元包括源数据区、系数区和结果区,存储单元包括4*m 1个存储器;源数据区包括2*m个存储器,系数区包括1个存储器,结果区包括2*m个存储器。以m=16的规模为例,存储单元包括65个sram,其中sram0

31为源数据区,sram32为系数区,sram33

64为结果区。数据搬运模块用于在ddr与sram之前实现数据搬运。
12.更进一步的,所述源数据地址生成模块包括m个向量通道,所述系数地址生成模块包括1个系数通道,所述结果地址生成模块包括m个结果数据通道;所述向量通道和系数通道均连接计算模块的输入端,计算模块的输出端连接结果数据通道。以m=16为例,源数据地址生成模块包括16个向量通道,结果地址生成模块包括16个结果数据通道,16个向量通道与运算模块的16个第一输入接口连接,系数通道同时与运算模块的16个第二输入接口连接,运算模块的16个输出接口与16个结果数据通道连接。
13.更进一步的,所述乘累加器包括乘法器和加法器,乘法器的输出端连接第一加法器的输入端,第一加法器的输出端连接第二加法器的输入端,第二加法器的输出端连接第三加法器的输入端,第一、第二、第三加法器的输出端均与自身的输入端连接;乘法器、加法器的输入与输出之间都具有一拍的延时。
14.更进一步的,所述控制模块配置解析为m个通道各自的批处理条数。控制模块用于解析外部配置,对各计算模块和存储单元进行控制,控制模块对应m个通道各自的处理数据,并实现多批次的数据处理。
15.一种批处理fir算法的硬件实现方法,包括以下步骤:
16.设定fir算法的参数,所述参数包括单批的序列长度、滤波系数长度和批处理的批数,根据设定参数组织fir加速器硬件;
17.根据需要处理的数据序列和处理批数存储源数据;
18.源数据存储完成后执行计算,至所有的结果数据运算完成,将结果数据存入结果区sram。
19.更进一步的,源数据在存储时不进行补零操作,补零操作在运算过程中进行。运算过程中进行补零节省源数据的存储空间,提高存储效率。
20.更进一步的,存储源数据时,源数据的向量[m*n 0]存储在存储单元的第一存储器中,源数据的向量[m*n 1]存储在存储单元的第二存储器中,依次类推,共有m个存储通道,轮流存储各批源数据,n为大于零的整数。源数据根据通道数进行存储,支持系统的批处理计算。
[0021]
更进一步的,计算模块在计算多批序列的滤波结果时,批处理的所有序列共享相同的滤波系数和长度。
[0022]
更进一步的,存储单元使用左右乒乓的方式存储源数据和计算结果,存储单元使用深度乒乓的方式存储系数。此处存储的源数据即滤波向量,存储的系数即滤波系数。
[0023]
3.有益效果
[0024]
相比于现有技术,本发明的优点在于:
[0025]
本发明的一种批处理fir算法的硬件实现方式在传统fir算法硬件结构的基础上,加入了批处理功能。在多批数据多路并行计算的基础上,在地址生成模块中完成补零,减少
对源数据存储空间以及对存储器的访问,提高数据存储效率。
[0026]
本发明一次启动计算多批数据,减少了配置信息和启动数据搬运时的时钟周期消耗,提高fir算法硬件执行性能;在多批数据中共享滤波器的权重,在小点数批处理场景下的fir计算也能具有很好的性能。
附图说明
[0027]
图1是本发明的硬件系统的结构示意图;
[0028]
图2是本发明fir算法的计算过程示意图;
[0029]
图3是本发明的存储单元数据存储分布示意图;
[0030]
图4是本发明的计算模块乘累加器的结构示意图;
[0031]
图5是本发明的存储单元的乒乓执行示意图;
[0032]
图6是本发明的源数据地址生成模块的补零波形仿真图。
具体实施方式
[0033]
下面结合说明书附图和具体的实施例,对本发明作详细描述。
[0034]
实施例1
[0035]
fir滤波器是一种重要的数字信号处理方法,为了更好的理解本实施例,先对fir滤波器进行说明。
[0036]
对于n点m阶的fir滤波器,n点向量表示为:
[0037]
x=[x(0) x(1) x(2)
ꢀ…ꢀ
x(n

2) x(n

1)],
[0038]
m阶滤波系统表示为:
[0039]
h=[h(0) h(1) h(2)
ꢀ…ꢀ
h(m

2) h(m

1)],
[0040]
n点m阶fir滤波器的计算公式为:
[0041][0042]
上述公式在计算时,需要进行m n

1次运算,得到m n

1个结果,其中每次运算包括两个m点向量的乘累加计算。
[0043]
如图2所示,常用的fir计算方式为划窗法。如图2所示,当滤波系数窗口超过滤波向量的范围时,需要对滤波向量的前后各补n

1个零。在现有技术的滤波器设计中,源数据存储器不仅需要存储长度为m的滤波向量,也需要额外存储2*(n

1)个零。在进行批处理时,假设批数为b,则需要额外存储2*b*(n

1)个零,消耗大量的无用空间。同时也延长了数据搬运过程中向存储单元写入滤波向量的时间。
[0044]
本实施例公开一种fir算法的硬件系统,如图1所示。所述系统包括控制模块、源数据地址生成模块、系数地址生成模块、结果地址生成模块、计算模块、存储单元和数据搬运模块;控制模块分别与源数据地址生成模块、系数地址生成模块、结果地址生成模块、计算模块和数据搬运模块相连,源数据地址生成模块和系数地址生成模块均与计算模块连接,计算模块还连接结果地址生成模块,源数据地址生成模块、系数地址生成模块和结果地址生成模块与存储单元均连接,数据搬运模块与存储单元相连。
[0045]
所述计算模块支持批处理m路并行数据,m为大于0的整数,本实施例以m=16进行具体描述。计算模块包括16个乘累加器,乘累加器的数据类型为单精度浮点型数据,所述乘累加器结构如图4所示,包括乘法器和加法器,乘法器的输出端连接第一加法器的输入端,第一加法器的输出端连接第二加法器的输入端,第二加法器的输出端连接第三加法器的输入端,第一、第二、第三加法器的输出端均与自身的输入端连接;乘法器、加法器的输入与输出之间都具有一拍的延时。
[0046]
相比于一个乘法器和两个加法器的设计,本发明计算模块的乘累加器增加了一个加法器。一乘两加的乘累加器支持的累加长度大于8,而一乘三加构成的乘累加器,减少用于打拍延时的寄存器,支持1至7累加长度,较小的累加长度可以使整个fir加速器支持更小的点数,更好的体现所述fir加速器在小点数批处理场景下的性能优势。
[0047]
所述存储单元包括源数据区、系数区和结果区,源数据区用于存储滤波向量,系数区用于存储滤波系数,结果区用于存储滤波结果。本实施例中存储单元包括65个sram,每个sram宽为64bit,深度为2k。
[0048]
存储单元使用左右乒乓的方式存储源数据(滤波向量)和滤波结果,使用深度乒乓的方式存储系数(滤波系数)。左右乒乓即同一类型的源数据使用两片sram进行分区存储,一片执行第一条运算指令的计算过程,进行数据读取;同时,另一片执行下一条运算指令的数据搬运过程,进行数据写入。深度乒乓即同一类型的源数据使用一片sram的不同地址段进行分区存储,执行第一条运算指令的计算过程时,对前半个地址段(或后半)进行数据读取。同时执行下一条运算指令的数据搬运过程,对后半个地址段(或前半)进行数据写入。
[0049]
如图5所示,存储单元的硬件sram0

31为源数据区,sram32为系数区,sram33

64为结果区。sram0

15、sram32的0

1023地址、sram33

48为乒区,sram16

31、sram32的1024

2047、sram49

64为乓区。在乒区执行运算时,如果外部配置了下一条指令,则数据搬运模块从ddr向乓区搬运下一条指令所需的源数据。
[0050]
源数据地址生成模块包括16个向量通道,系数生成模块包括1个系数通道,源数据地址生成模块的16个向量通道与计算模块的16个第一输入接口相连;系数生成模块的系数通道同时与计算模块的16个第二输入接口相连;结果地址生成模块包括16个结果数据通道,16个结果数据通道与计算模块的16个输出接口相连。如图6所示eda工具中的仿真波形图,源数据地址生成模块在生成地址索引并向计算模块供数时,在超出索引的地方会进行补零。由于所述fir滤波器使用固定长度乘累加进行运算,所以前后需要补零。地址生成模块会比较生成的地址信号与当前数据的起始和结束地址。若地址信号超出范围,则拉高地址生成模块内的zero使能信号,经过与存储单元相同的延时后向计算模块输出数据零。
[0051]
所述控制模块配置解析为16通道各自的批处理条数。
[0052]
本实例所述的批处理fir算法的硬件系统可以用专用集成电路的形式实现,也可以通过现场可编程门阵列的形式实现,也就是说,本实施例所述硬件设计可以进行fpga实现,也可以以asic芯片形式实现。
[0053]
基于上述的一种批处理fir算法的硬件系统,本实施例公开一种批处理fir算法的硬件实现方法,包括以下步骤:
[0054]
步骤s1:设定批处理fir算法的参数,组织fir加速器硬件
[0055]
所述批处理fir算法的参数包括单批的序列的长度(fir_num),滤波系数长度
(fir_order)和批处理批数(batch_num)。假设sram的深度为d,批处理fir算法的参数具有如下的约束:
[0056]
1、(fir_num fir_order

1)*ceil(batch_num/16)<d;
[0057]
2、0<fir_order<d/2;
[0058]
3、fir_num>4。
[0059]
本实施例设定单批的序列长度是16,批处理批数也是16,即滤波器工作时支持16路并行计算16批数据,执行过程是基于滑窗的乘累加运算。每一批数据在补零后的序列长度和系数长度都相等,可以使用乘累加器实现固定阶数的乘累加运算。
[0060]
步骤s2:根据需要处理的数据序列和处理批数存储源数据
[0061]
存储源数据时,向量[16n 0]存储在sram0中,向量[16n 1]存储在sram1中,依次类推,共有16个sram存储通道,轮流存储各批数据。源数据的补零不需要预先写入存储单元中,补零过程在运算过程中运行,在进行地址索引时,滤波器会判断当前索引与源数据范围,当索引超出存储单元中源数据存储的范围时,会向计算模块输出零元素,节约了源数据的存储空间。
[0062]
该存储方法单次在源数据sram中存储所有批次的源数据,支持16路乘累加器同时并行处理数据。
[0063]
步骤s3:源数据存储完成后,执行计算;直至所有的结果数据运算完毕,将结果数据存入结果区sram,运算完成。
[0064]
本实施例的批处理fir滤波器一次可以计算多批的源数据。多批源数据被平均划分成16组,在存储单元的16个存储器中轮流被存储。源数据从ddr通过数据搬运单元搬入存储单元时,源数据在存储单元的排列按图3进行分布。类似地,计算完成后,结果数据通过数据搬运单元从存储单元搬出到ddr时,结果数据在存储单元也按图3的方式进行分布。
[0065]
计算多批序列的滤波结果时,批处理的所有序列共享相同的滤波系数和长度。
[0066]
依上述方法依次类推,这种排列方法和补零方式适用与各种并行路数的fir滤波器设计。
[0067]
通过仿真实验对比具有相同并行路数的单批次fir滤波器与批处理fir滤波器对多条数据的运算周期数,结果如表1所示。
[0068]
表1
[0069]
设计向量长度系数长度批数周期数单批次fir滤波器2944096122880批处理fir滤波器294409632805
[0070]
表1公开了批处理fir滤波器在128批次下的性能优势,由于省去了大量配置和启动时间,批处理fir滤波器大幅降低了运算周期数,提高fir加速器性能。本发明解决了传统fir加速器对于小数据多批次情况中,fir算法补零后数据存储效率不高的问题,以及数据搬运阶段频繁启动的问题,提高了fir算法硬件执行的性能。
[0071]
如上所述,尽管参照特定的优选实施例已经表示和表述了本发明,但其不得解释为对本发明自身的限制。在不脱离所附权利要求定义的本发明的精神和范围前提下,可对其在形式上和细节上做出各种变化。所以,如果本领域的普通技术人员受其启示,在不脱离本创造宗旨的情况下,不经创造性的设计出与该技术方案相似的结构方式及实施例,均应
属于本专利的保护范围。此外,“包括”一词不排除其他元件或步骤,在元件前的“一个”一词不排除包括“多个”该元件。产品权利要求中陈述的多个元件也可以由一个元件通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献