CN114142829A - Fir滤波器复用系统 - Google Patents
Fir滤波器复用系统 Download PDFInfo
- Publication number
- CN114142829A CN114142829A CN202111440934.3A CN202111440934A CN114142829A CN 114142829 A CN114142829 A CN 114142829A CN 202111440934 A CN202111440934 A CN 202111440934A CN 114142829 A CN114142829 A CN 114142829A
- Authority
- CN
- China
- Prior art keywords
- address
- read
- filter
- data
- folding
- 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
-
- 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)
- Time-Division Multiplex Systems (AREA)
Abstract
本发明公开FIR滤波器复用系统,该FIR滤波器复用系统包括滤波器类型选择模块和滤波器功能实现模块;滤波器功能实现模块包括读写控制子模块、滤波计算子模块、数据缓存器和滤波器系数存储器;该FIR滤波器复用系统是可以同时兼容半带滤波器和非半带滤波器,利用选择模块来将半带滤波器和非半带滤波器这两种不同类型的滤波器集成在一个系统内,从而可以选择相关计数参数来实现对输入数据实施相应类型的滤波器的抽取滤波功能,使得FIR滤波器复用系统形成通用性较强的滤波器系统。
Description
技术领域
本发明涉及到数字信号处理技术领域,尤其涉及基于不同类型的2倍抽取的FIR滤波器复用系统。
背景技术
数字下变频广泛应用在无线通信领域中,作用是将射频/模拟前端信号进行向下降频或模数转换而得到频率比较低的基带信号,然后对基带信号进行滤波处理,来获得低采样率且信号质量较高的信号,供音频或其他领域解码、自适应等处理。而这其中用到的一个关键的滤波器叫数字滤波器,由数字乘法器、加法器和延时单元组成的一种装置,其实就是一个数字信号处理器,它是一个离散时间系统,其功能是对输入离散信号的数字代码进行运算处理,以达到改变信号频谱的目的。
在数字滤波器中,FIR (Finite Impulse Response)滤波器是有限长单位脉冲冲激响应数字滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而,FIR滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。其中,FIR滤波器的阶数是指过滤谐波的次数;FIR滤波器的阶数与数值1的和值等于FIR滤波器系数的个数,也等于滤波器的抽头数,FIR滤波器的抽头数是滤波器的抽头的个数的简称。FIR抽取滤波器作为FIR滤波器的一种,由于其线性相位特性被数字设计人员广泛使用,主要用于变频,在变频过程中,根据不同的抽取率选择抽头数不同的FIR抽取滤波器;其中,FIR抽取滤波器的阶数是和其输入数据采样率与过渡带宽的比值成正比关系的。
在一些设计场景中,若需要在抽取和滤波的过程中设定阻带抑制不变或达到较高的数据分辨率和选择性,选择单个FIR滤波器实现的话,那么就需将FIR滤波器的阶数设置得非常高,导致电路生产设计成本大幅度提升;现有技术还会选择多个相同类型的FIR滤波器级联去达到相同的目的,则需要的乘法器和加法器等硬件资源的开销大幅度增加,抽取和滤波的过程中产生的计算量也较大,难以满足存取数据速度的要求。
发明内容
针对上述技术缺陷,本发明立足于FIR滤波器的应用性能需求,公开一种可以同时兼容半带滤波器和非半带滤波器的FIR滤波器复用系统,利用选择模块来将半带滤波器和非半带滤波器这两种不同类型的滤波器集成在一个系统内,从而可以选择相关计数参数来实现对输入数据实施相应类型的滤波器的抽取滤波功能,使得FIR滤波器复用系统形成通用性较强的滤波器系统,具体的技术方案如下:
FIR滤波器复用系统,该FIR滤波器复用系统包括滤波器类型选择模块和滤波器功能实现模块;滤波器功能实现模块包括读写控制子模块、滤波计算子模块、数据缓存器和滤波器系数存储器;滤波器类型选择模块预先配置有需要复用的FIR滤波器的抽头数及其抽取率;其中,需要复用的FIR滤波器包括半带滤波器和非半带滤波器,非半带滤波器是除了半带滤波器之外的其它类型的FIR滤波器;滤波器类型选择模块,用于产生当前复用的FIR滤波器中的相关联的读地址,并将这些相关联的读地址传输给读写控制子模块;读写控制子模块,用于控制输入FIR滤波器复用系统的待滤波数据写入数据缓存器内;读写控制子模块,用于根据写入数据缓存器的待滤波数据的数量与当前复用的FIR滤波器的转置使能计数阈值的大小关系,利用滤波器类型选择模块提供的相关联的读地址,从数据缓存器内依次读取出所述待滤波数据给所述滤波计算子模块;滤波计算子模块,用于控制数据缓存器输出的待滤波数据以及滤波器系数存储器输出的滤波器系数进行滤波计算,其中,滤波计算是与所述FIR滤波器复用系统当前复用的FIR滤波器相适应,使得滤波器功能实现模块被复用为所述当前复用的FIR滤波器;滤波器系数存储器,还用于存储有当前复用的FIR滤波器所需的滤波器系数,其中,每种类型的FIR滤波器所需的滤波器系数在滤波器系数存储器都相匹配的起始存储地址;滤波器系数存储器,用于在所述读写控制子模块开始从数据缓存器内读取所述待滤波数据后,按照所述读写控制子模块从数据缓存器内读取所述待滤波数据的顺序,从当前复用的FIR滤波器对应的所述起始存储地址开始,依次输出所需的滤波器系数给所述滤波计算子模块。
进一步地,所述滤波器类型选择模块包括前置地址选择器和地址使能信号选择器;前置地址选择器,用于在接收到滤波器类型选择信号后,选择当前复用的FIR滤波器对应的前置读地址传输给所述滤波器功能实现模块,以使得在写入数据缓存器的待滤波数据的数量小于或等于当前复用的FIR滤波器的转置使能计数阈值时,所述读写控制子模块按照当前复用的FIR滤波器对应的读取时序,从所述数据缓存器的前置读地址中读取出待滤波数据;地址使能信号选择器,用于在接收到滤波器类型选择信号后,选择当前复用的FIR滤波器对应的折叠读使能信号传输给所述滤波器功能实现模块;其中,写入数据缓存器的待滤波数据的数量大于当前复用的FIR滤波器的转置使能计数阈值时,折叠读使能信号为高电平;写入数据缓存器的待滤波数据的数量小于或等于当前复用的FIR滤波器的转置使能计数阈值时,折叠读使能信号为低电平。
进一步地,所述滤波器类型选择模块还包括第一地址选择器和第二地址选择器;第一地址选择器,用于在接收到滤波器类型选择信号后,选择当前复用的FIR滤波器对应的第一折叠读地址传输给所述滤波器功能实现模块,以使得在写入数据缓存器的待滤波数据的数量大于当前复用的FIR滤波器的转置使能计数阈值后,所述读写控制子模块按照当前复用的FIR滤波器对应的读取时序,从所述数据缓存器中读取出第一折叠读地址中的待滤波数据;第二地址选择器,用于在接收到滤波器类型选择信号后,选择当前复用的FIR滤波器对应的第二折叠读地址传输给所述滤波器功能实现模块,以使得在写入数据缓存器的待滤波数据的数量大于当前复用的FIR滤波器的转置使能计数阈值后,所述读写控制子模块按照当前复用的FIR滤波器对应的读取时序,从所述数据缓存器中读取出第二折叠读地址中的待滤波数据;其中,第二折叠读地址的起始地址序号与第一折叠读地址的起始地址序号之间的地址偏移量等于所述当前复用的FIR滤波器的抽取率;所述当前复用的FIR滤波器的抽头数是由专门的寄存器配置的;其中,所述相关联的读地址包括前置读地址、第二折叠读地址与第一折叠读地址。
进一步地,所述FIR滤波器复用系统还设置有一个系统读写时钟源,用于计数产生系统时钟周期;其中,写入一个待滤波数据所耗费的时间配置为一个系统时钟周期,读取出一个待滤波数据所耗费的时间配置为一个系统时钟周期;其中,所述写入数据缓存器的待滤波数据的数量是等于所述FIR滤波器复用系统从外部采样的待滤波数据的数量。
进一步地,所述滤波器功能实现模块还包括滤波计数器;滤波计数器,用于每当外部向所述数据缓存器写入两个所述待滤波数据,则加一计数一次,然后触发所述滤波计算子模块利用从所述数据缓存器读取到的所述待滤波数据进行与所述当前复用的FIR滤波器相适应的滤波计算,再在所述滤波计算子模块计算出对应的滤波结果时,确定所述FIR滤波器复用系统从已经经过一个滤波周期,其中,一个滤波周期大于两个系统时钟周期;每经过一个滤波周期,则所述滤波计算子模块输出一个滤波结果;其中,所述当前复用的FIR滤波器的抽取率是2倍;其中,写入所述数据缓存器的每个待滤波数据的位宽是由所述滤波器类型选择模块配置的,每个待滤波数据占据的位宽小于或等于所述数据缓存器允许读写的最大位宽。
进一步地,当写入数据缓存器的待滤波数据的数量使用滤波计数器的计数值的变化值表示时,当前复用的FIR滤波器的转置使能计数阈值使用所述当前复用的FIR滤波器的抽头数与数值1的和值的一半来表示;其中,所述当前复用的FIR滤波器的抽头数是奇数。
进一步地,所述根据写入数据缓存器的待滤波数据的数量与当前复用的FIR滤波器的转置使能计数阈值的大小关系,利用滤波器类型选择模块提供的相关联的读地址,从数据缓存器内依次读取出所述待滤波数据给所述滤波计算子模块的方式包括:在所述读写控制子模块确定出写入数据缓存器的待滤波数据的数量小于或等于当前复用的FIR滤波器的转置使能计数阈值的状态下,所述读写控制子模块在每个滤波周期内,按照当前复用的FIR滤波器对应的读取时序,依次从所述数据缓存器内读取出所述前置读地址中的待滤波数据,并传输给所述滤波计算子模块;其中,当前复用的FIR滤波器的转置使能计数阈值等于当前复用的FIR滤波器的抽头数;其中,所述前置读地址在每个滤波周期内是由一个初始前置地址序号开始进行计数获得;每个滤波周期内的一个初始前置地址序号是属于该滤波周期内第一个参与读取操作的前置读地址序号,以使得初始前置地址序号对应的前置读地址中的待滤波数据被按对应的读取时序传输至所述滤波计算子模块;其中,所述滤波器类型选择信号是第一逻辑电平时,当前复用的FIR滤波器是所述非半带滤波器,使得所述FIR滤波器复用系统复用为所述非半带滤波器;所述滤波器类型选择信号是第二逻辑电平时,当前复用的FIR滤波器是所述半带滤波器,使得所述FIR滤波器复用系统复用为所述半带滤波器。
进一步地,在写入数据缓存器的待滤波数据的数量小于或等于当前复用的FIR滤波器的转置使能计数阈值的状态下,所述读写控制子模块将所述滤波计数器在每个滤波周期内的计数值相对于其初始计数值的变化值的两倍与数值2的差值设置为对应滤波周期内的初始前置地址序号;其中,相邻两个滤波周期下获得的初始前置地址之间的地址偏移量等于所述当前复用的FIR滤波器的抽取率;滤波计数器的初始计数值是在开始计数之前设置好的计数值。
进一步地,若当前复用的FIR滤波器是所述非半带滤波器,且写入数据缓存器的待滤波数据的数量小于或等于当前复用的FIR滤波器的转置使能计数阈值的状态下,前置地址计数器用于从当前一个滤波周期对应的初始前置地址序号开始,按照所述系统时钟周期进行自减操作,并将每次自减操作后的前置读地址交由所述前置地址选择器传输至所述滤波器功能实现模块,以触发所述读写控制子模块从所述数据缓存器内读取出每次自减操作后的前置读地址中的待滤波数据,再依次传输给所述滤波计算子模块;其中,所述滤波器类型选择模块包括前置地址计数器,用于在所述滤波器类型选择信号是第一逻辑电平时工作;其中,前置地址计数器每自减操作一次,对应产生的计数值的变化值是数值1,且每次自减操作后产生的计数值被配置为前置读地址序号;前置地址计数器设置的初始计数值是初始前置地址序号。
进一步地,若当前复用的FIR滤波器是所述非半带滤波器,则在写入数据缓存器的待滤波数据的数量小于或等于当前复用的FIR滤波器的转置使能计数阈值的状态下,所述滤波器系数存储器用于在每个滤波周期内,从当前复用的FIR滤波器相匹配的起始存储地址开始,按照所述系统时钟周期对起始存储地址进行自加操作,再按照自加得到的存储地址将对应存储的滤波器系数依次读出至所述滤波计算子模块,直至自加得到的存储地址相对于所述起始存储地址的地址偏移量等于所述当前复用的FIR滤波器的抽头数与数值1的差值的一半,然后将最新得到的存储地址记为中间计算存储地址,再对中间计算存储地址进行自减操作,再按照自减得到的存储地址将对应存储的滤波器系数依次读出至所述滤波计算子模块,直至自减得到的存储地址相对于中间计算存储地址的地址偏移量等于所述当前复用的FIR滤波器的抽头数与数值1的差值的一半,依次重复,直至当前一个滤波周期内从所述滤波器系数存储器内读取出的滤波器系数的数量满足当前一个滤波周期内参与滤波计算的待滤波数据的数量;其中,对起始存储地址进行自加操作的过程中,每自加操作一次,则存储地址对应的地址序号增加数值1;对中间计算存储地址进行自减操作的过程中,每自减操作一次,则存储地址对应的地址序号减少数值1;其中,存储地址对应的地址序号用于表示该存储地址在所述滤波器系数存储器内地址排序;所述当前复用的FIR滤波器的抽头数是奇数。
进一步地,所述滤波计算子模块,用于在写入数据缓存器的待滤波数据的数量小于或等于当前复用的FIR滤波器的转置使能计数阈值的状态下,控制数据缓存器输出的待滤波数据以及滤波器系数存储器输出的相同读取排序的滤波器系数进行乘法运算,并将结果输入到加法器进行累加处理,得到每个滤波周期内的处理后的滤波结果;其中,每个滤波周期内的乘法运算由一个乘法器分时复用实现;其中,所述滤波计算子模块包括加法器和乘法器。
进一步地,所述读写控制子模块还包括基准地址计数器;基准地址计数器,用于每当外部向所述数据缓存器写入两个所述待滤波数据以触发所述滤波计算子模块开始执行一次滤波计算时,执行一次计数值的自加操作,并将自加操作得到的计数值配置为折叠基准地址序号,并将自加操作后得到的折叠基准地址序号传输给所述滤波器类型选择模块,再将折叠基准地址序号更新为第一折叠读地址序号,并将折叠基准地址序号与数值1的和值更新为第二折叠读地址序号;其中,基准地址计数器在一次自加操作中产生计数值的变化值是数值2;当前复用的FIR滤波器的转置使能计数阈值等于当前复用的FIR滤波器的抽头数;其中,折叠基准地址序号表示折叠基准地址在所述数据缓存器内的排序;第二折叠读地址序号用于表示第二折叠读地址在所述数据缓存器内的地址排序;第一折叠读地址序号用于表示第一折叠读地址在所述数据缓存器内的地址排序。
进一步地,当基准地址计数器的计数值为当前复用的FIR滤波器的抽头数与数值2的差值后,所述读写控制子模块在下一个系统时钟周期将滤波起点地址序号更新为基准地址计数器当前获得的计数值,并将滤波起点地址序号更新为折叠基准地址序号,再将更新后的折叠基准地址序号传输给所述滤波器类型选择模块;当基准地址计数器的计数值为当前复用的FIR滤波器的抽头数与数值1的差值后,所述读写控制子模块在下一个系统时钟周期将滤波起点地址序号与数值1的和值更新为所述基准地址计数器当前获得的计数值,并将滤波起点地址序号与数值1的和值更新为折叠基准地址序号;其中,滤波起点地址序号是预先在所述数据缓存器内配置的一个地址序号,作为每个滤波周期内,参与读取操作的地址序号中,排序最小的一个地址序号。
进一步地,所述根据写入数据缓存器的待滤波数据的数量与当前复用的FIR滤波器的转置使能计数阈值的大小关系,利用滤波器类型选择模块提供的相关联的读地址,从数据缓存器内依次读取出所述待滤波数据给所述滤波计算子模块的方式包括:在所述写入数据缓存器的待滤波数据的数量大于所述当前复用的FIR滤波器的转置使能计数阈值的状态下,所述滤波器类型选择模块用于在每一个滤波周期内,按照当前复用的FIR滤波器对应的读取时序对所述第一折叠读地址执行自减操作,再通过所述第一地址选择器将每次自减操作后的第一折叠读地址传输给所述读写控制子模块,以触发所述读写控制子模块从所述数据缓存器内读取出每次自减操作后的第一折叠读地址中的待滤波数据,直至自减操作的次数为第一预设折叠采样数目;所述写入数据缓存器的待滤波数据的数量大于所述当前复用的FIR滤波器的转置使能计数阈值的状态下,所述滤波器类型选择模块还用于在每一个滤波周期内,按照当前复用的FIR滤波器对应的读取时序对所述第二折叠读地址执行自加操作,再通过所述第二地址选择器将将每次自加操作后的第二折叠读地址传输给所述读写控制子模块,以触发所述读写控制子模块从所述数据缓存器内读取出每次自加操作后的第二折叠读地址中的待滤波数据,直至自加操作的次数为第二预设折叠采样数目;其中,当前复用的FIR滤波器是所述非半带滤波器。
进一步地,所述当前复用的FIR滤波器的抽头数是奇数;所述FIR滤波器的转置使能计数阈值等于所述FIR滤波器的抽头数;第二预设折叠采样数目大于第一预设折叠采样数目时,当前复用的FIR滤波器的抽头数与数值1的差值的一半与数值1的差值等于第一预设折叠采样数目,当前复用的FIR滤波器的抽头数与数值1的差值的一半等于第二预设折叠采样数目,使得第一折叠读地址提前所述第二折叠读地址停止变化;或者,第二预设折叠采样数目小于第一预设折叠采样数目时,当前复用的FIR滤波器的抽头数与数值1的差值的一半与数值1的差值等于第二预设折叠采样数目,当前复用的FIR滤波器的抽头数与数值1的差值的一半等于第一预设折叠采样数目,使得第二折叠读地址提前所述第一折叠读地址停止变化。
进一步地,所述滤波器类型选择模块包括第一折叠地址计数器和第二折叠地址计数器,用于在所述滤波器类型选择信号是第一逻辑电平时工作;在所述滤波器类型选择模块确定将折叠基准地址序号配置为所述第一折叠读地址的起始地址序号之前,若所述滤波器类型选择模块判断到折叠基准地址序号等于所述滤波起点地址序号,则将滤波目标地址序号更新为折叠基准地址序号,再将更新后的折叠基准地址序号更新为第一折叠读地址的起始地址序号,然后,第一折叠地址计数器用于从第一折叠读地址的起始地址序号开始,对第一折叠读地址序号执行自减操作;其中,第一折叠读地址序号表示第一折叠读地址在所述数据缓存器内的排序;第一折叠地址计数器自减一次产生的计数值的变化值是数值1,使得对第一折叠读地址序号在一次自减操作中产生的变化值为数值1;在所述滤波器类型选择模块确定将折叠基准地址序号配置为所述第二折叠读地址的起始地址序号之前,若所述滤波器类型选择模块判断到折叠基准地址序号等于滤波目标地址序号,则将滤波起点地址序号更新为折叠基准地址序号,再将折叠基准地址序号与数值1的和值更新为第二折叠读地址的起始地址序号;然后,第二折叠地址计数器用于从第二折叠读地址的起始地址序号开始,对第二折叠读地址序号执行自加操作,其中,第二折叠地址计数器自加一次产生的计数值的变化值是数值1,使得对第二折叠读地址序号在一次自加操作中产生的变化值为数值1;其中,滤波目标地址序号是预先在所述数据缓存器内配置的一个地址序号,作为每个滤波周期内,参与读取操作的地址中,排序最大的一个地址序号;所述滤波目标地址序号与所述滤波起点地址序号的差值等于所述当前复用的FIR滤波器的抽头数与数值1的差值。
进一步地,第一折叠地址计数器在对第一折叠读地址序号执行自减操作的过程包括:将第一折叠读地址的起始地址序号配置为第一折叠读地址序号,每当第一折叠读地址序号自减至所述滤波起点地址序号,则在下一个系统时钟周期内将滤波目标地址序号更新为第一折叠读地址序号,使得所述第一折叠读地址在所述当前复用的FIR滤波器的抽头数限定的地址范围内实现地址回环遍历;然后第一折叠地址计数器继续对第一折叠读地址序号执行自减操作;第二折叠地址计数器在对第二折叠读地址序号执行自加操作的过程包括:将第二折叠读地址的起始地址序号配置为第二折叠读地址序号,每当第二折叠读地址序号自加至所述滤波目标地址序号,则在下一个系统时钟周期内将所述滤波起点地址序号更新为第二折叠读地址序号,使得所述第二折叠读地址在所述当前复用的FIR滤波器的抽头数限定的地址范围内实现地址回环遍历;然后第二折叠地址计数器继续对第二折叠读地址序号执行自加操作。
进一步地,所述当前复用的FIR滤波器对应的读取时序下,每两个系统时钟周期则对所述第一折叠读地址执行一次自减操作以获得一个新的所述第一折叠读地址,并将这两个系统时钟周期记为第一折叠读地址的计数周期;所述当前复用的FIR滤波器对应的读取时序下,每两个系统时钟周期则对所述第二折叠读地址执行一次自加操作以获得一个新的所述第二折叠读地址,并将这两个系统时钟周期记为第二折叠读地址的计数周期;所述写入数据缓存器的待滤波数据的数量大于所述当前复用的FIR滤波器的转置使能计数阈值的状态下,在所述读写控制子模块的控制下,在第一折叠读地址的计数周期或第二折叠读地址的计数周期内,读取第一折叠读地址中的待滤波数据至所述过滤计算子模块,并读取第二折叠读地址中的待滤波数据至所述过滤计算子模块,如此重复读取,直至在一个滤波周期内读取的待滤波数据的数量等于所述当前复用的FIR滤波器的抽头数;其中,在每个第一折叠读地址的计数周期或每个第二折叠读地址的计数周期内,读取的第一折叠读地址对应的第一折叠读地址序号相对于所述滤波起点地址序号的地址偏移量,等于所述滤波目标地址序号相对于读取的第二折叠读地址对应的第二折叠读地址序号的地址偏移量。
进一步地,在写入数据缓存器的待滤波数据的数量大于当前复用的FIR滤波器的转置使能计数阈值的状态下,所述滤波器系数存储器用于在每个滤波周期内,从当前复用的FIR滤波器相匹配的起始存储地址开始,每两个系统时钟周期则对起始存储地址进行自加操作一次,再按照自加得到的存储地址将对应存储的滤波器系数依次读出至所述滤波计算子模块,直至自加得到的存储地址相对于所述起始存储地址的地址偏移量等于所述当前复用的FIR滤波器的抽头数与数值1的差值的一半,然后将最新得到的存储地址记为中间计算存储地址;其中,在对起始存储地址进行自加操作的过程中,每自加一次,则存储地址对应的地址序号增加数值1;所述起始存储地址是由所述滤波器类型选择模块选择确定,以匹配当前复用的FIR滤波器;其中,存储地址对应的地址序号用于表示该存储地址在所述滤波器系数存储器内地址排序;所述当前复用的FIR滤波器的抽头数是奇数。
进一步地,若当前复用的FIR滤波器是所述半带滤波器,且写入数据缓存器的待滤波数据的数量小于或等于当前复用的FIR滤波器的转置使能计数阈值的状态下,前置地址计数器用于从当前一个滤波周期对应的初始前置地址序号开始,按照所述系统时钟周期进行自减操作,得到新的前置读地址,并将每次自减操作后的前置读地址交由所述前置地址选择器传输至所述滤波器功能实现模块,以触发所述读写控制子模块从所述数据缓存器内读取出每次自减操作后的前置读地址中的待滤波数据,再依次传输给所述滤波计算子模块,直至最新得到的前置读地址序号为数值1或数值0;所述滤波器类型选择模块包括前置地址计数器,用于在所述滤波器类型选择信号是第二逻辑电平时工作;其中,前置地址计数器每自减操作一次,对应产生的计数值的变化值是数值2,且每次自减操作后产生的计数值被配置为前置读地址序号;前置地址计数器设置的初始计数值是初始前置地址序号。
进一步地,在一个滤波周期内,当所述半带滤波器的抽头数与数值1的差值的一半与数值1的差值等于所述前置地址计数器执行前述的自减操作的次数的两倍后,所述前置地址计数器将当前得到的前置读地址序号与数值1的差值更新为所述前置读地址序号,并允许所述读写控制子模块读取该前置读地址序号中的待滤波数据,并将该前置读地址序号标记为中间前置读地址序号;所述前置地址计数器,用于在获得所述中间前置读地址序号之后,从所述中间前置读地址序号与数值1的差值开始,继续执行自减操作,得到新的前置读地址;其中,所述中间前置读地址序号与数值1的差值允许被更新为前置读地址序号。
进一步地,若当前复用的FIR滤波器是所述半带滤波器,则在写入数据缓存器的待滤波数据的数量小于或等于当前复用的FIR滤波器的转置使能计数阈值的状态下,所述滤波器系数存储器用于在每个滤波周期内,从当前复用的FIR滤波器相匹配的起始存储地址开始,按照所述系统时钟周期对起始存储地址进行自加操作,再按照自加得到的存储地址将对应存储的滤波器系数依次读出至所述滤波计算子模块,直至自加得到的存储地址相对于所述起始存储地址的地址偏移量等于所述当前复用的FIR滤波器的抽头数与数值1的和值的一半,然后将最新得到的存储地址记为中间计算存储地址,再对中间计算存储地址进行自减操作,再按照自减得到的存储地址将对应存储的滤波器系数依次读出至所述滤波计算子模块,直至自减得到的存储地址相对于中间计算存储地址的地址偏移量等于所述当前复用的FIR滤波器的抽头数与数值1的和值的一半,依次重复,直至在当前一个滤波周期内从所述滤波器系数存储器内输出的滤波器系数的数量等于当前一个滤波周期内读取出的待滤波数据的数量;其中,对起始存储地址进行自加操作的过程中,每自加操作一次,则存储地址对应的地址序号增加数值2;对起始存储地址进行自减操作的过程中,每自减一次,则存储地址对应的地址序号减少数值2;其中,存储地址对应的地址序号表示该存储地址在所述滤波器系数存储器内的地址排序;所述当前复用的FIR滤波器的抽头数是奇数。
进一步地,所述滤波计算子模块,用于在写入数据缓存器的待滤波数据的数量小于或等于当前复用的FIR滤波器的转置使能计数阈值的状态下,控制数据缓存器输出的待滤波数据以及滤波器系数存储器输出的相同读取排序的滤波器系数进行乘法运算,并将结果输入到加法器进行累加处理,得到每个滤波周期内的处理后的滤波结果;其中,所述当前复用的FIR滤波器的抽头数是奇数,每个滤波周期内的乘法运算由一个乘法器分时复用实现;其中,所述滤波计算子模块包括加法器和乘法器。
进一步地,所述根据写入数据缓存器的待滤波数据的数量与当前复用的FIR滤波器的转置使能计数阈值的大小关系,利用滤波器类型选择模块提供的相关联的读地址,从数据缓存器内依次读取出所述待滤波数据给所述滤波计算子模块的方式包括:所述写入数据缓存器的待滤波数据的数量大于所述当前复用的FIR滤波器的转置使能计数阈值的状态下,所述滤波器类型选择模块用于在每一个滤波周期内,按照当前复用的FIR滤波器对应的读取时序对所述第一折叠读地址执行自减操作,再通过所述第一地址选择器将每次自减操作后的第一折叠读地址传输给所述读写控制子模块,以触发读写控制子模块按照每次自减操作后的第一折叠读地址从所述数据缓存器内读取出相应的待滤波数据;所述写入数据缓存器的待滤波数据的数量大于所述当前复用的FIR滤波器的转置使能计数阈值的状态下,所述滤波器类型选择模块还用于在每一个滤波周期内,按照当前复用的FIR滤波器对应的读取时序对所述第二折叠读地址执行自加操作,再通过所述第二地址选择器将将每次自加操作后的第二折叠读地址传输给所述读写控制子模块,以触发读写控制子模块按照每次自加操作后的第二折叠读地址从所述数据缓存器内读取出相应的待滤波数据;其中,当前复用的FIR滤波器是所述半带滤波器;其中,第二折叠地址序号在一次自加操作发生的地址偏移量是数值2;第一折叠地址序号在一次自减操作发生的地址偏移量是数值2。
进一步地,在一个滤波周期内,在检测到当前复用的FIR滤波器的抽头数与对所述第一折叠读地址执行的自减操作的次数的两倍的差值小于对所述第一折叠读地址执行的自减操作的次数的两倍时,停止对所述第一折叠读地址执行前述自减操作,再将当前得到的所述第一折叠读地址序号与数值1的和值更新为所述第一折叠读地址序号,再保持所述第一折叠读地址序号不变;或者,在一个滤波周期内,在检测到当前复用的FIR滤波器的抽头数与自加操作的次数的两倍的差值小于对所述第二折叠读地址执行的自加操作的次数的两倍时,停止对所述第二折叠读地址执行自加操作,再将当前得到的所述第二折叠读地址序号与数值1的差值更新为所述第二折叠读地址序号,再保持所述第二折叠读地址序号不变。
进一步地,所述滤波器类型选择模块包括第一折叠地址计数器,用于在所述滤波器类型选择信号是第二逻辑电平时工作;在将所述折叠基准地址序号更新为第一折叠读地址的起始地址序号后,第一折叠地址计数器用于从第一折叠读地址的起始地址序号开始,对第一折叠读地址序号执行自减操作;若所述滤波器类型选择模块判断到第一折叠读地址序号减至所述滤波起点地址序号,则将滤波目标地址序号与数值1的差值更新为第一折叠读地址序号;若所述滤波器类型选择模块判断到所述滤波起点地址序号与数值1的和值等于所述第一折叠读地址序号,则将滤波目标地址序号更新为所述第一折叠读地址序号;其中,第一折叠读地址序号表示第一折叠读地址在所述数据缓存器内的排序;第一折叠地址计数器自减一次产生的计数值的变化值是数值2,使得对第一折叠读地址序号在一次自加操作中产生的变化值为数值2;其中,滤波目标地址序号是预先在所述数据缓存器内配置的一个地址序号,作为每个滤波周期内,参与读取操作的地址序号中,排序最大的一个地址序号;所述滤波目标地址序号与所述滤波起点地址序号的差值等于所述当前复用的FIR滤波器的抽头数与1的差值;其中,第一折叠读地址序号用于表示第一折叠读地址在所述数据缓存器内的地址排序。
进一步地,所述滤波器类型选择模块包括第二折叠地址计数器,用于在所述滤波器类型选择信号是第二逻辑电平时工作;在所述滤波器类型选择模块确定将折叠基准地址序号配置为所述第二折叠读地址的起始地址序号之前,若所述滤波器类型选择模块判断到折叠基准地址序号等于滤波目标地址序号,则将滤波起点地址序号更新为折叠基准地址序号,再将折叠基准地址序号与数值1的和值更新为第二折叠读地址序号的起始地址序号;然后,第二折叠地址计数器用于从第二折叠读地址的起始地址序号开始,对第二折叠读地址序号执行自加操作;若所述滤波器类型选择模块判断到经过自加操作后的第二折叠读地址序号等于所述滤波目标地址序号,则将所述滤波起点地址序号与数值1的和值更新为第二折叠读地址序号;若所述滤波器类型选择模块判断到经过自加操作后的第二折叠读地址序号等于所述滤波目标地址序号与数值1的差值,则将所述滤波起点地址序号更新为第二折叠读地址序号;其中,第二折叠地址计数器自加一次产生的计数值的变化值是数值2,使得对第二折叠读地址序号在一次自加操作中产生的变化值为数值2;其中,第二折叠读地址序号用于表示第二折叠读地址在所述数据缓存器内的地址排序。
进一步地,在所述当前复用的FIR滤波器对应的读取时序下,每两个系统时钟周期则对所述第一折叠读地址执行一次自减操作以获得一个新的所述第一折叠读地址,并将这两个系统时钟周期记为第一折叠读地址的计数周期;所述当前复用的FIR滤波器对应的读取时序下,每两个系统时钟周期则对所述第二折叠读地址执行一次自加操作以获得一个新的所述第二折叠读地址,并将这两个系统时钟周期记为第二折叠读地址的计数周期;所述写入数据缓存器的待滤波数据的数量大于所述当前复用的FIR滤波器的转置使能计数阈值的状态下,在所述读写控制子模块的控制下,在第一折叠读地址的计数周期或第二折叠读地址的计数周期内,读取第一折叠读地址中的待滤波数据至所述过滤计算子模块,并读取第二折叠读地址中的待滤波数据至所述过滤计算子模块,如此重复读取,直至在一个滤波周期内读取的待滤波数据的数量等于所述当前复用的FIR滤波器的抽头数与数值1的和值的一半,然后在下一个系统时钟周期内从中间计算缓存地址中读取一个待滤波数据;其中,该中间计算缓存地址是最新获得的第二折叠读地址和最新获得的第一折叠读地址之间的地址位置;其中,在每个第一折叠读地址的计数周期或每个第二折叠读地址的计数周期内,读取的第一折叠读地址对应的第一折叠读地址序号相对于所述滤波起点地址序号的地址偏移量,等于所述滤波目标地址序号相对于读取的第二折叠读地址对应的第二折叠读地址序号的地址偏移量。
进一步地,在写入数据缓存器的待滤波数据的数量大于当前复用的FIR滤波器的转置使能计数阈值的状态下,所述滤波器系数存储器用于在每个滤波周期内,从当前复用的FIR滤波器相匹配的起始存储地址开始,每两个系统时钟周期则对起始存储地址进行自加操作一次,再按照自加得到的存储地址将对应存储的滤波器系数依次读出至所述滤波计算子模块,直至自加得到的存储地址相对于所述起始存储地址的地址偏移量等于所述当前复用的FIR滤波器的抽头数与数值1的和值的一半,并将最新得到的存储地址记为中间计算存储地址;其中,在对起始存储地址进行自加操作的过程中,每执行自加操作一次,则存储地址对应的地址序号增加数值2;所述起始存储地址是由所述滤波器类型选择模块选择确定,以匹配当前复用的FIR滤波器;其中,存储地址对应的地址序号用于表示该存储地址在所述滤波器系数存储器内地址排序;所述当前复用的FIR滤波器的抽头数是奇数。
进一步地,所述滤波计算子模块,用于在写入数据缓存器的待滤波数据的数量大于当前复用的FIR滤波器的转置使能计数阈值的状态下,在每个第一折叠读地址的计数周期或每个第二折叠读地址的计数周期内,先控制所述数据缓存器输出的第一折叠读地址中的待滤波数据与所述数据缓存器输出的第二折叠读地址中的待滤波数据相加;再将相加的结果与所述滤波器系数存储器输出的相同读取排序的滤波器系数进行乘法运算;然后将相乘结果输入到加法器进行累加处理,在每个滤波周期内如此重复,直至所述滤波器系数存储器输出所述中间计算存储地址中的滤波器系数时,将所述中间计算存储地址中的滤波器系数与所述数据缓存器在同一读取排序下输出的第一折叠读地址中的待滤波数据进行乘法运算,再将相乘结果输入到加法器进行累加处理,得到对应的滤波周期内的处理后的滤波结果;其中,每个滤波周期内,乘法运算由一个乘法器分时复用实现;其中,所述滤波计算子模块包括加法器和乘法器;其中,所述当前复用的FIR滤波器的转置使能计数阈值等于当前复用的FIR滤波器的抽头数。
进一步地,所述读写控制子模块,用于按照系统时钟周期控制外部输入的待滤波数据写入所述数据缓存器,并按照所述前置地址选择器选择输出的前置读地址、第一地址选择器选择输出的第一折叠读地址、以及第二地址选择器选择输出的第二折叠读地址,依次读取出所述写入数据缓存器的待滤波数据;其中,当前一个系统时钟周期写入一个待滤波数据,则下一个系统时钟周期读取一个待滤波数据。
进一步地,所述读写控制子模块内部设置递增计数器,所述读写控制子模块用于从所述数据缓存器的缓存首地址开始,每写入一个待滤波数据时,控制递增计数器对当前的缓存地址加一偏移处理,获得下一个写入的待滤波数据的缓存地址,直至当前获得的缓存地址相对于缓存首地址发生的地址偏移量等于所述当前复用的FIR滤波器的抽头数时,将缓存首地址更新为当前获得的缓存地址,以使得后续写入的待滤波数据覆盖缓存首地址原先存有的待滤波数据,并确定对所述数据缓存器完成一轮连续的缓存地址的遍历;其中,连续的缓存地址是由数量为所述当前复用的FIR滤波器的抽头数的地址单元组成。
进一步地,所述读写控制子模块,还用于在完成一轮连续的缓存地址的遍历后,若继续按照系统时钟周期控制向所述连续的缓存地址写入新的所述待滤波数据,则将所述递增计数器置为递增初始值,并从所述缓存首地址开始,每写入一个待滤波数据时,将当前写入的一个待滤波数据覆盖缓存地址原先存有的待滤波数据,并控制递增计数器对当前的缓存地址加一偏移处理,获得下一个写入的待滤波数据的缓存地址,直至当前获得的缓存地址相对于缓存首地址发生的地址偏移量等于所述当前复用的FIR滤波器的抽头数与数值1的差值时,将缓存首地址更新为当前获得的缓存地址,并将所述递增计数器的计数值调整为所述递增初始值;其中,所述递增计数器置出的递增初始值表示所述缓存首地址在所述数据缓存器内的地址排序;所述递增计数器计数产生的每个计数值都表示对应的系统时钟周期内写入的缓存地址在所述数据缓存器内的地址排序。
与现有技术相比,本发明相对于传统数字滤波器实现方法具有以下有益效果:本发明使用选择器和计数器组合成为滤波器功能实现模块,提供可复用的一种类型的FIR滤波器的读写地址信号的所述滤波器类型选择模块,使得滤波器功能实现模块依据对应的读写地址信号来对外部输入的数据进行当前复用的一种类型的FIR滤波器对应的滤波计算,建立类型可选择且读控制参数类型可通用的FIR滤波器系统,
具体在抽取和滤波的功能上兼容半带滤波器和非半带滤波器,本发明将半带滤波器和非半带滤波器通用的运算器部分、读写控制器部分以及存储器部分做成一个滤波器功能实现模块,同时将半带滤波器和非半带滤波器之间的需要选择使用的不同功能的计时逻辑做成一个滤波器类型选择模块,但不需要将半带滤波器和非半带滤波器串联成单条链状的滤波器组(即将不同类型的多个FIR滤波器连接成级联结构),而是组成一种可复用的滤波器功能实现的系统,让半带滤波器和非半带滤波器通过共享一个滤波器功能实现模块来实现对应的滤波功能,不用完全分离设计两套滤波器,现利用选择信号去确定对应类型的滤波器下的抽取和计算的起止时间点,满足不同的滤波器的读取及计算数据的速率要求,特征指标应用灵活度更高,能够适应滤波需求不同的多种信号。在滤波需求不相同的情况下,不需要改变整个滤波器系统的结构,仅需要通过选择对应类型FIR滤波器下的读取使能控制信号、计数控制信号等用于抽取和滤波的控制信号,就可以复用出不同功能和性能的滤波器。
附图说明
图1是本发明一实施例公开FIR滤波器复用系统的模块连接框图。
图2是本发明的另一实施例公开的滤波器类型选择模块内部的电路结构原理示意图。
图3是所述FIR滤波器复用系统被复用为5抽头的FIR滤波器后,数据流动的动态变化示意图。
图4是所述FIR滤波器复用系统被复用为7抽头的半带滤波器后,数据流动的动态变化示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行详细描述。为进一步说明各实施例,本发明提供有附图。这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理。
除非另作定义,本发明所涉及的技术术语或科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一种”、“该”等词语并不表示数量限制,可以表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含,如:包含了一系列步骤或模块的过程、方法、系统产品或者设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或模块,或者还可以包括对于这些过程、方法、产品或设备固有的其他步骤或单元。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是用于区别类似的对应,不代表针对对象的特定排序。
本发明的一实施例公开一种可兼容于两种不同类型的FIR滤波器的FIR滤波器复用系统,可以根据实际应用领域(音频或视频)的滤波算法需求,触发相应的选择信号,在FIR滤波器复用系统内选通匹配类型的FIR滤波器工作,进而对输入所述FIR滤波器复用系统的数据进行滤波运算。在本实施例中,所述FIR滤波器复用系统包括滤波器类型选择模块和滤波器功能实现模块;其中,滤波器类型选择模块是属于对需要需要复用的FIR滤波器的滤波器类型选择信号的生成器,形成一种读地址产生逻辑电路,用于选通当前复用的FIR滤波器的对应的逻辑电路并维持相关读地址信号朝着当前复用的FIR滤波器的读地址变化方向变化,至于没有被选通的相应类型的FIR滤波器的逻辑电路则被禁止工作以减少功耗,其中,选通操作涉及的相关使能信号、读地址控制信号都是由滤波器类型选择模块配置好的;其中,滤波器类型选择信号表示为图1的sel,图1的sel也可以表示为滤波器类型选择模块的选择控制端口;滤波器功能实现模块是属于FIR滤波器复用系统所能选择的每种类型的FIR滤波器的共用存储器和计算单元的逻辑电路,如图1所示,滤波器功能实现模块包括读写控制子模块、滤波计算子模块、数据缓存器和滤波器系数存储器。
所述滤波器类型选择模块预先配置有需要复用的FIR滤波器的抽头数及其抽取率,具体地,所述滤波器类型选择模块的内部设置有专门的参数配置寄存器,用于存储各种类型的FIR滤波器的相关性能参数,包括但不限于输入输出数据的位宽、滤波器系数的位宽、FIR滤波器的抽头数及阶数、滤波器系数的数量、滤波器的长度、滤波器的抽取率、一次滤波运算所需的滤波周期、片选信号的有效时间点、使能信号的拉高时间点、滤波器功能实现模块内相关存储器的读地址的起始地址序号或起始读取时间点,即预先确定可能被复用的FIR滤波器的抽取和计算的起止时间点、抽取和计算的地址区间;这些相关性能参数在不同类型的滤波器中是不同的,但是,滤波器系数的数量等于FIR滤波器的抽头数,FIR滤波器的抽头数等于FIR滤波器的阶数与数值1的和值。
在本实施例中,所述FIR滤波器复用系统需要复用的FIR滤波器包括半带滤波器和非半带滤波器,其中,非半带滤波器是除了半带滤波器之外的其它类型的FIR滤波器,在一些实施例中,需要复用的FIR滤波器都是具备抽取率的滤波器,优选地,抽取率都是2倍抽取倍数。在本实施例中,所述滤波器类型选择模块,用于产生当前复用的FIR滤波器中的相关联的读地址,并将这些相关联的读地址传输给读写控制子模块,以确定读取数据缓存器的时间起止情况,在硬件化实施的过程中,读地址都是在同一时钟下由专门的计数器进行计数或视实际复用的滤波器类型的传输速率进行分频处理,值的注意的是,在读数据之前需要先确定好读操作的起始地址和起始时间点。其中,数据缓存器是使用SRAM来实现,即使用静态随机存取存储器(Static Random-Access Memory,SRAM)来实现。
需要说明的是,半带滤波器是一种特殊的FIR滤波器,半带滤波器的阶数只能为偶数,则半带滤波器的抽头数为奇数,半带滤波器的滤波器系数除了中间值为0.5外,其余偶数序号(奇数项)的滤波器系数都为0;半带滤波器是一种具有特殊对称性的FIR滤波器,它具有线性相位特性,故其滤波器系数也为偶对称的实序列,这种FIR滤波器由于通带和阻带相对于二分之一的奈奎斯特频率点对称,因而有近一半的滤波器系数精确为零。在FIR滤波器中,除了半带滤波器之外的FIR滤波器都归属于非半带滤波器,当半带滤波器和非半带滤波器被配置有抽头数时,对应设置为FIR抽取滤波器。
读写控制子模块,用于控制输入FIR滤波器复用系统的待滤波数据写入数据缓存器内,具体地,所述读写控制子模块作为数据的读写逻辑,可以按照当前复用的FIR滤波器的抽取率,在相应的时钟周期下将输入数据写入所述数据缓存器,然后可以根据当前复用的FIR滤波器的抽头数及实时写入的待滤波数据的数量,去计数产生滤波计算所需的读地址,再将产生的读地址上的数据传输给所述滤波计算子模块,但是读写控制子模块内读取数据缓存器的有效数据的读地址及其使能信号都是由所述滤波器类型选择模块生成。
如图1所示,读写控制子模块的端口1是用于向所述数据缓存器传输时钟信号,配置为读取所述数据缓存器内的相关联的读地址中数据的驱动时钟信号;读写控制子模块的端口2是用于向所述数据缓存器传输片选信号,该片选信号用于选择所述数据缓存器内需要被读取或进入工作状态的地址区间;读写控制子模块的端口3是用于向所述数据缓存器传输使能信号,该使能信号用于区分读使能还是写使能;读写控制子模块的端口4是用于向所述数据缓存器传输由所述滤波器类型选择模块生成的相关联的读地址;读写控制子模块的端口5是用于向所述数据缓存器写入所述待滤波数据;读写控制子模块的端口6是用于接受所述数据缓存器传输的被读取的数据,所述数据缓存器传输的被读取的数据会被读写控制子模块的其它端口传输给滤波计算子模块,传输给所述滤波计算子模块的数据如图1的fir_rdata所示。
读写控制子模块,用于根据写入数据缓存器的待滤波数据的数量与当前复用的FIR滤波器的转置使能计数阈值的大小关系,利用滤波器类型选择模块提供的相关联的读地址,从数据缓存器内依次读取出所述待滤波数据给所述滤波计算子模块,其中,针对一次滤波计算而言,写入数据缓存器的待滤波数据的数量等效于输入FIR滤波器复用系统的待滤波数据的数量,则判断写入数据缓存器的待滤波数据的数量与当前复用的FIR滤波器的转置使能计数阈值的大小关系是在检测输入FIR滤波器复用系统的待滤波数据的数量是否满足一定的计数阈值,用于决策在当前复用的FIR滤波器当前应该采取的滤波计算方式,相对于现有技术中抽取和滤波处理同批量的待滤波数据,减少计算量和滤波器系数的储存量。需要说明的是,写入数据缓存器的待滤波数据的数量与当前复用的FIR滤波器的转置使能计数阈值的大小关系是由一个特定的使能信号确定的,并由读写控制子模块接收,当然该特定使能信号可以由所述读写控制子模块对输入所述FIR滤波器复用系统的外部数据的数量或对写入所述数据缓存器的数据的数量进行计数而获得。可选地,所述FIR滤波器的转置使能计数阈值可以是所述FIR滤波器的抽头数,或者是比所述FIR滤波器的抽头数大的数值,或者是比所述FIR滤波器的抽头数小的数值。
滤波计算子模块,用于控制数据缓存器输出的待滤波数据以及滤波器系数存储器输出的滤波器系数进行相应的滤波计算,其中,相应的滤波计算是与所述FIR滤波器复用系统当前复用的FIR滤波器相适应,使得滤波器功能实现模块被复用为所述当前复用的FIR滤波器,具体地,在当前复用的FIR滤波器对应的滤波计算中,根据写入数据缓存器的待滤波数据的数量与当前复用的FIR滤波器的转置使能计数阈值的大小关系划分相应不同滤波周期下的计算方式,不同滤波周期下的计算过程所耗费的时间和资源是不同的。
滤波器系数存储器,还用于存储有需要复用的FIR滤波器所需的滤波器系数,其中,滤波器系数存储器可以使用ROM来实现,即使用只读存储器(Read-Only Memory,ROM)来实现。如图1所示,滤波器系数存储器通过其端口rom_out向所述滤波计算子模块传输滤波器系数,其中,每种类型的FIR滤波器所需的滤波器系数在滤波器系数存储器都相匹配的起始存储地址,这些起始存储地址都是由所述滤波器类型选择模块选定并配置到所述滤波器系数存储器中、或是配置到所述滤波计算子模块中以使得所述滤波计算子模块从起始存储地址开始读取所需(当前复用的FIR滤波器)的滤波器系数。
在所述滤波器系数存储器中,可以同时存储两种滤波器系数,即适用于半带滤波器的滤波器系数和适用于非半带滤波器的滤波器系数,可选地,滤波器系数也可以使用寄存器配置,这样更灵活,若当前复用的FIR滤波器是半带滤波器时,则在相应的使能控制信号和选择信号的控制下只需将半带滤波器的滤波器系数写进去所述滤波器系数存储器;若当前复用的FIR滤波器是所述非半带滤波器时,则在相应的使能控制信号和选择信号的控制下只需将非半带滤波器的滤波器系数写进去所述滤波器系数存储器;在所述非半带滤波器和所述半带滤波器之间,可以通过所述起始存储地址决定当前所取系数为所述半带滤波器的还是非半带滤波器。
滤波器系数存储器,用于在所述读写控制子模块开始从数据缓存器内读取所述待滤波数据后,按照所述读写控制子模块从数据缓存器内读取所述待滤波数据的顺序,从当前复用的FIR滤波器对应的所述起始存储地址开始,依次输出所需的滤波器系数给所述滤波计算子模块,值得注意的是,所述滤波计算子模块从所述滤波器系数存储器读取滤波器系数的存储地址的次序是与所述读写控制子模块从所述数据缓存器读取待滤波数据的缓存地址的次序是保持相同的,以使得所述数据缓存器输出的待滤波数据与所述滤波器系数存储器输出的相应地址位置处(奇数或偶数标识的地址位置,其涉及到基地址是由所述滤波器类型选择模块预先配置并在此基础上自加或自加减得到)的滤波器系数在同一个滤波周期内能进行一次滤波计算,在一些实施例中,所述数据缓存器输出的同一地址位置处的待滤波数据在选择复用的FIR滤波器的类型不同时,按照相同的次序从所述滤波器系数存储器读取到滤波器系数是不同,但读取的存储地址可能是相同;所述数据缓存器输出的待滤波数据与所述滤波器系数存储器输出的滤波器系数不一定是同步输出,但能够保证在同一个滤波周期内执行完整的一次滤波计算。
与现有技术相比,本发明相对于传统数字滤波器实现方法具有以下有益效果:本发明使用选择器和计数器组合成为滤波器功能实现模块,提供可复用的一种类型的FIR滤波器的读写地址信号的所述滤波器类型选择模块,使得滤波器功能实现模块依据对应的读写地址信号来对外部输入的数据进行当前复用的一种类型的FIR滤波器对应的滤波计算,建立类型可选择且读控制参数类型可通用的FIR滤波器系统。
具体在抽取和滤波的功能上兼容半带滤波器和非半带滤波器,本发明将半带滤波器和非半带滤波器通用的运算器部分、读写控制器部分以及存储器部分做成一个滤波器功能实现模块,同时将半带滤波器和非半带滤波器之间的需要选择使用的不同功能的计时逻辑做成一个滤波器类型选择模块,但不需要将半带滤波器和非半带滤波器串联成单条链状的滤波器组(即将不同类型的多个FIR滤波器连接成级联结构),而是组成一种可复用的滤波器功能实现的系统,让半带滤波器和非半带滤波器通过共享一个滤波器功能实现模块来实现对应的滤波功能,不用完全分离设计两套滤波器,现利用选择信号去确定对应类型的滤波器下的抽取和计算的起止时间点,满足不同的滤波器的读取及计算数据的速率要求,特征指标应用灵活度更高,能够适应滤波需求不同的多种信号。在滤波需求不相同的情况下,不需要改变整个滤波器系统的结构,仅需要通过选择对应类型FIR滤波器下的读取使能控制信号、计数控制信号等用于抽取和滤波的控制信号,就可以复用出不同功能和性能的滤波器。
如图2所示,所述滤波器类型选择模块包括前置地址选择器和地址使能信号选择器;所述滤波器类型选择模块还包括与前置地址选择器存在数据传输关系的前置地址计数器(属于地址计数器),还包括与地址使能信号选择器存在电气连接关系的寄存器。前置地址选择器,用于在接收到滤波器类型选择信号后,即前置地址选择器的选择端接收到滤波器类型选择信号hb_sel后,开始选择当前复用的FIR滤波器对应的前置读地址传输给所述滤波器功能实现模块,具体选择半带滤波器和非半带滤波器当中的一种FIR滤波器匹配的前置读地址传输给所述滤波器功能实现模块内的读写控制子模块中,选通输出的前置读地址表现为图2中的前置地址选择器的输出端的信号fir_raddr_befor,但是前置地址选择器在选择其中一种FIR滤波器匹配的前置读地址传输给所述滤波器功能实现模块的同时,禁止另一种FIR滤波器匹配的前置读地址传输给所述滤波器功能实现模块,以减少相关的逻辑电路工作的功耗。在一些实施例中,前置地址选择器,用于在接收到所述滤波器类型选择信号后,再在所述写入数据缓存器的待滤波数据的数量小于或等于当前复用的FIR滤波器的转置使能计数阈值后,选择当前复用的FIR滤波器对应的前置读地址传输给所述滤波器功能实现模块,相应地,前置地址选择器选通所述前置地址计数器与所述读写控制子模块或所述滤波器功能实现模块之间的数据通路,以使得所述读写控制子模块按照当前复用的FIR滤波器对应的读取时序,从所述数据缓存器的前置读地址中读取出待滤波数据,其中,当前复用的FIR滤波器的抽头数是由所述滤波器类型选择模块内专门的寄存器配置的;当前复用的FIR滤波器对应的读取时序是由前置地址选择器选通的所述前置地址计数器的计数时序决定的,能够依据所述前置地址计数器的计数值的变化而变化。
如图2所示,地址使能信号选择器,用于在接收到滤波器类型选择信号后,选择当前复用的FIR滤波器对应的折叠读使能信号传输给所述滤波器功能实现模块,以使得写入数据缓存器的待滤波数据的数量大于当前复用的FIR滤波器的转置使能计数阈值后,开始触发所述滤波计算子模块对所述待滤波数据进行折叠计算。当地址使能信号选择器在选择一种FIR滤波器对应的折叠读使能信号传输给所述滤波器功能实现模块时,地址使能信号选择器禁止另一种FIR滤波器对应的折叠读使能信号传输给所述滤波器功能实现模块。对应到图2中,地址使能信号选择器的一个输入端用于输入非半带滤波器对应的折叠读使能信号,表示为图2的信号raddr_en;地址使能信号选择器的另一个输入端用于输入半带滤波器对应的折叠读使能信号,表示为图2的信号hb_raddr_en。其中,写入数据缓存器的待滤波数据的数量大于当前复用的FIR滤波器的转置使能计数阈值时,地址使能信号选择器选通输出的折叠读使能信号为高电平,对应到图1和图2的信号fir_raddr_en是高电平;写入数据缓存器的待滤波数据的数量小于或等于当前复用的FIR滤波器的转置使能计数阈值时,地址使能信号选择器选通输出的折叠读使能信号为低电平,对应到图1和图2的信号fir_raddr_en是低电平。在一些实施例中,地址使能信号选择器,用于在接收到滤波器类型选择信号后,再在写入数据缓存器的待滤波数据的数量大于当前复用的FIR滤波器的转置使能计数阈值后,选择当前复用的FIR滤波器对应的折叠读使能信号传输给所述滤波器功能实现模块,其中,当前选择传输的折叠读使能信号是高电平,以使得所述读写控制子模块开始触发所述滤波计算子模块对所述待滤波数据进行折叠计算。
如图2所示,所述滤波器类型选择模块还包括第一地址选择器和第二地址选择器;在所述滤波器类型选择模块内,第一地址选择器与一个地址计数器存在数据传输关系,第二地址选择器与另一个地址计数器存在数据传输关系,第一地址选择器和第二地址选择器都与所述前置地址选择器不同,第一地址选择器和第二地址选择器专门设计为:在所述写入数据缓存器的待滤波数据的数量大于当前复用的FIR滤波器的转置使能计数阈值时,选通所述滤波器类型选择模块与所述滤波器功能实现模块之间的数据通路;而在一些实施例中,所述写入数据缓存器的待滤波数据的数量小于或等于当前复用的FIR滤波器的转置使能计数阈值时,第一地址选择器和第二地址选择器禁止选通所述滤波器类型选择模块与所述滤波器功能实现模块之间的数据通路。
第一地址选择器,用于在接收到滤波器类型选择信号hb_sel后,选择当前复用的FIR滤波器对应的第一折叠读地址传输给所述滤波器功能实现模块,但禁止选通并输出另一种FIR滤波器对应的第一折叠读地址,以使得在所述写入数据缓存器的待滤波数据的数量大于当前复用的FIR滤波器的转置使能计数阈值时,所述读写控制子模块按照当前复用的FIR滤波器对应的读取时序,从所述数据缓存器中读取出第一折叠读地址中的待滤波数据;对应到图2中,选通输出的第一折叠读地址表现为图2中的第一地址选择器的输出端的信号fir_raddr1。当前复用的FIR滤波器对应的读取时序是由第一地址选择器选通的地址计数器的计数时序决定的,能够依据该地址计数器的计数值的变化而变化。在一些实施例中,在接收到滤波器类型选择信号hb_sel后,再在所述地址使能信号选择器输出的折叠读使能信号是高电平时,选择当前复用的FIR滤波器对应的第一折叠读地址传输给所述滤波器功能实现模块,以使得所述读写控制子模块按照当前复用的FIR滤波器对应的读取时序,从所述数据缓存器中读取出第一折叠读地址中的待滤波数据。
第二地址选择器,用于在接收到滤波器类型选择信号hb_sel后,选择当前复用的FIR滤波器对应的第二折叠读地址传输给所述滤波器功能实现模块,但禁止选通并输出另一种FIR滤波器对应的第二折叠读地址,以使得在所述写入数据缓存器的待滤波数据的数量大于当前复用的FIR滤波器的转置使能计数阈值时,所述读写控制子模块按照当前复用的FIR滤波器对应的读取时序,从所述数据缓存器中读取出第二折叠读地址中的待滤波数据;对应到图2中,选通输出的第二折叠读地址表现为图2中的第二地址选择器的输出端的信号fir_raddr2。当前复用的FIR滤波器对应的读取时序是由第二地址选择器选通的地址计数器的计数时序决定的,不同于第一地址选择器选通的地址计数器的计数时序,包括计数值的变化方向和计数值的初始值。在一些实施例中,在接收到滤波器类型选择信号hb_sel后,再在所述地址使能信号选择器输出的折叠读使能信号是高电平时,选择当前复用的FIR滤波器对应的第二折叠读地址传输给所述滤波器功能实现模块,以使得所述读写控制子模块按照当前复用的FIR滤波器对应的读取时序,从所述数据缓存器中读取出第二折叠读地址中的待滤波数据。
需要补充的是,第二折叠读地址的起始地址序号与第一折叠读地址的起始地址序号之间的地址偏移量等于所述当前复用的FIR滤波器的抽头数与数值1的差值,使得后续在对第二折叠读地址遍历的方向与第一折叠读地址的遍历方向不同的前提下,共同在同一段地址区间内遍历到每个地址,比如通过更新第一折叠读地址的方式来从首地址遍历至尾地址,通过更新第二折叠读地址的方式来从尾地址遍历至首地址,在地址偏移步长相同的情况下完整地完成同一段地址区间的遍历。
需要说明的是,所述当前复用的FIR滤波器的抽头数是由专门的寄存器配置的,具体是在所述滤波器类型选择模块完成配置;其中,所述相关联的读地址包括前置读地址、第二折叠读地址与第一折叠读地址,在本实施例中被配置为所述数据缓存器的读地址。
在本实施例中,所述FIR滤波器复用系统还设置有一个系统读写时钟源,用于计数产生系统时钟周期,对应到图1中读写控制子模块的端口1输出的时钟信号,本实施例将系统读写时钟源设计为所述FIR滤波器复用系统的主时钟,通过计数其产生的时钟节拍作为所述系统时钟周期。写入一个待滤波数据所耗费的时间配置为等于一个系统时钟周期,读取出一个待滤波数据所耗费的时间配置为等于一个系统时钟周期。在本实施例中,所述FIR滤波器复用系统用于将外部输入的一个波数据写入所述数据缓存器的时间配置为等于一个系统时钟周期,即在所述读写控制子模块的控制下,不包括其余的延时操作的前提下,一个待滤波数据写入所述数据缓存器的过程中,系统时钟的计数长度等于一个系统时钟周期,即一个写时钟周期等于一个系统时钟周期;所述FIR滤波器复用系统还用于从所述数据缓存器读取出一个数据所耗费的时间配置为等于一个系统时钟周期,即在所述读写控制子模块的控制下,不包括其余的延时操作的前提下,从所述数据缓存器读取一个待过滤数据的过程中,系统时钟计数长度等于一个系统时钟周期;其中,一个待滤波数据是所述滤波器功能实现模块从外部采样到的一个采样点的信息,在本实施例中也是所述读写控制子模块从所述数据缓存器内读取出的数据。所述写入数据缓存器的待滤波数据的数量是等于所述FIR滤波器复用系统从外部采样的待滤波数据的数量,但不一定作为实际进行滤波计算的待滤波数据的数量。
在上述实施例的基础上,所述滤波器功能实现模块还包括滤波计数器,具体是可以设置在所述读写控制子模块内,作为前述两种类型的FIR滤波器共用的计数逻辑部件;滤波计数器,用于每当所述FIR滤波器复用系统的外部或所述读写控制子模块向所述数据缓存器写入两个所述待滤波数据并且所述滤波计算子模块开始一次滤波计算时,则加一计数一次,以实现每经过两个系统时钟周期的写操作,则所述滤波计数器计数一次,满足当前复用的FIR滤波器的两倍抽取率的要求,然后触发所述滤波计算子模块利用所述数据缓存器输出的所述待滤波数据进行与所述当前复用的FIR滤波器相适应的滤波计算,包括触发所述读写控制子模块利用所述滤波器类型选择模块提供的相关联的读地址(从起始地址开始),从所述数据缓存器内依次读取出所述待滤波数据给所述滤波计算子模块;再在所述滤波计算子模块计算出对应的滤波结果时,即所述滤波计算子模块处理完当前从所述数据缓存器读取出的待滤波数据时,确定所述FIR滤波器复用系统从写入两个所述待滤波数据开始已经经过一个滤波周期,包括最初写入2个待过滤数据所需的两个系统时钟周期、从所述数据缓存器内依次读取出所述待滤波数据的总周期(具体的数值与实际从所述数据缓存器内读取到的所述待滤波数据的数量相关)、以及滤波计算所包含的相乘累加计算所需的周期。因此,一个滤波周期大于两个系统时钟周期;每经过一个滤波周期,则所述滤波计算子模块输出一个滤波结果;其中,所述当前复用的FIR滤波器的抽取率是2倍;需要补充是,滤波计数器的计数值的变化值是滤波计数器的实时计数值相对于初始计数值的变化值,该初始计数值是所述滤波计数器开始计数之前设置好的计数值,本实施例将所述滤波计数器的初始计数值设置为数值1。此外,写入所述数据缓存器的每个待滤波数据的位宽是由所述滤波器类型选择模块配置的,每个待滤波数据占据的位宽小于或等于所述数据缓存器允许读写的最大位宽。综上,该实施例确定当前复用的FIR滤波器是具备2倍抽取率的条件下,进行一次滤波计算所需的滤波周期及其计数规则,适应对所述FIR滤波器复用系统的滤波计算所耗费的周期的划分。
优选地,当写入数据缓存器的待滤波数据的数量使用所述滤波计数器的计数值的变化值表示时,基于所述滤波计数器是每写入两个待滤波数据则加一计数的时序规则,当前复用的FIR滤波器的转置使能计数阈值使用所述当前复用的FIR滤波器的抽头数与数值1的和值的一半来表示,使得当前复用的FIR滤波器的转置使能计数阈值与写入数据缓存器的待滤波数据的数量的大小关系等效于所述当前复用的FIR滤波器的抽头数与数值1的和值的一半与所述滤波计数器的计数值的变化值的大小关系,则便于对写入数据缓存器的待滤波数据的数量进行统计,该优选例是在所述当前复用的FIR滤波器的抽头数是奇数的应用场景下,有利于运用所述滤波计数器准确地获得每个滤波周期内实际写入所述数据缓存器的待滤波数据的数量。
优选地,当写入数据缓存器的待滤波数据的数量使用所述滤波计数器的计数值的变化值表示时,基于所述滤波计数器是每写入两个待滤波数据则加一计数的时序规则,当前复用的FIR滤波器的转置使能计数阈值使用所述当前复用的FIR滤波器的抽头数的一半来表示,使得当前复用的FIR滤波器的转置使能计数阈值与写入数据缓存器的待滤波数据的数量的大小关系等效于所述当前复用的FIR滤波器的抽头数的一半与所述滤波计数器的计数值的变化值的大小关系,其中,所述当前复用的FIR滤波器的抽头数是偶数。
在上述实施例中,所述根据写入数据缓存器的待滤波数据的数量与当前复用的FIR滤波器的转置使能计数阈值的大小关系,利用滤波器类型选择模块提供的相关联的读地址,从数据缓存器内依次读取出所述待滤波数据给所述滤波计算子模块的方式包括:在所述读写控制子模块确定出写入数据缓存器的待滤波数据的数量小于或等于当前复用的FIR滤波器的转置使能计数阈值的状态下,所述读写控制子模块在每个滤波周期内,按照当前复用的FIR滤波器对应的读取时序,依次从所述数据缓存器内读取出所述前置读地址中的待滤波数据,并传输给所述滤波计算子模块;其中,当前复用的FIR滤波器的转置使能计数阈值等于当前复用的FIR滤波器的抽头数;此时,当前复用的FIR滤波器对应的读取时序是由所述滤波计数器的计数时序决定或由所述滤波计数器的计数值间接触发的其余地址计数器的时序决定,且与当前复用的FIR滤波器的类型相关,从而利用当前复用的FIR滤波器的抽头数作为计数最大值进行读地址和读周期的划分,使得相关的计数器计数出的地址序号不超出当前复用的FIR滤波器的抽头数下所限定的读地址区间。
需要说明的是,所述前置读地址在每个滤波周期内由一个初始前置地址序号开始进行计数获得,具体是由所述前置地址选择器相连接的地址计数器的计数值决定的;其中,每个滤波周期内的一个初始前置地址序号是属于该滤波周期内第一个参与读取操作的前置读地址序号,以使得初始前置地址序号对应的前置读地址中的待滤波数据被按对应的读取时序传输至所述滤波计算子模块。
在前述实施例中,所述滤波器类型选择信号是第一逻辑电平时,当前复用的FIR滤波器是所述非半带滤波器,使得所述FIR滤波器复用系统复用为所述非半带滤波器,具体是由所述滤波器类型选择模块、读写控制子模块和所述滤波计算子模块在确定的滤波器类型选择信号后起到相应类型的FIR滤波器的滤波效果;所述滤波器类型选择信号是第二逻辑电平时,当前复用的FIR滤波器是所述半带滤波器,使得所述FIR滤波器复用系统复用为所述半带滤波器。进一步地,若第一逻辑电平是高电平,则第二逻辑电平是低电平;若第二逻辑电平是高电平,则第一逻辑电平是低电平。
作为一种读取数据的实施方式,在写入数据缓存器的待滤波数据的数量小于或等于当前复用的FIR滤波器的转置使能计数阈值的状态下,所述读写控制子模块将所述滤波计数器在每个滤波周期内的计数值相对于其初始计数值的变化值的两倍与数值2的差值设置为对应滤波周期内的初始前置地址序号,满足两倍抽取率的读取要求,其中,该初始计数值是滤波计数器开始计数之前设置好的计数值。具体地,本实施例设置在所述数据缓存器内的初始前置地址序号是支持配置为0,由于所述前置读地址在每个滤波周期内由一个初始前置地址序号开始进行计数获得,所以,所述读写控制子模块在其中一个滤波周期内是可以从地址序号0的位置开始读取待滤波数据,提高读取数据的地址区间的覆盖率。在该实施例中,每个滤波周期下,先是使用两个连续的系统时钟周期依次向所述数据缓存器写入两个待滤波数据,再按照相应的读取时序从所述数据缓存器内读取数据至所述滤波计算子模块以进行滤波计算;优选地,开始进行一次滤波计算时,所述滤波计数器除了对最初写入的两个待滤波数据进行加一计数操作之外,在同一个滤波周期内没有进行计数操作,而是保持计数值直至写入新的待滤波数据。
在图3的实施例中,所述写入数据缓存器的待滤波数据的数量小于或等于所述当前复用的FIR滤波器的转置使能计数阈值的情况下,即所述写入数据缓存器的待滤波数据的数量小于或等于5(所述当前复用的FIR滤波器的抽头数等于5,所述当前复用的FIR滤波器的抽头数等于所述当前复用的FIR滤波器的转置使能计数阈值)时,所述初始前置地址序号对应到图3的初始地址序号,按照所述滤波计数器在每个滤波周期内的计数值相对于其初始计数值的变化值的两倍与数值2的差值设置为对应滤波周期内的初始前置地址序号的计算处理方式,第一个滤波周期的初始前置地址序号是0,其中,第一个滤波周期内写入数据缓存器的待滤波数据的数量是数值1;第二个滤波周期的初始前置地址序号是2,第三个滤波周期的初始前置地址序号是数值4,此时,已经写入5个待滤波数据,从新写入的到最先写入的依次为X5、X4、X3、X2以及X1。则所述滤波计数器的计数值也可以用于标记当前所处的滤波周期的序号。
在一些实施例中,所述数据缓存器的地址0上总有一格新的数据进入图3的窗口并占据窗口的第一个位置,特别的,图3的第一个滤波周期内所述FIR滤波器复用系统的外部只向所述数据缓存器写入一个待滤波数据X1,相应地,第一个滤波周期内的初始前置地址序号是数值0,可以是所述滤波器类型选择模块预先配置的;所述滤波子计算模块利用该待滤波数据进行滤波计算并输出滤波结果y0,属于第一个滤波周期内的滤波结果;因此,第一个滤波周期内,由于只是写入一个待滤波数据,所述读写控制子模块将所述滤波计数器在每个滤波周期内的计数值相对于其初始计数值的变化值设置为对应滤波周期内的初始前置地址序号,则初始前置地址序号可以是数值0或数值1。
作为一种实施例,所述读写控制子模块还包括基准地址计数器;基准地址计数器,用于每当外部向所述数据缓存器写入两个所述待滤波数据以触发所述滤波计算子模块开始执行一次滤波计算时,则执行一次计数值的自加操作,并将自加操作得到的计数值配置为折叠基准地址序号,并在每个所述滤波周期内将自加操作后得到的折叠基准地址序号传输给所述滤波器类型选择模块,再将折叠基准地址序号更新为第一折叠读地址序号,并将折叠基准地址序号与数值1的和值更新为第二折叠读地址序号,即将更新出的第一折叠读地址序号传输到与所述第一地址选择器相连接的地址计数器中以作为该地址计数器的初始计数值,同时将更新出的第二折叠读地址序号传输到与所述第二地址选择器相连接的地址计数器中以作为该地址计数器的初始计数值。需要说明的是,第二折叠读地址序号用于表示第二折叠读地址在所述数据缓存器内的地址排序;第一折叠读地址序号用于表示第一折叠读地址在所述数据缓存器内的地址排序;折叠基准地址序号表示折叠基准地址在所述数据缓存器内的排序,折叠基准地址在所述滤波器类型选择模块内被配置为对所有第一折叠读地址的读操作中的第一个读地址,折叠基准地址序号与数值1的和值被配置为对所有第二折叠读地址的读操作中的第一个读地址。在本实施例中,所述当前复用的FIR滤波器的转置使能计数阈值等于所述当前复用的FIR滤波器的抽头数;所述当前复用的FIR滤波器的抽取率是2倍;在本实施例中,所述基准地址计数器在所述读写控制子模块在每一个所述滤波周期内开始读取待滤波数据则执行一次自加操作,等效于:每当所述滤波计算子模块开始执行一次滤波计算以输出一个滤波结果时,所述基准地址计数器执行一次自加操作。
与前述的滤波计数器相比,本实施例公开的基准地址计数器可以用于在所述写入数据缓存器的待滤波数据的数量大于当前复用的FIR滤波器的转置使能计数阈值时,所述基准地址计数器继续执行计数值的自加操作;且所述基准地址计数器在每次自加操作中产生计数值的变化值是数值2,且并在每个所述滤波周期内将自加操作后得到的折叠基准地址序号传输给所述滤波器类型选择模块;因为每当为了输出一个滤波结果而开始一次滤波计算时,需要按照两倍抽取率连续写入两个待滤波数据,则所述基准地址计数器加一计数两次,即在一次自加操作中加二计数一次。当前述实施例公开的滤波计数器计数到所述写入数据缓存器的待滤波数据的数量大于所述当前复用的FIR滤波器的转置使能计数阈值的场景后,滤波计数器可能仍在执行自加操作以记录当前所处的滤波周期的序号或记录写入的待滤波数据的数量情况,没有将滤波计数器的计数值更新或配置为相关的读地址传输给所述滤波器类型选择模块。因此,所述基准地址计数器在写入数据缓存器的待滤波数据的数量超过所述当前复用的FIR滤波器的抽头数的情况下,为每个滤波周期下的需要抽取和滤波的待滤波数据提供对应起始读地址,作为真正进行滤波计算的数据的起始地址信息。
优选地,当基准地址计数器的计数值为当前复用的FIR滤波器的抽头数与数值2的差值后,所述读写控制子模块在下一个系统时钟周期将滤波起点地址序号更新为基准地址计数器当前获得的计数值,并将滤波起点地址序号更新为折叠基准地址序号,再将更新后的折叠基准地址序号传输给所述滤波器类型选择模块;其中,滤波起点地址序号是预先在所述数据缓存器内配置的一个地址序号,作为每个滤波周期内,参与读取操作的地址序号中,排序最小的一个地址序号,可以是数值0或数值1,而本实施例配合说明书附图进行说明,选择将其设置为数值0。其中,基准地址计数器存在初始计数值,可以是数值0或数值1,可以选择将其设置为数值1,其中,初始计数值是基准地址计数器开始计数之前设置好的计数值,因此,在当前复用的FIR滤波器的抽头数为奇数的前提下,所述基准地址计数器的计数值按照每一个滤波周期增加数值2的方式可以递增至当前复用的FIR滤波器的抽头数与数值2的差值,则所述读写控制子模块在下一个系统时钟周期将数值0更新为基准地址计数器当前获得的计数值以便于从滤波起点地址序号开始递增,并将数值0更新为折叠基准地址序号,让所述基准地址计数器有足够的计数范围去覆盖当前复用的FIR滤波器的抽头数所限定的有效地址区间,也避免所述基准地址计数器在按照每一个滤波周期增加数值2的方式递增的过程中出现计数值溢满的现象或避免让所述读写控制子模块读取到无效地址中的数据。
优选地,当基准地址计数器的计数值为当前复用的FIR滤波器的抽头数与数值1的差值后,所述读写控制子模块在下一个系统时钟周期将将滤波起点地址序号与数值1的和值更新为所述基准地址计数器当前获得的计数值,并将滤波起点地址序号与数值1的和值更新为折叠基准地址序号;其中,滤波起点地址序号是预先在所述数据缓存器内配置的一个地址序号,作为每个滤波周期内,参与读取操作的地址序号中,排序最小的一个地址序号,而本实施例配合说明书附图进行说明,选择将其设置为数值0。基准地址计数器的初始计数值是基准地址计数器开始计数之前设置好的计数值,可以是数值0或数值1,在当前复用的FIR滤波器的抽头数为奇数的前提下,为了配合图3和图4的说明,本优选例将该初始计数值设置为数值0,则所述基准地址计数器的计数值按照每一个滤波周期增加数值2的方式可以递增至当前复用的FIR滤波器的抽头数与数值1的差值,然后所述读写控制子模块在下一个系统时钟周期将数值1更新为基准地址计数器当前获得的计数值以便于从滤波起点地址序号与数值1的和值处开始重新递增,并将数值1更新为折叠基准地址序号,让所述基准地址计数器有足够的计数范围去覆盖当前复用的FIR滤波器的抽头数所限定的有效地址区间,也避免所述基准地址计数器在按照每经过一个滤波周期增加数值2的方式递增的过程中读取到无效地址(所述当前复用的FIR滤波器的抽头数限定的读取地址区间之外)中的数据。
作为一种实施例,所述折叠基准地址序号对应到图3的初始地址序号,本实施例将所述基准地址计数器在每个滤波周期内的计数值配置为每个滤波周期内的折叠基准地址序号,作为更新过的折叠基准地址序号;在图3中,上电启动后的一个系统时钟周期内(理解为第一个滤波周期)只写入一个待滤波数据,所以所述滤波计数器和所述基准地址计数器都不计数,但仍需进行一次滤波计算,则将第一个滤波周期的折叠基准地址序号为数值0,是所述基准地址计数器的初始计数值,也是所述第一个滤波周期内的初始前置地址序号,是为了进行第一次滤波计算而配置为所述基准地址计数器的初始计数值,以符合当前复用的FIR滤波器的抽头数等于奇数的条件下匹配的滤波计算要求,即预留出一个待滤波数据来配合二倍抽取率下所获取的数量为偶数的待滤波数据凑成一组数量为奇数的待滤波数据;其中,除了第一个滤波周期之外的每个滤波周期需读取两个待滤波数据才能完成一次滤波计算。所以第一个滤波周期内的折叠基准地址序号是数值0,是所述基准地址计数器的初始计数值。
然后,每开始一次滤波计算时,记为开始进入一个滤波周期。后续的滤波周期中,按照两倍抽取率,每当向所述数据缓存器新写入两个待滤波数据,则开始一次滤波计算,则确定所述滤波计数器需要计数一次。完成第一次滤波计算后,即经过一个滤波周期后,第二个滤波周期中,第一行方框中的数据整体向右推移两个系数位,变成第三行方框中的数据,相对于第一行方框中的数据新增加两个数据占据最左侧的两个格,此时,所述滤波计算子模块开始新的一次滤波计算,则所述滤波计数器进行加一计数,所述基准地址计数器对第一个滤波周期内的折叠基准地址序号加二计数一次,获得的第二个滤波周期的折叠基准地址序号为数值2。完成第二次滤波计算并获得滤波结果y2后,在第三个滤波周期中,第三行方框中的数据整体向右推移两个系数位,变成第五行方框中的数据,相对于第三行方框中的数据新增加两个数据占据最左侧的两个格,此时所述滤波计算子模块开始新的一次滤波计算(第三次滤波计算),则所述滤波计数器进行加一计数,所述基准地址计数器对第二个滤波周期的折叠基准地址序号加二计数一次,得到第三个滤波周期的折叠基准地址序号为数值4;从而产生:相邻两个滤波周期下获得的初始前置地址之间的地址偏移量等于所述当前复用的FIR滤波器的抽取率,则所述滤波计数器可以用于对写入所述数据缓存器的待滤波数据的移位操作进行计数,便于使用移位寄存器缓存新写入的待滤波数据。完成第三次滤波计算并获得一个滤波结果y4后,在第四个滤波周期中,第五行方框中的数据整体向右推移两个系数位,变成第七行方框中的数据,相对于第五行方框中的数据新增加两个数据占据最左侧的两个格,此时,所述写入数据缓存器的待滤波数据的数量大于所述当前复用的FIR滤波器的转置使能计数阈值的情况下,即所述写入数据缓存器的待滤波数据的数量大于5(所述当前复用的FIR滤波器的抽头数等于5,所述当前复用的FIR滤波器的抽头数等于所述当前复用的FIR滤波器的转置使能计数阈值),此时所述滤波计算子模块开始新的一次滤波计算(第四次滤波计算),此时,累计写入5个待滤波数据。由于第三个滤波周期的折叠基准地址序号相对于第一个滤波周期内的折叠基准地址序号的变化值是当前复用的FIR滤波器的抽头数与数值1的差值,即基准地址计数器的计数值的变化值为当前复用的FIR滤波器的抽头数与数值1的差值,所以将滤波起点地址序号与数值1的和值配置为第四个滤波周期的折叠基准地址序号,等于数值1,对应到图3中的第四个滤波周期的初始地址序号;其中,滤波起点地址序号是数值0。需要说明的是,滤波起点地址序号是预先在所述数据缓存器内配置的一个地址序号,作为每个滤波周期内,参与读取操作的地址序号中,排序最小的一个地址序号,此时,滤波起点地址序号可以是数值0或数值1,而图3选择将滤波起点地址序号设置为数值0来进行说明。
值得注意的是,为了获得第四个滤波周期的折叠基准地址序号,若基准地址计数器继续对第四个滤波周期的折叠基准地址序号进行自加操作(一次自加操作中产生计数值的变化值是数值2),则获得的折叠基准地址序号超出所述当前复用的FIR滤波器的抽头数,在根据该折叠基准地址序号容易读取到无效数据,不适合设置为图3中的初始地址序号,所以将图3中的第四个滤波周期的初始地址序号设置为数值1。
完成第四次滤波计算并获得滤波结果y6后,在第五个滤波周期中,第七行方框中的数据整体向右推移两个系数位,变成第九行方框中的数据,相对于第七行方框中的数据新增加两个数据占据最左侧的两个格,此时,所述写入数据缓存器的待滤波数据的数量大于所述当前复用的FIR滤波器的转置使能计数阈值的情况下,即所述写入数据缓存器的待滤波数据的数量大于5(所述当前复用的FIR滤波器的抽头数等于5,所述当前复用的FIR滤波器的抽头数等于所述当前复用的FIR滤波器的转置使能计数阈值),此时所述滤波计算子模块开始新的一次滤波计算(第五次滤波计算)以获得滤波结果y8,则所述基准地址计数器加二计数一次,获得的第五个滤波周期的折叠基准地址序号是数值3。需要说明的是,前述初始地址序号是用于所述滤波计算子模块进行滤波计算所需的第一个操作地址,也是每个滤波周期内,第一个参与计算的数据所在的地址。
作为一种复用为抽头数等于5的所述非半带滤波器的实施例一,结合前述实施例可知,所述滤波器类型选择模块包括前置地址计数器,是图2中的前置地址计数器_N,用于在所述滤波器类型选择信号是第一逻辑电平时工作;当前复用的FIR滤波器是所述非半带滤波器,且写入数据缓存器的待滤波数据的数量小于或等于所述当前复用的FIR滤波器的转置使能计数阈值的状态下,前置地址计数器_N用于从当前一个滤波周期对应的初始前置地址序号开始,按照所述系统时钟周期进行自减操作,具体是在当前一个滤波周期下利用所述读写控制子模块中对应换算出的初始前置地址序号进行自减操作,可选地,在进行第一次自减操作之前,需要延时一段时间以让写入的待滤波数据稳定地缓存到所述数据缓存器内;同时将每次自减操作后的前置读地址交由所述前置地址选择器传输至所述滤波器功能实现模块,以触发所述读写控制子模块从所述数据缓存器内读取出每次自减操作后的前置读地址中的待滤波数据,再依次传输给所述滤波计算子模块,直至最新得到的前置读地址序号为数值0或数值1;本实施例中的前置地址计数器_N设置的初始计数值是初始前置地址序号,可以是数值0或数值1;前置地址计数器作为递减计数器,前置地址计数器_N每自减一次,对应产生的计数值的变化值是数值1,且每次自减操作后产生的计数值被配置为前置读地址序号,使得每次自减操作后相对于上一次自减操作得到新的前置读地址序号。因此,前置地址计数器_N选通所述滤波器类型选择模块、所述读写控制子模块与所述数据缓存器之间的用于所述非半带滤波器进行数据读取(两倍抽取)的数据通路,将所述前置地址计数器_N每次自减操作得到的前置读地址序号传输至所述读写控制子模块以实现按照该前置读地址序号两倍的抽取率读取所述数据缓存器内的数据。
在上述实施例一的基础上,当前复用的FIR滤波器是所述非半带滤波器,仍然是在写入数据缓存器的待滤波数据的数量小于或等于当前复用的FIR滤波器的转置使能计数阈值的实施场景下,所述滤波器系数存储器用于在每个滤波周期内,可以是在所述读写控制子模块的控制下或内置的计数器的驱动下,从当前复用的FIR滤波器相匹配的起始存储地址开始,即在所述滤波器类型选择信号是第一逻辑电平时,从所述滤波器类型选择模块内部预先配置的与非半带滤波器相对应的滤波器系数的基地址开始,按照所述系统时钟周期对起始存储地址进行自加操作,再按照自加得到的存储地址将对应存储的滤波器系数依次读出至所述滤波计算子模块,具体是在每个系统时钟周期下对已经获得存储地址进行加一,在同一系统时钟周期内,存储地址的地址偏移步长与前述的前置读地址的地址偏移步长(每个系统时钟周期下的自减掉的地址序号)相等,且保持在同一所述系统读写时钟源下进行变化,使得在一个滤波周期内,参与同一次滤波计算所需的滤波器系数的读取顺序与待滤波数据的读取顺序相同,直至自加得到的存储地址相对于所述起始存储地址的地址偏移量等于所述当前复用的FIR滤波器的抽头数与数值1的差值的一半;然后所述滤波器系数存储器将最新得到的存储地址记为中间计算存储地址,再对中间计算存储地址进行自减操作,再按照自减得到的存储地址将对应存储的滤波器系数依次读出至所述滤波计算子模块,直至自减得到的存储地址相对于中间计算存储地址的地址偏移量等于所述当前复用的FIR滤波器的抽头数与数值1的差值的一半,使得在获得中间计算存储地址之前的自加操作得到的存储地址与在获得中间计算存储地址之后的自减操作得到的存储地址组成所述当前复用的FIR滤波器的对称的滤波器系数;然后所述滤波器系数存储器在所述滤波计算子模块的控制下,重复前述的自加自减操作,直至当前一个滤波周期内从所述滤波器系数存储器内读取出的滤波器系数的数量满足当前一个滤波周期内参与滤波计算的待滤波数据的数量,即当前一个滤波周期内从所述滤波器系数存储器内读取出的滤波器系数的数量等于当前一个滤波周期内参与滤波计算的待滤波数据的数量。需要说明的是,对起始存储地址进行自加操作的过程中,每自加一次,则存储地址对应的地址序号增加数值1;对所述中间计算存储地址进行自减操作的过程中,每自减一次,则存储地址对应的地址序号减少数值1;所述滤波器系数存储器中的存储地址对应的地址序号用于表示该存储地址在所述滤波器系数存储器内地址排序;所述当前复用的FIR滤波器的抽头数是奇数。其中,所述中间计算存储地址是设置在所述滤波器系数存储器内,用于存储与当前复用的FIR滤波器相匹配(本实施例中是复用为所述非半带滤波器)的滤波器系数的地址中,排序最大的地址,即存储相应的滤波器系数的地址区间的尾地址。
在一些实施例中,如图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滤波器的转置使能计数阈值的状态下,控制数据缓存器输出的待滤波数据以及滤波器系数存储器输出的相同读取排序的滤波器系数进行乘法运算,并将结果输入到加法器进行累加处理,得到每个滤波周期内的处理后的滤波结果;其中,每个滤波周期内的乘法运算由一个乘法器分时复用实现,最大限度的减少乘法器资源;其中,所述滤波计算子模块包括加法器和乘法器,存在先执行乘法,再执行加法以实现累加的方式。对应到图3中,第三个滤波周期中获得的滤波结果y4等于X5与h1的乘积、X4与h2的乘积、X3与h3的乘积、X2与h2的乘积、以及X1与h1的乘积的和值,则第三个滤波周期内的乘法运算的次数等于5。
作为一种复用为抽头数等于5的所述非半带滤波器的实施例二,当前复用的FIR滤波器是所述非半带滤波器;当前复用的FIR滤波器的抽头数是奇数。在所述写入数据缓存器的待滤波数据的数量大于所述当前复用的FIR滤波器的转置使能计数阈值的状态下,所述滤波器类型选择模块用于在每一个滤波周期内,按照当前复用的FIR滤波器对应的读取时序对所述第一折叠读地址执行自减操作,再通过所述第一地址选择器将每次自减操作后的第一折叠读地址传输给所述读写控制子模块,以触发所述读写控制子模块从所述数据缓存器内读取出每次自减操作后的第一折叠读地址中的待滤波数据,直至自减操作的次数为第一预设折叠采样数目。
在上述实施例中,所述滤波器类型选择模块包括第一折叠地址计数器,结合图2可知,具体是与第一地址选择器相连接的第一折叠地址计数器_N,在所述滤波器类型选择信号是第一逻辑电平时,选通第一折叠地址计数器_N工作。第一折叠地址计数器_N,用于在所述滤波器类型选择模块确定将折叠基准地址序号配置为所述第一折叠读地址的起始地址序号之前,若所述滤波器类型选择模块判断到折叠基准地址序号等于所述滤波起点地址序号,则将滤波目标地址序号更新为折叠基准地址序号,再将更新后的折叠基准地址序号更新为第一折叠读地址的起始地址序号,以便于第一折叠读地址在自减操作的过程中减去合理的地址偏移值,获取有效地址中的待滤波数据,避免获得无效的数据而丢失与当前一个滤波周期内的滤波计算相关联的数据。需要说明的是,滤波目标地址序号是预先在所述数据缓存器内配置的一个地址序号,作为每个滤波周期内,参与读取操作的地址中,被读取的排序最大的一个地址的地址序号,所述滤波目标地址序号大于所述滤波起点地址序号,所述滤波目标地址序号与所述滤波起点地址序号的差值等于所述当前复用的FIR滤波器的抽头数与数值1的差值。所述滤波起点地址序号设置为数值0或数值1时,所述滤波目标地址序号设置为所述当前复用的FIR滤波器的抽头数与数值1差值;或者,所述滤波起点地址序号设置为数值1时,所述滤波目标地址序号设置为所述当前复用的FIR滤波器的抽头数。
然后,第一折叠地址计数器_N用于从第一折叠读地址的起始地址序号开始,对第一折叠读地址序号执行自减操作,以实现有序地在当前复用的非半带滤波器规定的两倍抽取率的基础上进行数据读取操作;其中,前述第一折叠读地址序号表示第一折叠读地址在所述数据缓存器内的排序;第一折叠地址计数器自减一次产生的计数值的变化值是数值1,使得对第一折叠读地址序号在一次自减操作中产生的变化值为数值1;第一折叠地址计数器_N在对第一折叠读地址序号执行自减操作的过程包括:将第一折叠读地址的起始地址序号配置为第一折叠读地址序号,每当第一折叠读地址序号自减至所述滤波起点地址序号,则在下一个系统时钟周期内将滤波目标地址序号更新为第一折叠读地址序号,使得所述第一折叠读地址在所述当前复用的FIR滤波器的抽头数限定的地址范围内实现地址回环遍历,既可以遍历到最新写入的待滤波数据,又可以减少缓存地址的分配量,值得注意的是,因为在先缓存的数据可以被及时的读取到所述滤波计算子模块内,所以最新写入的数据可以覆盖到在先缓存的数据所在的地址单元中。然后在排除上述自减至所述滤波起点地址序号或所述滤波目标地址序号的极端情况后,第一折叠地址计数器继续对第一折叠读地址序号执行自减操作。
需要说明的是,在所述当前复用的FIR滤波器对应的读取时序下,每连续两个系统时钟周期对所述第一折叠读地址执行一次自减操作以获得一个新的所述第一折叠读地址,并将这连续两个系统时钟周期记为第一折叠读地址的计数周期;所述当前复用的FIR滤波器对应的读取时序下,每连续两个系统时钟周期对所述第二折叠读地址执行一次自加操作以获得一个新的所述第二折叠读地址,并将这连续两个系统时钟周期记为第二折叠读地址的计数周期;所述写入数据缓存器的待滤波数据的数量大于所述当前复用的FIR滤波器的转置使能计数阈值的状态下,在所述读写控制子模块的控制下,在第一折叠读地址的计数周期内,读取第一折叠读地址中的待滤波数据至所述过滤计算子模块,并读取第二折叠读地址中的待滤波数据至所述过滤计算子模块;如此重复读取,直至在读取完当前一个滤波周期内限定的第一折叠读地址的待滤波数据和第二折叠读地址的待滤波数据。
另一方面,所述写入数据缓存器的待滤波数据的数量大于所述当前复用的FIR滤波器的转置使能计数阈值的状态下,所述滤波器类型选择模块还用于在每一个滤波周期内,按照当前复用的FIR滤波器对应的读取时序对所述第二折叠读地址执行自加操作,再通过所述第二地址选择器将将每次自加操作后的第二折叠读地址传输给所述读写控制子模块,以触发所述读写控制子模块从所述数据缓存器内读取出每次自加操作后的第二折叠读地址中的待滤波数据,直至自加操作的次数为第二预设折叠采样数目。
在上述实施例中,所述滤波器类型选择模块包括第二折叠地址计数器,结合图2可知,具体是与第二地址选择器相连接的第二折叠地址计数器_N,在在所述滤波器类型选择信号是第一逻辑电平时,选通第二折叠地址计数器_N工作。在所述滤波器类型选择模块确定将折叠基准地址序号配置为所述第二折叠读地址的起始地址序号之前,若所述滤波器类型选择模块判断到折叠基准地址序号等于滤波目标地址序号,第二折叠地址计数器_N将滤波起点地址序号更新为折叠基准地址序号,再将折叠基准地址序号与数值1的和值更新为第二折叠读地址的起始地址序号,以实现与第一折叠读地址的起始地址序号不重合,避免读取到相同的待滤波数据;然后,第二折叠地址计数器_N用于从第二折叠读地址的起始地址序号开始,对第二折叠读地址序号执行自加操作,其中,第二折叠地址计数器_N自加一次产生的计数值的变化值是数值1,使得对第二折叠读地址序号在一次自加操作中产生的变化值为数值1,以实现朝着与第一折叠读地址的不同的地址偏移方向,有序地在当前复用的非半带滤波器规定的两倍抽取率的基础上进行数据读取操作;其中,前述第二折叠读地址序号表示第二折叠读地址在所述数据缓存器内的排序;第二折叠地址计数器自加一次产生的计数值的变化值是数值1,使得对第二折叠读地址序号在一次自加操作中产生的变化值为数值1;然后第二折叠地址计数器_N在对第二折叠读地址序号执行自加操作的过程包括:将第二折叠读地址的起始地址序号配置为第二折叠读地址序号,每当第二折叠读地址序号自加至所述滤波目标地址序号,则在下一个系统时钟周期内将所述滤波起点地址序号更新为第二折叠读地址序号,使得所述第二折叠读地址在所述当前复用的FIR滤波器的抽头数限定的地址范围内实现地址回环遍历,既可以遍历到最新写入的待滤波数据,又可以减少缓存地址的分配量,进而配合所述第一折叠读地址的回环遍历,在同一个滤波周期内无重合地完整地遍历到当前复用的FIR滤波器的抽头数所限定的地址区间。
需要说明的是,在所述当前复用的FIR滤波器对应的读取时序下,每连续两个系统时钟周期对所述第二折叠读地址执行一次自加操作以获得一个新的所述第二折叠读地址,并将这连续两个系统时钟周期记为第二折叠读地址的计数周期;所述写入数据缓存器的待滤波数据的数量大于所述当前复用的FIR滤波器的转置使能计数阈值的状态下,在所述读写控制子模块的控制下,在第一折叠读地址的计数周期或第二折叠读地址的计数周期内(等效于连续的两个系统时钟周期内),读取第一折叠读地址中的待滤波数据至所述过滤计算子模块,并读取第二折叠读地址中的待滤波数据至所述过滤计算子模块,如此重复读取,直至在一个滤波周期内读取的待滤波数据的数量等于所述当前复用的FIR滤波器的抽头数,等于当前一个滤波周期内限定的第一折叠读地址的待滤波数据和第二折叠读地址的待滤波数据的数量。在该实施例中,在每个第一折叠读地址的计数周期或每个第二折叠读地址的计数周期内,读取的第一折叠读地址对应的第一折叠读地址序号相对于所述滤波起点地址序号的地址偏移量,等于所述滤波目标地址序号相对于读取的第二折叠读地址对应的第二折叠读地址序号的地址偏移量,以实现一个滤波周期内输入所述滤波计算子模块内的第二折叠读地址上的待滤波数据与地址位置对称的第一折叠读地址上的待滤波数据进行折叠计算。
在上述实施例中,在每个第一折叠读地址的计数周期或每个第二折叠读地址的计数周期内,读取的第一折叠读地址对应的第一折叠读地址序号相对于所述滤波起点地址序号的地址偏移量,等于所述滤波目标地址序号相对于读取的第二折叠读地址对应的第二折叠读地址序号的地址偏移量,形成以一个中间地址位置为中心的FIR滤波器结构首尾对称形式。
对应到图3抽取数据的窗口内,第4个滤波周期,抽头数为5时,按照所述滤波器类型选择模块传输过来的第一折叠读地址和第二折叠读地址,所述读写控制子模块先读取第7个输入数据X7(第一折叠读地址处的数据)与第3个输入数据X3(第二折叠读地址处的数据),组成第一对相加的参数送至所述滤波计算子模块;然后读取第6个输入数据X6(第一折叠读地址处的数据)与第4个输入数据X4(第二折叠读地址处的数据),组成第二对相加的参数送至所述滤波计算子模块;最后读取第5个输入数据X5(第一折叠读地址处的数据或第二折叠读地址处的数据),送至所述滤波计算子模块,读取完当前一个滤波周期内限定的第一折叠读地址的待滤波数据和第二折叠读地址的待滤波数据,也触发所述滤波计算子模块完成数据的折叠计算,使得所述滤波器功能实现模块完成所述写入数据缓存器的待滤波数据的数量大于所述当前复用的FIR滤波器的转置使能计数阈值的状态下的滤波计算。
值得注意的是,所述当前复用的FIR滤波器的抽头数是奇数;第二预设折叠采样数目大于第一预设折叠采样数目时,当前复用的FIR滤波器的抽头数与数值1的差值的一半与数值1的差值等于第一预设折叠采样数目,当前复用的FIR滤波器的抽头数与数值1的差值的一半等于第二预设折叠采样数目,使得第一折叠读地址提前所述第二折叠读地址停止变化,即所述第一折叠读地址先自减得到当前一个滤波周期内的中间地址位置,该中间地址位置是第一折叠地址计数器_N对所述第一折叠读地址最后一次减一而得到的地址位置;或者,第二预设折叠采样数目小于第一预设折叠采样数目时,当前复用的FIR滤波器的抽头数与数值1的差值的一半与数值1的差值等于第二预设折叠采样数目,当前复用的FIR滤波器的抽头数与数值1的差值的一半等于第一预设折叠采样数目,使得第二折叠读地址提前所述第一折叠读地址停止变化,即所述第二折叠读地址先自加得到当前一个滤波周期内的中间地址位置,该中间地址位置是第二折叠地址计数器_N对所述第二折叠读地址最后一次加一而得到的地址位置。
作为一种实施例,图3中,在第四个滤波周期内,从初始地址序号1开始,按照当前复用的FIR滤波器的抽头数限定下的系统时钟周期,包括抽头数支持的最大读取时间长度、以及读取单个数据的系统时钟周期,对所述第一折叠读地址进行自减操作,再通过所述第一地址选择器将每次自减操作后的第一折叠读地址传输给所述读写控制子模块,则所述读写控制子模块每接收到来自所述滤波器类型选择模块内部的一次自减操作得到的第一折叠读地址,则从所述数据缓存器内读取出相应的第一折叠读地址中的待滤波数据,依次为第七行方框内的X7、X6以及X5,此时,自减操作的次数为2次,等于当前复用的FIR滤波器的抽头数(数值5)与数值1的差值的一半,则获得3个第一折叠读地址中的待滤波数据。同时,所述读写控制子模块每接收到来自所述滤波器类型选择模块内部的一次自加操作得到的第二折叠读地址,则从所述数据缓存器内读取出相应的第二折叠读地址中的待滤波数据,依次为第七行方框内的X3和X4,此时,自加操作的次数为1次,等于当前复用的FIR滤波器的抽头数(数值5)与数值1的差值的一半与数值1的差值,则获得2个第二折叠读地址中的待滤波数据,停止读取数据。因此,在第四个滤波周期内,先后读取到的待滤波数据依次为X7、X3、X6、X4以及X5,其中,X7是最先读取出的待滤波数据,X5是最后读取出的待滤波数据,此时读取的第一折叠读地址中的待滤波数据和读取的第二折叠读地址中的待滤波数据已经满足当前复用的FIR滤波器的抽头数匹配的滤波计算。
进一步地,在第五个滤波周期内,从初始地址序号3开始,按照当前复用的FIR滤波器的抽头数限定下的系统时钟周期,对所述第一折叠读地址进行自减操作,所述读写控制子模块每接收到来自所述滤波器类型选择模块内部的一次自减操作得到的第一折叠读地址,则从所述数据缓存器内读取出相应的第一折叠读地址中的待滤波数据,依次为第九行方框内的X9、X8以及X7,此时,相对于第七行方框内的数据向右移动两个方格,但是第五个滤波周期内发生的自减操作的次数为2次,等于当前复用的FIR滤波器的抽头数(数值5)与数值1的差值的一半,则获得3个第一折叠读地址中的待滤波数据。因此,在第五个滤波周期内,先后读取到的待滤波数据依次为X9、X5、X8、X6以及X7,其中,X9是最先读取出的待滤波数据,X7是最后读取出的待滤波数据。
值得注意的是,图3中第四个滤波周期和第五个滤波周期中,对应到第七行的方框中的各个方格和第九行的方框的各个方格的排列顺序只是表示其内部的待滤波数据被读取的顺序,不代表其在所述数据缓存器内的实际存储顺序;同理,图3中偶数行的方框内的各个方格的排列顺序不代表其内部滤波器系数在所述滤波器系数存储器内的存储顺序,只是代表滤波器系数的读取顺序并与其上一行的待滤波数据的读取顺序相对应。
作为一种复用为抽头数等于5的所述非半带滤波器的实施例三,在写入数据缓存器的待滤波数据的数量大于当前复用的FIR滤波器的转置使能计数阈值的状态下,所述滤波器系数存储器用于在每个滤波周期内,可以是在所述读写控制子模块的控制下或内置的计数器的驱动下,从当前复用的FIR滤波器相匹配的起始存储地址开始,每两个系统时钟周期对起始存储地址进行自加操作一次,再按照自加得到的存储地址将对应存储的滤波器系数依次读出至所述滤波计算子模块,直至自加得到的存储地址相对于所述起始存储地址的地址偏移量等于所述当前复用的FIR滤波器的抽头数与数值1的差值的一半,然后将最新得到的存储地址记为中间计算存储地址,此时已经读取完滤波周期内所需处理的待滤波数据和滤波器系数;具体地,所述滤波器系数存储器内部设置的地址计数器或所述读写控制子模块内部设计的地址计数器,对起始存储地址对应的地址序号是每两个系统时钟周期加一计数一次并生成对应的地址序号,配置为与一个第一折叠读地址的计数周期或每个第二折叠读地址的计数周期内读取出的第一折叠读地址和第二折叠读地址同时变化的存储地址,该存储地址中的滤波器系数与所述第一折叠读地址的计数周期内的第一折叠读地址和第二折叠读地址中的待滤波数据在同一个所述第一折叠读地址的计数周期内读取到所述滤波计算子模块内,构成一组先加后乘的计算项,即第一折叠读地址和第二折叠读地址中的待滤波数据的和值与滤波器系数相乘。其中,在对起始存储地址进行自加操作的过程中,每自加一次,则存储地址对应的地址序号增加数值1;在本实施例中不需对起始存储地址进行自减操作,相对于所述写入数据缓存器的待滤波数据的数量小于或等于所述当前复用的FIR滤波器的转置使能计数阈值的情况,不需要对存储地址进行回环遍历,节省读取操作量。
需要补充的是,所述起始存储地址是由所述滤波器类型选择模块选择确定,以匹配当前复用的FIR滤波器;其中,存储地址对应的地址序号用于表示该存储地址在所述滤波器系数存储器内地址排序;在上述实施例三中,相对于抽头数等于5的所述非半带滤波器的实施例一,在所述滤波器系数存储器内,除了所述中间计算存储地址之外,存在一半的地址不被重复读取,本实施例则不在相应的地址处写入滤波器系数,减少滤波器系数的存储量。其中,所述当前复用的FIR滤波器的抽头数是奇数。
所述滤波计算子模块,用于在写入数据缓存器的待滤波数据的数量大于当前复用的FIR滤波器的转置使能计数阈值的状态下,在每个第一折叠读地址的计数周期或每个第二折叠读地址的计数周期内,先控制所述数据缓存器输出的第一折叠读地址中的待滤波数据与所述数据缓存器输出的第二折叠读地址中的待滤波数据相加;再将相加的结果与所述滤波器系数存储器输出的相同读取排序的滤波器系数进行乘法运算;然后将相乘结果输入到加法器进行累加处理,在每个滤波周期内如此重复,直至所述滤波器系数存储器输出所述中间计算存储地址中的滤波器系数时,将所述中间计算存储地址中的滤波器系数与所述数据缓存器在同一读取排序下输出的第一折叠读地址中的待滤波数据进行乘法运算,再将相乘结果输入到加法器进行累加处理,得到对应的滤波周期内的处理后的滤波结果,完成一次滤波计算,即完成一个滤波周期内的滤波计算。其中,每个滤波周期内,乘法运算的次数等于所述当前复用的FIR滤波器的抽头数与数值1的和值的一半,且由一个乘法器分时复用实现;其中,所述滤波计算子模块包括加法器和乘法器,所述当前复用的FIR滤波器的抽头数;其中,所述当前复用的FIR滤波器的转置使能计数阈值等于当前复用的FIR滤波器的抽头数。本实施例在滤波计算子模块中使用相同的乘法器资源实现不同滤波周期下的新输入的待滤波数据与同一组滤波器系数的相乘运算,提高不同类型的滤波器读取数据的条件下的乘法器资源的复用率。
对应到图3中,在第四个滤波周期内,X7(第一次读取的第一折叠读地址中的待滤波数据,即第一次读取的待滤波数据)与X3(第一次读取的第二折叠读地址中的待滤波数据,即第二次读取的待滤波数据)是一组折叠数据,相加得到第一个折叠值,同时,从所述滤波器系数存储器读取到滤波器系数h1;
然后,X6(第二次读取的第一折叠读地址中的待滤波数据,即第三次读取的待滤波数据)与X4(第二次读取的第二折叠读地址中的待滤波数据,即第四次读取的待滤波数据)是另一组折叠数据,相加得到第第二个折叠值,同时,从所述滤波器系数存储器读取到滤波器系数h2;然后,从所述滤波器系数存储器中读取出所述中间计算存储地址中的滤波器系数h3,一般将所述中间计算存储地址中的滤波器系数设定为固定的参数,对于抽头数为奇数的任意FIR滤波器都适用。针对这些折叠数据,所述滤波计算子模块从所述滤波器系数存储器输出相对应位置的滤波器系数进行相乘,进行折叠计算,具体地,折叠计算获得的滤波结果y6等于:X7(第一次读取的第一折叠读地址中的待滤波数据,即第一次读取的待滤波数据)与X3(第一次读取的第二折叠读地址中的待滤波数据,即第二次读取的待滤波数据)相加得到的和值与第一次读取的滤波器系数h1的乘积、X6(第二次读取的第一折叠读地址中的待滤波数据,即第三次读取的待滤波数据)与X4(第二次读取的第二折叠读地址中的待滤波数据,即第四次读取的待滤波数据)相加得到的和值与第二次读取的滤波器系数h2的乘积、以及X5(第三次读取的第一折叠读地址中的待滤波数据,即第五次读取的待滤波数据)与第三次读取的滤波器系数h3的乘积的和值。
作为一种实施例,所述当前复用的FIR滤波器的抽头数等于7,且所述当前复用的FIR滤波器是半带滤波器,所述折叠基准地址序号对应到图4的初始地址序号,本实施例将所述基准地址计数器在每个滤波周期内的计数值配置为每个滤波周期内的折叠基准地址序号,作为更新过的折叠基准地址序号;第一个滤波周期内的折叠基准地址序号是0,是为了进行第一次滤波计算而配置为所述基准地址计数器的初始计数值,以符合当前复用的FIR滤波器的抽头数等于奇数的条件下匹配的滤波计算要求,即预留出一个待滤波数据来配合二倍抽取率下所获取的数量为偶数的待滤波数据组成一组数量为奇数的待滤波数据;其中,除了第一个滤波周期之外的每个滤波周期内所述读写控制子模块需读取两个待滤波数据才能完成一次滤波计算。
在图4中,完成第一次滤波计算并获得滤波结果y1后,即经过一个滤波周期后,第二个滤波周期中,第一行方框中的数据整体向右推移两个系数位,变成第三行方框中的数据,相对于第一行方框中的数据新增加两个数据占据最左侧的两个格,此时,所述滤波计算子模块开始新的一次滤波计算,所述基准地址计数器对第一个滤波周期的折叠基准地址序号加二计数一次,获得的第二个滤波周期的折叠基准地址序号为数值2。完成第二次滤波计算并获得滤波结果y3后,在第三个滤波周期中,第三行方框中的数据整体向右推移两个系数位,变成第五行方框中的数据,相对于第三行方框中的数据新增加两个数据占据最左侧的两个格,此时所述滤波计算子模块开始新的一次滤波计算(第三次滤波计算),所述基准地址计数器对第二个滤波周期的折叠基准地址序号加二计数一次,获得的第三个滤波周期的折叠基准地址序号是数值4。完成第三次滤波计算并获得滤波结果y5后,在第四个滤波周期中,第五行方框中的数据整体向右推移两个系数位,变成第七行方框中的数据,相对于第五行方框中的数据新增加两个数据占据最左侧的两个格,此时所述滤波计算子模块开始新的一次滤波计算(第四次滤波计算),所述基准地址计数器对第三个滤波周期的折叠基准地址序号加二计数一次,获得第四个滤波周期的折叠基准地址序号是数值6。完成第四次滤波计算并获得滤波结果y7后,在第五个滤波周期中,第七行方框中的数据整体向右推移两个系数位,变成第九行方框中的数据,相对于第七行方框中的数据新增加两个数据占据最左侧的两个格,此时,所述写入数据缓存器的待滤波数据的数量大于所述当前复用的FIR滤波器的转置使能计数阈值的情况下,即所述写入数据缓存器的待滤波数据的数量大于7(所述当前复用的FIR滤波器的抽头数等于7,所述当前复用的FIR滤波器的抽头数等于所述当前复用的FIR滤波器的转置使能计数阈值),此时所述滤波计算子模块开始新的一次滤波计算(第五次滤波计算)以获得滤波结果y9,此时,所述数据缓存器已经存入9个待滤波数据;由于第四个滤波周期的折叠基准地址序号(数值6)相对于第一个滤波周期内的折叠基准地址序号(数值0)的地址偏移量是当前复用的FIR滤波器的抽头数与数值1的差值(数值6),即基准地址计数器的计数值的变化值为当前复用的FIR滤波器的抽头数与数值1的差值,所以将滤波起点地址序号与数值1的和值配置为第五个滤波周期的折叠基准地址序号,等于数值1,对应到图4中的第五个滤波周期的初始地址序号;但是图4的方框中只是显示被抽取的数据,对应地,第五个滤波周期的第九行方框中的X9、X3、X7、X5及X6。
需要说明的是,滤波起点地址序号是预先在所述数据缓存器内配置的一个地址序号,作为每个滤波周期内,参与读取操作的地址序号中,排序最小的一个地址序号,此时,滤波起点地址序号是数值0或数值1。值得注意的是,为了获得第五个滤波周期中的折叠基准地址序号,若基准地址计数器以第四个滤波周期的折叠基准地址序号为所述折叠基准地址序号来进行自加操作(一次自加操作中产生计数值的变化值是数值2),而不是配置为数值1,则获得的折叠基准地址序号超出所述当前复用的FIR滤波器的抽头数,在根据该折叠基准地址序号容易读取到无效数据,不适合设置为图4中的初始地址序号,所以将图4中的第四个滤波周期的初始地址序号设置为数值1。
作为一种复用为抽头数等于7的所述半带滤波器的实施例一,结合前述实施例,除了所述非半带滤波器的实施例之外,可知,所述滤波器类型选择模块包括前置地址计数器,是图2中的前置地址计数器_HB,用于在所述滤波器类型选择信号是第二逻辑电平时工作;若当前复用的FIR滤波器是所述半带滤波器,且写入数据缓存器的待滤波数据的数量小于或等于当前复用的FIR滤波器的转置使能计数阈值的状态下,前置地址计数器_HB用于从当前一个滤波周期对应的初始前置地址序号开始,按照所述系统时钟周期进行自减操作,得到新的前置读地址,并将每次自减操作后的前置读地址交由所述前置地址选择器传输至所述滤波器功能实现模块,以触发所述读写控制子模块从所述数据缓存器内读取出每次自减操作后的前置读地址中的待滤波数据,再依次传输给所述滤波计算子模块,直至最新得到的前置读地址序号为数值1或数值0;本实施例中的前置地址计数器_HB设置的初始计数值是初始前置地址序号,可以是数值0或数值1;前置地址计数器作为递减计数器,前置地址计数器_HB每自减一次,对应产生的计数值的变化值是数值2以满足半带滤波器中每隔两个地址就读取一个数据计算的要求,且每次自减操作后产生的计数值被配置为前置读地址序号。因此,前置地址计数器_HB选通所述滤波器类型选择模块、所述读写控制子模块与所述数据缓存器之间的用于所述半带滤波器进行数据读取(两倍抽取)的数据通路,将所述前置地址计数器_HB每次自减操作得到的前置读地址序号传输至所述读写控制子模块以实现按照该前置读地址序号两倍的抽取率读取所述数据缓存器内的一半数据。
作为一种实施例,在一个滤波周期内,当所述半带滤波器的抽头数与数值1的差值的一半与数值1的差值等于所述前置地址计数器_HB执行前述的自减操作的次数的两倍后,即所述前置地址计数器_HB执行前述的自减操作所产生的计数值的变化值(相对于当前一个滤波周期对应的初始前置地址序号产生的变化值)等于所述半带滤波器的抽头数(抽头数等于数值7)与数值1的差值的一半与数值1的差值时,所述前置地址计数器_HB将当前得到的前置读地址序号与数值1的差值更新为所述前置读地址序号,并允许所述读写控制子模块读取该前置读地址序号中的待滤波数据,从而在前置地址计数器的减二计数操作产生前置读地址的过程中,允许当前得到的前置读地址序号与数值1的差值更新为新的前置读地址序号(计数器对计数值的置数作用)并赋予其参与半带滤波器的滤波计算的机会,本实施例还同时将前置读地址序号标记为中间前置读地址序号;然后,所述前置地址计数器_HB,用于在获得中间前置读地址序号之后,先对所述中间前置读地址序号减一计数,获得所述中间前置读地址序号与数值1的差值,其中,所述中间前置读地址序号与数值1的差值允许被更新为前置读地址序号,即允许中间前置读地址序号与数值1的差值作为新的前置读地址序号去参与半带滤波器的滤波计算;然后从中间前置读地址序号与数值1的差值开始,继续执行前述的自减操作,得到新的前置读地址。其中,这里的自减操作是所述前置地址计数器_HB在一次自减操作中减少的计数值是数值2,导致前置读地址序号在一次自减操作中发生地址偏移量是数值2,当前获得的前置读地址序号相对于上一次获得的前置读地址序号减少数值2。且中间前置读地址序号与前置读地址序号具备相同的意义,都是用于表示前置读地址在所述数据缓存器内的地址排序。
在本实施例一的基础上,若当前复用的FIR滤波器是所述半带滤波器,相应地,所述滤波器系数存储器内偶数排序的地址位置处存储的滤波器系数都是0,不用输出至所述滤波计算子模块进行计算。在写入数据缓存器的待滤波数据的数量小于或等于当前复用的FIR滤波器的转置使能计数阈值的状态下,所述滤波器系数存储器用于在每个滤波周期内,从当前复用的FIR滤波器相匹配的起始存储地址开始,即在所述滤波器类型选择信号是第二逻辑电平时,可以是在所述读写控制子模块的控制下或内置的计数器的驱动下,按照所述系统时钟周期对起始存储地址进行自加操作,再按照自加得到的存储地址将对应存储的滤波器系数依次读出至所述滤波计算子模块,直至自加得到的存储地址相对于所述起始存储地址的地址偏移量等于所述当前复用的FIR滤波器的抽头数与数值1的和值的二分之一,然后将最新得到的存储地址记为中间计算存储地址,此时的中间计算存储地址与所述数据缓存器内的所述中间前置读地址序号输出的数据是同步的,使得二者存储的数据参与乘法运算;再对中间计算存储地址进行自减操作,再按照自减得到的存储地址将对应存储的滤波器系数依次读出至所述滤波计算子模块,具体是在每一次自加操作下对已经获得存储地址进行加数值2,则在同一个系统时钟周期下,存储地址的地址偏移步长与前述的前置读地址的地址偏移步长相等,且保持在同一所述系统读写时钟源下进行变化,使得在一个滤波周期内,参与同一次滤波计算所需的滤波器系数的读取顺序与待滤波数据的读取顺序相同,直至自减得到的存储地址相对于中间计算存储地址的地址偏移量等于所述当前复用的FIR滤波器的抽头数与数值1的和值的二分之一,依次重复,直至在当前一个滤波周期内从所述滤波器系数存储器内输出的滤波器系数的数量等于当前一个滤波周期内读取出的待滤波数据的数量。本实施例中,所述滤波器系数存储器在所述滤波计算子模块的控制下,从当前复用的FIR滤波器相匹配的起始存储地址开始进行自加操作;再从自加达到的中间计算存储地址开始进行自减操作,如此重复,直至当前一个滤波周期内从所述滤波器系数存储器内读取出的滤波器系数的数量满足当前一个滤波周期内参与滤波计算的待滤波数据的数量,当前一个滤波周期内从所述滤波器系数存储器内读取出的滤波器系数的数量等于当前一个滤波周期内参与滤波计算的待滤波数据的数量。需要说明的是,对起始存储地址进行自加操作的过程中,对起始存储地址进行自加操作的过程中,每隔一个系统时钟周期则自加一次,则存储地址对应的地址序号增加数值2;对起始存储地址进行自减操作的过程中,每隔一个系统时钟周期则自减一次,则存储地址对应的地址序号减少数值2;所述滤波器系数存储器中的存储地址对应的地址序号用于表示该存储地址在所述滤波器系数存储器内地址排序;所述当前复用的FIR滤波器的抽头数是奇数。其中,所述中间计算存储地址是设置在所述滤波器系数存储器内,用于存储与当前复用的FIR滤波器相匹配的滤波器系数的地址中,排序最大的地址,即存储相应的滤波器系数的地址区间的尾地址。
在图4中,在第四个滤波周期内,从初始地址序号(折叠基准地址序号)为数值6的地址位置开始,自左向右,第七行方框内的数据依次是所述读写控制子模块从所述数据缓存器内读取出的自减操作后的前置读地址中的待滤波数据,自左向右的方格中,越偏向左侧的方格内的数据是越早被读取到的,对应的地址位置是越先自减获得的前置读地址序号;越偏向右侧的方格内的数据是越晚被读取到的,对应的地址位置是越晚自减获得的前置读地址序号,优选地,每隔两个地址读取一个方格内的数据,从而在一个滤波周期内读取到奇数排序的地址位置。同理地,第八行方框内的数据依次是从所述滤波器系数存储器内读取出的自加操作后的存储地址中的滤波器系数,从h1的方格对应的地址位置开始,即所述当前复用的FIR滤波器相匹配的起始存储地址开始,自左向右的方格中,越偏向左侧的方格内的数据是越早被读取到的,对应的地址位置是越早自加获得的存储地址;越偏向右侧的方格内的数据是越晚被读取到的,对应的地址位置是越晚自加获得的存储地址,直至读取到h5的方格,此时h5的方格对应的地址位置相对于h1的方格对应的地址位置的地址偏移量等于数值4,等于所述当前复用的FIR滤波器的抽头数(数值7)与数值1的和值的一半(等于数值4),再将h5的方格的地址位置配置为中间计算存储地址;然后对该中间计算存储地址(该中间计算存储地址对应地址序号,用于表示其在所述滤波器系数存储器内的地址排序)与数值1的差值进行自减操作,直至自减至h1的方格,此时自减得到的存储地址相对于中间计算存储地址的地址偏移量等于所述当前复用的FIR滤波器的抽头数(数值7)与数值1的和值的一半(等于数值4),完成一次对所述滤波器系数存储器的回环遍历,此时,第八行方框中,自左向右读取到滤波器系数h1、h3、h5、h3和h1,并先后对应第五行方框中参与滤波计算的待滤波数据X7、X5、X4、X3和X1,其中,h1与X7在同一系统时钟周期内被读取,h3与X5在同一系统时钟周期内被读取,h5与X4在同一系统时钟周期内被读取,h3与X3在同一系统时钟周期内被读取,h1与X1在同一系统时钟周期内被读取;则第四个滤波周期内从所述滤波器系数存储器内读取出的滤波器系数的数量满足第四个滤波周期内参与滤波计算的待滤波数据的数量。
需要说明的是,X7所处的前置读地址与X5所处的前置读地址的地址偏移量等于数值2(前置地址计数器_HB每次自减操作(减二计数)产生的计数值的变化值)、X5所处的前置读地址与X4所处的前置读地址的地址偏移量等于数值1(前置地址计数器_HB减一计数操作产生的计数值的变化值)、X4所处的前置读地址与X3所处的前置读地址的地址偏移量等于数值1(前置地址计数器_HB减一计数操作产生的计数值的变化值)、X3所处的前置读地址与X1所处的前置读地址的地址偏移量等于数值2(前置地址计数器_HB每次自减操作(减二计数)产生的计数值的变化值),其中,X4所处的前置读地址的排序是所述中间前置读地址序号;Xi中的i表示前置读地址序号,i是整数。
对应到图4的7抽头的半带滤波器中,在第四个滤波周期内,写入数据缓存器的待滤波数据的数量没有大于所述当前复用的FIR滤波器的转置使能计数阈值,所述前置地址计数器_HB由数据X7所处的前置读地址(即初始前置地址序号6)开始对前置读地址开始执行自减操作(减二计数),直至当所述半带滤波器的抽头数与数值1的差值的一半与数值1的差值等于所述前置地址计数器_HB执行前述的自减操作的次数的两倍后,即所述前置地址计数器_HB执行前述的自减操作所产生的计数值的变化值等于数值2,所述前置地址计数器_HB执行前述的自减操作的次数为1次,所述前置地址计数器_HB将当前得到的前置读地址序号是数值4,对应到X5所处的前置读地址,再将当前得到的前置读地址序号与数值1的差值更新为所述前置读地址序号,即数值3,对应到X4所处的前置读地址,标记为中间前置读地址序号;然后对所述中间前置读地址序号减一计数,获得所述中间前置读地址序号与数值1的差值,获得X3所处的前置读地址,然后再开始对X3所处的前置读地址开始执行自减操作(减二计数),进而获得X1所处的前置读地址,完成一次对所述数据缓存器的回环遍历。
在上述实施例的基础上,所述滤波计算子模块,用于在写入数据缓存器的待滤波数据的数量小于或等于当前复用的FIR滤波器的转置使能计数阈值的状态下,控制数据缓存器输出的待滤波数据以及滤波器系数存储器输出的相同读取排序的滤波器系数进行乘法运算,并将乘法运算结果输入到加法器进行累加处理,得到每个滤波周期内的处理后的滤波结果;其中,每个滤波周期内的乘法运算仅由一个乘法器分时复用实现,减少乘法器资源;其中,所述滤波计算子模块包括加法器和乘法器,存在先执行乘法,再执行加法以实现累加的方式。对应到图4中,第四个滤波周期中获得的滤波结果y7等于X7与h1的乘积、X5与h3的乘积、X4与h5的乘积、X3与h3的乘积、以及X1与h1的乘积的和值,则第四个滤波周期内的乘法运算的次数等于5。
作为一种复用为抽头数等于7的所述半带滤波器的实施例二,当前复用的FIR滤波器是所述半带滤波器;当前复用的FIR滤波器的抽头数是奇数。所述写入数据缓存器的待滤波数据的数量大于所述当前复用的FIR滤波器的转置使能计数阈值的状态下,所述滤波器类型选择模块用于在每一个滤波周期内,按照当前复用的FIR滤波器对应的读取时序对所述第一折叠读地址执行自减操作,再通过所述第一地址选择器将每次自减操作后的第一折叠读地址传输给所述读写控制子模块,以触发读写控制子模块按照每次自减操作后的第一折叠读地址从所述数据缓存器内读取出相应的待滤波数据。在本实施例二中,所述滤波器类型选择模块包括第一折叠地址计数器,结合图2可知,具体是与第一地址选择器相连接的第一折叠地址计数器_HB,在所述滤波器类型选择信号是第二逻辑电平时,选通第一折叠地址计数器_HB工作。在所述写入数据缓存器的待滤波数据的数量大于所述当前复用的FIR滤波器的转置使能计数阈值的状态下,所述滤波器类型选择模块将所述折叠基准地址序号更新为第一折叠读地址的起始地址序号后,第一折叠地址计数器用于从第一折叠读地址的起始地址序号开始,对第一折叠读地址序号执行自减操作;若所述滤波器类型选择模块判断到第一折叠读地址序号减至所述滤波起点地址序号,则将滤波目标地址序号与数值1的差值更新为第一折叠读地址序号;若所述滤波器类型选择模块判断到所述滤波起点地址序号与数值1的和值等于所述第一折叠读地址序号,则将滤波目标地址序号更新为所述第一折叠读地址序号;以便于第一折叠读地址可以在新的自减操作中偏移至有效的地址区间,获取用于半带滤波器的抽头数对应的地址区间内的待滤波数据,使得所述第一折叠读地址在所述当前复用的FIR滤波器的抽头数限定的地址范围(所述数据缓存器内设的存储层数)内实现地址回环遍历。其中,第一折叠读地址序号表示第一折叠读地址在所述数据缓存器内的排序;第一折叠地址计数器自减一次产生的计数值的变化值是数值2,使得对第一折叠读地址序号在一次自加操作中产生的变化值为数值2。需要说明的是,滤波目标地址序号是预先在所述数据缓存器内配置的一个地址序号,作为每个滤波周期内,参与读取操作的地址中,被读取的排序最大的一个地址的地址序号,所述滤波目标地址序号大于所述滤波起点地址序号,所述滤波目标地址序号与所述滤波起点地址序号的差值等于所述当前复用的FIR滤波器的抽头数与数值1的差值。将所述滤波起点地址序号设置为数值0时,所述滤波目标地址序号设置为所述当前复用的FIR滤波器的抽头数与数值1的差值;或者,所述滤波起点地址序号设置为数值1时,所述滤波目标地址序号设置为所述当前复用的FIR滤波器的抽头数。其中,第一折叠读地址序号用于表示第一折叠读地址在所述数据缓存器内的地址排序。
需要说明的是,在所述当前复用的FIR滤波器对应的读取时序下,每连续两个系统时钟周期对所述第一折叠读地址执行一次自减操作以获得一个新的所述第一折叠读地址,并将这连续两个系统时钟周期记为第一折叠读地址的计数周期;所述写入数据缓存器的待滤波数据的数量大于所述当前复用的FIR滤波器的转置使能计数阈值的状态下,在所述读写控制子模块的控制下,在第一折叠读地址的计数周期内,读取第一折叠读地址中的待滤波数据至所述过滤计算子模块,并读取第二折叠读地址中的待滤波数据至所述过滤计算子模块;如此重复读取,直至在读取完当前一个滤波周期内限定的第一折叠读地址的待滤波数据和第二折叠读地址的待滤波数据。
所述写入数据缓存器的待滤波数据的数量大于所述当前复用的FIR滤波器的转置使能计数阈值的状态下,所述滤波器类型选择模块还用于在每一个滤波周期内,按照当前复用的FIR滤波器对应的读取时序对所述第二折叠读地址执行自加操作,再通过所述第二地址选择器将将每次自加操作后的第二折叠读地址传输给所述读写控制子模块,以触发读写控制子模块按照每次自加操作后的第二折叠读地址从所述数据缓存器内读取出相应的待滤波数据。
在上述实施例中,所述滤波器类型选择模块包括第二折叠地址计数器,结合图2可知,具体是与第二地址选择器相连接的第二折叠地址计数器_HB,在在所述滤波器类型选择信号是第二逻辑电平时,选通第二折叠地址计数器_HB工作。第二折叠地址计数器_HB,用于在所述滤波器类型选择模块确定将折叠基准地址序号配置为所述第二折叠读地址的起始地址序号之前,若所述滤波器类型选择模块判断到折叠基准地址序号等于滤波目标地址序号,则将滤波起点地址序号更新为折叠基准地址序号,再将折叠基准地址序号与数值1的和值更新为第二折叠读地址序号的起始地址序号,以实现与第一折叠读地址的起始地址序号不重合,避免读取到相同的待滤波数据;然后,第二折叠地址计数器_HB用于从第二折叠读地址的起始地址序号开始,对第二折叠读地址序号执行自加操作;其中,第二折叠地址计数器_HB自加一次产生的计数值的变化值是数值2,使得对第二折叠读地址序号在一次自加操作中产生的变化值为数值2,以实现朝着与第一折叠读地址的不同的地址偏移方向,有序地在当前复用的半带滤波器规定的两倍抽取率的基础上进行数据读取操作;若所述滤波器类型选择模块判断到经过自加操作后的第二折叠读地址序号等于所述滤波目标地址序号,则将所述滤波起点地址序号与数值1的和值更新为第二折叠读地址序号;若所述滤波器类型选择模块判断到经过自加操作后的第二折叠读地址序号等于所述滤波目标地址序号与数值1的差值,则将所述滤波起点地址序号更新为第二折叠读地址序号;使得所述第二折叠读地址在所述当前复用的FIR滤波器的抽头数限定的地址范围内实现地址回环遍历;其中,第二折叠地址计数器自加一次产生的计数值的变化值是数值2,使得对第二折叠读地址序号在一次自加操作中产生的变化值为数值2;其中,第二折叠读地址序号用于表示第二折叠读地址在所述数据缓存器内的地址排序。
需要说明的是,在所述当前复用的FIR滤波器对应的读取时序下,每连续两个系统时钟周期对所述第一折叠读地址执行一次自减操作以获得一个新的所述第一折叠读地址,并将这连续两个系统时钟周期记为第一折叠读地址的计数周期;所述当前复用的FIR滤波器对应的读取时序下,每连续两个系统时钟周期对所述第二折叠读地址执行一次自加操作以获得一个新的所述第二折叠读地址,并将这连续两个系统时钟周期记为第二折叠读地址的计数周期;所述写入数据缓存器的待滤波数据的数量大于所述当前复用的FIR滤波器的转置使能计数阈值的状态下,在所述读写控制子模块的控制下,在第一折叠读地址的计数周期或第二折叠读地址的计数周期内(等于两个系统时钟周期的周期长度之和),读取第一折叠读地址中的待滤波数据至所述过滤计算子模块,具体是在第一个系统时钟周期内读取一个第一折叠读地址中的待滤波数据,再读取第二折叠读地址中的待滤波数据至所述过滤计算子模块,具体是在第二个系统时钟周期内读取一个第一折叠读地址中的待滤波数据,如此重复读取,直至在一个滤波周期内读取的待滤波数据的数量等于所述当前复用的FIR滤波器的抽头数与数值1的和值的一半与数值1的和值,等于所述半带滤波器在当前一个滤波周期内需要读取的第一折叠读地址的待滤波数据和第二折叠读地址的待滤波数据的数量的和值。然后在下一个系统时钟周期内从中间计算缓存地址中读取一个待滤波数据;其中,该中间计算缓存地址是最新获得的第二折叠读地址和最新获得的第一折叠读地址之间的地址位置。因而,在每个第一折叠读地址的计数周期或每个第二折叠读地址的计数周期内,读取的第一折叠读地址对应的第一折叠读地址序号相对于所述滤波起点地址序号的地址偏移量,等于所述滤波目标地址序号相对于读取的第二折叠读地址对应的第二折叠读地址序号的地址偏移量,以实现一个滤波周期内输入所述滤波计算子模块内的一半第二折叠读地址上的待滤波数据与地址位置对称的另一半第一折叠读地址上的待滤波数据进行折叠计算。在一些实施例中,该中间计算缓存地址可以是继续执行自加操作得到第二折叠读地址,或是继续执行自减操作得到第一折叠读地址。在本实施例中,在每个第一折叠读地址的计数周期或每个第二折叠读地址的计数周期内,读取的第一折叠读地址对应的第一折叠读地址序号相对于所述滤波起点地址序号的地址偏移量,等于所述滤波目标地址序号相对于读取的第二折叠读地址对应的第二折叠读地址序号的地址偏移量,形成以一个中间地址位置为中心的FIR滤波器结构首尾对称形式,对应到图4的第5个滤波周期,抽头数为7,按照所述滤波器类型选择模块传输过来的第一折叠读地址和第二折叠读地址,所述读写控制子模块先读取第9个输入数据X9(第一折叠读地址处的数据)与第3个输入数据X3(第二折叠读地址处的数据),组成第一对相加的参数送至所述滤波计算子模块,其中,所述滤波目标地址序号与第9个输入数据X9所处的地址的地址序号(可以是更新过的已经存有数据的地址序号)之间地址偏移量,等于第3个输入数据X3所处的地址的地址序号与所述滤波起点地址序号之间的地址偏移量;最后读取第6个输入数据X6,送至所述滤波计算子模块,触发所述滤波计算子模块完成数据的折叠计算,使得所述滤波器功能实现模块完成所述写入数据缓存器的待滤波数据的数量大于所述当前复用的FIR滤波器的转置使能计数阈值的状态下的滤波计算。
值得注意的是,所述当前复用的FIR滤波器的抽头数是奇数;在一个滤波周期内,当前复用的FIR滤波器的抽头数与对所述第一折叠读地址执行的自减操作的次数的两倍的差值小于对所述第一折叠读地址执行的自减操作的次数的两倍时,停止对所述第一折叠读地址执行前述自减操作;值得注意的是,这里的自减操作是第一折叠地址计数器_HB在一次自减操作中减少的计数值是数值2,导致第一折叠地址序号在一次自减操作中发生地址偏移量是数值2,当前获得的第一折叠地址序号相对于上一次获得的第一折叠地址序号减少数值2;由于在一个第一折叠读地址的计数周期或一个第二折叠读地址的计数周期内,会存在先后读取第一折叠读地址中的待滤波数据和第二折叠读地址中的待滤波数据的情况,所以,当前复用的FIR滤波器的抽头数与自加操作的次数的两倍的差值已经是大于对所述第二折叠读地址执行的自加操作的次数的两倍,为了避免在没有写入新的待滤波数据的前提下重复读取相同的地址中的数据,停止对所述第二折叠读地址执行自加操作,使得第二折叠读地址提前所述第一折叠读地址停止变化。再将当前得到的所述第一折叠读地址序号与数值1的和值更新为所述第一折叠读地址序号,再保持所述第一折叠读地址序号不变,作为当前一个滤波周期内的中间计算缓存地址,也是进行一次滤波计算需要的中间地址位置。
或者,在一个滤波周期内,当前复用的FIR滤波器的抽头数与对所述第一折叠读地址执行的自减操作的次数的两倍的差值大于对所述第一折叠读地址执行的自减操作的次数的两倍时,停止对所述第一折叠读地址执行自减操作;值得注意的是,这里的自加操作是第二折叠地址计数器_HB在一次自加操作中减少的计数值是数值2,导致第二折叠地址序号在一次自加操作中发生地址偏移量是数值2,当前获得的第一折叠地址序号相对于上一次获得的第一折叠地址序号增加数值2。由于在一个第一折叠读地址的计数周期或一个第二折叠读地址的计数周期内,会存在先后读取或同时读取第一折叠读地址中的待滤波数据和第二折叠读地址中的待滤波数据的情况,所以,当前复用的FIR滤波器的抽头数与自加操作的次数的两倍的差值已经是大于对所述第二折叠读地址执行的自加操作的次数的两倍,为了避免在没有写入新的待滤波数据的前提下重复读取相同的地址中的数据,停止对所述第一折叠读地址执行自减操作,使得第一折叠读地址提前所述第二折叠读地址停止变化。再将当前得到的所述第二折叠读地址序号与数值1的差值更新为所述第二折叠读地址序号,再保持所述第二折叠读地址序号不变,作为当前一个滤波周期内的中间计算缓存地址,也是进行一次滤波计算需要的中间地址位置。
作为一种实施例,图4中,在第五个滤波周期内,从初始地址序号1开始,按照当前复用的FIR滤波器的抽头数限定下的系统时钟周期,包括抽头数支持的最大读取时间长度、以及每隔一个地址读取一个待滤波数据,对所述第一折叠读地址进行自减操作,再通过所述第一地址选择器将每次自减操作后的第一折叠读地址传输给所述读写控制子模块,则所述读写控制子模块每接收到来自所述滤波器类型选择模块内部的一次自减操作得到的第一折叠读地址,则从所述数据缓存器内读取出相应的第一折叠读地址中的待滤波数据,依次为第九行方框内的X9以及X7,此时,自减操作的次数为1次,则获得2个第一折叠读地址中的待滤波数据,属于间隔一个地址的2个地址中的待滤波数据;同时,所述读写控制子模块每接收到来自所述滤波器类型选择模块内部的一次自加操作得到的第二折叠读地址,则从所述数据缓存器内读取出相应的第二折叠读地址中的待滤波数据,为第九行方框内的X3和X5,此时,自加操作的次数为1次,则获得2个第二折叠读地址中的待滤波数据;然后将X7所处的地址序号减去数值1、或将X5所处的地址序号加上数值1,获得第6个输入数据X6对应的地址序号,再停止读取数据,该数据X6对应的地址序号作为当前一个滤波周期内的中间计算缓存地址在所述数据缓存器内的地址排序,且此时所读取的第一折叠读地址中的待滤波数据和读取的第二折叠读地址中的待滤波数据已经满足当前复用的FIR滤波器的抽头数匹配的滤波计算。
作为一种复用为抽头数等于7的所述半带滤波器的实施例三,在写入数据缓存器的待滤波数据的数量大于当前复用的FIR滤波器的转置使能计数阈值的状态下,所述滤波器系数存储器用于在每个滤波周期内,从当前复用的FIR滤波器相匹配的起始存储地址开始,每两个系统时钟周期对起始存储地址进行自加操作一次,以使得起始存储地址对应的地址序号每隔两个系统时钟周期就加二一次,再按照自加得到的存储地址将对应存储的滤波器系数依次读出至所述滤波计算子模块,直至自加得到的存储地址相对于所述起始存储地址的地址偏移量等于所述当前复用的FIR滤波器的抽头数与数值1的和值的一半,然后将最新得到的存储地址记为中间计算存储地址;在本实施例中,中间计算存储地址是设置在所述滤波器系数存储器内,用于存储与当前复用的FIR滤波器相匹配的滤波器系数的地址中,排序最大的地址,即存储相应的滤波器系数的地址区间的尾地址。其中,在对起始存储地址进行自加操作的过程中,每自加操作一次,则存储地址对应的地址序号增加数值2,则在所述滤波器系数存储器内,除了所述中间计算存储地址之外,存在偶数排序的地址不被读取并参与滤波计算,本实施例则不在相应的偶数排序的地址处写入滤波器系数,相对于现有技术,除所述中间计算存储地址之外的偶数排序的地址不用存储数据,节省一部分存储空间。
在该实施例三中,所述起始存储地址是由所述滤波器类型选择模块选择确定,以匹配当前复用的FIR滤波器;其中,存储地址对应的地址序号用于表示该存储地址在所述滤波器系数存储器内地址排序;所述当前复用的FIR滤波器的抽头数是奇数。具体地,所述滤波器系数存储器内部设置的地址计数器或所述读写控制子模块内部设计的地址计数器,对起始存储地址对应的地址序号是每两个系统时钟周期加二计数一次并生成对应的地址序号,配置为与一个第一折叠读地址的计数周期或每个第二折叠读地址的计数周期内读取出的第一折叠读地址和第二折叠读地址同时变化的存储地址,该存储地址中的滤波器系数与所述第一折叠读地址的计数周期内的第一折叠读地址和第二折叠读地址中的待滤波数据在同一个所述第一折叠读地址的计数周期内读取到所述滤波计算子模块内,构成一组先加后乘的计算项,即第一折叠读地址和第二折叠读地址中的待滤波数据的和值与滤波器系数相乘。在本实施例中不需对起始存储地址进行自减操作,相对于所述写入数据缓存器的待滤波数据的数量小于或等于所述当前复用的FIR滤波器的转置使能计数阈值的情况,不需要对存储地址进行回环遍历,节省读取操作量。
所述滤波计算子模块,用于在写入数据缓存器的待滤波数据的数量大于当前复用的FIR滤波器的转置使能计数阈值的状态下,在每个第一折叠读地址的计数周期或每个第二折叠读地址的计数周期内,先控制所述数据缓存器输出的第一折叠读地址中的待滤波数据与所述数据缓存器输出的第二折叠读地址中的待滤波数据相加;再将相加的结果与所述滤波器系数存储器输出的相同读取排序的滤波器系数进行乘法运算;然后将相乘结果输入到加法器进行累加处理,在每个滤波周期内如此重复,直至对应一个滤波周期内,所述滤波器系数存储器输出所述中间计算存储地址中的滤波器系数时,将所述中间计算存储地址中的滤波器系数与所述数据缓存器在同一读取排序下输出的第一折叠读地址中的待滤波数据进行乘法运算,再将相乘结果输入到加法器进行累加处理,得到对应的滤波周期内的处理后的滤波结果,完成一次滤波计算,即完成一个滤波周期内的滤波计算。其中,每个滤波周期内,乘法运算的次数等于所述当前复用的FIR滤波器的抽头数与数值1的差值的一半,且由一个乘法器分时复用实现。其中,所述滤波计算子模块包括加法器和乘法器;所述当前复用的FIR滤波器的转置使能计数阈值等于当前复用的FIR滤波器的抽头数。对应到图4中,在第五个滤波周期内,X9(第一次读取的第一折叠读地址中的待滤波数据,即第一次读取的待滤波数据)与X3(第一次读取的第二折叠读地址中的待滤波数据,即第二次读取的待滤波数据)是一组折叠数据,相加得到第一个折叠值,同时,从所述滤波器系数存储器读取到滤波器系数h1;然后,X7(第二次读取的第一折叠读地址中的待滤波数据,即第三次读取的待滤波数据)与X5(第二次读取的第二折叠读地址中的待滤波数据,即第四次读取的待滤波数据)是另一组折叠数据,相加得到第第二个折叠值,同时,从所述滤波器系数存储器读取到滤波器系数h3;然后,从所述滤波器系数存储器中读取出所述中间计算存储地址中的滤波器系数h5,一般将所述中间计算存储地址中的滤波器系数设定为固定的参数,对于抽头数为奇数的任意FIR滤波器都适用,并从所述数据缓存器的中间计算缓存地址读取出X6(第五次读取的待滤波数据);针对这些折叠数据,所述滤波计算子模块从所述滤波器系数存储器输出相对应位置的滤波器系数进行相乘,进行折叠计算,具体地,折叠计算获得的滤波结果y9等于:X9(第一次读取的第一折叠读地址中的待滤波数据,即第一次读取的待滤波数据)与X3(第一次读取的第二折叠读地址中的待滤波数据,即第二次读取的待滤波数据)相加得到的和值与第一次读取的滤波器系数h1的乘积、X7(第二次读取的第一折叠读地址中的待滤波数据,即第三次读取的待滤波数据)与X5(第二次读取的第二折叠读地址中的待滤波数据,即第四次读取的待滤波数据)相加得到的和值与第二次读取的滤波器系数h3的乘积、以及X6(第三次读取的第一折叠读地址中的待滤波数据,即第五次读取的待滤波数据)与第三次读取的滤波器系数h5的乘积的和值。因此相对于前述复用为抽头数为5的非半带滤波器的实施例,复用为抽头数为7的半带滤波器后,所述滤波计算子模块所用乘法器和加法器数量更少,计算量更小,且可以使用相同的乘法运算量来完成更多的待滤波数据。
需要说明的是,鉴于本发明的上述模块的实现流程,在具体应用中形成了整体系统结构如;图3和图4是以5抽头的FIR滤波器为例,以此类推,其余奇数抽头的滤波器设计是一样的。均在本发明的保护范围之内。
综上,本发明能够预先配置好满足设计指标的滤波器系数,结合滤波器类型选择模块和滤波器功能实现模块设计具有M阶的对称系数的FIR滤波器,可以保证其相位特性在滤波器响应通带内是线性的,其在特定滤波周期下的输出与最新M+1个输入值有关,其中滤波器系数的位宽及个数、和待滤波信号的位宽及个数可根据硬件资源能力进行相应的选择,相比于传统的数字滤波器实现方法,本发明滤波的精度可调节。其中,M为偶数;本发明将半带滤波器和非半带滤波器的M阶对称系数存储在存储器中,进行滤波计算时,只需要根据地址映射读取存储器中的滤波器系数,对输入的待滤波数据和滤波器系数进行乘法和累加就能完成滤波、输出信号,尤其是可以在输入的待滤波数据的数量足够大的情况下,针对M阶对称系数的FIR滤波器对输入的待滤波数据进行折叠计算(按照系数对称的原则进行预加处理,实现先加再乘的转置型滤波器计算结构),除了所述中间计算存储地址处的滤波器系数外,相对减少一半的计算量;
另外,可以通过使用提前利用Matlab工具或通过寄存器配置的方式可以确定满足设计指标的滤波器系数,在滤波需求不相同的情况下,不需要改变整个滤波器的结构,就可以适应所述滤波器类型选择模块选通的不同功能和性能的滤波器逻辑。
而且,本发明在滤波计算子模块中使用相同的乘法器资源实现不同滤波周期下的新输入的待滤波数据与同一组滤波器系数的相乘运算,提高不同类型的滤波器读取数据的条件下的乘法器资源的复用率。
需要说明的是,本发明公开的计数器的自加操作是对计数器的加法计数操作,包括但不限于加一计数或加二计数,该计数器每执行一次自加操作,则其计数值增加一定的数值,且将其变化前后的计数值都配置为地址;计数器的自减操作是对计数器的减法计数操作,该计数器每执行一次自减操作,则其计数值减少一定的数值;因此,一个计数器的自加操作及其自减操作分别是沿着不同的方向产生地址。
在上述实施例的基础上,还公开关于所述待滤波数据写入所述数据缓存器的实施例,所述读写控制子模块,用于按照系统时钟周期控制外部输入的待滤波数据写入所述数据缓存器,具体是每个系统时钟周期向所述数据缓存器写入一个待滤波数据,以使得前述实施例中存在判断所述写入数据缓存器的待滤波数据的数量与所述当前复用的FIR滤波器的转置使能计数阈值的大小关系的实施条件。在本实施例中,所述读写控制子模块被配置为在当前一个系统时钟周期写入一个待滤波数据,则下一个系统时钟周期读取一个待滤波数据,因此所述读写控制子模块按照所述前置地址选择器选择输出的前置读地址、第一地址选择器选择输出的第一折叠读地址、以及第二地址选择器选择输出的第二折叠读地址,依次读取出所述写入数据缓存器的待滤波数据。
需要说明的是,无论当前复用的FIR滤波器的类型如何,所述读写控制子模块所控制的写的内容都是一样,共用一套写地址、写数据和写使能。
进一步地,所述读写控制子模块内部设置递增计数器,所述读写控制子模块用于从所述数据缓存器的缓存首地址开始,每写入一个待滤波数据时,控制递增计数器对当前的缓存地址加一偏移处理,获得下一个写入的待滤波数据的缓存地址,即让缓存地址的地址序号从缓存首地址开始按照系统时钟周期加一计数,直至当前获得的缓存地址相对于缓存首地址发生的地址偏移量等于所述当前复用的FIR滤波器的抽头数与数值1的差值时,将缓存首地址更新为当前获得的缓存地址,以使得后续写入的待滤波数据覆盖所述缓存首地址原先存有的待滤波数据,并确定对所述数据缓存器完成一轮连续的缓存地址的遍历,即完成一次回环遍历,此时,确定从往所述缓存首地址写入一个待滤波数据开始,已经经过的系统时钟周期的数目等于所述当前复用的FIR滤波器的抽头数;其中,连续的缓存地址是由数量为所述当前复用的FIR滤波器的抽头数的地址单元组成,以满足当前复用的FIR滤波器的抽头数所需输入数据的计算数量需求。值的注意的是,本实施例提及的缓存地址在前述实施例中不一定被所述读写控制子模块全部读取,尤其是在当前复用的FIR滤波器是半带滤波器时,只会在每经过一个系统时钟周期就通过间隔一个地址的方式进行数据读取。
具体地,所述读写控制子模块,还用于在完成一轮连续的缓存地址的遍历后,若继续按照系统时钟周期控制向所述连续的缓存地址写入新的所述待滤波数据,则将所述递增计数器置为递增初始值,并从所述缓存首地址开始,每写入一个待滤波数据时,将当前写入的一个待滤波数据覆盖缓存地址原先存有的待滤波数据,并控制递增计数器对当前的缓存地址加一偏移处理,即递增计数器进行加一计数并将获得计数值配置为新的缓存地址,从而获得下一个写入的待滤波数据的缓存地址,从而获得下一个写入的待滤波数据的缓存地址,直至当前获得的缓存地址相对于缓存首地址发生的地址偏移量等于所述当前复用的FIR滤波器的抽头数与数值1的差值时,将缓存首地址更新为当前获得的缓存地址,并将所述递增计数器的计数值调整为所述递增初始值;其中,所述递增计数器置出的递增初始值表示所述缓存首地址在所述数据缓存器内的地址排序;所述递增计数器计数产生的每个计数值都表示对应的系统时钟周期内写入的缓存地址在所述数据缓存器内的地址排序。
上述实施例只为说明本发明的技术构思及特点,其目的是让熟悉该技术领域的技术人员能够了解本发明的内容并据以实施,并不能以此来限制本发明的保护范围。凡根据本发明精神实质所作出的等同变换或修饰,都应涵盖在本发明的保护范围之内。
Claims (33)
1.FIR滤波器复用系统,其特征在于,该FIR滤波器复用系统包括滤波器类型选择模块和滤波器功能实现模块;滤波器功能实现模块包括读写控制子模块、滤波计算子模块、数据缓存器和滤波器系数存储器;
滤波器类型选择模块预先配置有需要复用的FIR滤波器的抽头数及其抽取率;其中,需要复用的FIR滤波器包括半带滤波器和非半带滤波器,非半带滤波器是除了半带滤波器之外的其它类型的FIR滤波器;
滤波器类型选择模块,用于产生当前复用的FIR滤波器中的相关联的读地址,并将这些相关联的读地址传输给读写控制子模块;
读写控制子模块,用于控制输入FIR滤波器复用系统的待滤波数据写入数据缓存器内;
读写控制子模块,用于根据写入数据缓存器的待滤波数据的数量与当前复用的FIR滤波器的转置使能计数阈值的大小关系,利用滤波器类型选择模块提供的相关联的读地址,从数据缓存器内依次读取出所述待滤波数据给所述滤波计算子模块;
滤波计算子模块,用于控制数据缓存器输出的待滤波数据以及滤波器系数存储器输出的滤波器系数进行滤波计算,其中,滤波计算是与所述FIR滤波器复用系统当前复用的FIR滤波器相适应,使得滤波器功能实现模块被复用为所述当前复用的FIR滤波器;
滤波器系数存储器,还用于存储有当前复用的FIR滤波器所需的滤波器系数,其中,每种类型的FIR滤波器所需的滤波器系数在滤波器系数存储器都相匹配的起始存储地址;
滤波器系数存储器,用于在所述读写控制子模块开始从数据缓存器内读取所述待滤波数据后,按照所述读写控制子模块从数据缓存器内读取所述待滤波数据的顺序,从当前复用的FIR滤波器对应的所述起始存储地址开始,依次输出所需的滤波器系数给所述滤波计算子模块。
2.根据权利要求1所述FIR滤波器复用系统,其特征在于,所述滤波器类型选择模块包括前置地址选择器和地址使能信号选择器;
前置地址选择器,用于在接收到滤波器类型选择信号后,选择当前复用的FIR滤波器对应的前置读地址传输给所述滤波器功能实现模块,以使得在写入数据缓存器的待滤波数据的数量小于或等于当前复用的FIR滤波器的转置使能计数阈值时,所述读写控制子模块按照当前复用的FIR滤波器对应的读取时序,从所述数据缓存器的前置读地址中读取出待滤波数据;
地址使能信号选择器,用于在接收到滤波器类型选择信号后,选择当前复用的FIR滤波器对应的折叠读使能信号传输给所述滤波器功能实现模块;
其中,写入数据缓存器的待滤波数据的数量大于当前复用的FIR滤波器的转置使能计数阈值时,折叠读使能信号为高电平;写入数据缓存器的待滤波数据的数量小于或等于当前复用的FIR滤波器的转置使能计数阈值时,折叠读使能信号为低电平。
3.根据权利要求2所述FIR滤波器复用系统,其特征在于,所述滤波器类型选择模块还包括第一地址选择器和第二地址选择器;
第一地址选择器,用于在接收到滤波器类型选择信号后,选择当前复用的FIR滤波器对应的第一折叠读地址传输给所述滤波器功能实现模块,以使得在写入数据缓存器的待滤波数据的数量大于当前复用的FIR滤波器的转置使能计数阈值后,所述读写控制子模块按照当前复用的FIR滤波器对应的读取时序,从所述数据缓存器中读取出第一折叠读地址中的待滤波数据;
第二地址选择器,用于在接收到滤波器类型选择信号后,选择当前复用的FIR滤波器对应的第二折叠读地址传输给所述滤波器功能实现模块,以使得在写入数据缓存器的待滤波数据的数量大于当前复用的FIR滤波器的转置使能计数阈值后,所述读写控制子模块按照当前复用的FIR滤波器对应的读取时序,从所述数据缓存器中读取出第二折叠读地址中的待滤波数据;
其中,第二折叠读地址的起始地址序号与第一折叠读地址的起始地址序号之间的地址偏移量等于所述当前复用的FIR滤波器的抽取率;所述当前复用的FIR滤波器的抽头数是由专门的寄存器配置的;
其中,所述相关联的读地址包括前置读地址、第二折叠读地址与第一折叠读地址。
4.根据权利要求3所述FIR滤波器复用系统,其特征在于,所述FIR滤波器复用系统还设置有一个系统读写时钟源,用于计数产生系统时钟周期;
其中,写入一个待滤波数据所耗费的时间配置为一个系统时钟周期,读取出一个待滤波数据所耗费的时间配置为一个系统时钟周期;
其中,所述写入数据缓存器的待滤波数据的数量是等于所述FIR滤波器复用系统从外部采样的待滤波数据的数量。
5.根据权利要求4所述FIR滤波器复用系统,其特征在于,所述滤波器功能实现模块还包括滤波计数器;
滤波计数器,用于每当外部向所述数据缓存器写入两个所述待滤波数据,则加一计数一次,然后触发所述滤波计算子模块利用从所述数据缓存器读取到的所述待滤波数据进行与所述当前复用的FIR滤波器相适应的滤波计算,再在所述滤波计算子模块计算出对应的滤波结果时,确定所述FIR滤波器复用系统从已经经过一个滤波周期,其中,一个滤波周期大于两个系统时钟周期;每经过一个滤波周期,则所述滤波计算子模块输出一个滤波结果;
其中,所述当前复用的FIR滤波器的抽取率是2倍;
其中,写入所述数据缓存器的每个待滤波数据的位宽是由所述滤波器类型选择模块配置的,每个待滤波数据占据的位宽小于或等于所述数据缓存器允许读写的最大位宽。
6.根据权利要求5所述FIR滤波器复用系统,其特征在于,当写入数据缓存器的待滤波数据的数量使用滤波计数器的计数值的变化值表示时,当前复用的FIR滤波器的转置使能计数阈值使用所述当前复用的FIR滤波器的抽头数与数值1的和值的一半来表示;
其中,所述当前复用的FIR滤波器的抽头数是奇数。
7.根据权利要求5所述FIR滤波器复用系统,其特征在于,所述根据写入数据缓存器的待滤波数据的数量与当前复用的FIR滤波器的转置使能计数阈值的大小关系,利用滤波器类型选择模块提供的相关联的读地址,从数据缓存器内依次读取出所述待滤波数据给所述滤波计算子模块的方式包括:
在所述读写控制子模块确定出写入数据缓存器的待滤波数据的数量小于或等于当前复用的FIR滤波器的转置使能计数阈值的状态下,所述读写控制子模块在每个滤波周期内,按照当前复用的FIR滤波器对应的读取时序,依次从所述数据缓存器内读取出所述前置读地址中的待滤波数据,并传输给所述滤波计算子模块;其中,当前复用的FIR滤波器的转置使能计数阈值等于当前复用的FIR滤波器的抽头数;
其中,所述前置读地址在每个滤波周期内是由一个初始前置地址序号开始进行计数获得;每个滤波周期内的一个初始前置地址序号是属于该滤波周期内第一个参与读取操作的前置读地址序号,以使得初始前置地址序号对应的前置读地址中的待滤波数据被按对应的读取时序传输至所述滤波计算子模块;
其中,所述滤波器类型选择信号是第一逻辑电平时,当前复用的FIR滤波器是所述非半带滤波器,使得所述FIR滤波器复用系统复用为所述非半带滤波器;
所述滤波器类型选择信号是第二逻辑电平时,当前复用的FIR滤波器是所述半带滤波器,使得所述FIR滤波器复用系统复用为所述半带滤波器。
8.根据权利要求7所述FIR滤波器复用系统,其特征在于,在写入数据缓存器的待滤波数据的数量小于或等于当前复用的FIR滤波器的转置使能计数阈值的状态下,所述读写控制子模块将所述滤波计数器在每个滤波周期内的计数值相对于其初始计数值的变化值的两倍与数值2的差值设置为对应滤波周期内的初始前置地址序号;
其中,相邻两个滤波周期下获得的初始前置地址之间的地址偏移量等于所述当前复用的FIR滤波器的抽取率;滤波计数器的初始计数值是在开始计数之前设置好的计数值。
9.根据权利要求7所述FIR滤波器复用系统,其特征在于,若当前复用的FIR滤波器是所述非半带滤波器,且写入数据缓存器的待滤波数据的数量小于或等于当前复用的FIR滤波器的转置使能计数阈值的状态下,前置地址计数器用于从当前一个滤波周期对应的初始前置地址序号开始,按照所述系统时钟周期进行自减操作,并将每次自减操作后的前置读地址交由所述前置地址选择器传输至所述滤波器功能实现模块,以触发所述读写控制子模块从所述数据缓存器内读取出每次自减操作后的前置读地址中的待滤波数据,再依次传输给所述滤波计算子模块;
其中,所述滤波器类型选择模块包括前置地址计数器,用于在所述滤波器类型选择信号是第一逻辑电平时工作;
其中,前置地址计数器每自减操作一次,对应产生的计数值的变化值是数值1,且每次自减操作后产生的计数值被配置为前置读地址序号;前置地址计数器设置的初始计数值是初始前置地址序号。
10.根据权利要求9所述FIR滤波器复用系统,其特征在于,若当前复用的FIR滤波器是所述非半带滤波器,则在写入数据缓存器的待滤波数据的数量小于或等于当前复用的FIR滤波器的转置使能计数阈值的状态下,所述滤波器系数存储器用于在每个滤波周期内,从当前复用的FIR滤波器相匹配的起始存储地址开始,按照所述系统时钟周期对起始存储地址进行自加操作,再按照自加得到的存储地址将对应存储的滤波器系数依次读出至所述滤波计算子模块,直至自加得到的存储地址相对于所述起始存储地址的地址偏移量等于所述当前复用的FIR滤波器的抽头数与数值1的差值的一半,然后将最新得到的存储地址记为中间计算存储地址,再对中间计算存储地址进行自减操作,再按照自减得到的存储地址将对应存储的滤波器系数依次读出至所述滤波计算子模块,直至自减得到的存储地址相对于中间计算存储地址的地址偏移量等于所述当前复用的FIR滤波器的抽头数与数值1的差值的一半,依次重复,直至当前一个滤波周期内从所述滤波器系数存储器内读取出的滤波器系数的数量满足当前一个滤波周期内参与滤波计算的待滤波数据的数量;
其中,对起始存储地址进行自加操作的过程中,每自加操作一次,则存储地址对应的地址序号增加数值1;对中间计算存储地址进行自减操作的过程中,每自减操作一次,则存储地址对应的地址序号减少数值1;
其中,存储地址对应的地址序号用于表示该存储地址在所述滤波器系数存储器内地址排序;所述当前复用的FIR滤波器的抽头数是奇数。
11.根据权利要求10所述FIR滤波器复用系统,其特征在于,所述滤波计算子模块,用于在写入数据缓存器的待滤波数据的数量小于或等于当前复用的FIR滤波器的转置使能计数阈值的状态下,控制数据缓存器输出的待滤波数据以及滤波器系数存储器输出的相同读取排序的滤波器系数进行乘法运算,并将结果输入到加法器进行累加处理,得到每个滤波周期内的处理后的滤波结果;
其中,每个滤波周期内的乘法运算由一个乘法器分时复用实现;
其中,所述滤波计算子模块包括加法器和乘法器。
12.根据权利要求5所述FIR滤波器复用系统,其特征在于,所述读写控制子模块还包括基准地址计数器;基准地址计数器,用于每当外部向所述数据缓存器写入两个所述待滤波数据以触发所述滤波计算子模块开始执行一次滤波计算时,执行一次计数值的自加操作,并将自加操作得到的计数值配置为折叠基准地址序号,并将自加操作后得到的折叠基准地址序号传输给所述滤波器类型选择模块,再将折叠基准地址序号更新为第一折叠读地址序号,并将折叠基准地址序号与数值1的和值更新为第二折叠读地址序号;
其中,基准地址计数器在一次自加操作中产生计数值的变化值是数值2;当前复用的FIR滤波器的转置使能计数阈值等于当前复用的FIR滤波器的抽头数;
其中,折叠基准地址序号表示折叠基准地址在所述数据缓存器内的排序;第二折叠读地址序号用于表示第二折叠读地址在所述数据缓存器内的地址排序;第一折叠读地址序号用于表示第一折叠读地址在所述数据缓存器内的地址排序。
13.根据权利要求12所述FIR滤波器复用系统,其特征在于,当基准地址计数器的计数值为当前复用的FIR滤波器的抽头数与数值2的差值后,所述读写控制子模块在下一个系统时钟周期将滤波起点地址序号更新为基准地址计数器当前获得的计数值,并将滤波起点地址序号更新为折叠基准地址序号,再将更新后的折叠基准地址序号传输给所述滤波器类型选择模块;
当基准地址计数器的计数值为当前复用的FIR滤波器的抽头数与数值1的差值后,所述读写控制子模块在下一个系统时钟周期将滤波起点地址序号与数值1的和值更新为所述基准地址计数器当前获得的计数值,并将滤波起点地址序号与数值1的和值更新为折叠基准地址序号;
其中,滤波起点地址序号是预先在所述数据缓存器内配置的一个地址序号,作为每个滤波周期内,参与读取操作的地址序号中,排序最小的一个地址序号。
14.根据权利要求13所述FIR滤波器复用系统,其特征在于,所述根据写入数据缓存器的待滤波数据的数量与当前复用的FIR滤波器的转置使能计数阈值的大小关系,利用滤波器类型选择模块提供的相关联的读地址,从数据缓存器内依次读取出所述待滤波数据给所述滤波计算子模块的方式包括:
在所述写入数据缓存器的待滤波数据的数量大于所述当前复用的FIR滤波器的转置使能计数阈值的状态下,所述滤波器类型选择模块用于在每一个滤波周期内,按照当前复用的FIR滤波器对应的读取时序对所述第一折叠读地址执行自减操作,再通过所述第一地址选择器将每次自减操作后的第一折叠读地址传输给所述读写控制子模块,以触发所述读写控制子模块从所述数据缓存器内读取出每次自减操作后的第一折叠读地址中的待滤波数据,直至自减操作的次数为第一预设折叠采样数目;
所述写入数据缓存器的待滤波数据的数量大于所述当前复用的FIR滤波器的转置使能计数阈值的状态下,所述滤波器类型选择模块还用于在每一个滤波周期内,按照当前复用的FIR滤波器对应的读取时序对所述第二折叠读地址执行自加操作,再通过所述第二地址选择器将将每次自加操作后的第二折叠读地址传输给所述读写控制子模块,以触发所述读写控制子模块从所述数据缓存器内读取出每次自加操作后的第二折叠读地址中的待滤波数据,直至自加操作的次数为第二预设折叠采样数目;
其中,当前复用的FIR滤波器是所述非半带滤波器。
15.根据权利要求14所述FIR滤波器复用系统,其特征在于,所述当前复用的FIR滤波器的抽头数是奇数;所述FIR滤波器的转置使能计数阈值等于所述FIR滤波器的抽头数;
第二预设折叠采样数目大于第一预设折叠采样数目时,当前复用的FIR滤波器的抽头数与数值1的差值的一半与数值1的差值等于第一预设折叠采样数目,当前复用的FIR滤波器的抽头数与数值1的差值的一半等于第二预设折叠采样数目,使得第一折叠读地址提前所述第二折叠读地址停止变化;或者,第二预设折叠采样数目小于第一预设折叠采样数目时,当前复用的FIR滤波器的抽头数与数值1的差值的一半与数值1的差值等于第二预设折叠采样数目,当前复用的FIR滤波器的抽头数与数值1的差值的一半等于第一预设折叠采样数目,使得第二折叠读地址提前所述第一折叠读地址停止变化。
16.根据权利要求15所述FIR滤波器复用系统,其特征在于,所述滤波器类型选择模块包括第一折叠地址计数器和第二折叠地址计数器,用于在所述滤波器类型选择信号是第一逻辑电平时工作;
在所述滤波器类型选择模块确定将折叠基准地址序号配置为所述第一折叠读地址的起始地址序号之前,若所述滤波器类型选择模块判断到折叠基准地址序号等于所述滤波起点地址序号,则将滤波目标地址序号更新为折叠基准地址序号,再将更新后的折叠基准地址序号更新为第一折叠读地址的起始地址序号,然后,第一折叠地址计数器用于从第一折叠读地址的起始地址序号开始,对第一折叠读地址序号执行自减操作;其中,第一折叠读地址序号表示第一折叠读地址在所述数据缓存器内的排序;第一折叠地址计数器自减一次产生的计数值的变化值是数值1,使得对第一折叠读地址序号在一次自减操作中产生的变化值为数值1;
在所述滤波器类型选择模块确定将折叠基准地址序号配置为所述第二折叠读地址的起始地址序号之前,若所述滤波器类型选择模块判断到折叠基准地址序号等于滤波目标地址序号,则将滤波起点地址序号更新为折叠基准地址序号,再将折叠基准地址序号与数值1的和值更新为第二折叠读地址的起始地址序号;然后,第二折叠地址计数器用于从第二折叠读地址的起始地址序号开始,对第二折叠读地址序号执行自加操作,其中,第二折叠地址计数器自加一次产生的计数值的变化值是数值1,使得对第二折叠读地址序号在一次自加操作中产生的变化值为数值1;
其中,滤波目标地址序号是预先在所述数据缓存器内配置的一个地址序号,作为每个滤波周期内,参与读取操作的地址中,排序最大的一个地址序号;所述滤波目标地址序号与所述滤波起点地址序号的差值等于所述当前复用的FIR滤波器的抽头数与数值1的差值。
17.根据权利要求16所述FIR滤波器复用系统,其特征在于,第一折叠地址计数器在对第一折叠读地址序号执行自减操作的过程包括:将第一折叠读地址的起始地址序号配置为第一折叠读地址序号,每当第一折叠读地址序号自减至所述滤波起点地址序号,则在下一个系统时钟周期内将滤波目标地址序号更新为第一折叠读地址序号,使得所述第一折叠读地址在所述当前复用的FIR滤波器的抽头数限定的地址范围内实现地址回环遍历;然后第一折叠地址计数器继续对第一折叠读地址序号执行自减操作;
第二折叠地址计数器在对第二折叠读地址序号执行自加操作的过程包括:将第二折叠读地址的起始地址序号配置为第二折叠读地址序号,每当第二折叠读地址序号自加至所述滤波目标地址序号,则在下一个系统时钟周期内将所述滤波起点地址序号更新为第二折叠读地址序号,使得所述第二折叠读地址在所述当前复用的FIR滤波器的抽头数限定的地址范围内实现地址回环遍历;然后第二折叠地址计数器继续对第二折叠读地址序号执行自加操作。
18.根据权利要求17所述FIR滤波器复用系统,其特征在于,所述当前复用的FIR滤波器对应的读取时序下,每两个系统时钟周期则对所述第一折叠读地址执行一次自减操作以获得一个新的所述第一折叠读地址,并将这两个系统时钟周期记为第一折叠读地址的计数周期;
所述当前复用的FIR滤波器对应的读取时序下,每两个系统时钟周期则对所述第二折叠读地址执行一次自加操作以获得一个新的所述第二折叠读地址,并将这两个系统时钟周期记为第二折叠读地址的计数周期;
所述写入数据缓存器的待滤波数据的数量大于所述当前复用的FIR滤波器的转置使能计数阈值的状态下,在所述读写控制子模块的控制下,在第一折叠读地址的计数周期或第二折叠读地址的计数周期内,读取第一折叠读地址中的待滤波数据至所述过滤计算子模块,并读取第二折叠读地址中的待滤波数据至所述过滤计算子模块,如此重复读取,直至在一个滤波周期内读取的待滤波数据的数量等于所述当前复用的FIR滤波器的抽头数;
其中,在每个第一折叠读地址的计数周期或每个第二折叠读地址的计数周期内,读取的第一折叠读地址对应的第一折叠读地址序号相对于所述滤波起点地址序号的地址偏移量,等于所述滤波目标地址序号相对于读取的第二折叠读地址对应的第二折叠读地址序号的地址偏移量。
19.根据权利要求18所述FIR滤波器复用系统,其特征在于,在写入数据缓存器的待滤波数据的数量大于当前复用的FIR滤波器的转置使能计数阈值的状态下,所述滤波器系数存储器用于在每个滤波周期内,从当前复用的FIR滤波器相匹配的起始存储地址开始,每两个系统时钟周期则对起始存储地址进行自加操作一次,再按照自加得到的存储地址将对应存储的滤波器系数依次读出至所述滤波计算子模块,直至自加得到的存储地址相对于所述起始存储地址的地址偏移量等于所述当前复用的FIR滤波器的抽头数与数值1的差值的一半,然后将最新得到的存储地址记为中间计算存储地址;
其中,在对起始存储地址进行自加操作的过程中,每自加一次,则存储地址对应的地址序号增加数值1;所述起始存储地址是由所述滤波器类型选择模块选择确定,以匹配当前复用的FIR滤波器;
其中,存储地址对应的地址序号用于表示该存储地址在所述滤波器系数存储器内地址排序;所述当前复用的FIR滤波器的抽头数是奇数。
20.根据权利要求7所述FIR滤波器复用系统,其特征在于,若当前复用的FIR滤波器是所述半带滤波器,且写入数据缓存器的待滤波数据的数量小于或等于当前复用的FIR滤波器的转置使能计数阈值的状态下,前置地址计数器用于从当前一个滤波周期对应的初始前置地址序号开始,按照所述系统时钟周期进行自减操作,得到新的前置读地址,并将每次自减操作后的前置读地址交由所述前置地址选择器传输至所述滤波器功能实现模块,以触发所述读写控制子模块从所述数据缓存器内读取出每次自减操作后的前置读地址中的待滤波数据,再依次传输给所述滤波计算子模块,直至最新得到的前置读地址序号为数值1或数值0;
所述滤波器类型选择模块包括前置地址计数器,用于在所述滤波器类型选择信号是第二逻辑电平时工作;
其中,前置地址计数器每自减操作一次,对应产生的计数值的变化值是数值2,且每次自减操作后产生的计数值被配置为前置读地址序号;前置地址计数器设置的初始计数值是初始前置地址序号。
21.根据权利要求20所述FIR滤波器复用系统,其特征在于,在一个滤波周期内,当所述半带滤波器的抽头数与数值1的差值的一半与数值1的差值等于所述前置地址计数器执行前述的自减操作的次数的两倍后,所述前置地址计数器将当前得到的前置读地址序号与数值1的差值更新为所述前置读地址序号,并允许所述读写控制子模块读取该前置读地址序号中的待滤波数据,并将该前置读地址序号标记为中间前置读地址序号;
所述前置地址计数器,用于在获得所述中间前置读地址序号之后,从所述中间前置读地址序号与数值1的差值开始,继续执行自减操作,得到新的前置读地址;其中,所述中间前置读地址序号与数值1的差值允许被更新为前置读地址序号。
22.根据权利要求21所述FIR滤波器复用系统,其特征在于,若当前复用的FIR滤波器是所述半带滤波器,则在写入数据缓存器的待滤波数据的数量小于或等于当前复用的FIR滤波器的转置使能计数阈值的状态下,所述滤波器系数存储器用于在每个滤波周期内,从当前复用的FIR滤波器相匹配的起始存储地址开始,按照所述系统时钟周期对起始存储地址进行自加操作,再按照自加得到的存储地址将对应存储的滤波器系数依次读出至所述滤波计算子模块,直至自加得到的存储地址相对于所述起始存储地址的地址偏移量等于所述当前复用的FIR滤波器的抽头数与数值1的和值的一半,然后将最新得到的存储地址记为中间计算存储地址,再对中间计算存储地址进行自减操作,再按照自减得到的存储地址将对应存储的滤波器系数依次读出至所述滤波计算子模块,直至自减得到的存储地址相对于中间计算存储地址的地址偏移量等于所述当前复用的FIR滤波器的抽头数与数值1的和值的一半,依次重复,直至在当前一个滤波周期内从所述滤波器系数存储器内输出的滤波器系数的数量等于当前一个滤波周期内读取出的待滤波数据的数量;
其中,对起始存储地址进行自加操作的过程中,每自加操作一次,则存储地址对应的地址序号增加数值2;对起始存储地址进行自减操作的过程中,每自减一次,则存储地址对应的地址序号减少数值2;
其中,存储地址对应的地址序号表示该存储地址在所述滤波器系数存储器内的地址排序;所述当前复用的FIR滤波器的抽头数是奇数。
23.根据权利要求22所述FIR滤波器复用系统,其特征在于,所述滤波计算子模块,用于在写入数据缓存器的待滤波数据的数量小于或等于当前复用的FIR滤波器的转置使能计数阈值的状态下,控制数据缓存器输出的待滤波数据以及滤波器系数存储器输出的相同读取排序的滤波器系数进行乘法运算,并将结果输入到加法器进行累加处理,得到每个滤波周期内的处理后的滤波结果;
其中,所述当前复用的FIR滤波器的抽头数是奇数,每个滤波周期内的乘法运算由一个乘法器分时复用实现;
其中,所述滤波计算子模块包括加法器和乘法器。
24.根据权利要求13所述FIR滤波器复用系统,其特征在于,所述根据写入数据缓存器的待滤波数据的数量与当前复用的FIR滤波器的转置使能计数阈值的大小关系,利用滤波器类型选择模块提供的相关联的读地址,从数据缓存器内依次读取出所述待滤波数据给所述滤波计算子模块的方式包括:
所述写入数据缓存器的待滤波数据的数量大于所述当前复用的FIR滤波器的转置使能计数阈值的状态下,所述滤波器类型选择模块用于在每一个滤波周期内,按照当前复用的FIR滤波器对应的读取时序对所述第一折叠读地址执行自减操作,再通过所述第一地址选择器将每次自减操作后的第一折叠读地址传输给所述读写控制子模块,以触发读写控制子模块按照每次自减操作后的第一折叠读地址从所述数据缓存器内读取出相应的待滤波数据;
所述写入数据缓存器的待滤波数据的数量大于所述当前复用的FIR滤波器的转置使能计数阈值的状态下,所述滤波器类型选择模块还用于在每一个滤波周期内,按照当前复用的FIR滤波器对应的读取时序对所述第二折叠读地址执行自加操作,再通过所述第二地址选择器将将每次自加操作后的第二折叠读地址传输给所述读写控制子模块,以触发读写控制子模块按照每次自加操作后的第二折叠读地址从所述数据缓存器内读取出相应的待滤波数据;
其中,当前复用的FIR滤波器是所述半带滤波器;
其中,第二折叠地址序号在一次自加操作发生的地址偏移量是数值2;第一折叠地址序号在一次自减操作发生的地址偏移量是数值2。
25.根据权利要求24所述FIR滤波器复用系统,其特征在于,在一个滤波周期内,在检测到当前复用的FIR滤波器的抽头数与对所述第一折叠读地址执行的自减操作的次数的两倍的差值小于对所述第一折叠读地址执行的自减操作的次数的两倍时,停止对所述第一折叠读地址执行前述自减操作,再将当前得到的所述第一折叠读地址序号与数值1的和值更新为所述第一折叠读地址序号,再保持所述第一折叠读地址序号不变;
或者,在一个滤波周期内,在检测到当前复用的FIR滤波器的抽头数与自加操作的次数的两倍的差值小于对所述第二折叠读地址执行的自加操作的次数的两倍时,停止对所述第二折叠读地址执行自加操作,再将当前得到的所述第二折叠读地址序号与数值1的差值更新为所述第二折叠读地址序号,再保持所述第二折叠读地址序号不变。
26.根据权利要求25所述FIR滤波器复用系统,其特征在于,所述滤波器类型选择模块包括第一折叠地址计数器,用于在所述滤波器类型选择信号是第二逻辑电平时工作;
在将所述折叠基准地址序号更新为第一折叠读地址的起始地址序号后,第一折叠地址计数器用于从第一折叠读地址的起始地址序号开始,对第一折叠读地址序号执行自减操作;若所述滤波器类型选择模块判断到第一折叠读地址序号减至所述滤波起点地址序号,则将滤波目标地址序号与数值1的差值更新为第一折叠读地址序号;若所述滤波器类型选择模块判断到所述滤波起点地址序号与数值1的和值等于所述第一折叠读地址序号,则将滤波目标地址序号更新为所述第一折叠读地址序号;
其中,第一折叠读地址序号表示第一折叠读地址在所述数据缓存器内的排序;第一折叠地址计数器自减一次产生的计数值的变化值是数值2,使得对第一折叠读地址序号在一次自加操作中产生的变化值为数值2;
其中,滤波目标地址序号是预先在所述数据缓存器内配置的一个地址序号,作为每个滤波周期内,参与读取操作的地址序号中,排序最大的一个地址序号;所述滤波目标地址序号与所述滤波起点地址序号的差值等于所述当前复用的FIR滤波器的抽头数与1的差值;
其中,第一折叠读地址序号用于表示第一折叠读地址在所述数据缓存器内的地址排序。
27.根据权利要求26所述FIR滤波器复用系统,其特征在于,所述滤波器类型选择模块包括第二折叠地址计数器,用于在所述滤波器类型选择信号是第二逻辑电平时工作;
在所述滤波器类型选择模块确定将折叠基准地址序号配置为所述第二折叠读地址的起始地址序号之前,若所述滤波器类型选择模块判断到折叠基准地址序号等于滤波目标地址序号,则将滤波起点地址序号更新为折叠基准地址序号,再将折叠基准地址序号与数值1的和值更新为第二折叠读地址序号的起始地址序号;然后,第二折叠地址计数器用于从第二折叠读地址的起始地址序号开始,对第二折叠读地址序号执行自加操作;
若所述滤波器类型选择模块判断到经过自加操作后的第二折叠读地址序号等于所述滤波目标地址序号,则将所述滤波起点地址序号与数值1的和值更新为第二折叠读地址序号;若所述滤波器类型选择模块判断到经过自加操作后的第二折叠读地址序号等于所述滤波目标地址序号与数值1的差值,则将所述滤波起点地址序号更新为第二折叠读地址序号;
其中,第二折叠地址计数器自加一次产生的计数值的变化值是数值2,使得对第二折叠读地址序号在一次自加操作中产生的变化值为数值2;
其中,第二折叠读地址序号用于表示第二折叠读地址在所述数据缓存器内的地址排序。
28.根据权利要求27所述FIR滤波器复用系统,其特征在于,在所述当前复用的FIR滤波器对应的读取时序下,每两个系统时钟周期则对所述第一折叠读地址执行一次自减操作以获得一个新的所述第一折叠读地址,并将这两个系统时钟周期记为第一折叠读地址的计数周期;
所述当前复用的FIR滤波器对应的读取时序下,每两个系统时钟周期则对所述第二折叠读地址执行一次自加操作以获得一个新的所述第二折叠读地址,并将这两个系统时钟周期记为第二折叠读地址的计数周期;
所述写入数据缓存器的待滤波数据的数量大于所述当前复用的FIR滤波器的转置使能计数阈值的状态下,在所述读写控制子模块的控制下,在第一折叠读地址的计数周期或第二折叠读地址的计数周期内,读取第一折叠读地址中的待滤波数据至所述过滤计算子模块,并读取第二折叠读地址中的待滤波数据至所述过滤计算子模块,如此重复读取,直至在一个滤波周期内读取的待滤波数据的数量等于所述当前复用的FIR滤波器的抽头数与数值1的和值的一半,然后在下一个系统时钟周期内从中间计算缓存地址中读取一个待滤波数据;其中,该中间计算缓存地址是最新获得的第二折叠读地址和最新获得的第一折叠读地址之间的地址位置;
其中,在每个第一折叠读地址的计数周期或每个第二折叠读地址的计数周期内,读取的第一折叠读地址对应的第一折叠读地址序号相对于所述滤波起点地址序号的地址偏移量,等于所述滤波目标地址序号相对于读取的第二折叠读地址对应的第二折叠读地址序号的地址偏移量。
29.根据权利要求28所述FIR滤波器复用系统,其特征在于,在写入数据缓存器的待滤波数据的数量大于当前复用的FIR滤波器的转置使能计数阈值的状态下,所述滤波器系数存储器用于在每个滤波周期内,从当前复用的FIR滤波器相匹配的起始存储地址开始,每两个系统时钟周期则对起始存储地址进行自加操作一次,再按照自加得到的存储地址将对应存储的滤波器系数依次读出至所述滤波计算子模块,直至自加得到的存储地址相对于所述起始存储地址的地址偏移量等于所述当前复用的FIR滤波器的抽头数与数值1的和值的一半,并将最新得到的存储地址记为中间计算存储地址;
其中,在对起始存储地址进行自加操作的过程中,每执行自加操作一次,则存储地址对应的地址序号增加数值2;所述起始存储地址是由所述滤波器类型选择模块选择确定,以匹配当前复用的FIR滤波器;
其中,存储地址对应的地址序号用于表示该存储地址在所述滤波器系数存储器内地址排序;所述当前复用的FIR滤波器的抽头数是奇数。
30.根据权利要求19或29所述FIR滤波器复用系统,其特征在于,所述滤波计算子模块,用于在写入数据缓存器的待滤波数据的数量大于当前复用的FIR滤波器的转置使能计数阈值的状态下,在每个第一折叠读地址的计数周期或每个第二折叠读地址的计数周期内,先控制所述数据缓存器输出的第一折叠读地址中的待滤波数据与所述数据缓存器输出的第二折叠读地址中的待滤波数据相加;再将相加的结果与所述滤波器系数存储器输出的相同读取排序的滤波器系数进行乘法运算;然后将相乘结果输入到加法器进行累加处理,在每个滤波周期内如此重复,直至所述滤波器系数存储器输出所述中间计算存储地址中的滤波器系数时,将所述中间计算存储地址中的滤波器系数与所述数据缓存器在同一读取排序下输出的第一折叠读地址中的待滤波数据进行乘法运算,再将相乘结果输入到加法器进行累加处理,得到对应的滤波周期内的处理后的滤波结果;
其中,每个滤波周期内,乘法运算由一个乘法器分时复用实现;
其中,所述滤波计算子模块包括加法器和乘法器;
其中,所述当前复用的FIR滤波器的转置使能计数阈值等于当前复用的FIR滤波器的抽头数。
31.根据权利要求5所述FIR滤波器复用系统,其特征在于,所述读写控制子模块,用于按照系统时钟周期控制外部输入的待滤波数据写入所述数据缓存器,并按照所述前置地址选择器选择输出的前置读地址、第一地址选择器选择输出的第一折叠读地址、以及第二地址选择器选择输出的第二折叠读地址,依次读取出所述写入数据缓存器的待滤波数据;
其中,当前一个系统时钟周期写入一个待滤波数据,则下一个系统时钟周期读取一个待滤波数据。
32.根据权利要求31所述FIR滤波器复用系统,其特征在于,所述读写控制子模块内部设置递增计数器,所述读写控制子模块用于从所述数据缓存器的缓存首地址开始,每写入一个待滤波数据时,控制递增计数器对当前的缓存地址加一偏移处理,获得下一个写入的待滤波数据的缓存地址,直至当前获得的缓存地址相对于缓存首地址发生的地址偏移量等于所述当前复用的FIR滤波器的抽头数时,将缓存首地址更新为当前获得的缓存地址,以使得后续写入的待滤波数据覆盖缓存首地址原先存有的待滤波数据,并确定对所述数据缓存器完成一轮连续的缓存地址的遍历;其中,连续的缓存地址是由数量为所述当前复用的FIR滤波器的抽头数的地址单元组成。
33.根据权利要求32所述FIR滤波器复用系统,其特征在于,所述读写控制子模块,还用于在完成一轮连续的缓存地址的遍历后,若继续按照系统时钟周期控制向所述连续的缓存地址写入新的所述待滤波数据,则将所述递增计数器置为递增初始值,并从所述缓存首地址开始,每写入一个待滤波数据时,将当前写入的一个待滤波数据覆盖缓存地址原先存有的待滤波数据,并控制递增计数器对当前的缓存地址加一偏移处理,获得下一个写入的待滤波数据的缓存地址,直至当前获得的缓存地址相对于缓存首地址发生的地址偏移量等于所述当前复用的FIR滤波器的抽头数与数值1的差值时,将缓存首地址更新为当前获得的缓存地址,并将所述递增计数器的计数值调整为所述递增初始值;
其中,所述递增计数器置出的递增初始值表示所述缓存首地址在所述数据缓存器内的地址排序;所述递增计数器计数产生的每个计数值都表示对应的系统时钟周期内写入的缓存地址在所述数据缓存器内的地址排序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111440934.3A CN114142829A (zh) | 2021-11-30 | 2021-11-30 | Fir滤波器复用系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111440934.3A CN114142829A (zh) | 2021-11-30 | 2021-11-30 | Fir滤波器复用系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114142829A true CN114142829A (zh) | 2022-03-04 |
Family
ID=80389700
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111440934.3A Pending CN114142829A (zh) | 2021-11-30 | 2021-11-30 | Fir滤波器复用系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114142829A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116893991A (zh) * | 2023-09-11 | 2023-10-17 | 芯动微电子科技(珠海)有限公司 | 一种axi协议下的存储模块转换接口及其转换方法 |
CN117991243A (zh) * | 2024-04-03 | 2024-05-07 | 海底鹰深海科技股份有限公司 | 一种基于fpga的声纳信号匹配滤波处理方法及其系统 |
-
2021
- 2021-11-30 CN CN202111440934.3A patent/CN114142829A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116893991A (zh) * | 2023-09-11 | 2023-10-17 | 芯动微电子科技(珠海)有限公司 | 一种axi协议下的存储模块转换接口及其转换方法 |
CN116893991B (zh) * | 2023-09-11 | 2024-01-02 | 芯动微电子科技(珠海)有限公司 | 一种axi协议下的存储模块转换接口及其转换方法 |
CN117991243A (zh) * | 2024-04-03 | 2024-05-07 | 海底鹰深海科技股份有限公司 | 一种基于fpga的声纳信号匹配滤波处理方法及其系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114142829A (zh) | Fir滤波器复用系统 | |
US5204827A (en) | Sampling rate converting apparatus | |
US6041339A (en) | Efficient decimation filtering | |
US6889238B2 (en) | Parallel decimator adaptive filter and method for all-rate gigabit-per-second modems | |
US4777612A (en) | Digital signal processing apparatus having a digital filter | |
KR0129767B1 (ko) | 샘플링레이트 변환장치 | |
JPS6347006B2 (zh) | ||
EP0080712B1 (en) | Sampling frequency converting apparatus | |
KR100511295B1 (ko) | 디지털 필터 및 그 운용방법 | |
US5191547A (en) | Decimating digital finite impulse response filter | |
US4866648A (en) | Digital filter | |
CN102035503A (zh) | 滤波装置及级联积分梳状滤波器的滤波方法 | |
JP2006260411A (ja) | 信号処理装置およびそれを利用した通信機器 | |
CN114142831A (zh) | 一种具备计数功能的fir滤波器 | |
JP3210219B2 (ja) | 櫛形フィルタとそれを用いた送受信装置 | |
CN114124035A (zh) | 一种半带滤波器 | |
JP2929807B2 (ja) | ディジタルフィルタ | |
CN110247642B (zh) | 一种fir滤波方法及滤波器 | |
JP3827207B2 (ja) | ディジタルフィルタおよび情報通信機器 | |
KR100447178B1 (ko) | 유한 임펄스 응답 필터 | |
JP4315352B2 (ja) | ディジタルフィルタおよび情報通信機器 | |
US8380772B2 (en) | Multi-rate filter bank | |
de Carvalho et al. | Real-time interpolation with cubic splines and polyphase networks | |
TWI482427B (zh) | 分時降頻濾波器與分時降頻濾波方法 | |
US5933545A (en) | Device for the decimation of digital data sequences |
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 |