CN102497174A - 一种待滤波数据提供装置 - Google Patents
一种待滤波数据提供装置 Download PDFInfo
- Publication number
- CN102497174A CN102497174A CN2011104434256A CN201110443425A CN102497174A CN 102497174 A CN102497174 A CN 102497174A CN 2011104434256 A CN2011104434256 A CN 2011104434256A CN 201110443425 A CN201110443425 A CN 201110443425A CN 102497174 A CN102497174 A CN 102497174A
- Authority
- CN
- China
- Prior art keywords
- filtering data
- buffer
- treating
- memory
- treat
- 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
- 230000015654 memory Effects 0.000 claims abstract description 68
- 238000001914 filtration Methods 0.000 claims description 216
- 239000000872 buffer Substances 0.000 claims description 179
- 238000013461 design Methods 0.000 abstract description 10
- 238000004364 calculation method Methods 0.000 abstract description 4
- 230000000694 effects Effects 0.000 abstract description 4
- 238000000034 method Methods 0.000 description 20
- 238000006073 displacement reaction Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 13
- 238000012545 processing Methods 0.000 description 5
- 102000016550 Complement Factor H Human genes 0.000 description 4
- 108010053085 Complement Factor H Proteins 0.000 description 4
- 238000009825 accumulation Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 125000004122 cyclic group Chemical group 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 241001269238 Data Species 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000000205 computational method Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002650 habitual effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Landscapes
- Complex Calculations (AREA)
Abstract
本发明公开了一种待滤波数据提供装置。该待滤波数据提供装置充分利用了待滤波数据局部性原理,没有重复加载待滤波数据的现象,并且每访问一次存储器,可得出BS个结果,减少存储器访问次数,从而达到了“一次读取,多次计算”的效果,进而降低了整个设计的功耗。
Description
技术领域
本发明涉及电子行业数字信号处理技术领域,尤其涉及一种用于有限脉冲响应(Finite Impulse Response,简称FIR)滤波器的待滤波数据提供装置。
背景技术
FIR滤波器在数字通信系统中有着广泛应用,业界也一直致力于改善其滤波性能。该滤波器可以用来执行多种工作,比如匹配滤波、噪声隔绝、信道等化等。
一般情况下,FIR滤波器算法可以表示为:
其中,H向量为滤波系数,其数目为K个,包含元素为H(0)~H(K-1);X向量为待滤波的数据,其数目为Nx个,包含待滤波数据元素为:X(0)~X(Nx-1),算法中使用到的X向量索引小于0的部分,均用零代替;Y向量为滤波输出,其数目为Nx个,包含元素为Y(0)~Y(Nx-1)。现有技术中,有多种结构及实现方法被提出来,以加速和简化FIR滤波器算法。
中国专利CN 1525642A公开了一种可重新配置的有限脉冲响应滤波器,该滤波器结构针对固定应用场合有较高的效率,其构造如图1所示。参照图1,该滤波器的工作过程如下:根据应用场合固定滤波系数个数K,而后根据该K个滤波器系数设计K个数字处理单元,K个滤波系数预先存储在数字处理单元中,当待滤波数据从图1中左边输入时,每次可以完成K个待滤波数据和K个滤波系数的乘法运算,然后再横向累加,得到1个滤波结果,从图1所示FIR滤波器的右边输出。
在实现本发明的过程中,申请人意识到现有技术FIR滤波器存在如下技术缺陷:1)当滤波系数K数目较大时,现有技术FIR滤波器一般是将各个滤波系数同待滤波数据相乘,得到子结果,这个过程是并行完成,但是之后将各个子结果相加得到滤波结果时,该累加所需时间直接取决于滤波系数个数,在滤波系数数目较大的时候,滤波结果输出的关键路径很长,严重影响其工作效率;2)数字处理单元个数受限于滤波系数个数,必须确定了应用场合中滤波系数的个数后,才能固定数字处理单元的个数,缺乏应用灵活性。即当设计固定后,该滤波器系统仅适用于一种应用场合,该场合所需滤波系数个数固定;
同时,现有技术的待滤波数据提供装置中,待滤波数据存在着局部性原理,加载重复的数据使得待滤波数据的使用效率很低,另外重复的访问存储器一方面会有较大的时间开销,另一方面会增大系统的功耗。
发明内容
(一)要解决的技术问题
为解决上述的一个或多个问题,本发明提供了一种有限脉冲响应FIR滤波器的待滤波数据提供装置,以待滤波数据的利用率。
(二)技术方案
本发明公开了一种待滤波数据提供装置。该待滤波数据提供装置包括:存储器,用于依次存储NX个待滤波数据;缓存器实体,包含至少K’-1+2BS个存储单元,该K’-1+2BS个存储单元用于自前至后缓存待滤波数据;初始化逻辑单元,用于对缓存器实体进行初始化;读逻辑单元,用于在第n的运算周期,收到读使能信号后,以有效偏移地址为起点,按照自前至后的顺序依次读取缓存器实体中BS个存储单元的滤波数据,并将该BS个滤波数据发送至乘法器,该BS个滤波数据为:X(nBS-i),X(nBS-i+1),……,X[(n+1)BS-i-1],当待滤波数据的向量索引小于0的,待滤波数据用0代替;移位逻辑单元,用于当接收到移位信号后,将缓存器实体中地址为BS-1至K’-2+2BS的存储单元中的滤波数据前移BS个位置;从存储器中依次读取BS个待滤波数据缓存入缓存器实体中地址为K’-1+BS~K’-2+2BS的存储单元。
(三)有益效果
从上述技术方案可知,本发明待滤波数据提供装置可以实现待滤波数据高利用率,具体来讲:本发明充分利用了待滤波数据局部性原理,没有重复加载待滤波数据的现象,并且每访问一次存储器,可得出BS个结果,减少存储器访问次数,从而达到了“一次读取,多次计算”的效果,进而降低了整个设计的功耗。
附图说明
图1为现有技术FIR滤波器的结构示意图;
图2为FIR滤波器的结构示意图;
图3为FIR滤波器中滤波系数缓存器的示意图;
图4为本发明实施例待滤波数据缓存器的示意图;
图5a为在BS=4时本发明实施例待滤波数据缓存器存储空间为4BS下编码和初始化后的示意图;
图5b为如图5a所示待滤波数据缓存器在移位后的示意图;
图6为本发明实施例待滤波数据缓存器中有效偏移地址产生的示意图;
图7a为在BS=4时本发明实施例待滤波数据缓存器存储空间为5BS下编码和初始化后的示意图;
图7b为如图7a所示待滤波数据缓存器在移位后的示意图;
图8a为FIR滤波器中滤波系数在存储器中存储的示意图;
图8b为FIR滤波器中滤波系数在滤波系数缓存器中存储的示意图;
图9a为待滤波数据在本发明实施例待滤波数据缓存器中存储的示意图;
图9b为待滤波数据在本发明实施例待滤波数据缓存器中存储的示意图;
图10a为FIR滤波器进行第1次乘累加运算的示意图;
图10b为FIR滤波器进行第2次乘累加运算的示意图;
图10c为FIR滤波器进行第18次乘累加运算的示意图;
图11A为当K’=BS+3时本发明实施例待滤波数据缓存器初始化后的数据存储的示意图;
图11B为图11A所述待滤波数据缓存器移位后的数据存储的示意图;
图12A为当K’=3BS+2时本发明实施例待滤波数据缓存器初始化后的数据存储的示意图;
图12B为图12A所述待滤波数据缓存器移位后的数据存储的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。虽然本文可提供包含特定值的参数的示范,但应了解,参数无需确切等于相应的值,而是可在可接受的误差容限或设计约束内近似于所述值。
申请人发现,可以将公式一中FIR滤波器的算法展开为如下的结果:
......
Y(Nx-1)=H(0)X(Nx-1)-H(1)X(Nx-2)+H(2)X(Nx-2)+…-H(k-1)X(N x -K)
对于如上所示的FIR滤波器算法展开结果,滤波系数使用具有如下规律:
(1)就每一个虚线框所在的列来说,每次乘法器用一个滤波系数和虚线框内BS个待滤波数据进行运算,这个过程的BS个乘法可以为并行运算;
(2)并行后的结果再进行累加,累加过程是如上所示自右向左,累加K次后即可得出Y(0)~Y(BS-1)共BS个结果。其中,每得出BS个结果,分别使用滤波系数H(K-1)、H(K-2)、H(K-3)、……、H(1)、H(0)。
因此,对滤波系数缓存器有两点要求:1、每次读取返回一个滤波系数;2、相隔K次读取,返回的值一样。按照上述的结果,滤波系数的个数为K,运算数据的个数为BS。
对于如上所示的FIR滤波器算法展开结果,待滤波数据使用具有如下规律:
(1)对于左右相邻的虚线框,其使用待滤波数据仅有一个不同。
(2)上下相邻BS个滤波结果运算中,有BS个待滤波数据不再使用,同时新使用BS个待滤波数据。例如,计算Y(BS)~Y(2BS-1)时,待滤波数据X(-K+1)~X(BS-K)不再使用,待滤波数据X(BS-K+1)~X(BS-1)继续使用,同时新增加了待滤波数据X(BS)~X(2BS-1)的使用。
(3)待滤波数据X向量,其索引值小于零的部分,均由零代替。即上式中的X(-1)、X(-2)、……、X(-K+1)均为零。
根据上述规律,可以设计一种新型的待滤波数据缓存器,该待滤波数据缓存器至少满足以下四点要求:1、每次读取缓存器可以返回BS个待滤波数据;2、相邻两次缓存器的读取,在返回的BS个待滤波数据里面,仅有一个值不同;3、每完成K次运算,即产生了BS个滤波结果后,该缓存器有一个整体的更新,该更新将最开始使用的BS个待滤波数据舍弃,新加载进来BS个在存储器中的待滤波数据;4、缓存器提供相应的补零区域,有效零个数为K-1。
在上述滤波系数和待滤波数据规律的技术上,申请人提出一种FIR滤波器,以提高滤波系数和待滤波数据的使用效率,减少对存储器的读写次数,提高运算速度。
在本发明的一个示例性实施例中,提出了一种FIR滤波器。图2为FIR滤波器的结构示意图。如图2所示,本实施例FIR滤波器包括:滤波系数缓存器20、待滤波数据缓存器30、乘法器40、累加寄存器50、累加器60和比较器70。该FIR滤波器的外围部件还包括存储器10。
滤波系数缓存器20,用于预存K个滤波系数;在第n个运算周期,接收到读使能信号后,提供1个滤波系数H(i)。
待滤波数据缓存器30,用于预存NX个待滤波数据;在第n个运算周期,接收到读使能信号后,提供1个待滤波数据组,该待滤波数据组包括BS个待滤波数据:X(nBS-i),X(nBS-i+1),……,X[(n+1)BS-i-1],当待滤波数据的X向量索引小于0时,该滤波数据以0代替。
乘法器40,包括并行的BS个乘法单元;每一个乘法单元均与滤波系数缓存器20和待滤波数据缓存器30相连接,用于实现滤波系数H(i)与待滤波数据组中的1个待滤波数据的乘积运算,得到1个乘法结果。
累加器60,其控制端与比较器相连接,包括并行的BS个累加单元;每一累加单元与对应的乘法单元和累加寄存器中寄存单元相连接,用于累加乘法单元的当前乘积结果与寄存单元的中间数据。当接收到比较器的输出有效信号时,该累加器将BS个累加结果作为第n组滤波结果输出;否则,将该BS个累加结果作为中间数据分别输出至累加寄存器中对应的寄存单元。
累加寄存器50,包括独立的BS个寄存单元,每一寄存单元的输入端和输出端分别与相应累加单元的输出端和输入端相连接,用于存放累加运算的中间数据。
比较器70,用于比较由乘法器40传递来的运算序号与滤波系数个数K的关系,当运算序号<K-1时,向滤波系数缓存器和待滤波数据缓存器发送读使能信号,当运算序号=K-1时,向累加器发送输出有效信号。事实上,该运算序号也可以由累加器60或累加寄存器50传递至比较器,其原理与此类似,同样在本发明的保护范围之内。其中,运算序号为在进行某一组的BS的结果数据计算过程中,已经完成的乘积运算或累加运算的次数,该值从0开始计数,最大值为K-1。同时,当该组BS的结果数据计算完毕,下一组BS的结果数据的计算过程中,运算序号重新从0开始计数。
需要说明的是,n依次取0、1、2、3,……,ceil(Nx/BS)-1,ceil为向邻近的较大整数取值符号,ceil(Nx/BS)-1组滤波结果作为NX个待滤波数据的滤波结果。
此外,本实施例中待滤波数据和滤波系数选取的原则在于,不同次的读使能信号对应提供的滤波系数不同,并且不同次的读使能信号对应的待滤波数据组不同。一般说来,可以逐一选择滤波系数和待滤波数据组,只要保证K次运算不相互重复即可。当然,对于如FIR滤波器的算法展开结果来讲,有两种惯用的计算方法,一种方法是自右至左依次计算,另一种方法是自左至右依次计算。优选的,对于FIR滤波器的算法展开结果,自右至左依次计算,即i依次取K-1、K-2、……、1、0(将在下文中详细说明)。
为了能够更加清楚了理解本实施例,现对其时序控制信号的产生与输出进行说明。如图2所示,比较器的输出有效信号一方面用来指示当前已经完成BS个滤波结果,即当前累加器60的输出有效,另一方面用来指示当前输出到待滤波数据缓存器30的移位信号有效(将在下文中详细说明)。此外,由乘法器40输出到滤波系数缓存器20的读使能信号,用来指示当前乘法器40需要读取滤波系数缓存器20;由乘法器40输出到待滤波数据缓存器30的读使能信号,用来指示当前乘法器40需要读取待滤波数据缓存器30。当然,该读使能信号也可以由比较器或累加器下发至滤波系数缓冲器和滤波数据缓冲器,即比较器、乘法器和累加器的其中之一,还用于当运算序号<K-1时,向滤波系数提供模块和待滤波数据提供模块发送读使能信号。
从本实施例可以看出,不同于现有技术中的FIR滤波器,本发明采用BS个并行的乘法单元,可以同时进行BS个乘法运算,同时将BS个乘法结果同相应的寄存器中值并行进行BS个加法运算,从而大大提高了运算效率,节约运算时间,并且所有的控制信号均是数字信号,避免了采用延迟单元等模拟部件所带来的运算不准确性,提高了运算精度。
采用本实施例中的并行乘法单元及其配套加法器和寄存器,可以同时进行BS个并行运算,该并行运算为产生BS个滤波结果的一部分运算,采用这种形式的并行,使得运算部件的数量独立于滤波系数个数,当滤波系数增加时,复用设计中的并行乘法单元及其配套加法器和寄存器,具有高度的灵活性。
本实施例FIR滤波器采用滤波系数缓存器和待滤波数据缓存器。事实上,也可以采用能够实现待滤波数据提供功能的其他存储器件,如寄存器等。为了尽可能减少对存储器的读取,提高运算速度和效率,对于滤波系数,本发明采用存储器和缓存器相互结合的方式,将滤波系数从存储器中按顺序存入缓存器中,以滤波系数个数K为周期,每次输出一个滤波系数。具体技术方案如下:
本实施例中,滤波系数缓存器20,用于从存储器10中读取滤波系数,置于缓存器实体内,每次滤波器运算按顺序读取1个滤波系数H(i)。图3为FIR滤波器中滤波系数缓存器的示意图。如图3所示,该滤波系数缓存器20包括一个缓存器实体201、一个读逻辑单元202、一个初始化逻辑单元203和一个移位逻辑单元204。其中:
缓存器实体201,缓存用于运算的滤波系数,其大小与运算单元的尺寸(BS)有关,此处缓存器存储单元个数为2BS+1,且自上到下编址为0~2BS。
读逻辑单元202用于对滤波系数缓存器的读操作,以滤波系数个数(K)为周期,按顺序返回一个滤波系数。
初始化逻辑单元203用于对缓存器实体的初始化。即从存储器取数对缓存器实体201进行赋值。
从上述滤波系数缓存器20的结构可以看出,本发明运算单元个数BS与滤波系数个数K不存在必然的关系。在运算单元个数BS一定的情况下,如果滤波系数个数K发生变化,则不需要更改内部运算单元个数或尺寸,只要该滤波系数个数K在滤波系数缓存器的存储空间范围内,就完全可以满足运算的需要,具有高度灵活性,从而使得本发明具有良好的可重构性。以滤波系数缓存器的大小为2BS+1来讲,可适应2BS+1个滤波系数范围内的滤波运算。为了便于理解,在下文的说明中,以滤波系数缓冲器所能支持的最大滤波系数个数尺寸为K’为例。
本实施例中,滤波系数缓冲器是为满足滤波器实现过程中对滤波系数的要求而设计的,其功能为提供滤波系数,其实现形式可能多样,比如可以采用2BS+1个寄存器实现,而不需要额外逻辑开销,但是在每次乘积运算中,乘法器需要控制从哪个寄存器取所需系数。
进一步,为了提高待滤波数据的提高效率,本发明还对待滤波数据的提供部件进行了改进,本实施例中,待滤波数据缓存器30,用于从存储器10中读取待滤波数据,置于待滤波数据缓存器实体内,每次滤波器运算读取待滤波数据dK,其中,dK为一向量【dK[0],dK[1],……,dK[BS-1]】,FIR滤波器算法展开式中dK向量索引小于0的部分,如X[-1],均用0代替。该缓存器大小为4BS,其中BS为乘法器的运算尺寸,即可以同时进行的乘法运算数目。
图4为本发明实施例滤波数据缓存器的示意图。如图4所示,该待滤波数据缓存器包括待滤波数据缓存器实体310、读逻辑单元320、更新逻辑单元330。其中:
缓存器实体310缓存用于运算的待滤波数据。其大小与运算单元需求的尺寸(BS)有关,此处大小为4BS大小,并且编址为0~4BS-1。
读逻辑单元330用于读缓存器的待滤波数据。其输入信号为读使能信号、运算序号和滤波系数个数,输出信号包括向缓存器实体10发出有效偏移地址,得到BS尺寸的待滤波数据,并将该待滤波数据输出。
其中有效偏移地址需要根据运算序号、读使能信号和滤波系数个数产生。对应关系为:当读使能信号有效时,有效偏移地址=K’-K+运算序号。其中运算序号是由运算单元(乘法单元)按照读缓存的顺序,发送的读取号,该运算序号从0开始,每次增加1。对于本实施例来讲,滤波系数缓存器实体的大小为2BS+1,该有效偏移地址=2BS-K+1+运算序号。
更新逻辑单元320用于更新缓存器实体的待滤波数据内容,该结构包括一个初始化逻辑单元321和一个移位逻辑单元322。其中:
初始化逻辑单元在运算部件工作前对缓存器实体10的前期操作。用于对缓存器实体的初始化,其中地址为0~2BS-1的部分初始化为0,地址2BS~4BS-1部分从存储器里面取值初始化。
移位逻辑单元322用于对存储区实体待滤波数据的整体移位,即当输入信号移位信号有效时,移位逻辑单元开始工作。
先假定待滤波数据缓存器配合的一维滤波所支持的最大滤波系数个数K’=2BS+1,则本待滤波数据缓存器实体大小至少为4BS大小,同时假定运算单元尺寸,即BS=4,实际滤波系数个数为K=6。
结合上述假设可知,K’=9,待滤波数据缓存器实体大小>=4BS=16,K=6。下面首先以数缓存器实体大小为4BS=16为例对本发明做进一步说明。
在使用的开始阶段,本实施例需要先进行初始化,此时初始化逻辑单元201工作,将数缓存器地址0~7的部分初始化为0,将地址8~15的部分初始化为特定的值,该值从存储器取得,每次从存储器可以取BS=4个待滤波数据,共需要取2次。缓存器编址及初始化后的情况如图5a所示。
初始化完毕后,运算部件即采用图2所示中的乘法器需要读取该缓存器,此时读逻辑单元330开始工作,根据输入的运算序号、读使能信号以及最大支持滤波系数个数和实际滤波系数个数信号,产生有效偏移地址,从而读出正确位置的待滤波数据。
本实施例中,由于每产生BS=4个待滤波数据需要读取K=6次缓存,故运算序号为一串{0、1、2、3、4、5}的循环码。当产生第一组BS=4个滤波结果数据时,有效偏移地址={3、4、5、6、7、8}。该有效偏移地址产生如图6所示。故此时前6次读取待滤波数据缓存器返回的待滤波数据分别为{0、0、0、0},{0、0、0、0},{0、0、0、1},{0、0、1、2},{0、1、2、3},{1、2、3、4}。
当图2中的乘法器运算K=6次后,即可得出前BS=4个结果值,之后需要更新缓存器实体310的值,即从存储器里面取值。此时图2中FIR滤波器中输出给待滤波数据缓存器30的移位信号有效,缓存器会有一个整体的移位,移位的幅度为BS=4。移位后缓存器待滤波数据如图5b所示。
此时已经得出了BS个滤波输出数据,并且缓存器已经做好相应待滤波数据的更新,配合运算部件进行下面BS个结果待滤波数据的运算,期间读缓存器和更新缓存机制不变。
上述实施例是缓存器大小为4BS的情况,实际上本缓存器不仅仅限于4BS大小。在K’=2BS+1的前提下,下面以缓存器实体10为5BS大小为例,详细介绍本发明。
当缓存器实体310大小为5BS时,同样待滤波数据在存储器中的分布如图5a所示,实际滤波系数个数(小于或等于2BS)为K=6,则缓存器实体的编址为0~19。
图7a为本发明实施例待滤波数据缓存器大小为5BS时,初始化完毕后待滤波数据的示意图。此时相比大小为4BS的缓存器,初始化完毕后多缓存了BS=4个待滤波数据。这些并不影响本发明的读逻辑单元330,它同样根据输入的运算序号、读使能信号以及滤波系数个数信号,产生有效偏移地址,从而读出正确位置的待滤波数据。
同样的,每产生第一组BS=4个滤波结果数据,有效偏移地址分别={3、4、5、6、7、8}。该有效偏移地址产生图如图6所示。故此时前6次读取待滤波数据缓存器返回的待滤波数据分别为{0、0、0、0},{0、0、0、0},{0、0、0、1},{0、0、1、2},{0、1、2、3},{1、2、3、4}。
当图2中的乘法器运算K=6次后,即可得出前BS=4个结果值,之后需要更新待滤波数据缓存器实体310的值,即从存储器里面取值。此时图2中输出给待滤波数据缓存器30的移位信号有效,缓存器会有一个整体的移位,移位的幅度为BS=4。移位后缓存器待滤波数据如7b所示。
此时已经得出了BS个滤波输出数据,并且缓存器已经做好相应待滤波数据的更新,配合运算部件进行下面BS个结果数据的运算,期间读缓存器和更新缓存机制不变。
从上述待滤波数据缓存器30的结构可以看出,其充分考虑到算法中数据重复利用现象,在存储器加载特定数目数据后,进行充分运算,根据算法要求,所有使用到该部分待滤波数据的运算都完成后,才做待滤波数据缓存器30的更新,之后该部分待滤波数据在整个算法实现过程中不会再次被加载,这样提高了待滤波数据利用率,减少了访问存储器的次数,解决了处理器做一维滤波算法时对处理器强劲供数能力的需求,进而降低了整个设计的功耗。
本实施例中,可以简化滤波数据缓冲器的功能,将滤波数据缓冲器要做的事情移交给运算单元(乘法单元或累加单元)去做,比如可以简化数据缓冲器的读逻辑,将该部分的有效地址产生移交给读逻辑单元去做。但是初始化逻辑和更新逻辑是必不可少的。总之,由于本发明滤波器对数据的需求,所以设计了该缓冲器。可以将滤波器对数据的要求看作需求规范,而本滤波数据缓冲器为一种最有可能的实现。其它的实现本规范全部或者部分的时序逻辑,都可以看作是本发明的滤波数据缓冲器。
另外,数据缓冲器针对不同滤波系数个数的应用场合,能够根据算法需求智能补零,极大方便了程序员进行算法实现,而不需要考虑针对不同系数长度进行合适数目的补零操作。
当然,也可以采用其他的滤波数据提供方式,如将滤波数据缓冲器分为BS个子缓冲器,将第n个运算周期中每一个滤波系数相对应的BS个滤波数据均存储至BS个子缓冲器的其中之一。在每次乘法运算中,从子缓冲器中读取全部的滤波数据至乘法器。当然,这种滤波数据提供方式耗费的内存较大,读取效率较低。
以下用一具体的场景为例对本发明做详细说明如下:在本实施例中,乘法器的运算尺寸BS=16,即每次该乘法器可以进行16对数据相乘,则相应的,滤波系数缓存器的大小为2*BS+1=33个滤波数据宽度,滤波数据缓存器的大小为4*BS=64个滤波数据宽度,乘法器具有并行的16个乘法单元,累加器具有并行的16个累加单元。累加寄存器的宽度为BS=16个数据宽度。此处不限定数据类型,可以是64bit、32bit、16bit和8bit数据类型。
事实上,在数字信号领域的其它算法中,比如卷积和相关运算,其运算特征同FIR滤波器实现一样,均为数据和系数相乘,然后累加得出一个结果,本发明提供的滤波器及其系数缓冲器、数据缓冲器同样可以运用到该算法实现中。
假设滤波器的滤波系数个数K=18,假设其在存储器中分布如8a所示。在运算开始前,需要进行滤波系数缓存器20和待滤波数据缓存器30的初始化。初始化完毕后,滤波系数缓存器20内存储了滤波所需的18个滤波系数,如图8b所示。
完成缓存器的初始化后,乘法器开始对相应待滤波数据进行运算,为了充分利用待滤波数据缓存器中的待滤波数据,乘法器每得到一次有效结果,共进行K=18次运算,每次运算时调用滤波系数缓存器20和待滤波数据缓存器30一次。
乘法器40每次对滤波系数缓存器20的调用可以返回一个数据。假设对滤波系数缓存器20的K=18次调用可以返回k17,k16,…,k2,k1,k0,其中k0的宽度为1个数据的宽度。k17,k16,…,k2,k1,k0分别对应着FIR滤波器算法展开式中的H(K-1),H(K-2),…,H(2),H(1),H(0),且K=18。
每次对待滤波数据缓存器30的调用可以返回BS=16个待滤波数据,乘法器40对待滤波数据缓存器30的K=18次调用可以返回d0,d1,d2……,d17,它们分别对应着FIR滤波器算法展开式中上半部分自右向左的K=18个方框中的待滤波数据。所以d0~d17的宽度为BS=16个待滤波数据的宽度,在后面描述中均以一维数组的形式表征,即d0[0]~d0[15]表示d0,d17[0]~d17[15]表示d17。待滤波数据缓存器的实现结构保证了其所提供的待滤波数据为滤波算法需要的待滤波数据。
具体说来,假设待滤波数据在存储器和滤波数据缓存器30的分布分别如9a和9b所示。则d0[0]~d0[15]={0,0,0,…,0}、d1[0]~d1[15]={0,0,0,…,0}、…、d17[0]~d17[15]={1,2,3,…,16}。
比较器70用来记录是否当前已经进行了K=18次乘法运算。当运算次数低于K次时,将当前结果写入累加寄存器50,等待与下一次乘法器40运算输出通过累加器60相加;若当前运算次数等于K,则此时已经得出了BS=16个滤波输出结果,将其写入存储器10中,即得到了BS=16个滤波结果。
图10a至图10c描述了上述经过K=18次运算,得出BS个结果的过程,实际上也是对FIR滤波器展开算法的K次自右向左累加的一个硬件实现描述。
其中图10a描述了第1次乘累加的过程,此时累加寄存器50中的值为0,经累加计算后,滤波系数k17和d0的各元素乘积的结果值放入累加寄存器,即完成了k17d0[0]、k17d0[1]、k17d0[2]、……、k17d0[15]的运算。
图10b为第2次乘累加的过程,此时乘法器40输出的结果为k16和d1各元素的乘积,累加器将该结果和上次累加结果(当前累加寄存器50中的值)相加,得到结果k17d0[0]+k16d1[0]、k17d0[1]+k16d1[1]、k17d0[2]+k16d1[2]、……、k17d0[15]+k16d1[15],并放入累加寄存器50中;剩余k15~k1与待滤波数据d2~d16的运算过程类似。
图10c为第18次乘累加的过程,此时仍是将乘法器40的结果与累加寄存器50相加。经过上述18次运算,可以得出BS=16个结果,相当于做了如下等式序列的累加:
k17d0[0]+k16d1[0]+…+k2d15[0]+k1d16[0]+k0d17[0]、
k17d0[1]+k16d1[1]+…+k2d15[1]+k1d16[1]+k0d17[1]、
k17d0[2]+k16d1[2]+…+k2d15[2]+k1d16[2]+k0d17[2]、
……、
k17d0[15]+k16d1[15]+…+k2d15[15]+k1d16[15]+k0d17[15],
上述序列即是滤波结果Y(0)~Y(15)的表达式。
若输入待滤波数据没有全部进行滤波运算,则需要更新待滤波数据缓存器30,即在每计算完毕BS个待滤波数据后,发送给待滤波数据缓存器一个移位信号,待滤波数据缓存器在整体移位的同时,从存储器里面重新取值。之后重复乘法器40和累加器60的协同运算过程,直到待滤波数据全部计算完毕。
在上述各个实施例中,K’=2BS+1,K’为本滤波数据提供装置所应用到的滤波器所能支持的最大数目滤波系数尺寸,因此,待滤波数据提供装置中缓存器实施的尺寸大小为K’-1+2BS=4BS。本领域技术人员应当可以理解,K’不仅仅限定于2BS+1,下面分别以K’=BS+3和K’=3BS+2为例进行说明。如下所示:
当K’=BS+3时,其实施例如下:此时缓冲器大小至少为3BS+2。同时依然假定运算单元尺寸,即BS=4,实际滤波系数个数为K=6,此时K’=7,缓冲区大小至少为14。
在使用的开始阶段,本实施例需要先进行初始化,此时初始化逻辑单元201工作,将数缓存器地址0~5的部分初始化为0,将地址6~13的部分初始化为特定的值,该值从存储器取得,每次从存储器可以取BS=4个待滤波数据,共需要取2次。缓存器编址及初始化后的情况如图11A所示。
初始化完毕后,运算部件即采用图2所示中的乘法器需要读取该缓存器,此时读逻辑单元330开始工作,根据输入的运算序号、读使能信号以及最大支持滤波系数个数和实际滤波系数个数信号,产生有效偏移地址,从而读出正确位置的待滤波数据。
本实施例中,由于每产生BS=4个待滤波数据需要读取K=6次缓存,故运算序号为一串{0、1、2、3、4、5}的循环码。当产生第一组BS=4个滤波结果数据时,有效偏移地址={1、2、3、4、5、6}。该有效偏移地址产生如图6所示。故此时前6次读取待滤波数据缓存器返回的待滤波数据分别为{0、0、0、0},{0、0、0、0},{0、0、0、1},{0、0、1、2},{0、1、2、3},{1、2、3、4}。
当图2中的乘法器运算K=6次后,即可得出前BS=4个结果值,之后需要更新缓存器实体310的值,即从存储器里面取值。此时图2中FIR滤波器中输出给待滤波数据缓存器30的移位信号有效,缓存器会有一个整体的移位,移位的幅度为BS=4。移位后缓存器待滤波数据如图11B所示。
此时已经得出了BS个滤波输出数据,并且缓存器已经做好相应待滤波数据的更新,配合运算部件进行下面BS个结果待滤波数据的运算,期间读缓存器和更新缓存机制不变。
当K’=3BS+2时,其实施例如下:此时缓冲器大小至少为5BS+1。同时依然假定运算单元尺寸,即BS=4,实际滤波系数个数为K=6,此时K’=14,缓冲区大小至少为21。
在使用的开始阶段,本实施例需要先进行初始化,此时初始化逻辑单元201工作,将数缓存器地址0~12的部分初始化为0,将地址13~20的部分初始化为特定的值,该值从存储器取得,每次从存储器可以取BS=4个待滤波数据,共需要取2次。缓存器编址及初始化后的情况如图12A所示。
初始化完毕后,运算部件即采用图2所示中的乘法器需要读取该缓存器,此时读逻辑单元330开始工作,根据输入的运算序号、读使能信号以及最大支持滤波系数个数和实际滤波系数个数信号,产生有效偏移地址,从而读出正确位置的待滤波数据。
本实施例中,由于每产生BS=4个待滤波数据需要读取K=6次缓存,故运算序号为一串{0、1、2、3、4、5}的循环码。当产生第一组BS=4个滤波结果数据时,有效偏移地址={8、9、10、11、12、13}。该有效偏移地址产生如图6所示。故此时前6次读取待滤波数据缓存器返回的待滤波数据分别为{0、0、0、0},{0、0、0、0},{0、0、0、1},{0、0、1、2},{0、1、2、3},{1、2、3、4}。
当图2中的乘法器运算K=6次后,即可得出前BS=4个结果值,之后需要更新缓存器实体310的值,即从存储器里面取值。此时图2中FIR滤波器中输出给待滤波数据缓存器30的移位信号有效,缓存器会有一个整体的移位,移位的幅度为BS=4。移位后缓存器待滤波数据如图12B所示。
此时已经得出了BS个滤波输出数据,并且缓存器已经做好相应待滤波数据的更新,配合运算部件进行下面BS个结果待滤波数据的运算,期间读缓存器和更新缓存机制不变。
特别说明的是,如果待滤波数据个数Nx不能被BS整除,整个运算过程保持不变,但是在最后一次运算得出的BS个结果中,只有Nm个有效滤波结果数据,Nm为Nx除以BS所得的余数。最后一次将数据写回存储器时,只将该Nm个有效结果写回。
上述滤波器的实现可以应用在FPGA的滤波器设计中,也可以将该滤波器行为定义成一条处理器指令,在ASIC内部实现。
从上述实施例可知,本发明FIR滤波器具有以下有益效果:1)并行计算的高效率,本发明采用BS个并行的乘法单元,可以同时进行BS个乘法运算,同时将BS个乘法结果同相应的寄存器中值并行进行BS个加法运算,从而大大提高了运算效率,节约运算时间,并且所有的控制信号均是数字信号,避免了采用延迟单元等模拟单元所带来的运算不准确性,提高了运算精度;2)可重构性,本发明基于乘累加器的FIR滤波器,在2BS个滤波系数范围内,均取得高效的滤波效果,即使当滤波系数的个数发生变化时,只要其在缓存空间的范围之内,就不用重新更改相应硬件,从而实现了相当好的重构性;
从上述实施例可知,本发明待滤波数据提供装置可以实现待滤波数据高利用率,具体来讲:本发明充分利用了待滤波数据局部性原理,没有重复加载待滤波数据的现象,并且每访问一次存储器,可得出BS个结果,减少存储器访问次数,从而达到了“一次读取,多次计算”的效果,进而降低了整个设计的功耗。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种待滤波数据提供装置,其特征在于,应用于FIR滤波器当中,包括:
存储器,用于依次存储NX个待滤波数据;
缓存器实体,包含至少K’-1+2BS个存储单元,该K’-1+2BS个存储单元用于自前至后缓存待滤波数据,所述K’为FIR滤波器中滤波系数缓冲器中的存储单元个数;
初始化逻辑单元,用于对所述缓存器实体进行初始化;
读逻辑单元,用于在第n的运算周期,收到读使能信号后,以有效偏移地址为起点,按照自前至后的顺序依次读取所述缓存器实体中BS个存储单元的滤波数据,并将该BS个滤波数据发送至所述乘法器,该BS个滤波数据为:X(nBS-i),X(nBS-i+1),……,X[(n+1)BS-i-1],当待滤波数据的向量索引小于0的,待滤波数据用0代替;
移位逻辑单元,用于当接收到移位信号后,将所述缓存器实体中地址为BS-1至K’-2+2BS的存储单元中的滤波数据前移BS个位置;从所述存储器中依次读取BS个待滤波数据缓存入所述缓存器实体中地址为K’-1+BS~K’-2+2BS的存储单元。
2.根据权利要求1所述的待滤波数据提供装置,其特征在于,所述n依次取0、1、2、3,……,ceil(Nx/BS)-1,ceil为向邻近的较大整数取值符号。
3.根据权利要求2所述的待滤波数据提供装置,其特征在于,所述i依次取K-1、K-2、……、1、0。
4.根据权利要求3所述的待滤波数据提供装置,其特征在于,
所述读逻辑单元,与比较器、乘法器和累加器的其中之一相连接,用于接收所述读使能信号;
所述移位逻辑单元,与所述比较器相连接,用于接收所述移位信号。
5.根据权利要求4所述的待滤波数据提供装置,其特征在于,
所述读逻辑单元,与乘法器或累加器相连接,用于接收运算序号,并根据该运算序号计算有效偏移地址,
有效偏移地址=K’-K+运算序号,
其中,在每个运算周期中,所述运算序号从0开始,每次运算增加1。
6.根据权利要求5所述的待滤波数据提供装置,其特征在于,
所述初始化逻辑单元,用于在第0个运算周期,将地址为0~K’-2的存储单元初始化为0;将待滤波数据X(0)、X(1)、X(2),……,X(2BS-1)从所述存储器缓存入所述缓存器实体的地址为K’-1~K’-2+2BS的存储单元。
7.根据权利要求6所述的待滤波数据提供装置,其特征在于,所述K’=2BS+1时,缓存器实体包括4BS或5BS个存储单元。
8.根据权利要求1至7中任一项所述的待滤波数据提供装置,其特征在于,该待滤波数据提供装置应用于FIR滤波器当中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011104434256A CN102497174A (zh) | 2011-12-27 | 2011-12-27 | 一种待滤波数据提供装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011104434256A CN102497174A (zh) | 2011-12-27 | 2011-12-27 | 一种待滤波数据提供装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102497174A true CN102497174A (zh) | 2012-06-13 |
Family
ID=46188971
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011104434256A Pending CN102497174A (zh) | 2011-12-27 | 2011-12-27 | 一种待滤波数据提供装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102497174A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103218314A (zh) * | 2013-04-19 | 2013-07-24 | 中国科学院自动化研究所 | 一种应用于并行滤波运算的数据缓存装置 |
CN103227622A (zh) * | 2013-04-19 | 2013-07-31 | 中国科学院自动化研究所 | 一种并行滤波方法及相应的装置 |
CN103973264A (zh) * | 2013-01-29 | 2014-08-06 | 中兴通讯股份有限公司 | 一种滤波方法和滤波器 |
CN107066235A (zh) * | 2017-04-24 | 2017-08-18 | 北京华大信安科技有限公司 | 计算方法及装置 |
US9966932B2 (en) | 2013-04-19 | 2018-05-08 | Beijing Smartlogic Technology Ltd. | Parallel filtering method and corresponding apparatus |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1442952A (zh) * | 2003-04-01 | 2003-09-17 | 联华电子股份有限公司 | 滤波器的操作程序及其数字滤波器电路 |
CN1787368A (zh) * | 2005-04-19 | 2006-06-14 | 展讯通信(上海)有限公司 | 有限脉冲响应滤波与欠采样相结合的方法 |
CN1828724A (zh) * | 2005-02-28 | 2006-09-06 | 日立环球储存科技荷兰有限公司 | 数字滤波器指令和实现该滤波器指令的滤波器 |
CN1964490A (zh) * | 2005-11-09 | 2007-05-16 | 松下电器产业株式会社 | 一种滤波器及滤波方法 |
-
2011
- 2011-12-27 CN CN2011104434256A patent/CN102497174A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1442952A (zh) * | 2003-04-01 | 2003-09-17 | 联华电子股份有限公司 | 滤波器的操作程序及其数字滤波器电路 |
CN1828724A (zh) * | 2005-02-28 | 2006-09-06 | 日立环球储存科技荷兰有限公司 | 数字滤波器指令和实现该滤波器指令的滤波器 |
CN1787368A (zh) * | 2005-04-19 | 2006-06-14 | 展讯通信(上海)有限公司 | 有限脉冲响应滤波与欠采样相结合的方法 |
CN1964490A (zh) * | 2005-11-09 | 2007-05-16 | 松下电器产业株式会社 | 一种滤波器及滤波方法 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103973264A (zh) * | 2013-01-29 | 2014-08-06 | 中兴通讯股份有限公司 | 一种滤波方法和滤波器 |
CN103973264B (zh) * | 2013-01-29 | 2017-02-22 | 中兴通讯股份有限公司 | 一种滤波方法和滤波器 |
CN103218314A (zh) * | 2013-04-19 | 2013-07-24 | 中国科学院自动化研究所 | 一种应用于并行滤波运算的数据缓存装置 |
CN103227622A (zh) * | 2013-04-19 | 2013-07-31 | 中国科学院自动化研究所 | 一种并行滤波方法及相应的装置 |
CN103227622B (zh) * | 2013-04-19 | 2016-07-06 | 中国科学院自动化研究所 | 一种并行滤波方法及相应的装置 |
US9966932B2 (en) | 2013-04-19 | 2018-05-08 | Beijing Smartlogic Technology Ltd. | Parallel filtering method and corresponding apparatus |
CN107066235A (zh) * | 2017-04-24 | 2017-08-18 | 北京华大信安科技有限公司 | 计算方法及装置 |
CN107066235B (zh) * | 2017-04-24 | 2021-05-14 | 北京华大信安科技有限公司 | 计算方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102510273B (zh) | 一种有限脉冲响应滤波器 | |
CN102497174A (zh) | 一种待滤波数据提供装置 | |
US20110067016A1 (en) | Efficient parallel computation on dependency problems | |
Ma et al. | Optimizing tensor contraction expressions for hybrid CPU-GPU execution | |
CN105227259B (zh) | 一种m序列并行产生方法和装置 | |
GB2496934A (en) | Multi-stage register renaming using dependency removal and renaming maps. | |
CN102508803A (zh) | 一种矩阵转置存储控制器 | |
CN103760525A (zh) | 一种补齐式原地矩阵转置方法 | |
JP5522283B1 (ja) | リストベクトル処理装置、リストベクトル処理方法、プログラム、コンパイラ、及び、情報処理装置 | |
CN104050148B (zh) | 快速傅里叶变换加速器 | |
CN103197287A (zh) | 高速实时频域脉冲压缩器及其处理方法 | |
CN103543983A (zh) | 用于提高平衡吞吐量数据路径架构上的fir操作性能的新颖数据访问方法 | |
WO2022068205A1 (zh) | 数据存储和读取方法及系统 | |
CN116301920B (zh) | 一种用于部署cnn模型至基于fpga的高性能加速器的编译系统 | |
CN103493039B (zh) | 数据处理方法、数据处理装置、接入设备和用户设备 | |
CN110399976A (zh) | 计算装置和计算方法 | |
US9268744B2 (en) | Parallel bit reversal devices and methods | |
CN102411557A (zh) | 多粒度并行fft计算装置 | |
CN102231624B (zh) | 面向向量处理器的浮点复数块fir的向量化实现方法 | |
CN100527109C (zh) | 存储器访问装置 | |
CN103235717A (zh) | 具有多态指令集体系结构的处理器 | |
CN106776474B (zh) | 矢量处理器实现fft的系统及其数据交换、地址生成方法 | |
CN104767544B (zh) | 一种实现解扰解扩的方法和矢量运算器 | |
CN104317554A (zh) | 用于simd处理器的寄存器文件数据读写装置和方法 | |
Turkington et al. | FPGA based acceleration of the LINPACK benchmark: A high level code transformation approach |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120613 |