CN114142831A - 一种具备计数功能的fir滤波器 - Google Patents
一种具备计数功能的fir滤波器 Download PDFInfo
- Publication number
- CN114142831A CN114142831A CN202111445129.XA CN202111445129A CN114142831A CN 114142831 A CN114142831 A CN 114142831A CN 202111445129 A CN202111445129 A CN 202111445129A CN 114142831 A CN114142831 A CN 114142831A
- Authority
- CN
- China
- Prior art keywords
- address
- data
- read
- filtering
- filtered
- 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/06—Non-recursive filters
-
- 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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开一种具备自动计数功能的FIR滤波器,该FIR滤波器包括读写控制模块、滤波计算模块、数据缓存空间和滤波器系数存储器;读写控制模块,用于根据写入数据缓存空间的待滤波数据的数量与所述FIR滤波器的转置使能计数阈值的大小关系,利用计数产生的读地址,从数据缓存空间内依次读取出所述待滤波数据,并将读取出的所述待滤波数据传输给所述滤波计算模块;滤波计算模块,用于控制数据缓存空间输出的待滤波数据以及滤波器系数存储器输出的滤波器系数进行滤波计算;其中,滤波计算的方式是与所述写入数据缓存空间的待滤波数据的数量与所述FIR滤波器的转置使能计数阈值的大小关系相匹配。
Description
技术领域
本发明涉及到有限脉冲响应滤波器的技术领域,尤其涉及一种具备计数功能的FIR滤波器。
背景技术
在数字滤波器中,FIR (Finite Impulse Response)滤波器是有限长单位脉冲冲激响应数字滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而,FIR滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。
FIR滤波器的阶数是指过滤谐波的次数;FIR滤波器长度反应滤波器滤波的频带范围;FIR滤波器的阶数与数值1的和值等于FIR滤波器系数的个数,也等于滤波器的抽头数,FIR滤波器的抽头数是滤波器的抽头的个数的简称。其中,抽头(Tap) 是FIR滤波器的抽头是系数或者延时对;FIR抽头的个数用于表示滤波器所需要的存储空间,还用于表示需要计算的数目,还用于表示滤波器能滤掉的数量,实际上,越多的抽头意味着有更多的阻带衰减, 更少的波纹,更窄的滤波等等。滤波器的通带所表示的是能够通过滤波器而不会产生衰减的信号频率成分;滤波器的阻带所表示的是被滤波器衰减掉的信号频率成分。
FIR (Finite Impulse Response)滤波器用于音频处理的模拟数字转换器、数字接收机等产品时,主要作用是,将模拟前端信号进行向下降频以模数转换到频率比较低的数字信号,或者向上升频以模数转换到频率比较高的数字信号。
对噪声进行滤波和对采样信号进行抽取以实现对信号进行滤波处理,来获得低采样率或高采样率的信号质量较高的信号,供音频解码、自适应等处理以实现下变频或上变频目的,在上述过程中,FIR滤波器是串行传输数据,对于N阶的FIR滤波器,每一个从其内部的缓存器读取出的数据都与之前N-1个来自同一缓存器的需要进行滤波计算的数据序列相关,现有技术存在的FIR滤波器中,往往忽视存储空间的容纳能力,而且现有技术为了克服插入噪声信号的问题,会控制不同时钟周期之间的参与计算的数据序列进行周期性地中止传输,但会影响新数据与旧数据之间的连续性或相关性,难以从有效的数据中滤波处理出有效的结果。
发明内容
针对上述技术缺陷,本发明公开一种具备自动计数功能的FIR滤波器,利用相关读地址的计数值的变化来实现对待滤波数据执行有效的抽取滤波功能,以获得精确的滤波结果。具体的技术方案如下:
一种具备自动计数功能的FIR滤波器,该FIR滤波器包括读写控制模块、滤波计算模块、数据缓存空间和滤波器系数存储器;读写控制模块,用于控制输入FIR滤波器的待滤波数据写入数据缓存空间内,以及计数产生读地址;读写控制模块,用于根据写入数据缓存空间的待滤波数据的数量与所述FIR滤波器的转置使能计数阈值的大小关系,利用计数产生的读地址,从数据缓存空间内依次读取出所述待滤波数据,并将读取出的所述待滤波数据传输给所述滤波计算模块;滤波器系数存储器,用于在所述读写控制模块开始从数据缓存空间内读取所述待滤波数据后,按照所述读写控制模块从数据缓存空间内读取所述待滤波数据的顺序,依次输出所需的滤波器系数给所述滤波计算模块;滤波计算模块,用于控制数据缓存空间输出的待滤波数据以及滤波器系数存储器输出的滤波器系数进行滤波计算,其中,滤波计算模块在进行一次滤波计算时,所述读写控制模块继续控制新输入FIR滤波器的待滤波数据写入数据缓存空间内但不参与该次滤波计算;其中,滤波计算的方式是与所述写入数据缓存空间的待滤波数据的数量与所述FIR滤波器的转置使能计数阈值的大小关系相匹配。
进一步地,所述FIR滤波器还设置有一个系统时钟源,用于计数产生系统时钟周期;其中,写入一个待滤波数据所耗费的时间配置为等于一个系统时钟周期,读取出一个待滤波数据所耗费的时间配置为等于一个系统时钟周期;其中,所述写入数据缓存空间的待滤波数据的数量是等于所述FIR滤波器从外部采样的待滤波数据的数量。
进一步地,所述读写控制模块还包括基准地址计数器;基准地址计数器用于每当向所述数据缓存空间写入两个所述待滤波数据时,执行一次自加操作,并产生基准地址,触发所述读写控制模块利用基准地址从所述数据缓存空间读取所述待滤波数据,其中,该基准地址是开始进行当前一次滤波计算而需要在所述数据缓存空间内遍历的第一个读地址;基准地址计数器的一次自加操作产生的计数值的变化值是数值2;在所述滤波计算模块输出一个滤波结果时,确定所述FIR滤波器从写入两个所述待滤波数据开始已经经过一个滤波周期,并确定一个滤波周期内只完成一次滤波计算;其中,所述FIR滤波器的抽取率是2倍,或所述FIR滤波器的插值率是2倍;其中,在当前一个滤波周期内进行一次滤波计算的同时允许向所述数据缓存空间继续写入新的所述待滤波数据以开启下一个滤波周期,实现相邻两个滤波周期存在部分重合的时序区间。
进一步地,当写入数据缓存空间的待滤波数据的数量使用基准地址计数器的计数值的变化值表示时,所述FIR滤波器的转置使能计数阈值使用所述FIR滤波器的抽头数来表示。
进一步地,所述根据写入数据缓存空间的待滤波数据的数量与所述FIR滤波器的转置使能计数阈值的大小关系,利用读地址从数据缓存空间内依次读取出所述待滤波数据,并将读取出的所述待滤波数据传输给所述滤波计算模块的方式包括:在所述读写控制模块确定出写入数据缓存空间的待滤波数据的数量小于或等于所述FIR滤波器的转置使能计数阈值时,所述读写控制模块,用于从所述数据缓存空间内读取出前置读地址中的待滤波数据,并传输给所述滤波计算模块;其中,所述FIR滤波器的转置使能计数阈值等于所述FIR滤波器的抽头数;其中,所述前置读地址在每个滤波周期内由对应的一个基准地址开始进行计数获得;一个滤波周期内的基准地址是属于该滤波周期内第一个参与读取操作的前置读地址。
进一步地,所述读写控制模块包括前置地址计数器和读地址选择器;所述写入数据缓存空间的待滤波数据的数量小于或等于所述FIR滤波器的转置使能计数阈值时,读地址选择器选通前置地址计数器产生的前置读地址输出给所述数据缓存空间以起到读取相应地址中的待滤波数据的作用;前置地址计数器用于在所述写入数据缓存空间的待滤波数据的数量小于或等于所述FIR滤波器的转置使能计数阈值时,从当前一个滤波周期内的基准地址开始,每一个所述系统时钟周期进行一次自减操作,再触发所述读写控制模块从每次自减操作得到的前置读地址中读取出待滤波数据,再依次传输给所述滤波计算模块;其中,前置地址计数器每自减操作一次,产生的计数值的变化值是数值1,且每次自减操作后获得一个前置读地址;前置地址计数器在每个滤波周期内的初始计数值是所述基准地址计数器在相应的一个滤波周期内产生的所述基准地址。
进一步地,在写入数据缓存空间的待滤波数据的数量小于或等于所述FIR滤波器的转置使能计数阈值时,所述滤波器系数存储器用于在每个滤波周期内,从所述FIR滤波器设置的起始存储地址开始,对起始存储地址进行自加操作,再将自加得到的存储地址中的滤波器系数输出给所述滤波计算模块,直至自加得到的存储地址相对于所述起始存储地址的地址偏移量等于所述FIR滤波器的抽头数与数值1的差值的一半,然后将最新得到的存储地址记为中间计算存储地址,再对中间计算存储地址进行自减操作,再将自减得到的存储地址中的滤波器系数输出给所述滤波计算模块,直至自减得到的存储地址相对于中间计算存储地址的地址偏移量等于所述FIR滤波器的抽头数与数值1的差值的一半,依次重复,直至在当前一个滤波周期内从所述滤波器系数存储器内输出的滤波器系数的数量等于当前一个滤波周期内参与滤波计算的待滤波数据的数量;其中,所述FIR滤波器的抽头数是奇数;其中,对起始存储地址进行自加操作的过程中,每执行一次自加操作,则存储地址增加数值1;对中间计算存储地址进行自减操作的过程中,每执行一次自减操作,则存储地址减少数值1。
进一步地,在写入数据缓存空间的待滤波数据的数量小于或等于所述FIR滤波器的转置使能计数阈值时,所述滤波器系数存储器用于在每个滤波周期内,从所述FIR滤波器相匹配的起始存储地址开始,对起始存储地址进行自加操作,再从自加得到的存储地址中输出滤波器系数给所述滤波计算模块,直至自加得到的存储地址相对于所述起始存储地址的地址偏移量等于所述FIR滤波器的抽头数与数值2的差值的一半,然后将最新得到的存储地址记为中间计算存储地址,再对中间计算存储地址进行自减操作,再从自减得到的存储地址中输出滤波器系数给所述滤波计算模块,直至自减得到的存储地址相对于中间计算存储地址的地址偏移量等于所述FIR滤波器的抽头数与数值2的差值的一半,依次重复,直至当前一个滤波周期内从所述滤波器系数存储器内读取出的滤波器系数的数量等于当前一个滤波周期内参与滤波计算的待滤波数据的数量;其中,所述FIR滤波器的抽头数是偶数;所述滤波计算模块从所述中间计算存储地址中连续读取出两个相同的滤波器系数;其中,对起始存储地址进行自加操作的过程中,每自加操作一次,则存储地址指示的地址增加数值1;对中间计算存储地址进行自减操作的过程中,每自减操作一次,则存储地址指示的地址减少数值1。
进一步地,所述滤波计算模块,用于在写入数据缓存空间的待滤波数据的数量小于或等于所述FIR滤波器的转置使能计数阈值时,控制数据缓存空间输出的待滤波数据以及滤波器系数存储器输出的相同读取顺序的滤波器系数进行乘法运算,并将结果输入到加法器进行累加处理,得到每个滤波周期内的处理后的滤波结果;其中,每个滤波周期内的乘法运算由一个乘法器分时复用实现;其中,所述滤波计算模块包括加法器和乘法器。
进一步地,所述根据写入数据缓存空间的待滤波数据的数量与所述FIR滤波器的转置使能计数阈值的大小关系,利用读地址从数据缓存空间内依次读取出所述待滤波数据,并将读取出的所述待滤波数据传输给所述滤波计算模块的方式包括:在所述读写控制模块确定出写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值时,所述读写控制模块,用于按照所述基准地址计数器的计数时序,将所述基准地址计数器产生的基准地址配置为第一折叠读地址,并将基准地址与数值1的和值配置为第二折叠读地址;所述读控制模块还用于将第一折叠读地址与第二折叠读地址相加的和值配置为后置读地址,并按照所述基准地址计数器的计数时序,从所述数据缓存空间内读取出所述后置读地址中的待滤波数据,并传输给所述滤波计算模块;其中,所述FIR滤波器的转置使能计数阈值等于所述FIR滤波器的抽头数。
进一步地,所述读写控制模块包括第一折叠地址计数器和第二折叠地址计数器;在所述写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值时,所述第一折叠地址计数器用于在每一个滤波周期内,对所述第一折叠读地址执行自减操作,产生新的第一折叠读地址,以触发所述读写控制模块从每次自减操作得到的第一折叠读地址中读取出待滤波数据,直至自减操作的次数为第一预设折叠采样数目,但仍允许向所述数据缓存空间写入新的待滤波数据;所述写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值时,所述第二折叠地址计数器还用于在每一个滤波周期内,对所述第二折叠读地址执行自加操作,产生新的第二折叠读地址,以触发所述读写控制模块从每次自加操作得到的第二折叠读地址中读取出待滤波数据,直至自加操作的次数为第二预设折叠采样数目,但仍允许向所述数据缓存空间写入新的待滤波数据。
进一步地,所述第一折叠地址计数器,用于每连续两个系统时钟周期对所述第一折叠读地址执行一次自减操作以获得一个新的所述第一折叠读地址,并将这连续两个系统时钟周期记为折叠地址读周期;所述写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值时,在所述读写控制模块的控制下,在折叠地址读周期内,读取第一折叠读地址中的待滤波数据至所述过滤计算模块,并读取第二折叠读地址中的待滤波数据至所述过滤计算模块;其中,所述第二折叠地址计数器,用于在折叠地址读周期下,执行一次自加操作以实现每连续两个系统时钟周期获得一个新的所述第二折叠读地址。
进一步地,所述读写控制模块还包括地址加法器和读地址选择器;地址加法器,用于在所述折叠地址读周期内,将所述第二折叠地址计数器产生的第二折叠读地址与所述第一折叠地址计数器产生的第一折叠读地址相加,产生该折叠地址读周期内的一个后置读地址;所述写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值时,读地址选择器选通所述地址加法器产生的后置读地址输出给所述数据缓存空间,以起到在所述折叠地址读周期内读取相应地址中的两个待滤波数据的作用。
进一步地,在所述写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值时,所述读写控制模块确定将所述基准地址配置为所述第一折叠读地址之前,若所述读写控制模块判断到基准地址等于滤波起点地址,则将滤波目标地址更新为基准地址,再将更新后的基准地址配置为第一折叠读地址的起始地址,然后,第一折叠地址计数器用于从第一折叠读地址的起始地址开始,对第一折叠读地址执行自减操作;其中,第一折叠地址计数器自减操作一次产生的计数值的变化值是数值1;在所述写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值时,所述读写控制模块确定将所述基准地址配置为所述第二折叠读地址之前,若所述读写控制模块判断到基准地址等于滤波目标地址,则将滤波起点地址更新为基准地址,再将更新后的基准地址与数值1的和值配置为第二折叠读地址的起始地址,然后,第二折叠地址计数器用于从第二折叠读地址的起始地址开始,对第二折叠读地址执行自加操作,其中,第二折叠地址计数器自加操作一次产生的计数值的变化值是数值1。
进一步地,第一折叠地址计数器在对第一折叠读地址执行自减操作的过程包括:将第一折叠读地址的起始地址配置为第一折叠读地址,每当第一折叠读地址自减至滤波起点地址,则在下一个系统时钟周期内将滤波目标地址更新为第一折叠读地址,使得所述第一折叠读地址在所述FIR滤波器的抽头数限定的地址范围内实现地址回环遍历;然后第一折叠地址计数器继续对第一折叠读地址执行自减操作;第二折叠地址计数器在对第二折叠读地址执行自加操作的过程包括:将第二折叠读地址的起始地址配置为第二折叠读地址,每当第二折叠读地址自加至滤波目标地址,则在下一个系统时钟周期内将滤波起点地址更新为第二折叠读地址,使得所述第二折叠读地址在所述FIR滤波器的抽头数限定的地址范围内实现地址回环遍历;然后第二折叠地址计数器继续对第二折叠读地址执行自加操作。
进一步地,当基准地址计数器的计数值为所述FIR滤波器的抽头数与数值2的差值后,所述读写控制模块在下一个系统时钟周期将滤波起点地址更新为基准地址计数器当前获得的计数值,并将滤波起点地址更新为基准地址;当基准地址计数器的计数值为所述FIR滤波器的抽头数与数值1的差值后,所述读写控制模块在下一个系统时钟周期将滤波起点地址与数值1的和值更新为所述基准地址计数器当前获得的计数值,并将滤波起点地址与数值1的和值更新为基准地址。
进一步地,在每个折叠地址读周期内,读取的第一折叠读地址对应的第一折叠读地址相对于所述滤波起点地址的地址偏移量,等于所述滤波目标地址相对于读取的第二折叠读地址对应的第二折叠读地址的地址偏移量;其中,滤波目标地址是预先在所述数据缓存空间内配置的一个地址,作为每个滤波周期内,参与读取操作的地址中,顺序最大的一个地址;其中,滤波起点地址是预先在所述数据缓存空间内配置的一个地址,作为每个滤波周期内,被读取的地址中,顺序最小的一个地址;其中,所述滤波目标地址与所述滤波起点地址的差值等于所述FIR滤波器的抽头数与数值1的差值。
进一步地,所述FIR滤波器的抽头数是奇数;在一个滤波周期内或一次滤波计算中,第二预设折叠采样数目大于第一预设折叠采样数目时,第一折叠读地址提前所述第二折叠读地址停止变化;在一个滤波周期内或一次滤波计算中,第二预设折叠采样数目小于第一预设折叠采样数目时,第二折叠读地址提前所述第一折叠读地址停止变化。
进一步地,所述FIR滤波器的抽头数是偶数时,第二预设折叠采样数目等于第一预设折叠采样数目。
进一步地,在写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值时,所述滤波器系数存储器用于在每个滤波周期内,从所述FIR滤波器相匹配的起始存储地址开始,每两个系统时钟周期对起始存储地址进行自加操作一次,以使得起始存储地址对应的地址每两个系统时钟周期执行一次自加操作,再从所述滤波器系数存储器内将自加操作得到的存储地址中的滤波器系数依次读出至所述滤波计算模块;当所述FIR滤波器的抽头数是奇数时,自加操作得到的存储地址相对于所述起始存储地址的地址偏移量等于所述FIR滤波器的抽头数与数值1的差值的一半,然后将最新得到的存储地址记为中间计算存储地址;其中,在对起始存储地址进行自加操作的过程中,每执行一次自加操作,产生一个存储地址,相邻两次自加操作产生的存储地址的变化值是数值1。
进一步地,所述滤波计算模块,用于在写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值时,在每个折叠地址读周期内,先控制所述数据缓存空间输出的第一折叠读地址中的待滤波数据与所述数据缓存空间输出的第二折叠读地址中的待滤波数据相加;再将相加的结果与所述滤波器系数存储器输出的相同读取顺序的滤波器系数进行乘法运算;然后将相乘结果输入到加法器进行累加处理,在每个滤波周期内如此重复,直至所述滤波器系数存储器输出所述中间计算存储地址中的滤波器系数;其中,每个滤波周期内,乘法运算由一个乘法器分时复用实现;所述滤波计算模块包括加法器和乘法器;所述FIR滤波器的转置使能计数阈值等于所述FIR滤波器的抽头数;所述滤波器系数存储器输出所述中间计算存储地址中的滤波器系数时,若所述FIR滤波器的抽头数是奇数,则将所述中间计算存储地址中的滤波器系数与所述数据缓存空间在同一读取顺序下输出的第一折叠读地址中的待滤波数据进行乘法运算,再将相乘结果输入到加法器进行累加处理,得到对应的滤波周期内的处理后的滤波结果。
进一步地,在写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值时,所述滤波器系数存储器用于在每个滤波周期内,从所述FIR滤波器相匹配的起始存储地址开始,每两个系统时钟周期对起始存储地址进行自加操作一次,以使得起始存储地址对应的地址每两个系统时钟周期执行一次自加操作,再从所述滤波器系数存储器内将自加操作得到的存储地址中的滤波器系数依次读出至所述滤波计算模块;当所述FIR滤波器的抽头数是偶数时,自加操作得到的存储地址相对于所述起始存储地址的地址偏移量等于所述FIR滤波器的抽头数与数值2的差值的一半,然后将最新得到的存储地址记为中间计算存储地址;其中,在对起始存储地址进行自加操作的过程中,每执行一次自加操作,产生一个存储地址,相邻两次自加操作产生的存储地址的变化值是数值1。
进一步地,所述滤波计算模块,用于在写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值时,在每个折叠地址读周期内,先控制所述数据缓存空间输出的第一折叠读地址中的待滤波数据与所述数据缓存空间输出的第二折叠读地址中的待滤波数据相加;再将相加的结果与所述滤波器系数存储器输出的相同读取顺序的滤波器系数进行乘法运算;然后将相乘结果输入到加法器进行累加处理,在每个滤波周期内如此重复,直至所述滤波器系数存储器输出所述中间计算存储地址中的滤波器系数;其中,每个滤波周期内,乘法运算由一个乘法器分时复用实现;所述滤波计算模块包括加法器和乘法器;所述FIR滤波器的转置使能计数阈值等于所述FIR滤波器的抽头数;所述滤波器系数存储器输出所述中间计算存储地址中的滤波器系数时,若所述FIR滤波器的抽头数是偶数,则控制所述数据缓存空间在同一折叠地址读周期内内输出的第一折叠读地址中的待滤波数据与第二折叠读地址中的待滤波数据的和值与所述中间计算存储地址中的滤波器系数进行乘法运算,再将相乘结果输入到加法器进行累加处理,得到对应的滤波周期内的处理后的滤波结果。
与现有技术相比,本发明根据写入数据缓存空间的待滤波数据的数量与所述FIR滤波器的转置使能计数阈值的大小关系划分出与待滤波数据的输入数量相适应的滤波计算阶段,并在不同的滤波计算阶段内采取不同的计数方式,以产生适应当前数据量下的先加再乘的滤波计算或先乘再加的滤波计算的读地址,满足不同数据输入量下的参与滤波计算的待滤波数据之间相关性,本发明计数产生的读地址支持在抽头数限定的地址区间内进行回环变化,从而可以通过新数据覆盖旧地址的方式来保证所述待滤波数据传输的连续性;另一方面,每次滤波计算或每个滤波周期内的作为计数起点的读地址的变化与FIR滤波器的抽取率或插值率相关,以使得同一滤波周期内的读地址的自加操作和/或同一滤波周期内的读地址的自减操作执行该滤波周期内的滤波计算,能够支持除了半带滤波器之外的不同阶数的FIR滤波器的自动计数和周期性的滤波计算需求,从实时输入待滤波数据中同时抽取出有效数据和滤波处理出有效的滤波结果。
附图说明
图1是本发明一实施例公开一种具备自动计数功能的FIR滤波器的模块连接框图。
图2是本发明的另一实施例公开的读写控制模块的内部关于计数器的结构原理示意图。
图3是5抽头FIR滤波器的数据流动的动态变化示意图。
图4是6抽头的FIR滤波器的数据流动的动态变化示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行详细描述。为进一步说明各实施例,本发明提供有附图。这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理。
除非另作定义,本发明所涉及的技术术语或科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一种”、“该”等词语并不表示数量限制,可以表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含,如:包含了一系列步骤或模块的过程、方法、系统产品或者设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或模块,或者还可以包括对于这些过程、方法、产品或设备固有的其他步骤或单元。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是用于区别类似的对应,不代表针对对象的特定顺序。
本发明的一实施例公开一种具备自动计数功能的FIR滤波器,可以根据实际应用领域(音频或视频)的滤波算法需求,可以用于音频设备的单声道或双声道的音频信号的抽取和滤波,具体可以在输入一笔新数据的同时,对原来输入的一笔旧数据进行滤波计算,是一种支持流水线结构的FIR滤波器。如图1所示,FIR滤波器包括读写控制模块、滤波计算模块、数据缓存空间和滤波器系数存储器。所述FIR滤波器的内部预先配置有抽头数、抽取率以及插值率,支持外部的软件参数或程序介入修改,具体地,所述FIR滤波器的内部设置有专门的参数配置寄存器,用于存储各种类型的FIR滤波器的相关性能参数,包括但不限于输入输出数据的位宽、滤波器系数的位宽、FIR滤波器的抽头数及阶数、滤波器系数的数量、滤波器的长度、滤波器的抽取率、插值率(插值倍数)、一次滤波运算所需的滤波周期、片选信号的有效时间点、使能信号的拉高时间点、滤波器系数存储器的读地址的起始地址或起始读取时间点,即确定滤波器系数的读取和计算的起止时间点及对应的地址区间;其中,FIR滤波器的抽头数等于FIR滤波器的阶数与数值1的和值。在本发明中,写入所述数据缓存空间的每个待滤波数据的位宽是由特定的寄存器预先配置的,每个待滤波数据占据的位宽小于或等于所述数据缓存空间允许读写的最大位宽。
在本实施例中,所述读写控制模块,用于产生所述FIR滤波器进行滤波计算所需的读地址,能够使用这些读地址来限定读取所述数据缓存空间的地址区间以满足所述FIR滤波器的抽头数的要求,在硬件化实施的过程中,读地址都是在同一时钟下由专门的计数器进行计数或视实际的数据传输速率进行分频处理,值得注意的是,在读数据之前需要先确定好读操作的起始地址和起始时间点。其中,数据缓存空间是使用SRAM来实现,即使用静态随机存取存储器(Static Random-Access Memory,SRAM)来实现。
读写控制模块,用于控制输入FIR滤波器的待滤波数据写入数据缓存空间内,具体地,所述读写控制模块作为数据的读写逻辑,可以按照所述FIR滤波器的抽取率或插值率,在相应的时钟周期下将输入数据写入所述数据缓存空间;同时可以根据所述FIR滤波器的抽头数及实时写入的待滤波数据的数量,去计数产生滤波计算所需的读地址,并将在先写入该读地址中的数据传输给所述滤波计算模块,其中,所述滤波计算模块在对一批待滤波数据进行一次滤波计算时,允许所述读写控制模块继续控制新的一批待滤波数据写入所述数据缓存空间。
如图1所示,读写控制模块的端口I1是用于向所述数据缓存空间传输时钟信号,配置为读取所述数据缓存空间内的相关联的读地址中数据的驱动时钟信号;读写控制模块的端口I2是用于向所述数据缓存空间传输片选信号,该片选信号用于启动选择所述数据缓存空间内需要被读取或进入工作状态的地址区间;读写控制模块的端口I3是用于向所述数据缓存空间传输使能信号,该使能信号用于区分读使能还是写使能;读写控制模块的端口I4是用于向所述数据缓存空间传输所述读写控制模块产生的相关联的读地址;读写控制模块的端口I5是用于向所述数据缓存空间写入所述待滤波数据;读写控制模块的端口O6是用于接受从所述数据缓存空间内读取出的待滤波数据,所述数据缓存空间传输的被读取的数据会被读写控制模块的其它端口传输给滤波计算模块,传输给所述滤波计算模块的数据,如图1的fir_rdata所示。
读写控制模块,用于根据写入数据缓存空间的待滤波数据的数量与所述FIR滤波器的转置使能计数阈值的大小关系,利用计数产生的读地址,从数据缓存空间内依次读取出所述待滤波数据给所述滤波计算模块,并将读取出的所述待滤波数据传输给所述滤波计算模块,在对写入数据缓存空间的待滤波数据的数量与所述FIR滤波器的转置使能计数阈值的大小关系进行判断时,写入数据缓存空间的待滤波数据的数量等效于输入FIR滤波器的待滤波数据的数量,此时不包括所述滤波计算模块已经一次滤波计算时新写入的待滤波数据,则判断写入数据缓存空间的待滤波数据的数量与所述FIR滤波器的转置使能计数阈值的大小关系是在检测输入FIR滤波器的待滤波数据的数量是否满足一定的计数阈值,用于决策在所述FIR滤波器当前应该采取的滤波计算方式,相对于现有技术中抽取和滤波处理同批量的数据,减少计算量,尤其是在抽头数较大的情况下。需要说明的是,写入数据缓存空间的待滤波数据的数量与所述FIR滤波器的转置使能计数阈值的大小关系是由一个特定的使能信号确定的,并由读写控制模块接收,对应为图2的选择信号Thr_sel,当然该特定使能信号可以由所述读写控制模块对输入所述FIR滤波器的外部数据的数量或对写入所述数据缓存空间的数据的数量进行计数而获得。可选地,所述FIR滤波器的转置使能计数阈值可以是所述FIR滤波器的抽头数,或者是比所述FIR滤波器的抽头数大的数值,或者是比所述FIR滤波器的抽头数小的数值。
滤波计算模块,用于控制所述数据缓存空间输出的待滤波数据以及所述滤波器系数存储器输出的滤波器系数进行滤波计算,具体地,在所述FIR滤波器执行的滤波计算中,根据写入数据缓存空间的待滤波数据的数量与所述FIR滤波器的转置使能计数阈值的大小关系划分相应不同滤波阶段下的计算方式,不同滤波阶段下的计算过程所耗费的时间和资源是不同的。滤波器系数存储器,还用于存储有需要复用的FIR滤波器所需的滤波器系数,其中,滤波器系数存储器可以使用ROM来实现,即使用只读存储器(Read-Only Memory,ROM)来实现。如图1所示,滤波器系数存储器通过其端口rom_out向所述滤波计算模块传输滤波器系数。
滤波器系数存储器,用于在所述读写控制模块开始从数据缓存空间内读取所述待滤波数据后,按照所述读写控制模块从数据缓存空间内读取所述待滤波数据的顺序,从所述FIR滤波器对应的所述起始存储地址开始,依次输出所需的滤波器系数给所述滤波计算模块,值得注意的是,所述滤波计算模块从所述滤波器系数存储器读取滤波器系数的存储地址的次序是与所述读写控制模块从所述数据缓存空间读取待滤波数据的缓存地址的次序是保持相同的,以使得所述数据缓存空间输出的待滤波数据与所述滤波器系数存储器输出的相应地址位置处(奇数或偶数标识的地址位置,其涉及到基地址是预先配置并在此基础上自加或自减得到)的滤波器系数在同一个滤波周期内能进行一次滤波计算,需要说明的是,在本实施例中针对输入的一笔待滤波数据进行一次滤波计算所耗费的时间是一个滤波周期,但是所述数据缓存空间输出的待滤波数据与所述滤波器系数存储器输出的滤波器系数不一定是同步输出,但能够保证在同一个滤波周期内执行完整的一次滤波计算;而且滤波计算模块在进行一次滤波计算时,所述读写控制模块继续控制新输入FIR滤波器的待滤波数据写入数据缓存空间内但不参与该次滤波计算。
与现有技术相比,与现有技术相比,本发明实施例根据写入数据缓存空间的待滤波数据的数量与所述FIR滤波器的转置使能计数阈值的大小关系划分出与待滤波数据的输入数量相适应的滤波计算阶段,并在不同的滤波计算阶段内采取不同的计数方式,以产生适应当前数据量下的先加再乘的滤波计算或先乘再加的滤波计算的读地址,满足不同数据输入量下的参与滤波计算的待滤波数据之间相关性。
在一些实施例中,写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值时,产生一种高电平的折叠选择信号,对应为图2的选择信号Thr_sel=1,选通所述读写控制模块内对应计数器的数据通路,产生相应的读地址;写入数据缓存空间的待滤波数据的数量小于或等于所述FIR滤波器的转置使能计数阈值时,产生一种低电平的折叠选择信号,对应为图2的选择信号Thr_sel=0,选通所述读写控制模块内对应计数器的数据通路,产生另一种读地址;其中,所述读写控制模块用于读取所述数据缓存空间的读取时序是由所述FIR滤波器选择的特定的计数器的计数时序决定的。
在本实施例中,所述FIR滤波器还设置有一个系统时钟源,用于计数产生系统时钟周期,对应到图1中读写控制模块的端口I1输出的时钟信号,本实施例将系统时钟源设计为所述FIR滤波器的计数时钟,通过计数其产生的时钟节拍作为所述系统时钟周期,也支持分频以实现对计数时钟进行分频处理。其中,写入一个待滤波数据所耗费的时间配置为一个系统时钟周期,读取出一个待滤波数据所耗费的时间配置为一个系统时钟周期;在本实施例中,所述FIR滤波器用于将外部输入的一个待滤波数据写入所述数据缓存空间所耗费的时间配置为等于一个系统时钟周期,即在所述读写控制模块的控制下,不包括其余的延时操作的前提下,一个待滤波数据写入所述数据缓存空间的过程中,将一个写时钟周期设置为等于一个系统时钟周期;所述FIR滤波器还用于将从所述数据缓存空间读取出一个待滤波数据所耗费的时间配置为等于一个系统时钟周期,即在所述读写控制模块的控制下,不包括其余的延时操作的前提下,从所述数据缓存空间读取一个待过滤数据的过程中,将一个读时钟周期设置为等于一个系统时钟周期;其中,一个待滤波数据是所述FIR滤波器从外部采样到的一个采样点的信息,在本实施例中也是所述读写控制模块从所述数据缓存空间内读取出的数据。所述写入数据缓存空间的待滤波数据的数量是等于所述FIR滤波器从外部采样的待滤波数据的数量,作为实际进行一次滤波计算所需的待滤波数据的数量。
在上述实施例的基础上,所述读写控制模块还包括基准地址计数器,具体是可以设置在所述读写控制模块内,作为获取每一次滤波计算所需的待滤波数据的起始读地址的计数逻辑部件;基准地址计数器,用于每当所述FIR滤波器的外部向所述数据缓存空间写入两个所述待滤波数据时,或所述滤波计算模块开始进行一次滤波计算时,执行一次自加操作,即对基准地址计数器的计数值进行自加操作,并产生基准地址,其中,基准地址计数器的一次自加操作产生的计数值的变化值是数值2,即加二计数一次,满足所述FIR滤波器的两倍抽取率或两倍插值率的要求,具体地,本实施例将所述FIR滤波器的抽取率设置为2倍,以使得在一些实施例中相邻两个滤波周期下获得的基准地址之间的地址偏移量等于数值2,因为在对应的实施例中,能够将相邻两个滤波周期下获得的基准地址之间的地址偏移量设置为等于所述FIR滤波器的抽取率或所述FIR滤波器的插值率;然后触发所述滤波计算模块利用基准地址从所述数据缓存空间输出的所述待滤波数据进行滤波计算;再在所述滤波计算模块计算出一个滤波结果时,确定所述FIR滤波器从写入两个所述待滤波数据开始已经经过一个滤波周期,已经完成一次滤波计算,包括写入2个待过滤数据所需的两个系统时钟周期、从所述数据缓存空间内依次读取出所述待滤波数据的总周期(具体的数值与一次滤波计算需从所述数据缓存空间内读取到的待滤波数据的数量相关)、以及滤波计算所包含的相乘累加计算所需的周期,则本实施例设置的一个滤波周期是大于两个系统时钟周期,从而本实施例为保证执行一个完整的滤波计算而设置互相联系的读写和计算周期长度,实现获取有效的滤波结果,因此,每经过一个滤波周期,则所述滤波计算模块输出一个滤波结果;即本实施例在所述滤波计算模块输出一个滤波结果时,确定所述FIR滤波器从写入两个所述待滤波数据开始已经经过一个滤波周期,并确定一个滤波周期内只完成一次滤波计算;其中,所述基准地址是在该滤波周期内,所述数据缓存空间输出第一个待滤波数据的读地址。值得注意的是,在当前一个滤波周期内进行一次滤波计算的同时允许向所述数据缓存空间继续写入新的所述待滤波数据以开启下一个滤波周期,本实施例公开的FIR滤波器是数字逻辑电路构成的,FIR滤波器具备的流水线结构,决定输入的所述待滤波数据的读写和计算同步执行,实现相邻两个滤波周期存在部分重合的时序区间;需要补充是,所述基准地址计数器内设的初始计数值可以是数值0或数值1,本实施例选择将所述基准地址计数器内设的初始计数值配置为数值0,进行说明。综上,该实施例确定所述FIR滤波器是具备2倍抽取率或2倍插值率的条件下,进行一次滤波计算所需的连续周期及其计数规则,适应对所述FIR滤波器的滤波计算所耗费的周期的有效划分。
优选地,当写入数据缓存空间的待滤波数据的数量使用所述基准地址计数器的计数值的变化值表示时,基于所述基准地址计数器是每写入两个待滤波数据则加二计数的时序规则,所述FIR滤波器的转置使能计数阈值使用所述FIR滤波器的抽头数来表示,使得所述FIR滤波器的转置使能计数阈值与写入数据缓存空间的待滤波数据的数量的大小关系等效于所述FIR滤波器的抽头数与所述基准地址计数器的计数值的变化值的大小关系,则便于对写入数据缓存空间的待滤波数据的数量进行统计,该优选例是在所述FIR滤波器的抽头数是奇数和偶数的应用场景下,有利于运用所述基准地址计数器准确地统计每个滤波周期内实际写入所述数据缓存空间的待滤波数据的数量。
优选地,当基准地址计数器的计数值为所述FIR滤波器的抽头数与数值2的差值后,所述读写控制模块在下一个系统时钟周期将滤波起点地址更新为基准地址计数器当前获得的计数值,实现将滤波起点地址更新为基准地址,让基准地址计数器从更新后的基准地址开始执行自加操作;值得注意的是,基准地址的更新规则不受到所述写入数据缓存空间的待滤波数据的数量与所述FIR滤波器的转置使能计数阈值的大小关系的影响;其中,滤波起点地址是预先在所述数据缓存空间内配置的一个地址,作为每个滤波周期内,参与读取操作的地址中,顺序最小的一个地址,可以使用数值0或数值1表示,本优选例将所述滤波起点地址设置为数值0。基准地址计数器存在初始计数值,初始计数值是基准地址计数器开始计数之前设置好的计数值,为了配合图4的说明,在所述FIR滤波器的抽头数为偶数前提下,本优选施例将该初始计数值设置为数值0,则所述基准地址计数器的计数值按照每个滤波周期递增数值2的方式可以递增至所述FIR滤波器的抽头数与数值2的差值,则所述读写控制模块在下一个系统时钟周期将所述滤波起点地址更新为基准地址计数器当前获得的计数值,让所述基准地址计数器有足够的计数范围去覆盖所述FIR滤波器的抽头数所限定的有效地址区间(该地址区间包括的地址单元的数量等于所述FIR滤波器的抽头数),也避免所述基准地址计数器在按照每一个滤波周期增加数值2的方式递增的过程中出现计数值溢满的现象或避免让所述读写控制模块读取到无效地址中的数据。另一方面,在所述FIR滤波器的抽头数为奇数前提下,基准地址计数器的初始计数值配置为数值1,则所述基准地址计数器的计数值按照每一个滤波周期增加数值2的方式可以递增至所述FIR滤波器的抽头数与数值2的差值,然后所述读写控制模块在下一个系统时钟周期将所述滤波起点地址更新为基准地址计数器当前获得的计数值,以便于所述基准地址计数器调整为从滤波起点地址处开始重新递增。
优选地,当基准地址计数器的计数值为所述FIR滤波器的抽头数与数值1的差值后,所述读写控制模块在下一个系统时钟周期将将滤波起点地址与数值1的和值更新为所述基准地址计数器当前获得的计数值,并将滤波起点地址与数值1的和值更新为基准地址;其中,基准地址计数器的计数值可以理解为其产生的基准地址;滤波起点地址是预先在所述数据缓存空间内配置的一个地址,作为每个滤波周期内,参与读取操作的地址中,顺序最小的一个地址,可以使用数值0或数值1表示,本优选例将其设置为数值0。基准地址计数器的初始计数值是基准地址计数器开始计数之前设置好的计数值,为了配合图3的说明,在所述FIR滤波器的抽头数为奇数前提下,本优选施例将该初始计数值设置为数值0,则所述基准地址计数器的计数值按照每一个滤波周期增加数值2的方式可以递增至所述FIR滤波器的抽头数与数值1的差值,然后所述读写控制模块在下一个系统时钟周期将数值1更新为基准地址计数器当前获得的计数值,以便于所述基准地址计数器调整为从滤波起点地址与数值1的和值处开始重新递增。让所述基准地址计数器有足够的计数范围去覆盖所述FIR滤波器的抽头数所限定的有效地址区间,也避免所述基准地址计数器在按照每一个滤波周期增加数值2的方式递增的过程中读取到无效地址(所述FIR滤波器的抽头数限定的读取地址区间之外)中的数据。
另一方面,在所述FIR滤波器的抽头数为偶数前提下,基准地址计数器的初始计数值配置为数值1,则所述基准地址计数器的计数值按照每一个滤波周期增加数值2的方式可以递增至所述FIR滤波器的抽头数与数值1的差值,然后所述读写控制模块在下一个系统时钟周期将数值1更新为基准地址计数器当前获得的计数值,以便于所述基准地址计数器调整为从滤波起点地址与数值1的和值处开始重新递增。
结合前述实施例可知,所述根据写入数据缓存空间的待滤波数据的数量与所述FIR滤波器的转置使能计数阈值的大小关系,利用读地址从数据缓存空间内依次读取出所述待滤波数据,并将读取出的所述待滤波数据传输给所述滤波计算模块的方式包括:在所述读写控制模块确定出写入数据缓存空间的待滤波数据的数量小于或等于所述FIR滤波器的转置使能计数阈值时,所述读写控制模块依次从所述数据缓存空间内读取出所述前置读地址中的待滤波数据,并传输给所述滤波计算模块;其中,所述FIR滤波器的转置使能计数阈值优选地设置为所述FIR滤波器的抽头数,从而本实施例可以利用所述FIR滤波器的抽头数与数值1的差值作为计数最大值进行读地址和读周期的划分,使得相关的计数器计数出的地址不超出所述FIR滤波器的抽头数下所限定的读地址区间。
需要说明的是,所述前置读地址在每个滤波周期内由一个基准地址开始进行计数获得,具体是由基准地址计数器的实时计数值决定的,开始进行一次滤波计算则计数一次或开始一个滤波周期则计数一次,其中,每个滤波周期内的一个基准地址是属于该滤波周期内第一个参与读取操作的前置读地址,以使得基准地址对应的前置读地址中的待滤波数据被按对应的读取时序传输至所述滤波计算模块。从而划分出用于每次滤波计算的所述读写控制模块的有效读地址和读取的待滤波数据,保证输入的数据被连续的获取并用于连续的滤波计算。
作为一种抽头数等于奇数的FIR滤波器的实施方式一,如图2所示,所述读写控制模块包括前置地址计数器和读地址选择器;所述写入数据缓存空间的待滤波数据的数量小于或等于所述FIR滤波器的转置使能计数阈值时,读地址选择器选通前置地址计数器产生的计数值输出给所述数据缓存空间,以起到读取相应地址中的待滤波数据的作用;具体地,所述写入数据缓存空间的待滤波数据的数量小于或等于所述FIR滤波器的转置使能计数阈值时,在一些实施例中,选择信号Thr_sel置为低电平,选通前置地址计数器与读写控制模块的端口I4之间的数据通路,实现前置地址计数器产生的计数值输出给所述数据缓存空间,从而前置地址计数器向所述数据缓存空间提供前置读地址。
前置地址计数器用于从当前一个滤波周期内的基准地址开始,按照所述系统时钟周期进行自减操作,再触发所述读写控制模块从所述数据缓存空间内读取出每次自减操作后的前置读地址中的待滤波数据,再依次传输给所述滤波计算模块,直至前置地址计数器的计数值在当前一个滤波周期内减至数值0或数值1;其中,前置地址计数器每自减操作一次,产生的计数值的变化值是数值1,且每次自减操作后获得一个前置读地址,是在以一次滤波计算的过程为周期实现的,也能实现在同一个滤波周期内减至数值0或数值1;针对前置地址计数器在不同的滤波周期内产生的计数值的情况,本实施例将前置地址计数器在每个滤波周期内的初始计数值配置为所述基准地址计数器在相应的一个滤波周期内产生的所述基准地址,即所述基准地址计数器自加操作一次,产生一个滤波周期内的基准地址,作为前置地址计数器在该滤波周期内为了辅助所述滤波计算模块执行一次滤波计算而执行多次自减操作(以输出多个连续的前置读地址中的数据给所述滤波计算模块)所需的初始计数值(起点计数值)。
本实施例将所述基准地址计数器内设的初始计数值配置为数值0,则设置在所述数据缓存空间内的基准地址是支持配置为0。由于所述前置读地址在每个滤波周期内由一个基准地址开始进行计数获得,即所述前置读地址是可以设置为基准地址,属于一个滤波周期内或一次滤波计算过程中的第一个参与读取操作的前置读地址,所以,所述读写控制模块在其中一个滤波周期内是可以从地址0的位置开始读取待滤波数据,提高读取数据的地址区间的覆盖率。在该实施例中,每个滤波周期下,先是使用两个连续的系统时钟周期依次向所述数据缓存空间写入两个待滤波数据,再按照相应的读取时序从所述数据缓存空间内读取数据至所述滤波计算模块以进行滤波计算,而开始进行一次滤波计算时,所述基准地址计数器除了对最初写入的两个待滤波数据进行加二计数操作之外,在同一个滤波周期内没有进行计数操作,而是保持计数值直至写入新的待滤波数据且进入下一个滤波周期。
在图3的实施例中,所述写入数据缓存空间的待滤波数据的数量小于或等于所述FIR滤波器的转置使能计数阈值的情况下,可以是所述写入数据缓存空间的待滤波数据的数量小于或等于5(所述FIR滤波器的抽头数等于5,所述FIR滤波器的抽头数等于所述FIR滤波器的转置使能计数阈值)时,所述基准地址是图3的初始地址,第一个滤波周期(序号为1的滤波周期)的基准地址是0,第二个滤波周期(序号为2的滤波周期)的基准地址是2,第三个滤波周期(序号为3的滤波周期)的基准地址是数值4,此时,已经写入5个待滤波数据,从新写入的到最先写入的依次为X5、X4、X3、X2以及X1。
在图3的实施例中,所述写入数据缓存空间的待滤波数据的数量小于或等于所述FIR滤波器的转置使能计数阈值的情况下,即所述写入数据缓存空间的待滤波数据的数量小于或等于5(所述FIR滤波器的抽头数等于5,所述FIR滤波器的抽头数等于所述FIR滤波器的转置使能计数阈值)时,所述基准地址是图3的初始地址,第三个滤波周期(序号为2的滤波周期)的基准地址是4,已经达到所述FIR滤波器的抽头数与数值1的差值,若所述基准地址计数器继续对当前获得的基准地址(计数值)进行自加操作,产生的新的基准地址成为数值5,在基准地址计数器内设的初始计数值配置为数值0的前提下,其遍历过的地址的数量已经是6个,超出所述FIR滤波器的抽头数,所以,在第四个滤波周期(序号为4的滤波周期)的基准地址被配置为数值1,然后到第四个滤波周期(序号为4的滤波周期)后,已经写入7个待滤波数据,从新写入的到最先写入的依次为X7、X6、X5、X4、X3、X2以及X1,其中Xi中的i越小,则越早写入,但越晚被读取。
在一些实施例中,所述数据缓存空间的地址0上总有一格新的数据进入图3的窗口并占据窗口的第一个位置,特别的,图3的第一个滤波周期内所述FIR滤波器的外部只向所述数据缓存空间写入一个待滤波数据X1,相应地,第一个滤波周期内的基准地址是0,可以是所述读写控制模块预先配置的,当开始进行一次滤波计算时,所述滤波计算模块利用该待滤波数据进行滤波计算并输出滤波结果y0;第一个滤波周期内,由于只是写入一个待滤波数据,所述基准地址计数器不进行计数操作,所以将所述基准地址计数器的初始计数值配置为基准地址,进而配置为该滤波周期内或该次滤波计算过程中的第一个参与读取操作的前置读地址。
作为一种抽头数等于奇数的FIR滤波器的实施方式二,所述读写控制模块包括前置地址计数器,用于在写入数据缓存空间的待滤波数据的数量小于或等于所述FIR滤波器的转置使能计数阈值时,前置地址计数器用于从当前一个滤波周期对应的基准地址开始,按照所述系统时钟周期进行自减操作,具体是在当前一个滤波周期下利用所述读写控制模块中对应换算出的基准地址进行自减操作,可选地,在进行第一次自减操作之前,需要延时一段时间以让写入的待滤波数据稳定地缓存到所述数据缓存空间内;同时将每次自减操作后的前置读地址传输至所述数据缓存空间,以触发所述读写控制模块从所述数据缓存空间内读取出每次自减操作后的前置读地址中的待滤波数据,再依次传输给所述滤波计算模块,直至最新得到的前置读地址为数值0或数值1,本实施例中的前置地址计数器设置的初始计数值是基准地址,可以是数值0;前置地址计数器作为递减计数器,前置地址计数器每执行自减操作一次,对应产生的计数值的变化值是数值1,且每次自减操作后产生的计数值被配置为前置读地址,使得当前一次自减操作后相对于上一次自减操作得到新的前置读地址。因此,前置地址计数器能够以数值1为地址偏移步长,逐个地址单元地遍历所述数据缓存空间,具体是由所述FIR滤波器的抽头数限定的地址区间。
作为一种抽头数等于奇数的FIR滤波器的实施方式三,为了进行一次滤波计算,仍然是在写入数据缓存空间的待滤波数据的数量小于或等于所述FIR滤波器的转置使能计数阈值的实施场景下,所述滤波器系数存储器用于在每个滤波周期内,可以是在所述读写控制模块的控制下或所述滤波器系数存储器内置的计数器的驱动下,从所述FIR滤波器相匹配的起始存储地址开始,按照所述系统时钟周期对起始存储地址进行自加操作,再按照自加得到的存储地址将对应存储的滤波器系数依次读出至所述滤波计算模块,具体是在每个系统时钟周期下对已经获得存储地址进行加一,则在同一系统时钟周期内,存储地址的地址偏移步长与前述的前置读地址的地址偏移步长相等,且保持在同一所述系统时钟源下进行变化,直至自加得到的存储地址相对于所述起始存储地址的地址偏移量等于所述FIR滤波器的抽头数与数值1的差值的一半;需要说明的是,在一个滤波周期内,参与同一次滤波计算所需的滤波器系数的读取顺序与待滤波数据的读取顺序相同,直至自加得到的存储地址相对于所述起始存储地址的地址偏移量等于所述FIR滤波器的抽头数与数值1的差值的一半。然后所述滤波器系数存储器将最新得到的存储地址记为中间计算存储地址,再对中间计算存储地址进行自减操作,再按照自减得到的存储地址将对应存储的滤波器系数依次读出至所述滤波计算模块,直至自减得到的存储地址相对于中间计算存储地址的地址偏移量等于所述FIR滤波器的抽头数与数值1的差值的一半,依次重复,直至在当前一个滤波周期内(对应于开始进行当前一次滤波计算)从所述滤波器系数存储器内输出的滤波器系数的数量等于当前一个滤波周期内参与滤波计算的待滤波数据的数量,可能会因实际所进行的滤波计算的次数或所处的滤波周期而异。需要说明的是,对起始存储地址进行自加操作的过程中,每自加操作一次,则触发存储地址对应的地址自动增加数值1;对所述中间计算存储地址进行自减操作的过程中,每自减操作一次,则触发存储地址对应的地址自动减少数值1;其中,所述中间计算存储地址是设置在所述滤波器系数存储器内,属于滤波器系数的存储地址中,顺序最大的地址,即存储相应的滤波器系数的地址区间的尾地址。
在图3中,在第三个滤波周期内,从初始地址为数值4的地址位置开始,自左向右,第五行方框内的数据依次是所述读写控制模块从所述数据缓存空间内读取出的自减操作后的前置读地址中的待滤波数据,自左向右的方格中,越偏向左侧的方格内的数据是越早被读取到的,对应的地址位置是越早自减获得的前置读地址;越偏向右侧的方格内的数据是越晚被读取到的,对应的地址位置是越晚自减获得的前置读地址,优选地,每个系统时钟周期读取一个方格内的数据。同理地,第六行方框内的数据依次是从所述滤波器系数存储器内读取出的自加操作后的存储地址中的滤波器系数,从h1的方格对应的地址位置开始,即所述FIR滤波器对应的起始存储地址开始,自左向右的方格中,越偏向左侧的方格内的数据是越早被读取到的,对应的地址位置是越早自加获得的存储地址;越偏向右侧的方格内的数据是越晚被读取到的,对应的地址位置是越晚自加获得的存储地址,直至自加至h3的方格,此时h3的方格对应的地址位置相对于h1的方格对应的地址位置的地址偏移量等于数值2,等于所述FIR滤波器的抽头数(数值5)与数值1的差值的一半(等于数值2),所述滤波器系数存储器将h3的方格对应的地址位置配置为中间计算存储地址;然后从h3的方格开始,对这个中间计算存储地址进行自减操作,直至自减至h1的方格,此时自减得到的存储地址相对于中间计算存储地址的地址偏移量等于所述FIR滤波器的抽头数(数值5)与数值1的差值的一半(等于数值2),此时,第六行方框中,自左向右被读取的滤波器系数h1、h2、h3、h2和h1正好依次对应第五行方框中参与滤波计算的待滤波数据X5、X4、X3、X2和X1,其中,X5是最先读取出的前置读地址中的待滤波数据,X1是最后读取出的前置读地址中的待滤波数据;则第三个滤波周期内从所述滤波器系数存储器内读取出的滤波器系数的数量满足第三个滤波周期内参与滤波计算的待滤波数据的数量,也使得在获得中间计算存储地址之前的自加操作得到的存储地址中的滤波器系数与在获得中间计算存储地址之后的自减操作得到的存储地址中的滤波器系数组成所述FIR滤波器的对称的滤波器系数,即h3的左右两侧读取到的滤波器系数h1和h2组成一组对称的滤波器系数,以在当前一次滤波计算中(第三个滤波周期内)获得对称的滤波结果。
在上述实施例的基础上,所述滤波计算模块,用于在写入所述数据缓存空间的待滤波数据的数量小于或等于所述FIR滤波器的转置使能计数阈值时,控制数据缓存空间输出的待滤波数据以及滤波器系数存储器输出的相同读取顺序的滤波器系数进行乘法运算,并将结果输入到加法器进行累加处理,得到每个滤波周期内的处理后的一个滤波结果;其中,每个滤波周期内的乘法运算由一个乘法器分时复用实现,最大限度的减少乘法器资源;其中,在所述写入所述数据缓存空间的待滤波数据的数量小于或等于所述FIR滤波器的转置使能计数阈值的前提下,一个滤波周期内的乘法运算的次数等于当前一次滤波计算所需的待滤波数据的数量或滤波器系数的数量,但不超过所述FIR滤波器的抽头数。所述滤波计算模块包括加法器和乘法器,组成先执行乘法再执行加法的计算方式。对应到图3中,第三个滤波周期中获得的滤波结果y4等于X5与h1的乘积、X4与h2的乘积、X3与h3的乘积、X2与h2的乘积、以及X1与h1的乘积的和值,则第三个滤波周期内的乘法运算的次数等于5。其中,所述FIR滤波器的转置使能计数阈值等于所述FIR滤波器的抽头数。
作为一种抽头数等于奇数的FIR滤波器的实施方式四,在所述写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值时,所述读写控制模块用于按照所述基准地址计数器的计数时序,将所述基准地址计数器产生的基准地址配置为第一折叠读地址;并将基准地址与数值1的和值配置为第二折叠读地址,相当于把基准地址增加一个地址偏移量以相对于基准地址偏移一个地址,以实现与第一折叠读地址不重合;所述读控制模块还用于将第一折叠读地址与第二折叠读地址相加的和值配置为后置读地址,并按照所述基准地址计数器的计数时序,从所述数据缓存空间内读取出所述后置读地址中的待滤波数据,并传输给所述滤波计算模块。
具体地,本实施例公开的基准地址计数器还用于在所述写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值时,所述基准地址计数器继续执行计数值的自加操作;且所述基准地址计数器在每次自加操作中产生计数值的变化值是数值2,并在每个所述滤波周期内将自加操作后得到的基准地址配置为第一折叠读地址的起始地址(一个滤波周期内第一个读取的第一折叠读地址);在一些实施例中,可以等效为,每写入两个待滤波数据,即开始进行一次滤波计算,所述基准地址计数器加二计数一次,进而,每开始进行一次滤波计算,则所述基准地址计数器加二计数一次。值得注意的是,若计数到所述写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值的场景后,基准地址计数器可能仍在执行自加操作以记录当前所处的滤波周期的序号或记录写入的待滤波数据的数量情况。因此,所述基准地址计数器在写入数据缓存空间的待滤波数据的数量超过所述FIR滤波器的转置使能计数阈值的情况下,为每个滤波周期下的需要抽取和滤波的待滤波数据提供对应起始读地址,作为真正进行滤波计算的数据的起始地址信息。
具体地,所述读写控制模块包括第一折叠地址计数器;在所述写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值时,所述第一折叠地址计数器用于在每一个滤波周期内,对所述第一折叠读地址执行自减操作,产生新的第一折叠读地址,以触发所述读写控制模块从所述数据缓存空间内读取出每次自减操作后的第一折叠读地址中的待滤波数据,直至自减操作的次数为第一预设折叠采样数目,但仍允许向所述数据缓存空间写入新的待滤波数据,但该新的待滤波数据不计入当前一次滤波计算所需的待滤波数据中,而是记为下一次滤波计算所需的待滤波数据。其中,第一折叠地址计数器自减操作一次产生的计数值的变化值是数值1,即第一折叠地址计数器每执行一次自减操作,则对应产生的计数值减少数值1。
在所述读写控制模块确定将所述基准地址计数器产生的基准地址配置为所述第一折叠读地址之前,等效于将基准地址配置为所述第一折叠读地址的起始地址(对应的滤波周期下或参与对应一次的滤波计算而需要读取的第一个第一折叠读地址)之前,所述读写控制模块,用于判断到基准地址等于滤波起点地址时,将滤波目标地址更新为基准地址,再将更新后的基准地址配置为第一折叠读地址的起始地址,以便于第一折叠读地址在自减操作的过程中减去合理的地址偏移值,获取自减操作得到的有效地址中的待滤波数据,避免获得无效的数据且丢失与当前一个滤波周期内或当前一次滤波计算中相关联的数据。
需要说明的是,滤波目标地址是预先在所述数据缓存空间内配置的一个地址,作为每个滤波周期内,参与读取操作的地址中,被读取的顺序最大的一个地址的地址,所述滤波目标地址大于所述滤波起点地址,所述滤波目标地址与所述滤波起点地址的差值等于所述FIR滤波器的抽头数与数值1的差值。一般地,所述滤波起点地址设置为数值0时,所述滤波目标地址设置为所述FIR滤波器的抽头数与数值1差值,可以运用于所述读写控制模块在一次滤波计算中第一次读取的地址是数值0标记的地址位置的场景中,第二折叠地址计数器可以从这个地址位置开始进行自加操作,第一折叠地址计数器可以从所述FIR滤波器的抽头数与数值1差值处开始进行自减操作;或者,所述滤波起点地址设置为数值1时,所述滤波目标地址设置为所述FIR滤波器的抽头数,可以运用于所述读写控制模块在一次滤波计算中第一次读取的地址是数值1标序的地址位置的场景中,第二折叠地址计数器可以从这个地址位置开始进行自加操作,第一折叠地址计数器可以从所述FIR滤波器的抽头数开始进行自减操作。然后,第一折叠地址计数器用于从第一折叠读地址的起始地址开始,对第一折叠读地址执行自减操作,以实现有序地在FIR滤波器规定的两倍抽取率的基础上进行数据读取操作;其中,前述第一折叠读地址也可以表示第一折叠读地址在所述数据缓存空间内的顺序;第一折叠地址计数器在对第一折叠读地址执行自减操作的过程包括:将第一折叠读地址的起始地址配置为第一折叠读地址,每当第一折叠读地址自减至所述滤波起点地址时,则在下一个系统时钟周期内将滤波目标地址更新为第一折叠读地址,使得更新后的第一折叠读地址更加稳定,以便于被所述读写控制模块正常读取,也让所述第一折叠读地址在所述FIR滤波器的抽头数限定的地址范围内实现地址回环遍历,可以及时遍历到最新写入的待滤波数据,又可以减少缓存地址的占用空间,值得注意的是,因为在先缓存的数据可以被及时的读取到所述滤波计算模块内,所以最新写入的数据可以覆盖到所述数据缓存空间内的在先缓存的数据所在的地址单元中。在上述自减至所述滤波起点地址并完成回环、或自加至所述滤波目标地址并完成回环后,第一折叠地址计数器继续对第一折叠读地址执行自减操作。
需要说明的是,所述第一折叠地址计数器,每连续两个系统时钟周期对所述第一折叠读地址执行一次自减操作以获得一个新的所述第一折叠读地址,也与所述基准地址计数器的计数时序相适应,并将这连续两个系统时钟周期记为折叠地址读周期,其中,所述第一折叠地址计数器执行一次自加操作,其计数值增加数值1;所述第二折叠地址计数器,用于在所述折叠地址读周期下,执行一次自加操作以实现在每连续两个系统时钟周期内获得一个新的所述第二折叠读地址,其中,所述第二折叠地址计数器执行一次自加操作,其计数值相对于上一次的计数值减少数值1。因而,所述写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值时,在所述读写控制模块的控制下,在一个折叠地址读周期内,读取第一折叠读地址中的待滤波数据至所述过滤计算模块,并读取第二折叠读地址中的待滤波数据至所述过滤计算模块,也可以是读取第一折叠读地址中的待滤波数据至所述过滤计算模块的同时,读取第二折叠读地址中的待滤波数据至所述过滤计算模块;如此重复读取,直至在读取完当前一个滤波周期内限定的第一折叠读地址的待滤波数据和第二折叠读地址的待滤波数据,等效于:在所述FIR滤波器的转置使能计数阈值是所述FIR滤波器的抽头数的状态下,一个滤波周期内读取的待滤波数据的数量(包括第一折叠读地址中的待滤波数据的数量和第二折叠读地址中的待滤波数据的数量)等于所述FIR滤波器的抽头数。
另一方面,所述读写控制模块包括第二折叠地址计数器;所述写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值时,所述第二折叠地址计数器,还用于在每一个滤波周期内,对所述第二折叠读地址执行自加操作,产生新的第二折叠读地址,以触发所述读写控制模块从所述数据缓存空间内读取出每次自加操作后的第二折叠读地址中的待滤波数据,直至自加操作的次数为第二预设折叠采样数目,但仍允许向所述数据缓存空间写入新的待滤波数据,但该新的待滤波数据不计入当前一次滤波计算所需的待滤波数据中,而是记为下一次滤波计算所需的待滤波数据。其中,第二折叠地址计数器自加操作一次产生的计数值的变化值是数值1,即第二折叠地址计数器每执行一次自加操作,则对应产生的计数值相对于上一次的计数值增加数值1。
在所述读写控制模块确定将基准地址配置为所述第二折叠读地址之前,等效于将基准地址与数值1的和值配置为所述第二折叠读地址的起始地址(对应的滤波周期下或参与对应一次的滤波计算而需要读取的第一个第二折叠读地址)之前,所述读写控制模块,用于当判断到所述基准地址计数器在当前一次滤波计算或当前一个滤波划周期内产生的基准地址等于所述滤波目标地址时,第二折叠地址计数器将滤波起点地址更新为基准地址,再将基准地址与数值1的和值配置为第二折叠读地址的起始地址,以避免与第一折叠读地址的起始地址重合,避免读取到相同的待滤波数据,也便于第二折叠读地址在自加操作的过程中加上合理的地址偏移值,获取自加操作得到的有效地址中的待滤波数据,避免获得无效的数据且丢失与当前一个滤波周期内或当前一次滤波计算中的相关联的数据。
然后,第二折叠地址计数器用于从第二折叠读地址的起始地址开始,对第二折叠读地址执行自加操作,其中,第二折叠地址计数器自加一次产生的计数值的变化值是数值1,使得对第二折叠读地址在一次自加操作中相对于上一次自加操作增加数值1,以实现朝着与所述第一折叠读地址的不同的地址偏移方向,全面地进行数据读取操作。然后第二折叠地址计数器在对第二折叠读地址执行自加操作的过程包括:将第二折叠读地址的起始地址配置为第二折叠读地址,每当第二折叠读地址自加至所述滤波目标地址,则在下一个系统时钟周期内将所述滤波起点地址更新为第二折叠读地址,使得所述第二折叠读地址在所述FIR滤波器的抽头数限定的地址范围内实现地址回环遍历,既可以遍历到最新写入的待滤波数据,又可以减少缓存地址的分配量,进而插入到所述第一折叠读地址的未覆盖区域,以实现读地址的回环遍历,在同一个滤波周期内无重合地完整地遍历到所述FIR滤波器的抽头数所限定的地址区间。
需要说明的是,在所述FIR滤波器的抽头数对应的读取时序下,或对应于所述基准地址计数器的计数时序下,第二折叠地址计数器,用于每连续两个系统时钟周期对所述第二折叠读地址执行一次自加操作以获得一个新的所述第二折叠读地址,并将这连续两个系统时钟周期记为第二折叠读地址的计数周期,等效于折叠地址读周期;所述写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值时,在所述读写控制模块的控制下,在折叠地址读周期内(等效于连续的两个系统时钟周期内),先读取第一折叠读地址中的待滤波数据至所述过滤计算模块,再读取第二折叠读地址中的待滤波数据至所述过滤计算模块,或者同步读取第一折叠读地址中的待滤波数据和读取第二折叠读地址中的待滤波数据;如此重复读取,直至在一个滤波周期内读取的待滤波数据的数量等于参与当前一次滤波计算所需写入的待滤波数据的数量等效于当前一个滤波周期内限定的第一折叠读地址的待滤波数据与第二折叠读地址的待滤波数据的数量和。在该实施例中,在每个折叠地址读周期内,读取的第一折叠读地址对应的第一折叠读地址相对于所述滤波起点地址的地址偏移量,等于所述滤波目标地址相对于读取的第二折叠读地址对应的第二折叠读地址的地址偏移量,以实现一个滤波周期内输入所述滤波计算模块内的第二折叠读地址上的待滤波数据与地址位置对称的第一折叠读地址上的待滤波数据进行折叠计算。
如图2所示,所述读写控制模块还包括地址加法器和读地址选择器;地址加法器的两个输入端分别连接所述第二折叠地址计数器设置的计数输出端和所述第一折叠地址计数器的设置的计数输出端,地址加法器的输出端连接读地址选择器的一个输入端;地址加法器,用于在所述折叠地址读周期内,将所述第二折叠地址计数器产生的第二折叠读地址fir_raddr2与所述第一折叠地址计数器产生的第一折叠读地址fir_raddr1相加,产生该折叠地址读周期内的一个后置读地址fir_raddr_after,等效于将第一折叠读地址加上一个等于所述第二折叠读地址的偏移地址,其和值等于所述后置读地址,由地址加法器输出给所述读地址选择器;需要说明的是,作为基地址的第一折叠读地址fir_raddr1和作为偏移地址的第二折叠读地址fir_raddr2进入地址加法器后,合成一个物理地址,通过地址段的左移或右移,输出的逻辑上的整和,构成与输入的地址的位宽不同的物理地址。
本实施例公开的读写控制模块在所述写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值时,生成高电平的折叠选择信号,对应为图2的选择信号Thr_sel=1,则所述读地址选择器选通所述地址加法器产生的后置读地址输出给所述数据缓存空间,具体是通过图1和2的端口I4传输出去,以起到所述读写控制模块在所述折叠地址读周期内读取相应地址中的两个待滤波数据的作用,即第一折叠读地址中的待滤波数据和第二折叠读地址中的待滤波数据。
需要补充的是,第二折叠读地址的起始地址与第一折叠读地址的起始地址之间的地址偏移量等于所述FIR滤波器的抽头数与数值1的差值,使得后续在对第二折叠读地址遍历的方向与第一折叠读地址的遍历方向不同的前提下,共同在同一段地址区间内遍历到每个地址,比如通过更新第一折叠读地址的方式来从首地址遍历至尾地址,通过更新第二折叠读地址的方式来从尾地址遍历至首地址,在遍历步长相同的情况下完整地完成同一段地址区间的遍历。
在上述实施例中,在每个折叠地址读周期内,读取的第一折叠读地址对应的第一折叠读地址相对于所述滤波起点地址的地址偏移量,等于所述滤波目标地址相对于读取的第二折叠读地址对应的第二折叠读地址的地址偏移量,形成一个滤波周期内或一次滤波计算中,以最后一次读取的地址位置为中心的FIR滤波器结构的首尾地址对称形式,即每个折叠地址读周期内第一折叠读地址与第二折叠读地址关于一个滤波周期内最后一次读取的地址位置中心对称。
优选地,在一个滤波周期内或一次滤波计算中,所述第二预设折叠采样数目大于所述第一预设折叠采样数目时,第一折叠读地址提前所述第二折叠读地址停止变化,若所述FIR滤波器的转置使能计数阈值等于所述FIR滤波器的抽头数,则所述FIR滤波器的抽头数与数值1的差值的一半与数值1的差值等于第一预设折叠采样数目,所述FIR滤波器的抽头数与数值1的差值的一半等于第二预设折叠采样数目,所述第一折叠读地址先自减得到当前一个滤波周期内的中间地址位置,该中间地址位置是第一折叠地址计数器对所述第一折叠读地址最后一次减一而得到的地址位置。或者,在一个滤波周期内或一次滤波计算中,第二预设折叠采样数目小于第一预设折叠采样数目时,所述FIR滤波器的抽头数与数值1的差值的一半与数值1的差值等于第二预设折叠采样数目,所述FIR滤波器的抽头数与数值1的差值的一半等于第一预设折叠采样数目,使得所述第二折叠读地址先自加得到当前一个滤波周期内的中间地址位置,该中间地址位置是在同一个滤波周期内,第二折叠地址计数器对所述第二折叠读地址最后一次加一而得到的地址位置。
作为一种抽头数等于5的FIR滤波器的实施例,所述基准地址对应到图3的初始地址,本实施例将所述基准地址计数器在每个滤波周期内的计数值配置为每个滤波周期内的基准地址,作为更新过的基准地址;第一个滤波周期内的基准地址是0,是所述基准地址计数器的初始计数值。在图3中,每开始进行一次滤波计算后,记为进入一个滤波周期,所述基准地址计数器则计数一次,除了第一个滤波周期只写入一个待滤波数据之外,后续的滤波周期中,每当向所述数据缓存空间新写入两个待滤波数据,则进行一次读取和滤波计算。完成第一次滤波计算并获得滤波结果y0后,即经过一个滤波周期后,到第二个滤波周期中,第一行方框中的数据整体向右推移两个系数位,变成第三行方框中的数据,相对于第一行方框中的数据新增加两个数据占据最左侧的两个格,此时,所述滤波计算模块开始新的一次滤波计算,且所述基准地址计数器进行加二计数,所述基准地址计数器对第一个滤波周期内的基准地址增加数值2,则第二个滤波周期的基准地址为数值2。完成第二次滤波计算并获得滤波结果y2后,在第三个滤波周期中,第三行方框中的数据整体向右推移两个系数位,变成第五行方框中的数据,相对于第三行方框中的数据新增加两个数据占据最左侧的两个格,此时所述滤波计算模块开始新的一次滤波计算(第三次滤波计算),且所述基准地址计数器进行加二计数,第三个滤波周期的基准地址相对于第二个滤波周期的基准地址向右偏移两个地址单元,得到第三个滤波周期的基准地址为数值4;从而产生:相邻两个滤波周期下获得的基准地址之间的地址偏移量等于所述FIR滤波器的抽取率(两倍抽取率)或插值率,此时所述基准地址计数器正是用于对所述数据缓存空间的读地址的移位操作进行计数,进而也便于使用移位寄存器缓存新写入的待滤波数据。完成第三次滤波计算并获得滤波结果y4后,在第四个滤波周期中,第五行方框中的数据整体向右推移两个系数位,变成第七行方框中的数据,相对于第五行方框中的数据新增加两个数据占据最左侧的两个格,此时,所述写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值的情况下,即所述写入数据缓存空间的待滤波数据的数量大于5(所述FIR滤波器的抽头数等于5,所述FIR滤波器的抽头数等于所述FIR滤波器的转置使能计数阈值),此时所述滤波计算模块开始新的一次滤波计算(第四次滤波计算),此时,累计写入5个待滤波数据。由于第三个滤波周期的基准地址相对于第一个滤波周期内的基准地址的地址偏移值是等于所述FIR滤波器的抽头数与数值1的差值,即在第三个滤波周期内基准地址计数器的计数值为所述FIR滤波器的抽头数与数值1的差值,基准地址计数器已经计数过5个地址单元(包括初始计数值),所以将滤波起点地址与数值1的和值配置为第四个滤波周期的基准地址,等于数值1,对应到图3中的第四个滤波周期的初始地址;其中,滤波起点地址是数值0。需要说明的是,滤波起点地址是预先在所述数据缓存空间内配置的一个地址,作为每个滤波周期内,参与读取操作的地址中,顺序最小的一个地址,此时,滤波起点地址是配置为数值0。
值得注意的是,为了获得第四个滤波周期的基准地址,若基准地址计数器继续对第四个滤波周期的基准地址进行自加操作(一次自加操作中计数值产生的变化值是数值2),则获得的基准地址超出所述FIR滤波器的抽头数,在根据该基准地址容易读取到无效数据,不适合设置为图3中的第四个滤波周期的初始地址,所以将图3中的第四个滤波周期的初始地址设置为数值1。
完成第四次滤波计算并获得滤波结果y6后,在第五个滤波周期中,第七行方框中的数据整体向右推移两个系数位,变成第九行方框中的数据,相对于第七行方框中的数据新增加两个数据占据最左侧的两个格,此时,所述写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值的情况下,即所述写入数据缓存空间的待滤波数据的数量大于5(所述FIR滤波器的抽头数等于5,所述FIR滤波器的抽头数等于所述FIR滤波器的转置使能计数阈值),此时所述滤波计算模块开始新的一次滤波计算(第五次滤波计算)以获得滤波结果y8,且所述基准地址计数器加二计数一次,获得的第五个滤波周期的基准地址是数值3。需要说明的是,前述初始地址是用于所述滤波计算模块进行滤波计算或折叠计算所需的第一个操作地址,也是每个滤波周期内,第一个参与计算的数据所在地址。
对应到图3抽取数据的窗口内,第4个滤波周期,抽头数为5时,按照图2所示的读地址选择器输出端的后置读地址fir_raddr_after,等效于先后传输过来第一折叠读地址和第二折叠读地址,则所述读写控制模块先读取第7个输入数据X7(第一折叠读地址处的数据)与第3个输入数据X3(第二折叠读地址处的数据),组成第一对相加的参数送至所述滤波计算模块;然后读取第6个输入数据X6(第一折叠读地址处的数据)与第4个输入数据X4(第二折叠读地址处的数据),组成第二对相加的参数送至所述滤波计算模块;最后读取第5个输入数据X5(第一折叠读地址处的数据或第二折叠读地址处的数据),送至所述滤波计算模块,读取完当前一个滤波周期内限定的第一折叠读地址的待滤波数据和第二折叠读地址的待滤波数据,也触发所述滤波计算模块完成数据的一次折叠计算,使得所述FIR滤波器完成所述写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值时的一次滤波计算。
作为一种抽头数为5的FIR滤波器的数据抽取实施例,所述FIR滤波器的转置使能计数阈值等于所述FIR滤波器的抽头数;在图3中,在第四个滤波周期内,从初始地址1开始,按照所述基准地址计数器的计数时序限定下的周期,包括抽头数支持的最大读取时间长度、以及读取单个数据的周期,对所述第一折叠读地址进行自减操作,再触发所述读写控制模块从每次自减操作得到的第一折叠读地址中读取待滤波数据给所述滤波计算模块,则所述读写控制模块每一次自减操作得到一个第一折叠读地址,则从所述数据缓存空间内读取出相应的第一折叠读地址中的待滤波数据,依次为第七行方框内的X7、X6以及X5,此时,自减操作的次数为2次,等于所述FIR滤波器的抽头数(数值5)与数值1的差值的一半,则获得3个第一折叠读地址中的待滤波数据,属于连续的3个地址中的待滤波数据。同时,所述读写控制模块每接收到来自所述读写控制模块内部的一次自加操作得到的第二折叠读地址,则从所述数据缓存空间内读取出相应的第二折叠读地址中的待滤波数据,依次为第七行方框内的X3和X4,此时,自加操作的次数为1次,等于所述FIR滤波器的抽头数(数值5)与数值1的差值的一半与数值1的差值,则获得2个第二折叠读地址中的待滤波数据,属于连续的2个地址中的待滤波数据,停止读取数据。因此,在第四个滤波周期内,先后读取到的待滤波数据依次为X7、X3、X6、X4以及X5,其中,X7是最先读取出的待滤波数据,X5是最后读取出的待滤波数据;此时读取的第一折叠读地址中的待滤波数据和读取的第二折叠读地址中的待滤波数据已经满足所述FIR滤波器的抽头数匹配的滤波计算。
进一步地,在第五个滤波周期内,从初始地址3开始,按照所述FIR滤波器的抽头数限定下的系统时钟周期,对所述第一折叠读地址进行自减操作,所述读写控制模块每一次自减操作得到一个第一折叠读地址,则从所述数据缓存空间内读取出相应的第一折叠读地址中的待滤波数据,依次为第九行方框内的X9、X8以及X7,此时,相对于第七行方框内的数据向右移动两个方格,但是第五个滤波周期内发生的自减操作的次数为2次,等于所述FIR滤波器的抽头数(数值5)与数值1的差值的一半,则获得3个第一折叠读地址中的待滤波数据,也属于连续的3个地址中的待滤波数据。因此,在第五个滤波周期内,先后读取到的待滤波数据依次为X9、X5、X8、X6以及X7,其中,X9是最先读取出的待滤波数据,X7是最后读取出的待滤波数据。
值得注意的是,图3中第四个滤波周期和第五个滤波周期中,对应到第七行的方框中的各个方格和第九行的方框的各个方格的排列顺序只是表示其内部的待滤波数据被读取的顺序,不代表其在所述数据缓存空间内的实际存储顺序;同理,图3中偶数行的方框内的各个方格的排列顺序不代表其内部滤波器系数在所述滤波器系数存储器内的存储顺序,只是代表滤波器系数的读取顺序并与其上一行的待滤波数据的读取顺序相对应。
作为一种抽头数为5的FIR滤波器的滤波计算实施例,在写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值时,所述滤波器系数存储器用于在每个滤波周期内,可以是在所述读写控制模块的控制下或内置的计数器的驱动下,从所述FIR滤波器相匹配的起始存储地址开始,每两个系统时钟周期对起始存储地址进行自加操作一次,以使得起始存储地址对应的地址每隔两个系统时钟周期执行一次自加操作,与所述第一折叠地址计数器执行的自减操作的时序同步,或者与所述第二折叠地址计数器执行的自加操作的时序同步;所述滤波器系数存储器再按照自加得到的存储地址将对应存储的滤波器系数依次读出至所述滤波计算模块,直至自加得到的存储地址相对于所述起始存储地址的地址偏移量等于所述FIR滤波器的抽头数与数值1的差值的一半,然后将最新得到的存储地址记为中间计算存储地址,此时已经读取完滤波周期内所需处理的待滤波数据和滤波器系数;具体地,所述滤波器系数存储器内部设置的地址计数器或所述读写控制模块内部设计的地址计数器,对起始存储地址对应的地址是每两个系统时钟周期加一计数一次并生成对应的地址,该地址计数器能够与所述基准地址计数器、所述第二折叠地址计数器以及所述第一折叠地址计数器的计数时序同步或保持固定的延时,并能跟被配置为与一个折叠地址读周期内先后读取出的第一折叠读地址和第二折叠读地址同时变化的存储地址,该存储地址中的滤波器系数与所述折叠地址读周期内的第一折叠读地址和第二折叠读地址中的待滤波数据在同一个所述折叠地址读周期内先后读取到所述滤波计算模块内,构成一组先加后乘的计算项,即第一折叠读地址和第二折叠读地址中的待滤波数据的和值与滤波器系数相乘。其中,在对起始存储地址进行自加操作的过程中,每执行自加操作一次,则存储地址对应的地址增加数值1。在本实施例中不需对起始存储地址进行自减操作,相对于所述写入数据缓存空间的待滤波数据的数量小于或等于所述FIR滤波器的转置使能计数阈值的情况,不需要对存储地址进行回环遍历,节省读取操作量。需要补充的是,所述起始存储地址是由预先确定的,可以由寄存器配置的。
在上述实施例的基础上,所述滤波计算模块,用于在写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值时,在每个折叠地址读周期内,先控制所述数据缓存空间输出的第一折叠读地址中的待滤波数据与所述数据缓存空间输出的第二折叠读地址中的待滤波数据相加;再将相加的结果与所述滤波器系数存储器输出的相同读取顺序(同步变化的计数时序)的滤波器系数进行乘法运算;然后将相乘结果输入到加法器进行累加处理,在每个滤波周期内如此重复,直至所述滤波器系数存储器输出所述中间计算存储地址中的滤波器系数时,将所述中间计算存储地址中的滤波器系数与所述数据缓存空间在同一读取顺序下输出的第一折叠读地址中的待滤波数据进行乘法运算,再将相乘结果输入到加法器进行累加处理,得到对应的滤波周期内的处理后的滤波结果,完成一次滤波计算,即完成一个滤波周期内的滤波计算。其中,每个滤波周期内,在所述FIR滤波器的转置使能计数阈值等于所述FIR滤波器的抽头数时,所述滤波计算模块内部运行的乘法运算的次数等于所述FIR滤波器的抽头数与数值1的和值的一半,且由一个乘法器分时复用实现,即一个乘法器在每个折叠地址读周期执行一次乘法运算。其中,所述滤波计算模块包括加法器和乘法器,在本实施例中,第一折叠读地址中的待滤波数据与第二折叠读地址中的待滤波数据的和值输入该乘法器,同一周期内读取出的滤波器系数也输入该乘法器,参与一次乘法运算,再将该周期内相乘的结果传输给加法器以参与累加计算。因此,本实施例在滤波计算模块中使用相同的乘法器资源实现不同滤波周期下的新输入的待滤波数据与同一组滤波器系数的相乘运算,提高不同类型的滤波器读取数据的条件下的乘法器资源的复用率。
对应到图3中,在第四个滤波周期内,X7(第一次读取的第一折叠读地址中的待滤波数据,即第一次读取的待滤波数据)与X3(第一次读取的第二折叠读地址中的待滤波数据,即第二次读取的待滤波数据)是一组折叠数据,相加得到第一个折叠值,同时,从所述滤波器系数存储器读取到滤波器系数h1;然后,X6(第二次读取的第一折叠读地址中的待滤波数据,即第三次读取的待滤波数据)与X4(第二次读取的第二折叠读地址中的待滤波数据,即第四次读取的待滤波数据)是另一组折叠数据,相加得到第第二个折叠值,同时,从所述滤波器系数存储器读取到滤波器系数h2;然后,从所述滤波器系数存储器中读取出所述中间计算存储地址中的滤波器系数h3,一般将所述中间计算存储地址中的滤波器系数设定为固定的参数,对于抽头数为奇数的任意FIR滤波器都适用。针对这些折叠数据,所述滤波计算模块从所述滤波器系数存储器输出相对应位置的滤波器系数进行相乘,进行折叠计算,具体地,折叠计算获得的滤波结果y6等于:X7(第一次读取的第一折叠读地址中的待滤波数据,即第一次读取的待滤波数据)与X3(第一次读取的第二折叠读地址中的待滤波数据,即第二次读取的待滤波数据)相加得到的和值与第一次读取的滤波器系数h1的乘积、X6(第二次读取的第一折叠读地址中的待滤波数据,即第三次读取的待滤波数据)与X4(第二次读取的第二折叠读地址中的待滤波数据,即第四次读取的待滤波数据)相加得到的和值与第二次读取的滤波器系数h2的乘积、以及X5(第三次读取的第一折叠读地址中的待滤波数据,即第五次读取的待滤波数据)与第三次读取的滤波器系数h3的乘积的和值。
作为一种抽头数等于偶数的FIR滤波器的实施方式一,如图2所示,所述读写控制模块包括前置地址计数器和读地址选择器;所述写入数据缓存空间的待滤波数据的数量小于或等于所述FIR滤波器的转置使能计数阈值时,读地址选择器、前置地址计数器以及所述基准地址计数器的工作原理与前述的抽头数等于奇数的FIR滤波器的实施方式一的相同,在此不再赘述。但是对应图4中,存在因抽头数的差异而产生的不同的数据流动特征包括:
在图4的实施例中,将所述FIR滤波器的转置使能计数阈值设置为6,等于所述FIR滤波器的抽头数。针对一次滤波计算,所述写入数据缓存空间的待滤波数据的数量小于或等于所述FIR滤波器的转置使能计数阈值的情况下,可以是所述写入数据缓存空间的待滤波数据的数量小于或等于6时,所述基准地址是图4的初始地址,第一个滤波周期(序号为1的滤波周期)的基准地址是2,第二个滤波周期(序号为2的滤波周期)的基准地址是4,第三个滤波周期(序号为3的滤波周期)的基准地址是数值0,此时,已经写入6个待滤波数据,从新写入的到最先写入的依次为X6、X5、X4、X3、X2以及X1。
在图4的实施例中,所述写入数据缓存空间的待滤波数据的数量小于或等于所述FIR滤波器的转置使能计数阈值的情况下,即所述写入数据缓存空间的待滤波数据的数量小于或等于6时,所述基准地址是图4的初始地址,第一个滤波周期(序号为1的滤波周期)的基准地址是2,第二个滤波周期(序号为2的滤波周期)的基准地址是4,已经达到所述FIR滤波器的抽头数与数值2的差值,若所述基准地址计数器继续对当前获得的基准地址(计数值)进行自加操作,产生的新的基准地址成为数值6,在基准地址计数器内设的初始计数值配置为数值0的前提下,其遍历过的地址的数量已经是7个,超出所述FIR滤波器的抽头数,所以,在第三个滤波周期(序号为3的滤波周期)的基准地址是数值0,然后到第三个滤波周期(序号为3的滤波周期)后,已经写入6个待滤波数据,从新写入的到最先写入的依次为X6、X5、X4、X3、X2以及X1。
作为一种抽头数等于偶数的FIR滤波器的实施方式二,为了进行一次滤波计算,仍然是在写入数据缓存空间的待滤波数据的数量小于或等于所述FIR滤波器的转置使能计数阈值的实施场景下,所述滤波器系数存储器用于在每个滤波周期内,可以是在所述读写控制模块的控制下或所述滤波器系数存储器内置的计数器的驱动下,从所述FIR滤波器相匹配的起始存储地址开始,按照所述系统时钟周期对起始存储地址进行自加操作,再按照自加得到的存储地址将对应存储的滤波器系数依次读出至所述滤波计算模块,具体是在每个系统时钟周期下对已经获得存储地址进行加一,则在同一系统时钟周期内,存储地址的地址偏移步长与前述的前置读地址的地址偏移步长相等,且保持在同一所述系统时钟源下进行变化,直至自加得到的存储地址相对于所述起始存储地址的地址偏移量等于所述FIR滤波器的抽头数与数值2的差值的一半;需要说明的是,在一个滤波周期内,参与同一次滤波计算所需的滤波器系数的读取顺序与待滤波数据的读取顺序相同。然后所述滤波器系数存储器将最新得到的存储地址记为中间计算存储地址,值得注意的是,本实施例需要从同一个中间计算存储地址连续读取两个相同的滤波器系数给所述滤波计算模块。再对中间计算存储地址进行自减操作,再按照自减得到的存储地址将对应存储的滤波器系数依次读出至所述滤波计算模块,直至自减得到的存储地址相对于中间计算存储地址的地址偏移量等于所述FIR滤波器的抽头数与数值2的差值的一半,依次重复,直至在当前一个滤波周期内(对应于开始进行当前一次滤波计算)从所述滤波器系数存储器内输出的滤波器系数的数量等于当前一个滤波周期内参与滤波计算的待滤波数据的数量,可能会因实际所进行的滤波计算的次数或所处的滤波周期而异。需要说明的是,对起始存储地址进行自加操作的过程中,每自加操作一次,则触发存储地址对应的地址自动增加数值1;对所述中间计算存储地址进行自减操作的过程中,每自减操作一次,则触发存储地址对应的地址自动减少数值1;其中,所述中间计算存储地址是设置在所述滤波器系数存储器内,属于滤波器系数的存储地址中,顺序最大的地址,即存储相应的滤波器系数的地址区间的尾地址。
在图4中,在第三个滤波周期内,从初始地址为数值0的地址位置开始,自左向右,第五行方框内的数据依次是所述读写控制模块从所述数据缓存空间内读取出的自减操作后的前置读地址中的待滤波数据,自左向右的方格中,越偏向左侧的方格内的数据是越早被读取到的,对应的地址位置是越早自减获得的前置读地址;越偏向右侧的方格内的数据是越晚被读取到的,对应的地址位置是越晚自减获得的前置读地址,优选地,每个系统时钟周期读取一个方格内的数据。同理地,在第三个滤波周期内,第六行方框内的数据依次是从所述滤波器系数存储器内读取出的自加操作后的存储地址中的滤波器系数,从h1的方格对应的地址位置开始,即所述FIR滤波器对应的起始存储地址开始,自左向右的方格中,越偏向左侧的方格内的数据是越早被读取到的,对应的地址位置是越早自加获得的存储地址;越偏向右侧的方格内的数据是越晚被读取到的,对应的地址位置是越晚自加获得的存储地址,直至自加至左侧的h3的方格(自左向右读取的第一个滤波器系数),此时左侧的h3的方格对应的地址位置相对于h1的方格对应的地址位置的地址偏移量等于数值2,等于所述FIR滤波器的抽头数(数值6)与数值2的差值的一半(等于数值2),所述滤波器系数存储器将h3的方格对应的地址位置配置为中间计算存储地址,本实施例会对该中间计算存储地址连续读取两次,可以是按照所述系统时钟周期进行读取,以获得两个相同滤波器系数h3;然后从h3的方格开始,对这个中间计算存储地址进行自减操作,直至自减至h1的方格,此时自减得到的存储地址相对于中间计算存储地址的地址偏移量等于所述FIR滤波器的抽头数(数值6)与数值2的差值的一半(等于数值2),此时,第六行方框中,自左向右被读取的滤波器系数h1、h2、h3、h3、h2和h1正好依次对应第五行方框中参与滤波计算的待滤波数据X6、X5、X4、X3、X2和X1,其中,X6是最先读取出的前置读地址中的待滤波数据,X1是最后读取出的前置读地址中的待滤波数据;则第三个滤波周期内从所述滤波器系数存储器内读取出的滤波器系数的数量满足第三个滤波周期内参与滤波计算的待滤波数据的数量,也使得在获得中间计算存储地址之前的自加操作得到的存储地址中的滤波器系数与在获得中间计算存储地址之后的自减操作得到的存储地址中的滤波器系数组成所述FIR滤波器的对称的滤波器系数,实现在当前一次滤波计算中(第三个滤波周期内)获得对称的滤波结果。
在上述实施例的基础上,所述滤波计算模块,用于在写入所述数据缓存空间的待滤波数据的数量小于或等于所述FIR滤波器的转置使能计数阈值时,控制数据缓存空间输出的待滤波数据以及滤波器系数存储器输出的相同读取顺序的滤波器系数进行乘法运算,并将结果输入到加法器进行累加处理,得到每个滤波周期内的处理后的一个滤波结果;其中,每个滤波周期内的乘法运算由一个乘法器分时复用实现,最大限度的减少乘法器资源;其中,在所述写入所述数据缓存空间的待滤波数据的数量小于或等于所述FIR滤波器的转置使能计数阈值的前提下,一个滤波周期内的乘法运算的次数等于当前一次滤波计算所需的待滤波数据的数量或滤波器系数的数量,但不超过所述FIR滤波器的抽头数。所述滤波计算模块包括加法器和乘法器,组成先执行乘法再执行加法的计算方式。对应到图4中,第三个滤波周期中获得的滤波结果y4等于X6与h1的乘积、X5与h2的乘积、X4与h3的乘积、X3与h3的乘积、X2与h2的乘积、以及X1与h1的乘积的和值,则第三个滤波周期内的乘法运算的次数等于6。其中,所述FIR滤波器的转置使能计数阈值等于所述FIR滤波器的抽头数。
作为一种抽头数等于偶数的FIR滤波器的实施方式三,该实施方式是建立在所述写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值的基础上实施的。所述读写控制模块包括第一折叠地址计数器;在所述写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值时,所述第一折叠地址计数器用于在每一个滤波周期内,对所述第一折叠读地址执行自减操作,产生新的第一折叠读地址,以触发所述读写控制模块从所述数据缓存空间内读取出每次自减操作后的第一折叠读地址中的待滤波数据,直至自减操作的次数为第一预设折叠采样数目,但仍允许向所述数据缓存空间写入新的待滤波数据,但该新的待滤波数据不计入当前一次滤波计算所需的待滤波数据中,而是记为下一次滤波计算所需的待滤波数据。其中,第一折叠地址计数器自减操作一次产生的计数值的变化值是数值1,即第一折叠地址计数器每执行一次自减操作,则对应产生的计数值减少数值1。
在所述读写控制模块确定将所述基准地址计数器产生的基准地址配置为所述第一折叠读地址之前,等效于将基准地址配置为所述第一折叠读地址的起始地址(对应的滤波周期下或参与对应一次的滤波计算而需要读取的第一个第一折叠读地址)之前,所述读写控制模块,用于判断到基准地址等于滤波起点地址时,将滤波目标地址更新为基准地址,再将更新后的基准地址配置为第一折叠读地址的起始地址,以便于第一折叠读地址在自减操作的过程中减去合理的地址偏移值,获取自减操作得到的有效地址中的待滤波数据,避免获得无效的数据且丢失与当前一个滤波周期内或当前一次滤波计算中相关联的数据。
需要说明的是,所述第一折叠地址计数器,每连续两个系统时钟周期对所述第一折叠读地址执行一次自减操作以获得一个新的所述第一折叠读地址,也与所述基准地址计数器的计数时序相适应,并将这连续两个系统时钟周期记为折叠地址读周期,其中,所述第一折叠地址计数器执行一次自加操作,其计数值增加数值1;所述第二折叠地址计数器,用于在所述折叠地址读周期下,执行一次自加操作以实现在每连续两个系统时钟周期内获得一个新的所述第二折叠读地址,其中,所述第二折叠地址计数器执行一次自减操作,其计数值相对于上一次的计数值减少数值1。因而,所述写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值时,在所述读写控制模块的控制下,在一个折叠地址读周期内,先读取第一折叠读地址中的待滤波数据至所述过滤计算模块,再读取第二折叠读地址中的待滤波数据至所述过滤计算模块,也可以是读取第一折叠读地址中的待滤波数据至所述过滤计算模块的同时,读取第二折叠读地址中的待滤波数据至所述过滤计算模块;如此重复读取,直至在读取完当前一个滤波周期内限定的第一折叠读地址的待滤波数据和第二折叠读地址的待滤波数据,等效于:在所述FIR滤波器的转置使能计数阈值是所述FIR滤波器的抽头数的状态下,一个滤波周期内读取的待滤波数据的数量(包括第一折叠读地址中的待滤波数据的数量和第二折叠读地址中的待滤波数据的数量)等于所述FIR滤波器的抽头数。
另一方面,所述读写控制模块包括第二折叠地址计数器;所述写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值时,所述第二折叠地址计数器,还用于在每一个滤波周期内,对所述第二折叠读地址执行自加操作,产生新的第二折叠读地址,以触发所述读写控制模块从所述数据缓存空间内读取出每次自加操作后的第二折叠读地址中的待滤波数据,直至自加操作的次数为第二预设折叠采样数目,但仍允许向所述数据缓存空间写入新的待滤波数据,但该新的待滤波数据不计入当前一次滤波计算所需的待滤波数据中,而是记为下一次滤波计算所需的待滤波数据。其中,第二折叠地址计数器自加操作一次产生的计数值的变化值是数值1,即第二折叠地址计数器每执行一次自加操作,则对应产生的计数值相对于上一次的计数值增加数值1。
在所述读写控制模块确定将基准地址配置为所述第二折叠读地址之前,等效于将基准地址与数值1的和值配置为所述第二折叠读地址的起始地址(对应的滤波周期下或参与对应一次的滤波计算而需要读取的第一个第二折叠读地址)之前,所述读写控制模块,用于当判断到所述基准地址计数器在当前一次滤波计算或当前一个滤波划周期内产生的基准地址等于所述滤波目标地址时,第二折叠地址计数器将滤波起点地址更新为基准地址,再将基准地址与数值1的和值配置为第二折叠读地址的起始地址,以避免与第一折叠读地址的起始地址重合,避免读取到相同的待滤波数据,也便于第二折叠读地址在自加操作的过程中加上合理的地址偏移值,获取自加操作得到的有效地址中的待滤波数据,避免获得无效的数据且丢失与当前一个滤波周期内或当前一次滤波计算中的相关联的数据。然后,第二折叠地址计数器用于从第二折叠读地址的起始地址开始,对第二折叠读地址执行自加操作,其中,第二折叠地址计数器自加一次产生的计数值的变化值是数值1,使得对第二折叠读地址在一次自加操作中相对于上一次自加操作增加数值1,以实现朝着与所述第一折叠读地址的不同的地址偏移方向,全面地进行数据读取操作。然后第二折叠地址计数器在对第二折叠读地址执行自加操作的过程包括:将第二折叠读地址的起始地址配置为第二折叠读地址,每当第二折叠读地址自加至所述滤波目标地址,则在下一个系统时钟周期内将所述滤波起点地址更新为第二折叠读地址,使得所述第二折叠读地址在所述FIR滤波器的抽头数限定的地址范围内实现地址回环遍历,既可以遍历到最新写入的待滤波数据,又可以减少缓存地址的分配量,进而插入到所述第一折叠读地址的未覆盖区域,以实现读地址的回环遍历,在同一个滤波周期内无重合地完整地遍历到所述FIR滤波器的抽头数所限定的地址区间。
需要说明的是,在所述FIR滤波器的抽头数对应的读取时序下,或对应于所述基准地址计数器的计数时序下,第二折叠地址计数器,用于每连续两个系统时钟周期对所述第二折叠读地址执行一次自加操作以获得一个新的所述第二折叠读地址,并将这连续两个系统时钟周期记为第二折叠读地址的计数周期;所述写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值时,在所述读写控制模块的控制下,在折叠地址读周期内(等效于连续的两个系统时钟周期内),先读取第一折叠读地址中的待滤波数据至所述过滤计算模块,再读取第二折叠读地址中的待滤波数据至所述过滤计算模块,或者同步读取第一折叠读地址中的待滤波数据和读取第二折叠读地址中的待滤波数据;如此重复读取,直至在一个滤波周期内读取的待滤波数据的数量等于参与当前一次滤波计算所需写入的待滤波数据的数量等效于当前一个滤波周期内限定的第一折叠读地址的待滤波数据与第二折叠读地址的待滤波数据的数量和。在该实施例中,在每个折叠地址读周期内,读取的第一折叠读地址对应的第一折叠读地址相对于所述滤波起点地址的地址偏移量,等于所述滤波目标地址相对于读取的第二折叠读地址对应的第二折叠读地址的地址偏移量,以实现一个滤波周期内输入所述滤波计算模块内的第二折叠读地址上的待滤波数据与地址位置对称的第一折叠读地址上的待滤波数据进行折叠计算。
在一个滤波周期内或一次滤波计算中,若所述FIR滤波器的转置使能计数阈值等于所述FIR滤波器的抽头数,则在所述写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的抽头数时,所述第二预设折叠采样数目等于所述第一预设折叠采样数目,此时,所述第一预设折叠采样数目或所述第一预设折叠采样数目等于所述FIR滤波器的抽头数的一半,使得所述第二折叠读地址先自加得到当前一个滤波周期内的中间地址位置、或所述第一折叠读地址先自减得到当前一个滤波周期内的中间地址位置、或所述第一折叠读地址和第二折叠读地址同时到达当前一个滤波周期内的中间地址位置,其中,该中间地址位置是在同一个滤波周期内,第二折叠地址计数器对所述第二折叠读地址最后一次加一而得到的地址位置、或第一折叠地址计数器对所述第一折叠读地址最后一次减一而得到的地址位置。该中间地址位置可以是两个相邻的地址位置,分别对应第一折叠地址计数器的计数情况和第二折叠地址计数器的计数情况。
作为一种抽头数等于6的FIR滤波器的实施例,所述基准地址对应到图4的初始地址,本实施例将所述基准地址计数器在每个滤波周期内的计数值配置为每个滤波周期内的基准地址,作为更新过的基准地址;第一个滤波周期内的基准地址是0,是所述基准地址计数器的初始计数值。在图4中,每开始进行一次滤波计算后,记为进入一个滤波周期,所述基准地址计数器则计数一次,每次计数是加二计数一次,计数值产生的变化值是数值2,等效于产生计数值的变化值是数值2。在本实施例中,每当向所述数据缓存空间新写入两个待滤波数据,则进行一次读取和滤波计算。因此,在第一个滤波周期内,写入两个待滤波数据X2和X1,其中,X1先写入,X2后写入,则基准地址计数器计数一次,将基准地址由数值0(初始计数值)更新为数值2,对应到图4的初始地址。完成第一次滤波计算并获得滤波结果y0后,即经过一个滤波周期后,到第二个滤波周期中,第一行方框中的数据整体向右推移两个系数位,变成第三行方框中的数据,相对于第一行方框中的数据新增加两个数据占据最左侧的两个格,此时,所述滤波计算模块开始新的一次滤波计算,且所述基准地址计数器进行加二计数,所述基准地址计数器对第一个滤波周期内的基准地址增加数值2,则第二个滤波周期的基准地址为数值4。
完成第二次滤波计算并获得滤波结果y2后,在第三个滤波周期中,第三行方框中的数据整体向右推移两个系数位,变成第五行方框中的数据,相对于第三行方框中的数据新增加两个数据占据最左侧的两个格,此时所述滤波计算模块开始新的一次滤波计算(第三次滤波计算),此时,累计写入6个待滤波数据。由抽头数等于偶数的FIR滤波器的实施方式一中公开的基准地址的更新原理可知,所述基准地址计数器不继续进行加二计数,由于第三个滤波周期的基准地址相对于第一个滤波周期内的基准地址的地址偏移值是等于所述FIR滤波器的抽头数与数值2的差值,基准地址计数器已经计数过6个地址单元,所以将滤波起点地址配置为第四个滤波周期的基准地址,等于数值0,对应到图3中的第四个滤波周期的初始地址;返回所述滤波起点地址,这样可以及时读取到最新写入的待滤波数据,因为每当往所述数据缓存空间内写入的数据的数量达到所述FIR滤波器的抽头数后,后续写入的数据会覆盖到最先写入的数据并占据其缓存地址,再重复上述滤波计算的流程。其中,滤波起点地址是数值0。需要说明的是,滤波起点地址是预先在所述数据缓存空间内配置的一个地址,作为每个滤波周期内,参与读取操作的地址中,顺序最小的一个地址,此时,滤波起点地址是配置为数值0。因而,在同一个抽取数据的窗口内,第二个滤波周期的基准地址相对于第一个滤波周期的基准地址向左偏移两个地址单元,得到第三个滤波周期的基准地址为数值0。
完成第三次滤波计算并获得滤波结果y4后,在第四个滤波周期中,第五行方框中的数据整体向右推移两个系数位,变成第七行方框中的数据,相对于第五行方框中的数据新增加两个数据占据最左侧的两个格,此时,所述写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值的情况下,即所述写入数据缓存空间的待滤波数据的数量大于6(所述FIR滤波器的抽头数等于6,所述FIR滤波器的抽头数等于所述FIR滤波器的转置使能计数阈值),此时所述滤波计算模块开始新的一次滤波计算(第四次滤波计算),且所述基准地址计数器加二计数一次,获得的第四个滤波周期的基准地址是数值2。
完成第四次滤波计算并获得滤波结果y6后,在第五个滤波周期中,第七行方框中的数据整体向右推移两个系数位,变成第九行方框中的数据,相对于第七行方框中的数据新增加两个数据占据最左侧的两个格,此时,所述写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值的情况下,即所述写入数据缓存空间的待滤波数据的数量大于6,此时所述滤波计算模块开始新的一次滤波计算(第五次滤波计算)以获得滤波结果y8,且所述基准地址计数器加二计数一次,获得的第五个滤波周期的基准地址是数值4。需要说明的是,图4中公开的初始地址是用于所述滤波计算模块进行滤波计算或折叠计算所需的第一个操作地址,也是每个滤波周期内,第一个参与计算的数据所在地址。
对应到图4抽取数据的窗口内,第4个滤波周期,按照图2所示的读地址选择器输出端的后置读地址fir_raddr_after(具体来源参考前述一种抽头数等于奇数的FIR滤波器的实施方式四中的读地址选择器和地址加法器的连接方式及作用原理),等效于先后传输过来第一折叠读地址和第二折叠读地址,则所述读写控制模块先读取第8个输入数据X8(第一折叠读地址处的数据)与第3个输入数据X3(第二折叠读地址处的数据),组成第一对相加的参数送至所述滤波计算模块;然后读取第7个输入数据X7(第一折叠读地址处的数据)与第4个输入数据X4(第二折叠读地址处的数据),组成第二对相加的参数送至所述滤波计算模块;然后读取第6个输入数据X6(第一折叠读地址处的数据)与第5个输入数据X5(第二折叠读地址处的数据),送至所述滤波计算模块,读取完当前一个滤波周期内限定的第一折叠读地址的待滤波数据和第二折叠读地址的待滤波数据,其中,第1个输入数据X1所在的地址和第2个输入数据X2所在的地址已经被覆盖且不在抽取数据的窗口内,第1个输入数据X1所在的地址被第7个输入数据X8覆盖,第2个输入数据X2所在的地址被第8个输入数据X8覆盖。
作为一种抽头数为6的FIR滤波器的数据抽取实施例,所述FIR滤波器的转置使能计数阈值等于所述FIR滤波器的抽头数;在图4中,在第四个滤波周期内,从初始地址1开始,按照所述基准地址计数器的计数时序限定下的周期,包括抽头数支持的最大读取时间长度、以及读取单个数据的周期,对所述第一折叠读地址进行自减操作,再触发所述读写控制模块从每次自减操作得到的第一折叠读地址中读取待滤波数据给所述滤波计算模块,则所述读写控制模块每一次自减操作得到一个新的第一折叠读地址,则从所述数据缓存空间内读取出相应的第一折叠读地址中的待滤波数据,依次为第七行方框内的X8、X7以及X6,此时,自减操作的次数为2次,等于所述FIR滤波器的抽头数(数值6)与数值2的差值的一半,则获得3个第一折叠读地址中的待滤波数据。同时,所述读写控制模块每接收到来自所述读写控制模块内部的一次自加操作得到的第二折叠读地址,则从所述数据缓存空间内读取出相应的第二折叠读地址中的待滤波数据,依次为第七行方框内的X3、X4和X5,此时,自加操作的次数为2次,等于所述FIR滤波器的抽头数(数值6)与数值2的差值的一半,则获得3个第二折叠读地址中的待滤波数据,停止读取数据。因此,在第四个滤波周期内,先后读取到的待滤波数据依次为X8、X3、X7、X4、X6以及X5,其中,X8是最先读取出的待滤波数据,X5是最后读取出的待滤波数据,此时读取的第一折叠读地址中的待滤波数据和读取的第二折叠读地址中的待滤波数据已经满足所述FIR滤波器的抽头数匹配的滤波计算。
进一步地,在第五个滤波周期内,从初始地址4开始,按照所述FIR滤波器的抽头数限定下的系统时钟周期,对所述第一折叠读地址进行自减操作,所述读写控制模块每一次自减操作得到一个第一折叠读地址,则从所述数据缓存空间内读取出的第一折叠读地址中的待滤波数据,依次为第九行方框内的X10、X9以及X8,此时,相对于第七行方框内的数据向右移动两个方格,但是第五个滤波周期内发生的自减操作的次数为2次,等于所述FIR滤波器的抽头数(数值6)与数值2的差值的一半,则获得3个第一折叠读地址中的待滤波数据。因此,在第五个滤波周期内,先后读取到的待滤波数据依次为X10、X5、X9、X6、X8以及X7,其中,X9是最先读取出的待滤波数据,X7是最后读取出的待滤波数据。
值得注意的是,图4中第四个滤波周期和第五个滤波周期中,对应到第七行的方框中的各个方格和第九行的方框的各个方格的排列顺序只是表示其内部的待滤波数据被读取的顺序,不代表其在所述数据缓存空间内的实际存储顺序;同理,图3中偶数行的方框内的各个方格的排列顺序不代表其内部滤波器系数在所述滤波器系数存储器内的存储顺序,只是代表滤波器系数的读取顺序并与其上一行的待滤波数据的读取顺序相对应。
作为一种抽头数为6的FIR滤波器的滤波计算实施例,在写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值时,所述滤波器系数存储器用于在每个滤波周期内,可以是在所述读写控制模块的控制下或内置的计数器的驱动下,从所述FIR滤波器相匹配的起始存储地址开始,每两个系统时钟周期对起始存储地址进行自加操作一次,以使得起始存储地址对应的地址每隔两个系统时钟周期执行一次自加操作,与所述第一折叠地址计数器执行的自减操作的时序同步,或者与所述第二折叠地址计数器执行的自加操作的时序同步;所述滤波器系数存储器再按照自加得到的存储地址将对应存储的滤波器系数依次读出至所述滤波计算模块,直至自加得到的存储地址相对于所述起始存储地址的地址偏移量等于所述FIR滤波器的抽头数与数值2的差值的一半,然后将最新得到的存储地址记为中间计算存储地址,此时已经读取完滤波周期内所需处理的待滤波数据和滤波器系数;具体地,所述滤波器系数存储器内部设置的地址计数器或所述读写控制模块内部设计的地址计数器,对起始存储地址对应的地址是每两个系统时钟周期加一计数一次并生成对应的地址,该地址计数器能够与所述基准地址计数器、所述第二折叠地址计数器以及所述第一折叠地址计数器的计数时序同步或保持固定的延时,并能跟被配置为与一个折叠地址读周期内先后读取出的第一折叠读地址和第二折叠读地址同时变化的存储地址,该存储地址中的滤波器系数与所述折叠地址读周期内的第一折叠读地址和第二折叠读地址中的待滤波数据在同一个所述折叠地址读周期内读取到所述滤波计算模块内,构成一组先加后乘的计算项,即第一折叠读地址和第二折叠读地址中的待滤波数据的和值与滤波器系数相乘。其中,在对起始存储地址进行自加操作的过程中,每执行自加操作一次,则存储地址对应的地址增加数值1。在本实施例中不需对起始存储地址进行自减操作,相对于所述写入数据缓存空间的待滤波数据的数量小于或等于所述FIR滤波器的转置使能计数阈值的情况,不需要对存储地址进行回环遍历,节省读取操作量。需要补充的是,所述起始存储地址是由预先确定的,可以由寄存器配置的。
在上述实施例的基础上,所述滤波计算模块,用于在写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值时,在每个折叠地址读周期内,先控制所述数据缓存空间输出的第一折叠读地址中的待滤波数据与所述数据缓存空间输出的第二折叠读地址中的待滤波数据相加;再将相加的结果与所述滤波器系数存储器输出的相同读取顺序(同步变化的计数时序)的滤波器系数进行乘法运算;然后将相乘结果输入到加法器进行累加处理,在每个滤波周期内如此重复,直至所述滤波器系数存储器输出所述中间计算存储地址中的滤波器系数时,将所述中间计算存储地址中的滤波器系数与所述数据缓存空间在同一读取顺序下输出的第一折叠读地址中的待滤波数据进行乘法运算,再将相乘结果输入到加法器进行累加处理,得到对应的滤波周期内的处理后的滤波结果,完成一次滤波计算,即完成一个滤波周期内的滤波计算。其中,每个滤波周期内,在所述FIR滤波器的转置使能计数阈值等于所述FIR滤波器的抽头数时,所述滤波计算模块内部运行的乘法运算的次数等于所述FIR滤波器的抽头数的一半,且由一个乘法器分时复用实现,即一个乘法器在每个折叠地址读周期执行一次乘法运算。其中,所述滤波计算模块包括加法器和乘法器,在本实施例中,第一折叠读地址中的待滤波数据与第二折叠读地址中的待滤波数据的和值输入该乘法器,同一周期内读取出的滤波器系数也输入该乘法器,参与一次乘法运算,再将该周期内相乘的结果传输给加法器以参与累加计算。因此,本实施例在滤波计算模块中使用相同的乘法器资源实现不同滤波周期下的新输入的待滤波数据与同一组滤波器系数的相乘运算,提高不同类型的滤波器读取数据的条件下的乘法器资源的复用率。
对应到图4中,在第四个滤波周期内,X8(第一次读取的第一折叠读地址中的待滤波数据,即第一次读取的待滤波数据)与X3(第一次读取的第二折叠读地址中的待滤波数据,即第二次读取的待滤波数据)是一组折叠数据,相加得到第一个折叠值,同一个折叠地址读周期内,从所述滤波器系数存储器读取到滤波器系数h1;然后,X7(第二次读取的第一折叠读地址中的待滤波数据,即第三次读取的待滤波数据)与X4(第二次读取的第二折叠读地址中的待滤波数据,即第四次读取的待滤波数据)是另一组折叠数据,相加得到第第二个折叠值,同一个折叠地址读周期内,从所述滤波器系数存储器读取到滤波器系数h2;然后,X6(第三次读取的第一折叠读地址中的待滤波数据,即第五次读取的待滤波数据)与X5(第三次读取的第二折叠读地址中的待滤波数据,即第六次读取的待滤波数据)是另一组折叠数据从所述滤波器系数存储器中读取出所述中间计算存储地址中的滤波器系数h3,一般将所述中间计算存储地址中的滤波器系数设定为固定的参数,对于抽头数为奇数的任意FIR滤波器都适用。
针对这些折叠数据,所述滤波计算模块从所述滤波器系数存储器输出相对应位置的滤波器系数进行相乘,进行折叠计算,具体地,折叠计算获得的滤波结果y6等于:X8(第一次读取的第一折叠读地址中的待滤波数据,即第一次读取的待滤波数据)与X3(第一次读取的第二折叠读地址中的待滤波数据,即第二次读取的待滤波数据)相加得到的和值与第一次读取的滤波器系数h1的乘积、X7(第二次读取的第一折叠读地址中的待滤波数据,即第三次读取的待滤波数据)与X4(第二次读取的第二折叠读地址中的待滤波数据,即第四次读取的待滤波数据)相加得到的和值与第二次读取的滤波器系数h2的乘积、以及X6(第三次读取的第一折叠读地址中的待滤波数据,即第五次读取的待滤波数据)与X5(第三次读取的第二折叠读地址中的待滤波数据,即第六次读取的待滤波数据)相加得到的和值与第三次读取的滤波器系数h3的乘积的和值。
需要说明的是,Xi中的i可以用于表示其读地址;当第二折叠地址计数器加一计数一次(对第二折叠读地址执行一次自加操作),则第二折叠读地址中的待滤波数据由Xi变为X(i+1),比如i=1时,在执行一次自加操作之前,是读取第二折叠读地址1中的待滤波数据X1,在执行一次自加操作之后,则变为读取第二折叠读地址2中的待滤波数据X2。同理地,当第一折叠地址计数器减一计数一次(对第一折叠读地址执行一次自减操作),则第一折叠读地址中的待滤波数据由X(i+3)i变为X(i+2),比如i=1时,在执行一次自减操作之前,读取第一折叠读地址4中的待滤波数据X4,在执行一次自减操作之后,读取第一折叠读地址3中的待滤波数据X3。
综上,本发明根据写入数据缓存空间的待滤波数据的数量与所述FIR滤波器的转置使能计数阈值的大小关系划分出与待滤波数据的输入数量相适应的滤波计算阶段,并在不同的滤波计算阶段内采取不同的计数方式,以产生适应当前数据量下的先加再乘的滤波计算或先乘再加的滤波计算的读地址,满足不同数据输入量下的参与滤波计算的待滤波数据之间相关性,本发明计数产生的读地址支持在抽头数限定的地址区间内进行回环变化,从而可以通过新数据覆盖旧地址的方式来保证所述待滤波数据传输的连续性;另一方面,每次滤波计算或每个滤波周期内的作为计数起点的读地址的变化与FIR滤波器的抽取率或插值率相关,以使得同一滤波周期内的读地址的自加操作和/或同一滤波周期内的读地址的自减操作执行该滤波周期内的滤波计算,能够支持除了半带滤波器之外的不同阶数的FIR滤波器的自动计数和周期性的滤波计算需求,从实时输入待滤波数据中同时抽取出有效数据和滤波处理出有效的滤波结果。
需要说明的是,本发明公开的计数器的自加操作是对计数器的加法计数操作,包括但不限于加一计数或加二计数,该计数器每执行一次自加操作,则其计数值增加一定的数值,且将其变化前后的计数值都配置为地址;计数器的自减操作是对计数器的减法计数操作,该计数器每执行一次自减操作,则其计数值减少一定的数值;因此,一个计数器的自加操作及其自减操作分别是沿着不同的方向产生地址。
值的注意的是,前述任意实施例公开的由相关的计数器的计数值用于产生地址,则数值0、数值1、计数值及其相关的数值可以用于表示相应的输入输出数据在所述数据缓存空间或滤波器系数存储器内实际存储地址的序号,为了简化描述,本发明的任意实施例都将计数值、数值、和值或差值指示的地址,简化为直接使用计数值、数值、和值或差值来表示。
在上述实施例的基础上,还公开关于所述待滤波数据写入所述数据缓存空间的实施例,所述读写控制模块,用于按照系统时钟周期控制外部输入的待滤波数据写入所述数据缓存空间,具体是每个系统时钟周期向所述数据缓存空间写入一个待滤波数据,以使得前述实施例中存在判断所述写入数据缓存空间的待滤波数据的数量与所述FIR滤波器的转置使能计数阈值的大小关系的实施条件。在本实施例中,所述读写控制模块被配置为在当前一个系统时钟周期写入一个待滤波数据,则下一个系统时钟周期读取一个待滤波数据,可选地,所述读写控制模块按照所述基准地址计数器产生的基准地址、前置地址计数器产生的前置读地址、第一折叠地址计数器产生的第一折叠读地址、以及第二折叠地址计数器产生的第二折叠读地址,依次读取出所述写入数据缓存空间的待滤波数据,则基准地址、前置读地址、第一折叠读地址和第二折叠读地址都与在先确定的写地址存在重合地址区间。
进一步地,所述读写控制模块内部设置递增计数器,所述读写控制模块用于从所述数据缓存空间的缓存首地址开始,每写入一个待滤波数据时,控制递增计数器对当前的缓存地址加一偏移处理,获得下一个写入的待滤波数据的缓存地址,即让递增计数器从缓存首地址开始按照系统时钟周期加一计数,直至计数产生的缓存地址(计数值)相对于缓存首地址发生的地址偏移量等于所述FIR滤波器的抽头数与数值1的差值时,将缓存首地址更新为当前获得的缓存地址,以使得后续写入的待滤波数据覆盖所述缓存首地址最先存有的待滤波数据,并确定对所述数据缓存空间完成一轮连续的缓存地址的遍历,即完成一次回环遍历,此时,确定从往所述缓存首地址写入一个待滤波数据开始,已经经过的系统时钟周期的数目等于所述FIR滤波器的抽头数;其中,连续的缓存地址是由数量为所述FIR滤波器的抽头数的地址单元组成,以满足所述FIR滤波器的抽头数下进行滤波计算所需输入数据的数量需求。
具体地,所述读写控制模块,还用于在完成一轮连续的缓存地址的遍历后,若继续按照系统时钟周期控制向所述连续的缓存地址写入新的所述待滤波数据,则将所述递增计数器置为递增初始值,并从所述缓存首地址开始,每写入一个待滤波数据时,将当前写入的一个待滤波数据覆盖缓存地址原先存有的待滤波数据,并控制递增计数器对当前的缓存地址加一偏移处理,即递增计数器进行加一计数并将获得计数值配置为新的缓存地址,从而获得下一个写入的待滤波数据的缓存地址,直至当前获得的缓存地址相对于缓存首地址发生的地址偏移量等于所述FIR滤波器的抽头数与数值1的差值时,将缓存首地址更新为当前获得的缓存地址,并将所述递增计数器的计数值调整为所述递增初始值;需要说明的是,所述递增计数器置出的递增初始值表示所述缓存首地址在所述数据缓存空间内的地址排序;所述递增计数器计数产生的每个计数值都表示对应的系统时钟周期内写入的缓存地址在所述数据缓存空间内的地址排序。
需要说明的是,鉴于本发明的上述模块的实现流程,在具体应用中形成了整体系统结构如;图3是以5抽头的FIR滤波器为例,图4是以6抽头的FIR滤波器为例,以此类推,N抽头的滤波器设计是一样的。均在本发明的保护范围之内。
上述实施例只为说明本发明的技术构思及特点,其目的是让熟悉该技术领域的技术人员能够了解本发明的内容并据以实施,并不能以此来限制本发明的保护范围。凡根据本发明精神实质所作出的等同变换或修饰,都应涵盖在本发明的保护范围之内。
Claims (23)
1.一种具备自动计数功能的FIR滤波器,其特征在于,该FIR滤波器包括读写控制模块、滤波计算模块、数据缓存空间和滤波器系数存储器;
读写控制模块,用于控制输入FIR滤波器的待滤波数据写入数据缓存空间内,以及计数产生读地址;
读写控制模块,用于根据写入数据缓存空间的待滤波数据的数量与所述FIR滤波器的转置使能计数阈值的大小关系,利用计数产生的读地址,从数据缓存空间内依次读取出所述待滤波数据,并将读取出的所述待滤波数据传输给所述滤波计算模块;
滤波器系数存储器,用于在所述读写控制模块开始从数据缓存空间内读取所述待滤波数据后,按照所述读写控制模块从数据缓存空间内读取所述待滤波数据的顺序,依次输出所需的滤波器系数给所述滤波计算模块;
滤波计算模块,用于控制数据缓存空间输出的待滤波数据以及滤波器系数存储器输出的滤波器系数进行滤波计算,其中,滤波计算模块在进行一次滤波计算时,所述读写控制模块继续控制新输入FIR滤波器的待滤波数据写入数据缓存空间内但不参与该次滤波计算;
其中,滤波计算的方式是与所述写入数据缓存空间的待滤波数据的数量与所述FIR滤波器的转置使能计数阈值的大小关系相匹配。
2.根据权利要求1所述FIR滤波器,其特征在于,所述FIR滤波器还设置有一个系统时钟源,用于计数产生系统时钟周期;
其中,写入一个待滤波数据所耗费的时间配置为一个系统时钟周期,读取出一个待滤波数据所耗费的时间配置为一个系统时钟周期;
其中,所述写入数据缓存空间的待滤波数据的数量是等于所述FIR滤波器从外部采样的待滤波数据的数量。
3.根据权利要求2所述FIR滤波器,其特征在于,所述读写控制模块还包括基准地址计数器;
基准地址计数器用于每当向所述数据缓存空间写入两个所述待滤波数据时,执行一次自加操作,并产生基准地址,触发所述读写控制模块利用基准地址从所述数据缓存空间读取所述待滤波数据,其中,该基准地址是开始进行当前一次滤波计算而需要在所述数据缓存空间内遍历的第一个读地址;基准地址计数器的一次自加操作产生的计数值的变化值是数值2;
在所述滤波计算模块输出一个滤波结果时,确定所述FIR滤波器从写入两个所述待滤波数据开始已经经过一个滤波周期,并确定一个滤波周期内只完成一次滤波计算;其中,所述FIR滤波器的抽取率是2倍;
其中,在当前一个滤波周期内进行一次滤波计算的同时允许向所述数据缓存空间继续写入新的所述待滤波数据以开启下一个滤波周期,实现相邻两个滤波周期存在部分重合的时序区间。
4.根据权利要求3所述FIR滤波器,其特征在于,当写入数据缓存空间的待滤波数据的数量使用基准地址计数器的计数值的变化值表示时,所述FIR滤波器的转置使能计数阈值使用所述FIR滤波器的抽头数来表示。
5.根据权利要求3所述FIR滤波器,其特征在于,所述根据写入数据缓存空间的待滤波数据的数量与所述FIR滤波器的转置使能计数阈值的大小关系,利用读地址从数据缓存空间内依次读取出所述待滤波数据,并将读取出的所述待滤波数据传输给所述滤波计算模块的方式包括:
在所述读写控制模块确定出写入数据缓存空间的待滤波数据的数量小于或等于所述FIR滤波器的转置使能计数阈值时,所述读写控制模块,用于从所述数据缓存空间内读取出前置读地址中的待滤波数据,并传输给所述滤波计算模块;其中,所述FIR滤波器的转置使能计数阈值等于所述FIR滤波器的抽头数;
其中,所述前置读地址在每个滤波周期内由对应的一个基准地址开始进行计数获得;一个滤波周期内的基准地址是属于该滤波周期内第一个参与读取操作的前置读地址。
6.根据权利要求5所述FIR滤波器,其特征在于,所述读写控制模块包括前置地址计数器和读地址选择器;
所述写入数据缓存空间的待滤波数据的数量小于或等于所述FIR滤波器的转置使能计数阈值时,读地址选择器选通前置地址计数器产生的前置读地址输出给所述数据缓存空间以起到读取相应地址中的待滤波数据的作用;
前置地址计数器用于在所述写入数据缓存空间的待滤波数据的数量小于或等于所述FIR滤波器的转置使能计数阈值时,从当前一个滤波周期内的基准地址开始,每一个所述系统时钟周期进行一次自减操作,再触发所述读写控制模块从每次自减操作得到的前置读地址中读取出待滤波数据,再依次传输给所述滤波计算模块;其中,前置地址计数器每自减操作一次,产生的计数值的变化值是数值1,且每次自减操作后获得一个前置读地址;前置地址计数器在每个滤波周期内的初始计数值是所述基准地址计数器在相应的一个滤波周期内产生的所述基准地址。
7.根据权利要求6所述FIR滤波器,其特征在于,在写入数据缓存空间的待滤波数据的数量小于或等于所述FIR滤波器的转置使能计数阈值时,所述滤波器系数存储器用于在每个滤波周期内,从所述FIR滤波器设置的起始存储地址开始,对起始存储地址进行自加操作,再将自加得到的存储地址中的滤波器系数输出给所述滤波计算模块,直至自加得到的存储地址相对于所述起始存储地址的地址偏移量等于所述FIR滤波器的抽头数与数值1的差值的一半,然后将最新得到的存储地址记为中间计算存储地址,再对中间计算存储地址进行自减操作,再将自减得到的存储地址中的滤波器系数输出给所述滤波计算模块,直至自减得到的存储地址相对于中间计算存储地址的地址偏移量等于所述FIR滤波器的抽头数与数值1的差值的一半,依次重复,直至在当前一个滤波周期内从所述滤波器系数存储器内输出的滤波器系数的数量等于当前一个滤波周期内参与滤波计算的待滤波数据的数量;其中,所述FIR滤波器的抽头数是奇数;
其中,对起始存储地址进行自加操作的过程中,每执行一次自加操作,则存储地址增加数值1;对中间计算存储地址进行自减操作的过程中,每执行一次自减操作,则存储地址减少数值1。
8.根据权利要求6所述FIR滤波器,其特征在于,在写入数据缓存空间的待滤波数据的数量小于或等于所述FIR滤波器的转置使能计数阈值时,所述滤波器系数存储器用于在每个滤波周期内,从所述FIR滤波器相匹配的起始存储地址开始,对起始存储地址进行自加操作,再从自加得到的存储地址中输出滤波器系数给所述滤波计算模块,直至自加得到的存储地址相对于所述起始存储地址的地址偏移量等于所述FIR滤波器的抽头数与数值2的差值的一半,然后将最新得到的存储地址记为中间计算存储地址,再对中间计算存储地址进行自减操作,再从自减得到的存储地址中输出滤波器系数给所述滤波计算模块,直至自减得到的存储地址相对于中间计算存储地址的地址偏移量等于所述FIR滤波器的抽头数与数值2的差值的一半,依次重复,直至当前一个滤波周期内从所述滤波器系数存储器内读取出的滤波器系数的数量等于当前一个滤波周期内参与滤波计算的待滤波数据的数量;其中,所述FIR滤波器的抽头数是偶数;所述滤波计算模块从所述中间计算存储地址中连续读取出两个相同的滤波器系数;
其中,对起始存储地址进行自加操作的过程中,每自加操作一次,则存储地址指示的地址增加数值1;对中间计算存储地址进行自减操作的过程中,每自减操作一次,则存储地址指示的地址减少数值1。
9.根据权利要求7或8所述FIR滤波器,其特征在于,所述滤波计算模块,用于在写入数据缓存空间的待滤波数据的数量小于或等于所述FIR滤波器的转置使能计数阈值时,控制数据缓存空间输出的待滤波数据以及滤波器系数存储器输出的相同读取顺序的滤波器系数进行乘法运算,并将结果输入到加法器进行累加处理,得到每个滤波周期内的处理后的滤波结果;
其中,每个滤波周期内的乘法运算由一个乘法器分时复用实现;
其中,所述滤波计算模块包括加法器和乘法器。
10.根据权利要求3所述FIR滤波器,其特征在于,所述根据写入数据缓存空间的待滤波数据的数量与所述FIR滤波器的转置使能计数阈值的大小关系,利用读地址从数据缓存空间内依次读取出所述待滤波数据,并将读取出的所述待滤波数据传输给所述滤波计算模块的方式包括:
在所述读写控制模块确定出写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值时,所述读写控制模块,用于按照所述基准地址计数器的计数时序,将所述基准地址计数器产生的基准地址配置为第一折叠读地址,并将基准地址与数值1的和值配置为第二折叠读地址;
所述读控制模块还用于将第一折叠读地址与第二折叠读地址相加的和值配置为后置读地址,并按照所述基准地址计数器的计数时序,从所述数据缓存空间内读取出所述后置读地址中的待滤波数据,并传输给所述滤波计算模块;
其中,所述FIR滤波器的转置使能计数阈值等于所述FIR滤波器的抽头数。
11.根据权利要求10所述FIR滤波器,其特征在于,所述读写控制模块包括第一折叠地址计数器和第二折叠地址计数器;
在所述写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值时,所述第一折叠地址计数器用于在每一个滤波周期内,对所述第一折叠读地址执行自减操作,产生新的第一折叠读地址,以触发所述读写控制模块从每次自减操作得到的第一折叠读地址中读取出待滤波数据,直至自减操作的次数为第一预设折叠采样数目,但仍允许向所述数据缓存空间写入新的待滤波数据;
所述写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值时,所述第二折叠地址计数器还用于在每一个滤波周期内,对所述第二折叠读地址执行自加操作,产生新的第二折叠读地址,以触发所述读写控制模块从每次自加操作得到的第二折叠读地址中读取出待滤波数据,直至自加操作的次数为第二预设折叠采样数目,但仍允许向所述数据缓存空间写入新的待滤波数据。
12.根据权利要求11所述FIR滤波器,其特征在于,所述第一折叠地址计数器,用于每两个系统时钟周期则对所述第一折叠读地址执行一次自减操作以获得一个新的所述第一折叠读地址,并将这两个系统时钟周期记为折叠地址读周期;
所述写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值时,在所述读写控制模块的控制下,在折叠地址读周期内,读取第一折叠读地址中的待滤波数据至所述过滤计算模块,并读取第二折叠读地址中的待滤波数据至所述过滤计算模块;
其中,所述第二折叠地址计数器,用于在折叠地址读周期下,执行一次自加操作以实现每两个系统时钟周期到来则获得一个新的所述第二折叠读地址。
13.根据权利要求12所述FIR滤波器,其特征在于,所述读写控制模块还包括地址加法器和读地址选择器;
地址加法器,用于在所述折叠地址读周期内,将所述第二折叠地址计数器产生的第二折叠读地址与所述第一折叠地址计数器产生的第一折叠读地址相加,产生该折叠地址读周期内的一个后置读地址;
所述写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值时,读地址选择器选通所述地址加法器产生的后置读地址输出给所述数据缓存空间,以起到在所述折叠地址读周期内读取相应地址中的两个待滤波数据的作用。
14.根据权利要求11所述FIR滤波器,其特征在于,在所述写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值时,所述读写控制模块确定将所述基准地址配置为所述第一折叠读地址之前,若所述读写控制模块判断到基准地址等于滤波起点地址,则将滤波目标地址更新为基准地址,再将更新后的基准地址配置为第一折叠读地址的起始地址,然后,第一折叠地址计数器用于从第一折叠读地址的起始地址开始,对第一折叠读地址执行自减操作;其中,第一折叠地址计数器自减操作一次产生的计数值的变化值是数值1;
在所述写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值时,所述读写控制模块确定将所述基准地址配置为所述第二折叠读地址之前,若所述读写控制模块判断到基准地址等于滤波目标地址,则将滤波起点地址更新为基准地址,再将更新后的基准地址与数值1的和值配置为第二折叠读地址的起始地址,然后,第二折叠地址计数器用于从第二折叠读地址的起始地址开始,对第二折叠读地址执行自加操作,其中,第二折叠地址计数器自加操作一次产生的计数值的变化值是数值1。
15.根据权利要求14所述FIR滤波器,其特征在于,第一折叠地址计数器在对第一折叠读地址执行自减操作的过程包括:将第一折叠读地址的起始地址配置为第一折叠读地址,每当第一折叠读地址自减至滤波起点地址,则在下一个系统时钟周期内将滤波目标地址更新为第一折叠读地址,使得所述第一折叠读地址在所述FIR滤波器的抽头数限定的地址范围内实现地址回环遍历;然后第一折叠地址计数器继续对第一折叠读地址执行自减操作;
第二折叠地址计数器在对第二折叠读地址执行自加操作的过程包括:将第二折叠读地址的起始地址配置为第二折叠读地址,每当第二折叠读地址自加至滤波目标地址,则在下一个系统时钟周期内将滤波起点地址更新为第二折叠读地址,使得所述第二折叠读地址在所述FIR滤波器的抽头数限定的地址范围内实现地址回环遍历;然后第二折叠地址计数器继续对第二折叠读地址执行自加操作。
16.根据权利要求3或15所述FIR滤波器,其特征在于,当基准地址计数器的计数值为所述FIR滤波器的抽头数与数值2的差值后,所述读写控制模块在下一个系统时钟周期将滤波起点地址更新为基准地址计数器当前获得的计数值,并将滤波起点地址更新为基准地址;
当基准地址计数器的计数值为所述FIR滤波器的抽头数与数值1的差值后,所述读写控制模块在下一个系统时钟周期将滤波起点地址与数值1的和值更新为所述基准地址计数器当前获得的计数值,并将滤波起点地址与数值1的和值更新为基准地址。
17.根据权利要求16所述FIR滤波器,其特征在于,在每个折叠地址读周期内,读取的第一折叠读地址对应的第一折叠读地址相对于所述滤波起点地址的地址偏移量,等于所述滤波目标地址相对于读取的第二折叠读地址对应的第二折叠读地址的地址偏移量;
其中,滤波目标地址是预先在所述数据缓存空间内配置的一个地址,作为每个滤波周期内,参与读取操作的地址中,顺序最大的一个地址;
其中,滤波起点地址是预先在所述数据缓存空间内配置的一个地址,作为每个滤波周期内,被读取的地址中,顺序最小的一个地址;
其中,所述滤波目标地址与所述滤波起点地址的差值等于所述FIR滤波器的抽头数与数值1的差值。
18.根据权利要求11所述FIR滤波器,其特征在于,所述FIR滤波器的抽头数是奇数;
在一个滤波周期内或一次滤波计算中,第二预设折叠采样数目大于第一预设折叠采样数目时,第一折叠读地址提前所述第二折叠读地址停止变化;
在一个滤波周期内或一次滤波计算中,第二预设折叠采样数目小于第一预设折叠采样数目时,第二折叠读地址提前所述第一折叠读地址停止变化。
19.根据权利要求11所述FIR滤波器,其特征在于,所述FIR滤波器的抽头数是偶数时,第二预设折叠采样数目等于第一预设折叠采样数目。
20.根据权利要求13所述FIR滤波器,其特征在于,在写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值时,所述滤波器系数存储器用于在每个滤波周期内,从所述FIR滤波器相匹配的起始存储地址开始,每两个系统时钟周期则对起始存储地址进行自加操作一次,以使得起始存储地址对应的地址每两个系统时钟周期则执行一次自加操作,再从所述滤波器系数存储器内将自加操作得到的存储地址中的滤波器系数依次读出至所述滤波计算模块;
当所述FIR滤波器的抽头数是奇数时,自加操作得到的存储地址相对于所述起始存储地址的地址偏移量等于所述FIR滤波器的抽头数与数值1的差值的一半,然后将最新得到的存储地址记为中间计算存储地址;
其中,在对起始存储地址进行自加操作的过程中,每执行一次自加操作,产生一个存储地址,相邻两次自加操作产生的存储地址的变化值是数值1。
21.根据权利要求20所述FIR滤波器,其特征在于,所述滤波计算模块,用于在写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值时,在每个折叠地址读周期内,先控制所述数据缓存空间输出的第一折叠读地址中的待滤波数据与所述数据缓存空间输出的第二折叠读地址中的待滤波数据相加;再将相加的结果与所述滤波器系数存储器输出的相同读取顺序的滤波器系数进行乘法运算;然后将相乘结果输入到加法器进行累加处理,在每个滤波周期内如此重复,直至所述滤波器系数存储器输出所述中间计算存储地址中的滤波器系数;其中,每个滤波周期内,乘法运算由一个乘法器分时复用实现;所述滤波计算模块包括加法器和乘法器;所述FIR滤波器的转置使能计数阈值等于所述FIR滤波器的抽头数;
所述滤波器系数存储器输出所述中间计算存储地址中的滤波器系数时,若所述FIR滤波器的抽头数是奇数,则将所述中间计算存储地址中的滤波器系数与所述数据缓存空间在同一读取顺序下输出的第一折叠读地址中的待滤波数据进行乘法运算,再将相乘结果输入到加法器进行累加处理,得到对应的滤波周期内的处理后的滤波结果。
22.根据权利要求13所述FIR滤波器,其特征在于,在写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值时,所述滤波器系数存储器用于在每个滤波周期内,从所述FIR滤波器相匹配的起始存储地址开始,每两个系统时钟周期则对起始存储地址进行自加操作一次,以使得起始存储地址对应的地址每两个系统时钟周期则执行一次自加操作,再从所述滤波器系数存储器内将自加操作得到的存储地址中的滤波器系数依次读出至所述滤波计算模块;
当所述FIR滤波器的抽头数是偶数时,自加操作得到的存储地址相对于所述起始存储地址的地址偏移量等于所述FIR滤波器的抽头数与数值2的差值的一半,然后将最新得到的存储地址记为中间计算存储地址;
其中,在对起始存储地址进行自加操作的过程中,每执行一次自加操作,产生一个存储地址,相邻两次自加操作产生的存储地址的变化值是数值1。
23.根据权利要求20所述FIR滤波器,其特征在于,所述滤波计算模块,用于在写入数据缓存空间的待滤波数据的数量大于所述FIR滤波器的转置使能计数阈值时,在每个折叠地址读周期内,先控制所述数据缓存空间输出的第一折叠读地址中的待滤波数据与所述数据缓存空间输出的第二折叠读地址中的待滤波数据相加;再将相加的结果与所述滤波器系数存储器输出的相同读取顺序的滤波器系数进行乘法运算;然后将相乘结果输入到加法器进行累加处理,在每个滤波周期内如此重复,直至所述滤波器系数存储器输出所述中间计算存储地址中的滤波器系数;其中,每个滤波周期内,乘法运算由一个乘法器分时复用实现;所述滤波计算模块包括加法器和乘法器;所述FIR滤波器的转置使能计数阈值等于所述FIR滤波器的抽头数;
所述滤波器系数存储器输出所述中间计算存储地址中的滤波器系数时,若所述FIR滤波器的抽头数是偶数,则控制所述数据缓存空间在同一折叠地址读周期内内输出的第一折叠读地址中的待滤波数据与第二折叠读地址中的待滤波数据的和值与所述中间计算存储地址中的滤波器系数进行乘法运算,再将相乘结果输入到加法器进行累加处理,得到对应的滤波周期内的处理后的滤波结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111445129.XA CN114142831A (zh) | 2021-11-30 | 2021-11-30 | 一种具备计数功能的fir滤波器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111445129.XA CN114142831A (zh) | 2021-11-30 | 2021-11-30 | 一种具备计数功能的fir滤波器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114142831A true CN114142831A (zh) | 2022-03-04 |
Family
ID=80386012
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111445129.XA Pending CN114142831A (zh) | 2021-11-30 | 2021-11-30 | 一种具备计数功能的fir滤波器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114142831A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115102524A (zh) * | 2022-07-07 | 2022-09-23 | 武汉市聚芯微电子有限责任公司 | 一种滤波器 |
CN115549644A (zh) * | 2022-10-21 | 2022-12-30 | 中科芯集成电路有限公司 | 一种fir滤波器 |
-
2021
- 2021-11-30 CN CN202111445129.XA patent/CN114142831A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115102524A (zh) * | 2022-07-07 | 2022-09-23 | 武汉市聚芯微电子有限责任公司 | 一种滤波器 |
CN115102524B (zh) * | 2022-07-07 | 2023-08-08 | 武汉市聚芯微电子有限责任公司 | 一种滤波器 |
CN115549644A (zh) * | 2022-10-21 | 2022-12-30 | 中科芯集成电路有限公司 | 一种fir滤波器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114142831A (zh) | 一种具备计数功能的fir滤波器 | |
JP2600236B2 (ja) | サンプリング周波数変換回路 | |
CN114142829A (zh) | Fir滤波器复用系统 | |
US5438532A (en) | Digital filter for use in synthesizing filter or a separation filter | |
CN114124035A (zh) | 一种半带滤波器 | |
JPH07112144B2 (ja) | デジタル・フィルタ | |
JP4290783B2 (ja) | データ速度を減少させる装置 | |
US6442580B1 (en) | Resampling method and resampler circuit | |
US4701875A (en) | High speed convolution arithmetic circuit with multiple counters | |
JP3584027B2 (ja) | デジタルフィルタ | |
US6108681A (en) | System for sharing resources in a digital filter | |
CN1862960B (zh) | 一种分数倍插值多相滤波器和滤波方法 | |
US9214921B2 (en) | Sampling rate conversion device | |
CN112711393B (zh) | 一种基于fpga的实时多通道累加方法 | |
CN117134743A (zh) | 基于数字匹配滤波器实现的采样速率非整数倍变换方法 | |
KR100248266B1 (ko) | 유한충격응답적응디지탈필터의 탭계수갱신장치 | |
JP6311601B2 (ja) | 多段フィルタ処理装置及び方法 | |
CN101546993B (zh) | 一种自适应迭代次数的白化滤波方法及装置 | |
de Carvalho et al. | Real-time interpolation with cubic splines and polyphase networks | |
CN115102524B (zh) | 一种滤波器 | |
US8380772B2 (en) | Multi-rate filter bank | |
CN116132866B (zh) | 一种pdm数字麦克风解码装置和芯片 | |
JP4315352B2 (ja) | ディジタルフィルタおよび情報通信機器 | |
CN113872566B (zh) | 带宽连续可调的调制滤波装置和方法 | |
US20090300089A1 (en) | Finite impulse response filter and method |
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 |