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

一种半带滤波器的制作方法

2022-03-02 00:08:02 来源:中国专利 TAG:


1.本发明涉及到有限脉冲响应滤波器的技术领域,尤其涉及一种半带滤波器。


背景技术:

2.在数字滤波器中,fir (finite impulse response)滤波器是有限长单位脉冲冲激响应数字滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而,fir滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。fir滤波器的阶数是指过滤谐波的次数;fir滤波器长度用于反应滤波器滤波的频带范围;fir滤波器的阶数与数值1的和值等于fir滤波器系数的个数,也等于滤波器的抽头数,fir滤波器的抽头数是滤波器的抽头的个数的简称。其中,fir抽头的个数用于表示滤波器所需要的存储空间,还用于表示需要计算的数目,还用于表示滤波器能滤掉的数量,实际上,越多的抽头意味着有更多的阻带衰减,更少的波纹,更窄的滤波等等。滤波器的通带所表示的是能够通过滤波器而不会产生衰减的信号频率成分;滤波器的阻带所表示的是被滤波器衰减掉的信号频率成分。
3.fir (finite impulse response)滤波器应用于语音识别、高清录音、音频解码等场景下,都匹配上高性能的模数转换系统,对输入音频信号的高频噪声进行滤波和对过采样信号进行抽取,来获得信号质量较高的信号,时域上基于乘法器结构的fir滤波器采用寄存器对源源不断输入的信号进行持续缓存,并实时地通过乘法运算和加法运算完成滤波过程,在这一滤波过程中,fir滤波器抽取数据所使用时钟信号的频率等于输入信号的时钟频率,因而,fir滤波器缓存的数据中容易填充有不需要进行滤波计算的数据,增加滤波计算所需的硬件开销,且在每次滤波计算中,不容易捕获到每个时钟周期下需要滤波计算的数据,反倒增加fir滤波器的功耗。


技术实现要素:

4.针对上述技术缺陷,本发明公开一种半带滤波器,通过在单个时钟周期控制相关地址计数器的计数值的变化值为数值2的方式来实现对间隔式地抽取输入的所有待滤波数据,并实时进行滤波计算功能,从而在消耗较少的资源的前提下获得有效的滤波结果。具体的技术方案如下:一种半带滤波器,该半带滤波器包括读写控制模块、滤波计算模块、数据缓存空间和滤波器系数存储器;读写控制模块,用于控制输入半带滤波器的待滤波数据写入数据缓存空间内,并以数值2为单次计数操作下的变化值进行计数,产生读地址;读写控制模块,用于根据写入数据缓存空间的待滤波数据的数量与转置使能计数阈值的大小关系,利用计数产生的读地址,从数据缓存空间内周期性地读取出所述待滤波数据,并将读取出的所述待滤波数据依次传输给所述滤波计算模块;滤波器系数存储器,用于在所述读写控制模块开始从数据缓存空间内读取所述待滤波数据后,按照所述读写控制模块从数据缓存空间内读取所述待滤波数据的顺序,依次输出所需的滤波器系数给所述滤波计算模块;滤波计算模
块,用于控制数据缓存空间输出的待滤波数据以及滤波器系数存储器输出的滤波器系数进行滤波计算;其中,所述半带滤波器的抽头数与数值1的差值等于转置使能计数阈值。
5.进一步地,所述读写控制模块还包括基准地址计数器;基准地址计数器用于每当向所述数据缓存空间写入两个所述待滤波数据时,执行一次自加操作,并产生基准地址,触发所述读写控制模块利用基准地址从所述数据缓存空间读取所述待滤波数据,同时记为进入一个滤波周期并确定开始一次滤波计算;其中,该基准地址是开始进行当前一次滤波计算而需要在所述数据缓存空间内遍历的第一个读地址;基准地址计数器的一次自加操作产生的计数值的变化值是数值2;其中,所述半带滤波器的抽取率是2倍。
6.进一步地,所述半带滤波器还设置有一个系统时钟源,用于产生系统时钟脉冲,以驱使所述读写控制模块周期性地从所述数据缓存空间内读取所述待滤波数据、或周期性地将所述待滤波数据写入所述数据缓存空间内;其中,完成一个待滤波数据的一次写操作的时间是一个系统时钟脉冲的脉冲周期;完成一个待滤波数据的一次读操作的时间是一个系统时钟脉冲的脉冲周期。
7.进一步地,所述根据写入数据缓存空间的待滤波数据的数量与所述转置使能计数阈值的大小关系,利用计数产生的读地址,从数据缓存空间内周期性地读取出所述待滤波数据,并将读取出的所述待滤波数据依次传输给所述滤波计算模块的方式包括:所述读写控制模块,用于当写入数据缓存空间的待滤波数据的数量小于或等于所述转置使能计数阈值时,从所述数据缓存空间内读取出前置读地址中的待滤波数据;其中,所述读写控制模块用于每当读取出一个待滤波数据,则将该待滤波数据传输给所述滤波计算模块;其中,所述前置读地址在每个滤波周期内由对应的一个基准地址开始进行计数获得;一个滤波周期内的基准地址是所述读写控制模块在该滤波周期内读取到的第一个前置读地址;一个滤波周期大于两个系统时钟脉冲的脉冲周期之和。
8.进一步地,所述读写控制模块包括前置地址计数器和读地址选择器;所述写入数据缓存空间的待滤波数据的数量小于或等于所述转置使能计数阈值时,读地址选择器选择所述前置地址计数器产生的前置读地址输出给所述数据缓存空间;前置地址计数器用于在所述写入数据缓存空间的待滤波数据的数量小于或等于所述转置使能计数阈值的状态下,从当前一个滤波周期内的基准地址开始,每检测到一个所述系统时钟脉冲则进行一次自减操作,再触发所述读写控制模块从每次自减操作得到的前置读地址中读取出待滤波数据;前置地址计数器用于在所述写入数据缓存空间的待滤波数据的数量小于或等于所述转置使能计数阈值时,在一个滤波周期或一次滤波计算内,每次自减操作后获得一个新的前置读地址;其中,前置地址计数器在每个滤波周期内的初始计数值是所述基准地址计数器在该滤波周期内的所述基准地址;前置地址计数器每执行自减操作一次,产生的计数值的变化值是数值2。
9.进一步地,在一个滤波周期内,当检测到所述半带滤波器的抽头数与数值1的差值的一半与数值1的差值等于所述前置地址计数器执行前述的自减操作的次数的两倍后,所述前置地址计数器在下一个系统时钟脉冲到来时将当前得到的前置读地址与数值1的差值更新为所述前置读地址以允许所述读写控制模块读取该前置读地址中的待滤波数据,并将该前置读地址标记为中间前置读地址;所述前置地址计数器,还用于在获得所述中间前置读地址之后,从所述中间前置读地址与数值1的差值开始,继续执行前述自减操作,得到新
的前置读地址;其中,所述中间前置读地址与数值1的差值允许被更新为前置读地址。
10.进一步地,在写入数据缓存空间的待滤波数据的数量小于或等于所述转置使能计数阈值时,所述滤波器系数存储器用于在每个滤波周期内,从所述半带滤波器设置的起始存储地址开始,对起始存储地址进行自加操作,再将自加得到的存储地址中的滤波器系数输出给所述滤波计算模块,直至自加得到的存储地址相对于所述起始存储地址的地址偏移量等于所述半带滤波器的抽头数与数值1的和值的一半,然后将最新得到的存储地址记为中间计算存储地址,再对中间计算存储地址进行自减操作,再将自减得到的存储地址中的滤波器系数输出给所述滤波计算模块,直至自减得到的存储地址相对于中间计算存储地址的地址偏移量等于所述半带滤波器的抽头数与数值1的和值的一半,依次重复,直至在当前一个滤波周期内从所述滤波器系数存储器内输出的滤波器系数的数量等于当前一个滤波周期内从所述数据缓存空间内读取的待滤波数据的数量;其中,所述半带滤波器的抽头数是奇数;其中,对起始存储地址进行自加操作的过程中,每执行一次自加操作,则存储地址增加数值2;对中间计算存储地址进行自减操作的过程中,每执行一次自减操作,则存储地址减少数值2。
11.进一步地,所述滤波计算模块,用于在写入数据缓存空间的待滤波数据的数量小于或等于所述转置使能计数阈值时,控制数据缓存空间输出的待滤波数据以及滤波器系数存储器输出的相同读取顺序的滤波器系数进行乘法运算,并将结果输入到加法器进行累加处理,得到每个滤波周期内的处理后的滤波结果;其中,每个滤波周期内的乘法运算由一个乘法器分时复用实现;所述相同读取顺序是在每个滤波周期内读取所述待滤波数据的顺序;其中,所述滤波计算模块包括加法器和乘法器。
12.进一步地,所述根据写入数据缓存空间的待滤波数据的数量与所述转置使能计数阈值的大小关系,利用计数产生的读地址,从数据缓存空间内周期性地读取出所述待滤波数据,并将读取出的所述待滤波数据依次传输给所述滤波计算模块的方式包括:所述读写控制模块包括第一折叠地址计数器和第二折叠地址计数器;在所述写入数据缓存空间的待滤波数据的数量大于所述转置使能计数阈值时,所述第一折叠地址计数器用于在每一个滤波周期内,对所述第一折叠读地址执行自减操作,产生新的第一折叠读地址,以触发所述读写控制模块从每次自减操作得到的第一折叠读地址中读取出待滤波数据;所述写入数据缓存空间的待滤波数据的数量大于所述转置使能计数阈值时,所述第二折叠地址计数器还用于在每一个滤波周期内,对所述第二折叠读地址执行自加操作,产生新的第二折叠读地址,以触发所述读写控制模块从每次自加操作得到的第二折叠读地址中读取出待滤波数据;其中,第一折叠地址计数器自减操作一次产生的计数值的变化值是数值2;其中,第二折叠地址计数器自加操作一次产生的计数值的变化值是数值2。
13.进一步地,在一个滤波周期内,在半带滤波器的抽头数与数值1的差值的一半与数值1的差值等于所述第一折叠地址计数器执行自减操作的次数的两倍后,所述第一折叠地址计数器停止对所述第一折叠读地址执行前述自减操作,并将当前得到的所述第一折叠读地址与数值1的差值更新为所述第一折叠读地址,再保持更新后的第一折叠读地址不变,并将该第一折叠读地址标记为中间计算缓存地址;而且,在半带滤波器的抽头数与数值1的差值的一半与数值1的差值等于所述第二折叠地址计数器执行自加操作的次数的两倍后,所述第二折叠地址计数器停止对所述第二折叠读地址执行前述自加操作,并保持所述第二折
叠读地址不变。
14.进一步地,所述第一折叠地址计数器,用于每检测到两个系统时钟脉冲则对所述第一折叠读地址执行一次自减操作以获得一个新的所述第一折叠读地址,并将相邻两个系统时钟脉冲的脉冲周期组成一个折叠地址读周期;所述写入数据缓存空间的待滤波数据的数量大于所述转置使能计数阈值时,在所述读写控制模块的控制下,在折叠地址读周期内,先读取第一折叠读地址中的待滤波数据至所述过滤计算模块,再读取第二折叠读地址中的待滤波数据至所述过滤计算模块,在一个滤波周期内如此重复,直至读取的待滤波数据的数量等于所述半带滤波器的抽头数与数值1的和值的一半,然后在下一个系统时钟脉冲到来时从所述中间计算缓存地址中读取一个待滤波数据,其中,所述中间计算缓存地址是最新获得的第二折叠读地址和最新获得的第一折叠读地址之间的地址位置;其中,所述第二折叠地址计数器,用于在折叠地址读周期下,执行一次自加操作以实现每连续两个系统时钟脉冲到来则获得一个新的所述第二折叠读地址。
15.进一步地,所述读写控制模块还包括读地址选择器;所述写入数据缓存空间的待滤波数据的数量大于所述转置使能计数阈值时,读地址选择器选通所述第一折叠地址计数器产生的第一折叠读地址和所述第二折叠地址计数器产生的第二折叠读地址输出,以触发所述读写控制模块在所述折叠地址读周期内读取相应地址中的两个待滤波数据。
16.进一步地,所述读写控制模块,用于在写入数据缓存空间的待滤波数据的数量大于所述转置使能计数阈值的状态下,将所述基准地址计数器产生的基准地址配置为第一折叠读地址,并将基准地址与数值1的和值配置为第二折叠读地址。
17.进一步地,当基准地址计数器的计数值为所述半带滤波器的抽头数与数值2的差值后,所述读写控制模块在下一个系统时钟脉冲将滤波起点地址更新为基准地址计数器当前获得的计数值,并将滤波起点地址更新为基准地址;当基准地址计数器的计数值为所述半带滤波器的抽头数与数值1的差值后,所述读写控制模块在下一个系统时钟脉冲将滤波起点地址与数值1的和值更新为所述基准地址计数器当前获得的计数值,并将滤波起点地址与数值1的和值更新为基准地址;其中,滤波起点地址设置为数值0,且所述半带滤波器的抽头数为奇数。
18.进一步地,在所述写入数据缓存空间的待滤波数据的数量大于所述转置使能计数阈值时,所述读写控制模块确定将所述基准地址配置为所述第一折叠读地址之前,若所述读写控制模块判断到基准地址等于滤波起点地址,则将滤波目标地址更新为基准地址,再将更新后的基准地址配置为第一折叠读地址的起始地址,然后,第一折叠地址计数器用于从第一折叠读地址的起始地址开始,对第一折叠读地址执行自减操作;在所述写入数据缓存空间的待滤波数据的数量大于所述转置使能计数阈值时,所述读写控制模块确定将所述基准地址配置为所述第二折叠读地址之前,若所述读写控制模块判断到基准地址等于滤波目标地址,则将滤波起点地址更新为基准地址,再将更新后的基准地址与数值1的和值配置为第二折叠读地址的起始地址,然后,第二折叠地址计数器用于从第二折叠读地址的起始地址开始,对第二折叠读地址执行自加操作。
19.进一步地,所述第一折叠地址计数器在对第一折叠读地址执行自减操作的过程包括:将第一折叠读地址的起始地址配置为第一折叠读地址,每当第一折叠读地址自减至滤波起点地址,则在下一个系统时钟脉冲将滤波目标地址与数值1的差值更新为第一折叠读
地址;每当第一折叠读地址自减至滤波起点地址与数值1的和值,则在下一个系统时钟脉冲将滤波目标地址更新为第一折叠读地址;所述第二折叠地址计数器在对第二折叠读地址执行自加操作的过程包括:将第二折叠读地址的起始地址配置为第二折叠读地址,每当第二折叠读地址自加至滤波目标地址,则在下一个系统时钟脉冲将滤波起点地址与数值1的和值更新为第二折叠读地址;每当第二折叠读地址自加至滤波目标地址与数值1的差值,则在下一个系统时钟脉冲将滤波起点地址更新为第二折叠读地址。
20.进一步地,在每个折叠地址读周期内,读取的第一折叠读地址对应的第一折叠读地址相对于所述滤波起点地址的地址偏移量,等于所述滤波目标地址相对于读取的第二折叠读地址对应的第二折叠读地址的地址偏移量;其中,滤波目标地址是预先在所述数据缓存空间内配置的一个地址,作为每个滤波周期内,参与读取操作的地址中,顺序最大的一个地址;其中,滤波起点地址是预先在所述数据缓存空间内配置的一个地址,作为每个滤波周期内,被读取的地址中,顺序最小的一个地址;其中,所述滤波目标地址与所述滤波起点地址的差值等于所述半带滤波器的抽头数与数值1的差值。
21.进一步地,在写入数据缓存空间的待滤波数据的数量大于所述转置使能计数阈值时,所述滤波器系数存储器用于在每个滤波周期内,从所述半带滤波器相匹配的起始存储地址开始,每检测到两个系统时钟脉冲则对起始存储地址进行自加操作一次,再从所述滤波器系数存储器内将自加操作得到的存储地址中的滤波器系数依次读出至所述滤波计算模块,直至自加操作得到的存储地址相对于所述起始存储地址的地址偏移量等于所述半带滤波器的抽头数与数值1的和值的一半,并将最新得到的存储地址记为中间计算存储地址;其中,在对起始存储地址进行自加操作的过程中,每执行一次自加操作,产生一个存储地址,相邻两次自加操作产生的存储地址的变化值是数值2。
22.进一步地,所述滤波计算模块,用于在写入数据缓存空间的待滤波数据的数量大于所述转置使能计数阈值时,在每个折叠地址读周期内,先控制所述数据缓存空间输出的第一折叠读地址中的待滤波数据与所述数据缓存空间输出的第二折叠读地址中的待滤波数据相加;再将相加的结果与所述滤波器系数存储器输出的相同读取顺序的滤波器系数进行乘法运算;然后将相乘结果输入到加法器进行累加处理,在每个滤波周期内如此重复,直至所述滤波器系数存储器输出所述中间计算存储地址中的滤波器系数,再控制所述中间计算存储地址中的滤波器系数与所述中间读地址中的待滤波数据进行乘法运算,再将相乘结果输入到加法器进行累加处理,得到对应的滤波周期内的处理后的滤波结果;其中,每个滤波周期内,乘法运算由一个乘法器分时复用实现;所述滤波计算模块包括加法器和乘法器。
23.进一步地,读写控制模块控制输入所述半带滤波器的待滤波数据写入数据缓存空间内的方式包括:所述读写控制模块内部设置递增计数器,所述读写控制模块用于从所述数据缓存空间的缓存首地址开始,每写入一个待滤波数据时,控制递增计数器对当前的缓存地址加一偏移处理,获得下一个写入的待滤波数据的缓存地址,直至当前获得的缓存地址相对于缓存首地址发生的地址偏移量等于所述半带滤波器的抽头数时,将缓存首地址更新为当前获得的缓存地址,以使得后续写入的待滤波数据覆盖缓存首地址原先存有的待滤波数据,并确定对所述数据缓存空间完成一轮连续的缓存地址的遍历;其中,连续的缓存地址是由数量为所述半带滤波器的抽头数的地址单元组成。
24.进一步地,所述读写控制子模块,还用于在完成一轮连续的缓存地址的遍历后,若
继续按照系统时钟脉冲控制向所述连续的缓存地址写入新的所述待滤波数据,则将所述递增计数器置为递增初始值,并从所述缓存首地址开始,每写入一个待滤波数据时,将当前写入的一个待滤波数据覆盖缓存地址原先存有的待滤波数据,并控制递增计数器对当前的缓存地址加一偏移处理,获得下一个写入的待滤波数据的缓存地址,直至当前获得的缓存地址相对于缓存首地址发生的地址偏移量等于所述半带滤波器的抽头数与数值1的差值时,将缓存首地址更新为当前获得的缓存地址,并将所述递增计数器的计数值调整为所述递增初始值;其中,所述递增计数器置出的递增初始值表示所述缓存首地址在所述数据缓存空间内的地址排序;所述递增计数器计数产生的每个计数值都表示对应的系统时钟脉冲内写入的缓存地址在所述数据缓存空间内的地址排序。
25.与现有技术相比,本发明根据所述半带滤波器的抽头数与数值1的差值与写入数据缓存空间的待滤波数据的数量的大小关系,选择在数据量达到所述半带滤波器的抽头数的状态下进行先加两个待滤波数据再乘滤波器系数的折叠计算,选择在数据量没有达到所述半带滤波器的抽头数的状态下进行先乘滤波器系数再进行累加的直接型计算,并且无论是在哪种状态下,都是每间隔一个读地址地抽取一个待滤波数据和滤波器系数进行具备周期性的滤波计算,从而在一个滤波周期内,相对于现有技术,只是采用输入的待滤波数据的一半参与滤波计算,每次滤波计算或每个滤波周期内的读地址的变化频率都是系统时钟脉冲的频率的一半,减少所述数据缓存空间内原先写入的无效数据的干扰程度。
26.另一方面,所述读写控制模块中,用于控制所述数据缓存空间的读写的计数器的计数值的重置能够与前述滤波起点地址和前述的滤波目标地址建立起联系,使得相应的计数器的计数值的自加或自减操作能够被限定在所述半带滤波器的抽头数与数值1的差值所限定的模值(计数器中表示的不同状态的数量)内,从而在与所述待滤波数据同步被获取的滤波器系数中,最后一个参与计算的滤波器系数更容易被捕获至所述滤波计算模块中,且以更少的读取操作次数获得,间接减少fir滤波器的功耗。
附图说明
27.图1是本发明一实施例公开一种半带滤波器的模块连接框图。
28.图2是本发明的另一实施例公开的读写控制模块的内部的结构原理示意图。
29.图3是7抽头的半带滤波器的数据流动的动态变化示意图。
具体实施方式
30.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行详细描述。为进一步说明各实施例,本发明提供有附图。这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理。
31.除非另作定义,本发明所涉及的技术术语或科学术语应当为本技术所属技术领域内具有一般技能的人士所理解的通常意义。本技术所涉及的“一”、“一种”、“该”等词语并不表示数量限制,可以表示单数或复数。本技术所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含,如:包含了一系列步骤或模块的过程、方法、系统产品或者设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或模块,或者还可以包括对于这些过程、方法、产品或设备固有的其他步骤或单元。本技术所涉及的
术语“第一”、“第二”、“第三”等仅仅是用于区别类似的对应,不代表针对对象的特定顺序。
32.需要说明的是,本发明公开的计数器的自加操作是对半带滤波器内部的计数器的加法计数操作,限于加二计数,且将其变化前后的计数值都配置为地址;计数器的自减操作是对半带滤波器内部的计数器的减法计数操作,限于加二计数;因此,一个计数器的自加操作及其自减操作分别是沿着不同的方向产生地址,且连续产生的两个地址之间由一个闲置地址隔开,这个闲置地址分别与前述连续产生的两个地址相邻分布在同一缓存空间内。
33.本发明公开的由相关的计数器的计数值是用于产生地址,则数值0、数值1、计数值及其相关的数值可以用于表示相应的输入输出数据在所述数据缓存空间或滤波器系数存储器内实际存储地址的序号,为了简化描述,本发明的任意实施例都将计数值、数值、和值或差值指示的地址,简化为直接使用计数值、数值、和值或差值来表示。
34.本发明的一实施例公开一种半带滤波器,可以根据实际应用领域(音频或视频)的滤波算法需求,以较少的硬件资源来在音频设备的单声道或双声道的音频信号中进行抽取和滤波。如图1所示,半带滤波器包括读写控制模块、滤波计算模块、数据缓存空间和滤波器系数存储器。所述半带滤波器的内部预先配置有抽头数、抽取率,支持外部的软件参数或程序介入修改,但抽头数仅限于奇数;具体地,所述半带滤波器的内部设置有专门的参数配置寄存器,用于存储各种类型的半带滤波器的相关性能参数,包括但不限于输入输出数据的位宽、滤波器系数的位宽、半带滤波器的抽头数及阶数、滤波器系数的数量、滤波器的长度、滤波器的抽取率、一次滤波运算所需的滤波周期、片选信号的有效时间点、使能信号的拉高时间点、滤波器系数存储器的读地址的起始地址或起始读取时间点,即确定滤波器系数的读取和计算的起止时间点及对应的地址区间;其中,半带滤波器的抽头数等于半带滤波器的阶数与数值1的和值。在本发明中,写入所述数据缓存空间的每个待滤波数据的位宽是由特定的寄存器预先配置的,每个待滤波数据占据的位宽小于或等于所述数据缓存空间允许读写的最大位宽。
35.在本实施例中,半带滤波器是一种特殊的fir滤波器,半带滤波器的阶数只能为偶数,则半带滤波器的抽头数为奇数,半带滤波器的滤波器系数除了中间值为0.5外,其余偶数排序的地址位置处(奇数项)的滤波器系数都为0。
36.在本实施例中,所述读写控制模块以数值2为单次计数操作下的变化值进行计数,产生所述半带滤波器进行滤波计算所需的读地址,其中,每一次计数操作产生一个读地址,相邻两次产生的地址之间的地址偏移量是数值2,相对于现有技术的其余类型的fir滤波器,能够使用一半的读地址来限定读取所述数据缓存空间的地址区间,以满足所述半带滤波器的抽取要求,包括开始抽取、回环抽取以重复读取同一地址、以及停止抽取。其中,单次计数操作包括所述读写控制模块内置的计数器的一次自加操作或一次自减操作,具体是对计数值加一计数或减一计数。
37.需要说明的是,在硬件化实施的过程中,读地址都是在同一时钟下由专门的计数器进行计数或视实际的数据传输速率进行分频处理,值得注意的是,在读数据之前需要先确定好读操作的起始地址和起始时间点。其中,数据缓存空间是使用sram来实现,即使用静态随机存取存储器(static random-access memory,sram)来实现。
38.读写控制模块,用于控制输入半带滤波器的待滤波数据写入数据缓存空间内,具体地,所述读写控制模块作为数据的读写逻辑,可以按照所述半带滤波器的抽取率,在计数
产生的相应时钟时序下将输入数据写入所述数据缓存空间;同时可以根据所述半带滤波器的抽头数及实时写入的待滤波数据的数量,去以加二计数的方式产生滤波计算所需的读地址;其中,所述滤波计算模块在对一批待滤波数据进行一次滤波计算时,允许所述读写控制模块继续控制新的一批待滤波数据写入所述数据缓存空间。
39.如图1所示,读写控制模块的端口i1是用于向所述数据缓存空间传输时钟信号,配置为读取所述数据缓存空间内的相关联的读地址中数据的驱动时钟信号;读写控制模块的端口i2是用于向所述数据缓存空间传输片选信号,该片选信号用于启动选择所述数据缓存空间内需要被读取或进入工作状态的地址区间;读写控制模块的端口i3是用于向所述数据缓存空间传输使能信号,该使能信号用于区分读使能还是写使能;读写控制模块的端口i4是用于向所述数据缓存空间传输所述读写控制模块计数产生的相关联的读地址;读写控制模块的端口i5是用于向所述数据缓存空间写入所述待滤波数据;读写控制模块的端口o6是用于接受从所述数据缓存空间内读取出的待滤波数据,所述数据缓存空间传输的被读取的数据会被读写控制模块的其它端口传输给滤波计算模块,其中,传输给所述滤波计算模块的数据,如图1的fir_rdata所示。
40.读写控制模块,用于根据写入数据缓存空间的待滤波数据的数量与所述转置使能计数阈值的大小关系,利用计数产生的读地址,从数据缓存空间内周期性地读取出所述待滤波数据给所述滤波计算模块,并将读取出的所述待滤波数据依次传输给所述滤波计算模块;值的注意的是,在一些实施例中,每读取一个待滤波数据则立即传输给所述滤波计算模块,若是从相邻的读地址中获取待滤波数据,则容易读取出一些在先插入的无效数据。
41.所述读写控制模块在对写入所述数据缓存空间内的待滤波数据的数量与所述转置使能计数阈值的大小关系进行判断时,本实施例将所述写入数据缓存空间的待滤波数据的数量视为等于输入半带滤波器的待滤波数据的数量,此时不包括所述滤波计算模块已经一次滤波计算时新写入的待滤波数据,则判断写入数据缓存空间的待滤波数据的数量与所述转置使能计数阈值的大小关系是在检测输入半带滤波器的待滤波数据的数量是否满足一定的计数阈值,用于决策在所述半带滤波器当前应该采取的滤波计算方式,相对于现有技术,本实施例将所述半带滤波器的抽头数与数值1的差值设置为所述转置使能计数阈值,抽取和滤波处理同批量的数据,让所述读写控制模块加快进入写入所述数据缓存空间内的待滤波数据的数量更大的滤波计算方式中,进而减少计算量,尤其是在抽头数较大的情况下更为显著。
42.需要说明的是,写入数据缓存空间的待滤波数据的数量与所述转置使能计数阈值的大小关系是由一个特定的使能信号确定的,并由读写控制模块接收,对应为图2的选择信号thr_sel,当然该特定使能信号可以由所述读写控制模块对输入所述半带滤波器的外部数据的数量或对写入所述数据缓存空间的数据的数量进行计数而获得,即由所述半带滤波器的抽头数与数值1的差值与所述写入所述数据缓存空间内的待滤波数据的数量的大小关系决定。
43.滤波计算模块,用于控制所述数据缓存空间输出的待滤波数据以及所述滤波器系数存储器输出的滤波器系数进行滤波计算,在本实施例中,二者的读地址可以选择都是以数值2为变化值进行同步计数而获得。在此数据抽取方式的基础上,在所述半带滤波器执行的滤波计算中,实时根据写入数据缓存空间的待滤波数据的数量与所述转置使能计数阈值
的大小关系划分相应不同滤波阶段下的计算方式,本实施例将所述半带滤波器的抽头数与数值1的差值设置为所述转置使能计数阈值,相对于现有技术滤波阶段下的计算过程所耗费的时间和资源是减少的。
44.滤波器系数存储器,还用于存储有需要复用的半带滤波器所需的滤波器系数,其中,滤波器系数存储器可以使用rom来实现,即使用只读存储器(read-only memory,rom)来实现。如图1所示,滤波器系数存储器通过其端口rom_out向所述滤波计算模块传输滤波器系数。
45.滤波器系数存储器,用于在所述读写控制模块开始从数据缓存空间内读取所述待滤波数据后,按照所述读写控制模块从数据缓存空间内读取所述待滤波数据的顺序,从所述半带滤波器对应的所述起始存储地址开始,依次输出所需的滤波器系数给所述滤波计算模块;值得注意的是,所述滤波计算模块从所述滤波器系数存储器读取滤波器系数的存储地址的次序是与所述读写控制模块从所述数据缓存空间读取待滤波数据的缓存地址的次序是保持相同的,以使得所述数据缓存空间输出的待滤波数据与所述滤波器系数存储器输出的相应地址位置处(奇数或偶数标识的地址位置,其涉及到的基地址是预先配置并在此基础上自加或自减得到)的滤波器系数在同一个滤波周期内能进行一次滤波计算。
46.需要说明的是,在本实施例中针对输入的一笔待滤波数据进行一次滤波计算所耗费的时间是一个滤波周期,所述数据缓存空间输出的待滤波数据与所述滤波器系数存储器输出的滤波器系数能够保证在同一个滤波周期内执行完整的一次滤波计算。本实施例将所述半带滤波器设计为流水线结构,所以滤波计算模块每进行一次滤波计算时,所述读写控制模块继续控制新输入半带滤波器的待滤波数据写入数据缓存空间内但不参与该次滤波计算。
47.与现有技术相比,本发明根据所述半带滤波器的抽头数与数值1的差值与写入数据缓存空间的待滤波数据的数量的大小关系,选择在写入数据缓存空间的待滤波数据的数量达到相应阈值条件下进行相应的滤波计算,并且无论是在哪种状态下,都是每间隔一个读地址地抽取一个待滤波数据和及其对应输出的滤波器系数进行具备周期性的滤波计算,从而在一个滤波周期内,相对于现有技术,只是采用输入的待滤波数据的一半参与滤波计算,每次滤波计算或每个滤波周期内的读地址的变化频率都是系统时钟脉冲的频率的一半,减少所述数据缓存空间内原先写入的无效数据的干扰程度。
48.在一些实施例中,写入数据缓存空间的待滤波数据的数量大于所述转置使能计数阈值时,产生一种高电平的折叠选择信号,对应为图2的选择信号thr_sel=1,选通所述读写控制模块内对应计数器的数据通路,传输该计数器产生的一种读地址;写入数据缓存空间的待滤波数据的数量小于或等于所述转置使能计数阈值时,产生一种低电平的折叠选择信号,对应为图2的选择信号thr_sel=0,选通所述读写控制模块内对应计数器的数据通路,产生另一种读地址;所以,所述读写控制模块用于读取所述数据缓存空间的读取时序是由所述半带滤波器选通的特定的计数器产生的计数时序决定的。
49.在上述实施例的基础上,所述读写控制模块包括基准地址计数器,具体是可以设置在所述读写控制模块内,作为获取每一次滤波计算所需的待滤波数据的起始读地址的计数逻辑部件;基准地址计数器,用于每当所述半带滤波器的外部向所述数据缓存空间写入两个所述待滤波数据时,或所述滤波计算模块开始进行一次滤波计算时,执行一次自加操
作,对基准地址计数器的计数值进行自加操作后,产生基准地址,触发所述读写控制模块利用基准地址从所述数据缓存空间读取所述待滤波数据,同时记为进入一个滤波周期并确定开始一次滤波计算;本实施例将所述半带滤波器的抽取倍数设置为2倍;其中,基准地址计数器的一次自加操作产生的计数值的变化值是数值2,完成加二计数一次;在一些实施例中,相邻两个滤波周期下获得的基准地址之间的地址偏移量等于数值2,因为能够将相邻两个滤波周期下获得的基准地址之间的地址偏移量设置为等于所述半带滤波器的抽取倍数。触发所述滤波计算模块利用基准地址从所述数据缓存空间输出的所述待滤波数据进行滤波计算后,在所述滤波计算模块计算出一个滤波结果时,确定所述半带滤波器从写入两个所述待滤波数据开始已经经过一个滤波周期,并已经完成一次滤波计算,包括写入2个待过滤数据所需的两个系统时钟脉冲、从所述数据缓存空间内依次读取出所述待滤波数据的总周期(具体的数值与一次滤波计算需从所述数据缓存空间内读取到的待滤波数据的数量相关)、以及滤波计算所包含的相乘累加计算所需的周期,则本实施例设置的一个滤波周期是大于两个系统时钟脉冲,从而本实施例为保证执行一个周期性的滤波计算而设置互相联系的读写和计算周期长度,实现获取有效的滤波结果,因此,每经过一个滤波周期,则所述滤波计算模块输出一个滤波结果;即本实施例在所述滤波计算模块输出一个滤波结果时,确定所述半带滤波器从写入两个所述待滤波数据开始已经经过一个滤波周期,并确定一个滤波周期内只完成一次滤波计算;其中,所述基准地址是在该滤波周期内,所述数据缓存空间输出第一个待滤波数据的读地址。值得注意的是,在当前一个滤波周期内进行一次滤波计算的同时允许向所述数据缓存空间继续写入新的所述待滤波数据以开启下一个滤波周期,本实施例公开的半带滤波器是数字逻辑电路构成的,半带滤波器具备的流水线结构,决定输入的所述待滤波数据的读写和计算同步执行,实现相邻两个滤波周期存在部分重合的时序区间;需要补充是,所述基准地址计数器内设的初始计数值可以是数值0或数值1,而本实施例选择将所述基准地址计数器内设的初始计数值配置为数值0。综上,该实施例确定所述半带滤波器是具备2倍抽取率的条件下,进行一次滤波计算所需的周期性计数规则,实现对所述半带滤波器的一次滤波计算所耗费的周期的有效划分。
50.需要说明的是,所述半带滤波器还设置有一个系统时钟源,用于计数产生系统时钟脉冲,对应到图1中读写控制模块的端口i1输出的时钟信号,本实施例将系统时钟源设计为所述半带滤波器的计数时钟用于产生系统时钟脉冲,通过计时其到来的时钟跳变沿来生成所述系统时钟脉冲的脉冲周期,脉冲周期具体是一个系统时钟源产生的相邻两个脉冲之间的时间间隔。则在本实施例中,完成一个待滤波数据的一次写操作的时间是一个系统时钟脉冲的脉冲周期;完成一个待滤波数据的一次读操作的时间是一个系统时钟脉冲的脉冲周期,因此,所述半带滤波器用于将外部输入的一个待滤波数据写入所述数据缓存空间所耗费的时间配置为等于一个脉冲周期,所述半带滤波器还用于将从所述数据缓存空间读取出一个待滤波数据所耗费的时间配置为等于一个脉冲周期;其中,一个待滤波数据是所述半带滤波器从外部采样到的一个采样点的信息,在本实施例中也是所述读写控制模块从所述数据缓存空间内读取出的数据。所述写入数据缓存空间的待滤波数据的数量是等于所述半带滤波器从外部采样的待滤波数据的数量,作为实际进行一次滤波计算所需的待滤波数据的数量,但不将在先写入但被覆盖掉的待滤波数据计入其中。因此,一个滤波周期大于两个系统时钟脉冲的脉冲周期之和。
51.优选地,当写入数据缓存空间的待滤波数据的数量使用所述基准地址计数器的计数值的变化值表示时,基于所述基准地址计数器是每写入两个待滤波数据则加二计数的时序规则,所述转置使能计数阈值使用所述半带滤波器的抽头数来表示,使得所述转置使能计数阈值与写入数据缓存空间的待滤波数据的数量的大小关系等效于所述半带滤波器的抽头数与所述基准地址计数器的计数值的变化值的大小关系,则便于对写入数据缓存空间的待滤波数据的数量进行统计,该优选例是在所述半带滤波器的抽头数是奇数和偶数的应用场景下,有利于运用所述基准地址计数器准确地统计每个滤波周期内实际写入所述数据缓存空间的待滤波数据的数量。
52.优选地,当基准地址计数器的计数值为所述半带滤波器的抽头数与数值2的差值后,所述读写控制模块在下一个系统时钟脉冲将滤波起点地址更新为基准地址计数器当前获得的计数值,实现将滤波起点地址更新为基准地址,让基准地址计数器从更新后的基准地址开始执行自加操作;其中,滤波起点地址是预先在所述数据缓存空间内配置的一个地址,作为每个滤波周期内,参与读取操作的地址中,顺序最小的一个地址,可以使用数值0或数值1表示,本优选例将其设置为数值0。基准地址计数器存在初始计数值,在所述半带滤波器的抽头数为奇数的前提下,基准地址计数器的初始计数值对应设置为数值1,其中,初始计数值是基准地址计数器开始计数之前设置好的计数值,因此,所述基准地址计数器的计数值可以按照递增数值2的方式递增至所述半带滤波器的抽头数与数值2的差值,然后所述读写控制模块在下一个系统时钟脉冲将滤波起点地址更新为基准地址计数器当前获得的计数值,以便于在基准地址计数器的计数值变化到所述半带滤波器的抽头数之前跳变回所述初始计数值,再从滤波起点地址开始递增,让所述基准地址计数器有足够的计数范围去覆盖所述半带滤波器的抽头数所限定的有效地址区间,也避免所述基准地址计数器在按照每一个滤波周期增加数值2的方式递增的过程中出现计数值溢满的现象或避免让所述读写控制模块读取到无效地址中的数据,需要说明的是,基准地址计数器的模值(最多能表示的计数状态的数目)等于所述半带滤波器的抽头数与数值1的差值。
53.优选地,当基准地址计数器的计数值为所述半带滤波器的抽头数与数值1的差值后,所述读写控制模块在下一个系统时钟脉冲将将滤波起点地址与数值1的和值更新为所述基准地址计数器当前获得的计数值,并将滤波起点地址与数值1的和值更新为基准地址;其中,基准地址计数器的计数值可以理解为其产生的基准地址;滤波起点地址是预先在所述数据缓存空间内配置的一个地址,作为每个滤波周期内,参与读取操作的地址中,顺序最小的一个地址,可以使用数值0或数值1表示,而本优选例将其设置为数值0。其中,基准地址计数器的初始计数值是基准地址计数器开始计数之前设置好的计数值,为了配合图3的说明,所述半带滤波器的抽头数为奇数的前提下,本优选例将基准地址计数器的初始计数值设置为数值0,则所述基准地址计数器的计数值按照每一个滤波周期增加数值2的方式可以递增至所述半带滤波器的抽头数与数值1的差值,然后所述读写控制模块在下一个系统时钟脉冲将滤波起点地址与数值1的和值更新为基准地址计数器当前获得的计数值,在滤波起点地址等于数值0且所述半带滤波器的抽头数为奇数的情况下,所述基准地址计数器按照每一个滤波周期递增数值2的方式可以递增至所述半带滤波器的抽头数与数值2的差值,然后可以参照前述优选例,所述读写控制模块在下一个系统时钟脉冲将滤波起点地址更新为基准地址计数器当前获得的计数值,然后在滤波起点地址等于所述初始计数值(等于数
值0)的状态下,重复本优选例去调整所述基准地址计数器的计数值。从而让所述基准地址计数器有足够的计数范围去覆盖所述半带滤波器的抽头数所限定的有效地址区间,也避免所述基准地址计数器在按照每一个滤波周期增加数值2的方式递增的过程中读取到无效地址(所述半带滤波器的抽头数限定的读取地址区间之外)中的数据,需要说明的是,基准地址计数器的模值(最多能表示的计数状态的数目)等于所述半带滤波器的抽头数与数值1的差值。
54.结合前述实施例可知,所述根据写入数据缓存空间的待滤波数据的数量与所述转置使能计数阈值的大小关系,利用计数产生的读地址,从数据缓存空间内周期性地读取出所述待滤波数据,并将读取出的所述待滤波数据传输给所述滤波计算模块的方式包括:在所述读写控制模块确定出写入数据缓存空间的待滤波数据的数量小于或等于所述转置使能计数阈值时,所述读写控制模块依次从所述数据缓存空间内读取出前置读地址中的待滤波数据,可以是建立所述基准地址计数器的计数时序的基础上进行的,满足二倍抽取倍数的要求,并将读取到的待滤波数据传输给所述滤波计算模块;其中,所述转置使能计数阈值优选地设置为所述半带滤波器的抽头数,从而本实施例可以利用所述半带滤波器的抽头数作为计数器的模值进行读地址和读周期的划分,使得相关的计数器计数出的地址不超出所述半带滤波器的抽头数下所限定的读地址区间。需要说明的是,所述前置读地址在每个滤波周期内由一个基准地址开始进行计数获得,具体是由基准地址计数器的实时计数值决定的,开始进行一次滤波计算则计数一次或开始一个滤波周期则计数一次,其中,每个滤波周期内的一个基准地址是属于该滤波周期内第一个参与读取操作的前置读地址,以使得基准地址对应的前置读地址中的待滤波数据被按对应的读取时序传输至所述滤波计算模块。从而划分出用于每次滤波计算的所述读写控制模块的有效读地址和读取的待滤波数据,保证输入的数据被连续的获取并用于连续的滤波计算。
55.作为一种抽头数等于数值7的半带滤波器的实施方式一,如图2所示,所述读写控制模块包括前置地址计数器和读地址选择器;所述写入数据缓存空间的待滤波数据的数量小于或等于所述转置使能计数阈值时,读地址选择器选通前置地址计数器产生的计数值输出给所述数据缓存空间,以起到读取相应地址中的待滤波数据的作用;具体地,所述写入数据缓存空间的待滤波数据的数量小于或等于所述转置使能计数阈值时,在一些实施例中,选择信号thr_sel置为低电平,选通前置地址计数器与读写控制模块的端口i4之间的数据通路,实现将前置地址计数器产生的计数值输出给所述数据缓存空间,从而让所述前置地址计数器向所述数据缓存空间提供前置读地址。前置地址计数器用于在所述写入数据缓存空间的待滤波数据的数量小于或等于所述转置使能计数阈值的状态下,从当前一个滤波周期内的基准地址开始,每检测到一个所述系统时钟脉冲则进行一次自减操作,再触发所述读写控制模块从所述数据缓存空间内读取出每次自减操作后的前置读地址中的待滤波数据,再依次传输给所述滤波计算模块;其中,前置地址计数器每自减操作一次,产生的计数值的变化值是数值2,且每次自减操作后获得一个前置读地址,是在以一次滤波计算的过程为周期实现的,将所述前置地址计数器每次自减操作得到的前置读地址传输至所述读写控制模块以实现按照两倍抽取倍数读取已经写入所述数据缓存器的一半数据。
56.针对前置地址计数器在不同的滤波周期内产生的计数值的情况,本实施例将前置地址计数器在每个滤波周期内的初始计数值配置为所述基准地址计数器在相应的一个滤
波周期内产生的所述基准地址,即所述基准地址计数器自加操作一次,产生一个滤波周期内的基准地址,作为前置地址计数器在该滤波周期内为了辅助所述滤波计算模块执行一次滤波计算而执行多次自减操作(以输出多个连续的前置读地址中的数据给所述滤波计算模块)所需的初始计数值(起点计数值)。本实施例将所述基准地址计数器内设的初始计数值配置为数值0,则设置在所述数据缓存空间内的基准地址是支持配置为0。由于所述前置读地址在每个滤波周期内由一个基准地址开始进行计数获得,即所述前置读地址是可以设置为基准地址,属于一个滤波周期内或一次滤波计算过程中的第一个参与读取操作的前置读地址,所以,所述读写控制模块在其中一个滤波周期内是可以从地址0的位置开始读取待滤波数据,提高读取数据的地址区间的覆盖率。在该实施例中,每个滤波周期下,先是使用两个连续的系统时钟脉冲依次向所述数据缓存空间写入两个待滤波数据,再按照加二计数产生读地址的方式从所述数据缓存空间内读取数据至所述滤波计算模块以进行滤波计算,而开始进行一次滤波计算时,所述基准地址计数器除了对最初写入的两个待滤波数据进行加二计数操作之外,在同一个滤波周期内没有进行计数操作,而是保持计数值直至写入新的待滤波数据且进入下一个滤波周期。
57.在图3的实施例中,所述写入数据缓存空间的待滤波数据的数量小于或等于所述转置使能计数阈值的情况下,可以是所述写入数据缓存空间的待滤波数据的数量小于或等于6(所述半带滤波器的抽头数等于7,所述半带滤波器的抽头数与数值1的差值等于所述转置使能计数阈值)时,所述基准地址是图3的初始地址,第一个滤波周期(序号为1的滤波周期)的基准地址是0,第二个滤波周期(序号为2的滤波周期)的基准地址是2,第三个滤波周期(序号为3的滤波周期)的基准地址是数值4,此时,已经写入5个待滤波数据,从新写入的到最先写入的依次为x5、x4(图3中没有表示出)、x3、x2(图3中没有表示出)以及x1。
58.在图3的实施例中,所述写入数据缓存空间的待滤波数据的数量小于或等于所述转置使能计数阈值的 情况下,即所述写入数据缓存空间的待滤波数据的数量小于或等于6(所述半带滤波器的抽头数等于7, 所述半带滤波器的抽头数与数值1的差值等于所述转置使能计数阈值)时,所述基准地址是图3的初始地 址,第四个滤波周期(序号为4的滤波周期)的基准地址是6,已经达到所述半带滤波器的抽头数与数值 1的差值,已经写入7个待滤波数据,从新写入的到最先写入的依次为x7、x6(图3中没有表示出)、x5、 x4(图3中没有表示出)、x3、x2(图3中没有表示出)以及x1,若所述基准地址计数器继续对当前获得 的基准地址(计数值)进行自加操作,产生的新的基准地址成为数值8,在基准地址计数器内设的初始计 数值配置为数值0的前提下,其遍历过的地址的数量已经是7个,超出所述半带滤波器的抽头数,所以, 在第五个滤波周期(序号为5的滤波周期)的基准地址被配置为数值1,然后到第五个滤波周期(序号为 5的滤波周期)后,已经写入9个待滤波数据,从新写入的到最先写入的依次为x9、x8(图3中没有表示 出)、x7、x6(图3中没有表示出)、x5、x4(图3中没有表示出)、x3、x2(图3中没有表示出)以及x1, 其中xi中的i越小,则越早写入,但越晚被读取。
59.在一些实施例中,所述数据缓存空间的地址0上总有一格新的数据进入图3的窗口并占据窗口的第一个位置,特别的,图3的第一个滤波周期内所述半带滤波器的外部只向所述数据缓存空间写入一个待滤波数据x1,相应地,第一个滤波周期内的基准地址是0,可以是所述读写控制模块预先配置的,当开始进行一次滤波计算时,所述滤波计算模块利用该
待滤波数据进行滤波计算并输出滤波结果y1;第一个滤波周期内,由于只是写入一个待滤波数据,所述基准地址计数器不进行计数操作,所以将所述基准地址计数器的初始计数值配置为基准地址,进而配置为该滤波周期内或该次滤波计算过程中的第一个参与读取操作的前置读地址。
60.作为一种抽头数等于数值7的半带滤波器的实施方式二,所述读写控制模块包括前置地址计数器,用于在写入数据缓存空间的待滤波数据的数量小于或等于所述转置使能计数阈值时,前置地址计数器用于从当前一个滤波周期对应的基准地址开始,每检测到一个所述系统时钟脉冲则进行一次自减操作,具体是在当前一个滤波周期下从所述读写控制模块中对应换算出的基准地址开始进行自减操作,可选地,在进行第一次自减操作之前,需要延时一段时间以让写入的待滤波数据稳定地缓存到所述数据缓存空间内;同时将每次自减操作后的前置读地址传输至所述数据缓存空间,以触发所述读写控制模块从所述数据缓存空间内读取出每次自减操作后的前置读地址中的待滤波数据,再依次传输给所述滤波计算模块;本实施例中的前置地址计数器设置的初始计数值是基准地址,可以是数值0;前置地址计数器作为递减计数器,前置地址计数器每执行自减操作一次,对应产生的计数值的变化值是数值2,且每次自减操作后产生的计数值被配置为前置读地址,使得当前一次自减操作后相对于上一次自减操作得到新的前置读地址间隔一个读地址。因此,前置地址计数器能够以数值2为地址偏移步长,逐个地址单元地遍历所述数据缓存空间,以实现按照两倍的抽取率读取所述数据缓存器内的一半数据,但限于由所述半带滤波器的抽头数限定的地址区间。
61.值得注意的是,在每个滤波周期内,当检测到所述半带滤波器的抽头数与数值1的差值的一半与数值1的差值等于所述前置地址计数器执行前述的自减操作的次数的两倍后,此时,最新产生的前置读地址相对于当前一个滤波周期内的基准地址的地址偏移量等于所述前置地址计数器执行前述的自减操作的次数的两倍,则所述前置地址计数器将当前得到的前置读地址与数值1的差值更新为所述前置读地址以允许所述读写控制模块读取该前置读地址中的待滤波数据,以赋予其参与半带滤波器的滤波计算的机会,并将该前置读地址标记为中间前置读地址;此时将当前得到的前置读地址与数值1的差值更新为所述前置读地址的操作不同于前述的自减操作(每执行自减操作一次,对应产生的计数值的变化值是数值2),而是所述前置地址计数器对当前得到的前置读地址减一后将减一的结果(计数值)更新为最新的前置读地址;在一些实施例中可以采取置位操作的方式去更新前置读地址,或者在下一个系统时钟脉冲到来时对当前得到的前置读地址减一操作得到所述中间前置读地址。然后,所述前置地址计数器,还用于在获得所述中间前置读地址之后,先对所述中间前置读地址减一计数,获得所述中间前置读地址序号与数值1的差值,从所述中间前置读地址与数值1的差值开始,继续执行前述自减操作(每执行自减操作一次,对应产生的计数值的变化值是数值2,即减二计数操作),得到新的前置读地址,直至最新得到的前置读地址为数值1;其中,所述中间前置读地址序号与数值1的差值允许被更新为前置读地址,即允许中间前置读地址与数值1的差值作为新的前置读地址去参与半带滤波器的滤波计算。
62.作为一种抽头数等于数值7半带滤波器的实施方式三,在该实施例下,所述滤波器系数存储器内的偶数排序的地址位置处存储的滤波器系数都是0,不用输出至所述滤波计算模块进行计算。为了进行一次滤波计算,在写入数据缓存空间的待滤波数据的数量小于
或等于所述转置使能计数阈值的实施场景下,所述滤波器系数存储器用于在每个滤波周期内,可以是在所述读写控制模块的控制下或所述滤波器系数存储器内置的计数器的驱动下,从所述半带滤波器相匹配的起始存储地址开始,每隔一个所述系统时钟脉冲对起始存储地址进行一次自加操作,再按照自加得到的存储地址将对应存储的滤波器系数依次读出至所述滤波计算模块,具体是在每一次自加操作对已经获得存储地址进行加二,则在同一系统时钟脉冲内,存储地址的地址偏移步长与前述的前置读地址的地址偏移步长相等,且保持在同一所述系统时钟源下进行变化,直至自加得到的存储地址相对于所述起始存储地址的地址偏移量等于所述半带滤波器的抽头数与数值1的和值的一半。需要说明的是,在一个滤波周期内,参与同一次滤波计算所需的滤波器系数的读取顺序与待滤波数据的读取顺序相同,直至自加得到的存储地址相对于所述起始存储地址的地址偏移量等于所述当前复用的半带滤波器的抽头数与数值1的和值的一半。然后所述滤波器系数存储器将最新得到的存储地址记为中间计算存储地址,再对中间计算存储地址进行自减操作,再按照自减得到的存储地址将对应存储的滤波器系数依次读出至所述滤波计算模块,直至自减得到的存储地址相对于中间计算存储地址的地址偏移量等于所述半带滤波器的抽头数与数值1的和值的一半,依次重复,直至在当前一个滤波周期内(对应于开始进行当前一次滤波计算)从所述滤波器系数存储器内输出的滤波器系数的数量等于当前一个滤波周期内参与一次滤波计算的待滤波数据的数量,也等于当前一个滤波周期内读取出的待滤波数据的数量,可能会因实际所进行的滤波计算的次数或所处的滤波周期而异。需要说明的是,对起始存储地址进行自加操作的过程中,每自加操作一次,则触发存储地址对应的地址自动增加数值2;对所述中间计算存储地址进行自减操作的过程中,每自减操作一次,则触发存储地址对应的地址自动减少数值2;其中,所述中间计算存储地址是设置在所述滤波器系数存储器内,属于滤波器系数的存储地址中,顺序最大的地址,即存储相应的滤波器系数的地址区间的尾地址。
63.在图3中,在第三个滤波周期内,从初始地址为数值4的地址位置开始,自左向右,第五行方框内的数据依次是所述读写控制模块从所述数据缓存空间内读取出的自减操作后的前置读地址中的待滤波数据,自左向右的方格中,越偏向左侧的方格内的数据是越早被读取到的,对应的地址位置是越早自减获得的前置读地址;越偏向右侧的方格内的数据是越晚被读取到的,对应的地址位置是越晚自减获得的前置读地址,优选地,每个系统时钟脉冲读取一个方格内的数据。同理地,第六行方框内的数据依次是从所述滤波器系数存储器内读取出的自加操作后的存储地址中的滤波器系数,从h1的方格对应的地址位置开始,即所述半带滤波器对应的起始存储地址开始,自左向右的方格中,越偏向左侧的方格内的数据是越早被读取到的,对应的地址位置是越早自加获得的存储地址;越偏向右侧的方格内的数据是越晚被读取到的,对应的地址位置是越晚自加获得的存储地址,直至自加至h5的方格,其中,每一次自加的地址偏移量是等于数值2;此时h5的方格对应的地址位置相对于h1的方格对应的地址位置的地址偏移量等于数值4,等于所述半带滤波器的抽头数(数值7)与数值1的和值的一半(等于数值4),所述滤波器系数存储器将h5的方格对应的地址位置配置为中间计算存储地址;然后从h5的方格开始,对这个中间计算存储地址进行自减操作,直至自减至h3的方格,其中,每一次自减的地址偏移量是等于数值2;此时自减得到的存储地址相对于中间计算存储地址的地址偏移量小于所述半带滤波器的抽头数(数值7)与数值
1的和值的一半(等于数值4),此时,第六行方框中,自左向右被读取的滤波器系数h1、h3、h5和h3正好依次对应第五行方框中参与滤波计算的待滤波数据x5、x3、x2和x1,其中,x5是最先读取出的前置读地址中的待滤波数据,x1是最后读取出的前置读地址中的待滤波数据;则第三个滤波周期内从所述滤波器系数存储器内读取出的滤波器系数的数量满足第三个滤波周期内参与滤波计算的待滤波数据的数量。
64.对应到图3的7抽头的半带滤波器中,在第三个滤波周期内,写入数据缓存器的待滤波数据的数量没 有小于或等于所述转置使能计数阈值,所述前置地址计数器由数据x5所处的前置读地址开始对前置读地 址开始执行自减操作(减二计数),所述前置地址计数器执行一次自减操作(减二计数一次)后,所述半 带滤波器的抽头数与数值1的差值的一半与数值1的差值等于所述前置地址计数器执行前述的自减操作的 次数的两倍,此时所述前置地址计数器当前得到的前置读地址是数据x3所处的前置读地址,再在下一个 系统时钟脉冲到来时将当前得到的前置读地址与数值1的差值更新为所述前置读地址,即x2所处的前置 读地址,并将之标记为所述中间前置读地址;然后对所述中间前置读地址减一计数,获得所述中间前置读 地址与数值1的差值,即x1所处的前置读地址。需要说明的是,x5所处的前置读地址与x3所处的前置读 地址的地址偏移量等于数值2(前置地址计数器每次自减操作(减二计数)产生的计数值的变化值)、x3 所处的前置读地址与x2所处的前置读地址的地址偏移量等于数值1(前置地址计数器减一计数操作产生的 计数值的变化值)、x2所处的前置读地址与x1所处的前置读地址的地址偏移量等于数值1(前置地址计数 器减一计数操作产生的计数值的变化值),其中,x2所处的前置读地址的排序是所述中间前置读地址序号; xi中的i表示前置读地址序号,i是整数。
65.在上述实施例的基础上,所述滤波计算模块,用于在写入所述数据缓存空间的待滤波数据的数量小于或等于所述转置使能计数阈值时,控制数据缓存空间输出的待滤波数据以及滤波器系数存储器输出的相同读取顺序的滤波器系数进行乘法运算,并将结果输入到加法器进行累加处理,得到每个滤波周期内的处理后的一个滤波结果;其中,每个滤波周期内的乘法运算由一个乘法器分时复用实现,最大限度的减少乘法器资源;其中,在所述写入所述数据缓存空间的待滤波数据的数量小于或等于所述转置使能计数阈值的前提下,一个滤波周期内的乘法运算的次数等于当前一次滤波计算所需的待滤波数据的数量或滤波器系数的数量,但不超过所述半带滤波器的抽头数。所述滤波计算模块包括加法器和乘法器,组成先执行乘法再执行加法的计算方式。对应到图3中,第三个滤波周期中获得的滤波结果y5等于x5与h1的乘积、x3与h3的乘积、x2与h5的乘积、以及x1与h3的乘积的和值,则第三个滤波周期内的乘法运算的次数等于4。其中,所述转置使能计数阈值等于所述半带滤波器的抽头数与数值1的差值。
66.作为一种抽头数等于数值7的半带滤波器的实施方式四,在所述写入数据缓存空间的待滤波数据的数量大于所述转置使能计数阈值时,所述读写控制模块用于在每个滤波周期内,先将所述基准地址计数器产生的基准地址配置为第一折叠读地址;并将基准地址与数值1的和值配置为第二折叠读地址,相当于把基准地址增加一个地址偏移量以相对于基准地址偏移一个地址,以实现与第一折叠读地址不重合;可选地,所述读控制模块还用于将第一折叠读地址与第二折叠读地址相加的和值配置为后置读地址,并按照相应的读取时序,从所述数据缓存空间内读取出所述后置读地址中的待滤波数据,并传输给所述滤波计
算模块。
67.具体地,本实施例公开的基准地址计数器还用于在所述写入数据缓存空间的待滤波数据的数量大于所述转置使能计数阈值时,所述基准地址计数器继续执行计数值的自加操作;且所述基准地址计数器在每次自加操作中产生的计数值的变化值是数值2,并在每个所述滤波周期内将自加操作后得到的基准地址配置为第一折叠读地址的起始地址(一个滤波周期内第一个读取的第一折叠读地址);在一些实施例中,可以等效为,每写入两个待滤波数据,即开始进行一次滤波计算,所述基准地址计数器加二计数一次,进而,每开始进行一次滤波计算,则所述基准地址计数器加二计数一次。值得注意的是,若计数到所述写入数据缓存空间的待滤波数据的数量大于所述转置使能计数阈值的场景后,基准地址计数器可能仍在执行自加操作以记录当前所处的滤波周期的序号或记录写入的待滤波数据的数量情况。因此,所述基准地址计数器在写入数据缓存空间的待滤波数据的数量超过所述转置使能计数阈值的情况下,为每个滤波周期下的需要抽取和滤波的待滤波数据提供对应起始读地址,作为真正进行滤波计算的数据的起始地址信息。
68.具体地,所述读写控制模块包括第一折叠地址计数器;在所述写入数据缓存空间的待滤波数据的数量大于所述转置使能计数阈值时,所述第一折叠地址计数器用于在每一个滤波周期内,对所述第一折叠读地址执行自减操作,产生新的第一折叠读地址,以触发所述读写控制模块从所述数据缓存空间内读取出每次自减操作后的第一折叠读地址中的待滤波数据,直至自减操作的次数为第一预设折叠采样数目,但仍允许向所述数据缓存空间写入新的待滤波数据,但该新的待滤波数据不计入当前一次滤波计算所需的待滤波数据中,而是记为下一次滤波计算所需的待滤波数据。其中,第一折叠地址计数器自减操作一次产生的计数值的变化值是数值2,即第一折叠地址计数器每执行一次自减操作,则对应产生的计数值减少数值2。
69.在所述读写控制模块确定将所述基准地址计数器产生的基准地址配置为所述第一折叠读地址之前,等效于将基准地址配置为所述第一折叠读地址的起始地址(对应的滤波周期下或参与对应一次的滤波计算而需要读取的第一个第一折叠读地址)之前,所述读写控制模块,用于判断到基准地址等于滤波起点地址时,将滤波目标地址更新为基准地址,再将更新后的基准地址配置为第一折叠读地址的起始地址,以便于第一折叠读地址在自减操作的过程中减去合理的地址偏移值,获取自减操作得到的有效地址中的待滤波数据,避免获得无效的数据且丢失与当前一个滤波周期内或当前一次滤波计算中相关联的数据。
70.需要说明的是,滤波目标地址是预先在所述数据缓存空间内配置的一个地址,作为每个滤波周期内,参与读取操作的地址中,被读取的顺序最大的一个地址的地址,所述滤波目标地址大于所述滤波起点地址,所述滤波目标地址与所述滤波起点地址的差值等于所述半带滤波器的抽头数与数值1的差值。一般地,所述滤波起点地址设置为数值0时,所述滤波目标地址设置为所述半带滤波器的抽头数与数值1差值,可以运用于所述读写控制模块在一次滤波计算中第一次读取的地址是数值0标记的地址位置的场景中,第一折叠地址计数器可以从所述半带滤波器的抽头数与数值1差值处开始进行自减操作;或者,所述滤波起点地址设置为数值1时,所述滤波目标地址设置为所述半带滤波器的抽头数,可以运用于所述读写控制模块在一次滤波计算中第一次读取的地址是数值1标序的地址位置的场景中,第一折叠地址计数器可以从所述半带滤波器的抽头数开始进行自减操作。然后,第一折叠
地址计数器用于从第一折叠读地址的起始地址开始,对第一折叠读地址执行自减操作,以实现有序地在当前复用的非半带滤波器规定的两倍抽取率的基础上进行数据读取操作;第一折叠地址计数器在对第一折叠读地址执行自减操作的过程包括:将第一折叠读地址的起始地址配置为第一折叠读地址,每当第一折叠读地址自减至所述滤波起点地址时,则在下一个系统时钟脉冲内将滤波目标地址与数值1的差值更新为第一折叠读地址,让所述第一折叠读地址在所述半带滤波器的抽头数限定的地址范围内实现地址回环遍历,可以及时遍历到最新写入的待滤波数据,值得注意的是,因为在先缓存的数据可以被及时的读取到所述滤波计算模块内,所以最新写入的数据可以覆盖到所述数据缓存空间内的在先缓存的数据所在的地址单元中。在上述自减至所述滤波起点地址并完成回环、或自加至所述滤波目标地址并完成回环后,第一折叠地址计数器继续对第一折叠读地址执行自减操作。
71.需要说明的是,所述第一折叠地址计数器,每连续两个系统时钟脉冲对所述第一折叠读地址执行一次自减操作以获得一个新的所述第一折叠读地址,也与所述基准地址计数器的计数时序相适应,并将这连续两个系统时钟脉冲记为折叠地址读周期,其中,所述第一折叠地址计数器执行一次自加操作,其计数值增加数值2。因而,所述写入数据缓存空间的待滤波数据的数量大于所述转置使能计数阈值时,在所述读写控制模块的控制下,在一个折叠地址读周期内,读取第一折叠读地址中的待滤波数据至所述过滤计算模块,并读取第二折叠读地址中的待滤波数据至所述过滤计算模块,也可以是读取第一折叠读地址中的待滤波数据至所述过滤计算模块的同时,读取第二折叠读地址中的待滤波数据至所述过滤计算模块。
72.另一方面,所述读写控制模块包括第二折叠地址计数器;所述写入数据缓存空间的待滤波数据的数量大于所述转置使能计数阈值时,所述第二折叠地址计数器,还用于在每一个滤波周期内,对所述第二折叠读地址执行自加操作,产生新的第二折叠读地址,以触发所述读写控制模块从所述数据缓存空间内读取出每次自加操作后的第二折叠读地址中的待滤波数据,直至自加操作的次数为第二预设折叠采样数目,但仍允许向所述数据缓存空间写入新的待滤波数据,但该新的待滤波数据不计入当前一次滤波计算所需的待滤波数据中,而是记为下一次滤波计算所需的待滤波数据。其中,第二折叠地址计数器自加操作一次产生的计数值的变化值是数值2,即第二折叠地址计数器每执行一次自加操作,则对应产生的计数值相对于上一次的计数值增加数值2。
73.在所述读写控制模块确定将基准地址配置为所述第二折叠读地址之前,等效于将基准地址与数值1的和值配置为所述第二折叠读地址的起始地址(对应的滤波周期下或参与对应一次的滤波计算而需要读取的第一个第二折叠读地址)之前,所述读写控制模块,用于当判断到所述基准地址计数器在当前一次滤波计算或当前一个滤波划周期内产生的基准地址等于所述滤波目标地址时,第二折叠地址计数器将滤波起点地址更新为基准地址,再将基准地址与数值1的和值配置为第二折叠读地址的起始地址,以避免与第一折叠读地址的起始地址重合,避免读取到相同的待滤波数据,也便于第二折叠读地址在自加操作的过程中加上合理的地址偏移值,获取自加操作得到的有效地址中的待滤波数据,避免获得无效的数据且丢失与当前一个滤波周期内或当前一次滤波计算中的相关联的数据。
74.然后,第二折叠地址计数器用于从第二折叠读地址的起始地址开始,对第二折叠读地址执行自加操作,其中,第二折叠地址计数器自加一次产生的计数值的变化值是数值
2,使得对第二折叠读地址在一次自加操作中相对于上一次自加操作增加数值2,以实现朝着与所述第一折叠读地址的不同的地址偏移方向,以折叠的方式进行数据读取操作。然后第二折叠地址计数器在对第二折叠读地址执行自加操作的过程包括:将第二折叠读地址的起始地址配置为第二折叠读地址,每当第二折叠读地址自加至所述滤波目标地址与数值1的差值,则在下一个系统时钟脉冲到来时将所述滤波起点地址更新为第二折叠读地址,使得所述第二折叠读地址在所述半带滤波器的抽头数限定的地址范围内实现地址回环遍历,既可以遍历到最新写入的待滤波数据,又可以减少缓存地址的分配量,进而插入到所述第一折叠读地址的未覆盖区域,以实现读地址的回环遍历,在同一个滤波周期内无重合地完整地遍历到所述半带滤波器的抽头数所限定的地址区间。
75.需要说明的是,在所述半带滤波器的抽头数对应的读取时序下,或对应于所述基准地址计数器的计数时序下,第二折叠地址计数器,用于每连续两个系统时钟脉冲对所述第二折叠读地址执行一次自加操作以获得一个新的所述第二折叠读地址,并将这连续两个系统时钟脉冲记为折叠地址读周期;所述写入数据缓存空间的待滤波数据的数量大于所述转置使能计数阈值时,在所述读写控制模块的控制下,在折叠地址读周期内(等效于连续的两个系统时钟脉冲内),先读取第一折叠读地址中的待滤波数据至所述过滤计算模块,再读取第二折叠读地址中的待滤波数据至所述过滤计算模块,在每个滤波周期内如此重复读取,直至在一个滤波周期内读取的待滤波数据的数量等于所述半带滤波器的抽头数与数值1的和值的一半,然后在下一个系统时钟脉冲到来时从所述中间计算缓存地址中读取一个待滤波数据,其中,所述中间计算缓存地址是最新获得的第二折叠读地址和最新获得的第一折叠读地址之间的地址位置。在该实施例中,在每个折叠地址读周期内,读取的第一折叠读地址对应的第一折叠读地址相对于所述滤波起点地址的地址偏移量,等于所述滤波目标地址相对于读取的第二折叠读地址对应的第二折叠读地址的地址偏移量,以实现一个滤波周期内输入所述滤波计算模块内的第二折叠读地址上的待滤波数据与地址位置对称的第一折叠读地址上的待滤波数据进行折叠计算。
76.作为一种实施例,所述读写控制模块包括读地址选择器;所述写入数据缓存空间的待滤波数据的数量大于所述转置使能计数阈值时,读地址选择器选通所述第一折叠地址计数器产生的第一折叠读地址和所述第二折叠地址计数器产生的第二折叠读地址输出,以触发所述读写控制模块在所述折叠地址读周期内读取相应地址中的两个待滤波数据。在图2所示的实施方式中,所述读写控制模块还包括地址加法器;读地址选择器通过地址加法器将选通的所述第一折叠地址计数器产生的第一折叠读地址和选通的所述第二折叠地址计数器产生的第二折叠读地址输出,具体地,地址加法器的两个输入端分别连接所述第二折叠地址计数器设置的计数输出端和所述第一折叠地址计数器的设置的计数输出端,地址加法器的输出端连接读地址选择器的一个输入端;地址加法器,用于在所述折叠地址读周期内,将所述第二折叠地址计数器产生的第二折叠读地址fir_raddr2与所述第一折叠地址计数器产生的第一折叠读地址fir_raddr1相加,产生该折叠地址读周期内的一个后置读地址fir_raddr_after,等效于将第一折叠读地址加上一个等于所述第二折叠读地址的偏移地址,其和值等于所述后置读地址,由地址加法器输出给所述读地址选择器;需要说明的是,作为基地址的第一折叠读地址fir_raddr1和作为偏移地址的第二折叠读地址fir_raddr2进入地址加法器后,合成一个物理地址,通过地址段的左移或右移,输出的逻辑上的整和,
构成与输入的地址的位宽不同的物理地址。
77.本实施例公开的读写控制模块在所述写入数据缓存空间的待滤波数据的数量大于所述转置使能计数阈值时,生成高电平的折叠选择信号,对应为图2的选择信号thr_sel=1,则所述读地址选择器选通所述地址加法器产生的后置读地址输出给所述数据缓存空间,具体是通过图1和2的端口i4传输出去,以起到所述读写控制模块在所述折叠地址读周期内读取相应地址中的两个待滤波数据的作用,即第一折叠读地址中的待滤波数据和第二折叠读地址中的待滤波数据。
78.需要补充的是,第二折叠读地址的起始地址与第一折叠读地址的起始地址之间的地址偏移量等于所述半带滤波器的抽头数与数值1的差值,使得后续在对第二折叠读地址遍历的方向与第一折叠读地址的遍历方向不同的前提下,共同在同一段地址区间内遍历到每个地址,比如通过更新第一折叠读地址的方式来从首地址遍历至尾地址,通过更新第二折叠读地址的方式来从尾地址遍历至首地址,在遍历步长相同的情况下完整地完成同一段地址区间的遍历。
79.在上述实施例中,在每个折叠地址读周期内,读取的第一折叠读地址对应的第一折叠读地址相对于所述滤波起点地址的地址偏移量,等于所述滤波目标地址相对于读取的第二折叠读地址对应的第二折叠读地址的地址偏移量,形成一个滤波周期内或一次滤波计算中,以最后一次读取的地址位置为中心的半带滤波器结构的首尾地址对称形式,即每个折叠地址读周期内第一折叠读地址与第二折叠读地址关于一个滤波周期内最后一次读取的地址位置中心对称。
80.优选地,在一个滤波周期内或一次滤波计算中,所述半带滤波器的抽头数与数值1的差值的一半与数值1的差值等于第一预设折叠采样数目,也等于所述第一折叠地址计数器执行自减操作的次数的两倍,此时,所述半带滤波器的抽头数与数值1的差值的一半等于第二预设折叠采样数目,然后对所述第一折叠读地址当前自减得到的第一折叠读地址减一计数,得到该第一折叠读地址与数值1的差值并将其更新为所述第一折叠读地址,再保持更新后的第一折叠读地址不变,并将该第一折叠读地址标记为中间计算缓存地址。而且,在半带滤波器的抽头数与数值1的差值的一半与数值1的差值等于所述第二折叠地址计数器执行自加操作的次数的两倍后,所述第二折叠地址计数器停止对所述第二折叠读地址执行前述自加操作,并保持所述第二折叠读地址不变。需要说明的是,由于在一个折叠地址读周期内,会存在先后读取第一折叠读地址中的待滤波数据和第二折叠读地址中的待滤波数据的情况,所以,为了避免在没有写入新的待滤波数据的前提下重复读取相同的地址中的数据,停止对所述第二折叠读地址执行自加操作,并将当前得到的所述第一折叠读地址与数值1的差值更新为所述第一折叠读地址,再保持所述第一折叠读地址不变,作为当前一个滤波周期内的中间计算缓存地址,也是进行一次滤波计算需要的中间地址位置。
81.作为一种抽头数等于7的半带滤波器的实施例,所述基准地址对应到图3的初始地址,本实施例将所 述基准地址计数器在每个滤波周期内的计数值配置为每个滤波周期内的基准地址,作为更新过的基准地址; 第一个滤波周期内的基准地址是0,是所述基准地址计数器的初始计数值。在图3中,每开始进行一次滤 波计算后,记为进入一个滤波周期,所述基准地址计数器则计数一次,除了第一个滤波周期只写入一个待 滤波数据之外,后续的滤波周期中,每当向所述数据缓存空间新写入两个待滤波数据,则进行一次读取和 滤波计
算。完成第一次滤波计算并获得滤波结果y1后,即经过一个滤波周期后,到第二个滤波周期中, 第一行方框中的数据整体向右推移两个系数位,变成第三行方框中的数据,相对于第一行方框中的数据新 增加两个数据占据最左侧的两个格,此时,所述滤波计算模块开始新的一次滤波计算,且所述基准地址计 数器进行加二计数,所述基准地址计数器对第一个滤波周期内的基准地址增加数值2,则第二个滤波周期 的基准地址为数值2。完成第二次滤波计算并获得滤波结果y3后,在第三个滤波周期中,第三行方框中的 数据整体向右推移两个系数位,变成第五行方框中的数据,相对于第三行方框中的数据新增加两个数据占 据最左侧的两个格,此时所述滤波计算模块开始新的一次滤波计算(第三次滤波计算),且所述基准地址 计数器进行加二计数,第三个滤波周期的基准地址相对于第二个滤波周期的基准地址向右偏移两个地址单 元,得到第三个滤波周期的基准地址为数值4;从而产生:相邻两个滤波周期下获得的基准地址之间的地 址偏移量等于所述半带滤波器的抽取率(两倍抽取率),此时所述基准地址计数器正是用于对所述数据缓 存空间的读地址的移位操作进行计数,进而也便于使用移位寄存器缓存新写入的待滤波数据。完成第三次 滤波计算并获得滤波结果y5后,在第四个滤波周期中,第五行方框中的数据整体向右推移两个系数位, 变成第七行方框中的数据,相对于第五行方框中的数据新增加两个数据占据最左侧的两个格,此时所述滤 波计算模块开始新的一次滤波计算(第四次滤波计算),且所述基准地址计数器进行加二计数,第四个滤 波周期的基准地址相对于第三个滤波周期的基准地址向右偏移两个地址单元,得到第四个滤波周期的基准 地址为数值6;完成第四次滤波计算并获得滤波结果y7后,在第五个滤波周期中,第七行方框中的数据整 体向右推移两个系数位,变成第九行方框中的数据,相对于第七行方框中的数据新增加两个数据占据最左 侧的两个格,此时,所述写入数据缓存器的待滤波数据的数量大于所述半带滤波器的转置使能计数阈值的 情况下,即所述写入数据缓存器的待滤波数据的数量大于7(所述当前复用的fir滤波器的抽头数等于7, 所述当前复用的fir滤波器的抽头数等于所述当前复用的fir滤波器的转置使能计数阈值),此时所述滤 波计算子模块开始新的一次滤波计算(第五次滤波计算)以获得滤波结果y9,此时,所述数据缓存器已经 存入9个待滤波数据。由于第四个滤波周期的折叠基准地址序号相对于第一个滤波周期内的折叠基准地址 序号的地址偏移量是所述半带滤波器的抽头数与数值1的差值,即基准地址计数器(初始计数值等于数值 0)在第四个滤波周期内的计数值为所述半带滤波器的抽头数与数值1的差值,所述读写控制模块在第五 个滤波周期内将滤波起点地址与数值1的和值更新为所述基准地址计数器当前获得的计数值,并将滤波起 点地址与数值1的和值更新为基准地址,对应到图3中的第五个滤波周期的初始地址;但是图3的方框中 只是显示被抽取的数据,对应地,第五个滤波周期的第九行方框中的x9、x3、x7、x5及x6。其中,滤波 起点地址是数值0。需要说明的是,滤波起点地址是预先在所述数据缓存空间内配置的一个地址,作为每 个滤波周期内,参与读取操作的地址中,顺序最小的一个地址,此时,滤波起点地址是配置为数值0。
82.对应到图3抽取数据的窗口内,第五个滤波周期,抽头数为7时,按照图2所示的读地址选择器输出端的后置读地址fir_raddr_after,等效于先后传输过来第一折叠读地址和第二折叠读地址,则所述读写控制模块先读取第7个输入数据x7(第一折叠读地址处的数据)与第1个输入数据x3(第二折叠读地址处的数据),组成第一对相加的参数送至所述滤波计算模块;然后读取第5个输入数据x5(第一折叠读地址处的数据)与第3个输入数据x3(第
二折叠读地址处的数据),组成第二对相加的参数送至所述滤波计算模块;最后读取第4个输入数据x4(中间计算缓存地址),送至所述滤波计算模块;其中,所述读写控制模块先后从所述数据缓存器内读取出相应的第一折叠读地址中的待滤波数据,依次为第九行方框内的x9以及x7,此时,自减操作的次数为1次,等于所述半带滤波器的抽头数与数值1的差值的一半与数值1的差值,则获得2个第一折叠读地址中的待滤波数据;且所述读写控制模块先后从所述数据缓存器内读取出相应的第二折叠读地址中的待滤波数据,为第七行方框内的x3和x5,此时,自加操作的次数为1次,则获得2个第二折叠读地址中的待滤波数据;然后将x7所处的地址减去数值1,获得第6个输入数据x6对应的地址,再停止读取数据,该数据x6对应的地址作为当前一个滤波周期内的中间计算缓存地址。因此,在第五个滤波周期内,先后读取到的待滤波数据依次为x9、x3、x7、x5以及x6,其中,x9是最先读取出的待滤波数据,x6是最后读取出的待滤波数据;此时读取的第一折叠读地址中的待滤波数据、读取的中间计算缓存地址中的待滤波数据、和读取的第二折叠读地址中的待滤波数据已经满足所述半带滤波器的抽头数匹配的滤波计算。至于第四个滤波周期的数据抽取方式和第五个滤波周期在该实施例中抽取方式的原理相似,故不再对第四个滤波周期的数据抽取过程赘述,其中,在第四个滤波周期内的中间计算缓存地址是数据x4所处的地址位置。
83.值得注意的是,图3中第四个滤波周期和第五个滤波周期中,对应到第七行的方框中的各个方格和第九行的方框的各个方格的排列顺序只是表示其内部的待滤波数据被读取的顺序,不代表其在所述数据缓存空间内的实际存储顺序;同理,图3中偶数行的方框内的各个方格的排列顺序不代表其内部滤波器系数在所述滤波器系数存储器内的存储顺序,只是代表滤波器系数的读取顺序并与其上一行的待滤波数据的读取顺序相对应。
84.作为一种抽头数为7的半带滤波器的滤波计算实施例,在写入数据缓存空间的待滤波数据的数量大于所述转置使能计数阈值时,所述滤波器系数存储器用于在每个滤波周期内,可以是在所述读写控制模块的控制下或内置的计数器的驱动下,从所述半带滤波器相匹配的起始存储地址开始,每检测到两个系统时钟脉冲则对起始存储地址进行自加操作一次,以使得对起始存储地址执行的自加操作,与所述第一折叠地址计数器执行的自减操作的时序同步,或者与所述第二折叠地址计数器执行的自加操作的时序同步;所述滤波器系数存储器再按照自加得到的存储地址将对应存储的滤波器系数依次读出至所述滤波计算模块,直至自加得到的存储地址相对于所述起始存储地址的地址偏移量等于所述半带滤波器的抽头数与数值1的和值的一半,然后将最新得到的存储地址记为中间计算存储地址,此时已经读取完滤波周期内所需处理的待滤波数据和滤波器系数;具体地,所述滤波器系数存储器内部设置的地址计数器或所述读写控制模块内部设计的地址计数器,对起始存储地址对应的地址是每两个系统时钟脉冲加二计数一次并生成对应的地址,该地址计数器能够与所述基准地址计数器、所述第二折叠地址计数器以及所述第一折叠地址计数器的计数时序同步或保持固定的延时,并能跟被配置为与一个折叠地址读周期内先后读取出的第一折叠读地址和第二折叠读地址同时变化的存储地址,该存储地址中的滤波器系数与所述折叠地址读周期内的第一折叠读地址和第二折叠读地址中的待滤波数据在同一个所述折叠地址读周期内先后读取到所述滤波计算模块内,构成一组先加后乘的计算项,即第一折叠读地址和第二折叠读地址中的待滤波数据的和值与滤波器系数相乘。其中,在对起始存储地址进行自加操作的过程中,每执行自加操作一次,则存储地址对应的地址增加数值2。则
在所述滤波器系数存储器内,除了所述中间计算存储地址之外,存在偶数排序的地址不被读取并参与滤波计算,本实施例则不在相应的偶数排序的地址处写入滤波器系数,相对于现有技术,除所述中间计算存储地址之外的偶数排序的地址不用存储数据,节省一部分存储空间。
85.在上述实施例的基础上,所述滤波计算模块,用于在写入数据缓存空间的待滤波数据的数量大于所述转置使能计数阈值时,在每个折叠地址读周期内,先控制所述数据缓存空间输出的第一折叠读地址中的待滤波数据与所述数据缓存空间输出的第二折叠读地址中的待滤波数据相加;再将相加的结果与所述滤波器系数存储器输出的相同读取顺序(同步变化的计数时序)的滤波器系数进行乘法运算;然后将相乘结果输入到加法器进行累加处理,在每个滤波周期内如此重复,直至对应一个滤波周期内,所述滤波器系数存储器输出所述中间计算存储地址中的滤波器系数时,将所述中间计算存储地址中的滤波器系数与所述数据缓存空间在同一读取顺序下输出的中间缓存计算地址中的待滤波数据进行乘法运算,再将相乘结果输入到加法器进行累加处理,得到对应的滤波周期内的处理后的滤波结果,完成一次滤波计算,即完成一个滤波周期内的滤波计算。其中,每个滤波周期内,所述转置使能计数阈值等于所述半带滤波器的抽头数与数值1的差值,所述滤波计算模块内部运行的乘法运算的次数等于所述半带滤波器的抽头数与数值1的差值的一半,且由一个乘法器分时复用实现,即一个乘法器在每个折叠地址读周期执行一次乘法运算。其中,所述滤波计算模块包括加法器和乘法器。在本实施例中,第一折叠读地址中的待滤波数据与第二折叠读地址中的待滤波数据的和值输入该乘法器,同一周期内读取出的滤波器系数也输入该乘法器,参与一次乘法运算,再将该周期内相乘的结果传输给加法器以参与累加计算。因此,本实施例在滤波计算模块中使用相同的乘法器资源实现不同滤波周期下的新输入的待滤波数据与同一组滤波器系数的相乘运算,提高不同类型的滤波器读取数据的条件下的乘法器资源的复用率。
86.对应到图3中,在第五个滤波周期内,x9(第一次读取的第一折叠读地址中的待滤波数据,即第一次读取的待滤波数据)与x3(第一次读取的第二折叠读地址中的待滤波数据,即第二次读取的待滤波数据)是一组折叠数据,相加得到第一个折叠值,同时,从所述滤波器系数存储器读取到滤波器系数h1;然后,x7(第二次读取的第一折叠读地址中的待滤波数据,即第三次读取的待滤波数据)与x5(第二次读取的第二折叠读地址中的待滤波数据,即第四次读取的待滤波数据)是另一组折叠数据,相加得到第第二个折叠值,同时,从所述滤波器系数存储器读取到滤波器系数h3;然后,从所述滤波器系数存储器中读取出所述中间计算存储地址中的滤波器系数h5,一般将所述中间计算存储地址中的滤波器系数设定为固定的参数。针对这些折叠数据,所述滤波计算模块从所述滤波器系数存储器输出相对应位置的滤波器系数进行相乘,进行折叠计算,具体地,折叠计算获得的滤波结果y9等于:x9(第一次读取的第一折叠读地址中的待滤波数据,即第一次读取的待滤波数据)与x3(第一次读取的第二折叠读地址中的待滤波数据,即第二次读取的待滤波数据)相加得到的和值与第一次读取的滤波器系数h1的乘积、x7(第二次读取的第一折叠读地址中的待滤波数据,即第三次读取的待滤波数据)与x5(第二次读取的第二折叠读地址中的待滤波数据,即第四次读取的待滤波数据)相加得到的和值与第二次读取的滤波器系数h3的乘积、以及x6(读取的中间缓存计算地址中的待滤波数据,即第五次读取的待滤波数据)与第三次读取的滤波
器系数h5的乘积的和值。
87.同理地,在第四个滤波周期内,x7(第一次读取的第一折叠读地址中的待滤波数据,即第一次读取的待滤波数据)与x1(第一次读取的第二折叠读地址中的待滤波数据,即第二次读取的待滤波数据)是一组折叠数据,相加得到第一个折叠值,同时,从所述滤波器系数存储器读取到滤波器系数h1;然后,x5(第二次读取的第一折叠读地址中的待滤波数据,即第三次读取的待滤波数据)与x3(第二次读取的第二折叠读地址中的待滤波数据,即第四次读取的待滤波数据)是另一组折叠数据,相加得到第第二个折叠值,同时,从所述滤波器系数存储器读取到滤波器系数h3;然后,从所述滤波器系数存储器中读取出所述中间计算存储地址中的滤波器系数h5,一般将所述中间计算存储地址中的滤波器系数设定为固定的参数。针对这些折叠数据,所述滤波计算模块从所述滤波器系数存储器输出相对应位置的滤波器系数进行相乘,进行折叠计算,具体地,折叠计算获得的滤波结果y7等于:x7(第一次读取的第一折叠读地址中的待滤波数据,即第一次读取的待滤波数据)与x1(第一次读取的第二折叠读地址中的待滤波数据,即第二次读取的待滤波数据)相加得到的和值与第一次读取的滤波器系数h1的乘积、x5(第二次读取的第一折叠读地址中的待滤波数据,即第三次读取的待滤波数据)与x3(第二次读取的第二折叠读地址中的待滤波数据,即第四次读取的待滤波数据)相加得到的和值与第二次读取的滤波器系数h3的乘积、以及x4(读取的中间缓存计算地址中的待滤波数据,即第五次读取的待滤波数据)与第三次读取的滤波器系数h5的乘积的和值。
88.综上,与现有技术相比,前述实施例根据所述半带滤波器的抽头数与数值1的差值与写入数据缓存空间的待滤波数据的数量的大小关系,选择在数据量达到所述半带滤波器的抽头数的状态下进行先加两个待滤波数据再乘滤波器系数的折叠计算,选择在数据量没有达到所述半带滤波器的抽头数的状态下进行先乘滤波器系数再进行累加的直接型计算,并且无论是在哪种状态下,都是每间隔一个读地址地抽取一个待滤波数据和滤波器系数进行具备周期性的滤波计算,从而在一个滤波周期内,相对于现有技术,通过前述实施例的加二计数产生第二折叠读地址和减二计数产生第一折叠读地址的方式去间隔式地抽取数据,实现只是采用输入的待滤波数据的一半参与滤波计算,每次滤波计算或每个滤波周期内的读地址的变化频率都是系统时钟脉冲的频率的一半,减少所述数据缓存空间内原先写入的无效数据的干扰程度。
89.另一方面,所述读写控制模块中,用于控制所述数据缓存空间的读写的计数器的计数值的重置能够与前述滤波起点地址和前述的滤波目标地址建立起联系,使得相应的计数器的计数值的自加或自减操作能够被限定在所述半带滤波器的抽头数与数值1的差值所限定的模值(计数器中表示的不同读地址的数量)内,从而在与所述待滤波数据同步被获取的滤波器系数中,最后一个参与计算的滤波器系数更容易被捕获至所述滤波计算模块中,且以更少的读取操作次数获得,间接减少fir滤波器的功耗。
90.在上述实施例的基础上,所述读写控制模块控制输入所述半带滤波器的待滤波数据写入数据缓存空间内的方式包括:所述读写控制模块,用于每隔一个系统时钟脉冲则控制外部输入的一个待滤波数据写入所述数据缓存空间,以使得前述实施例中存在判断所述写入数据缓存空间的待滤波数据的数量与所述转置使能计数阈值的大小关系的实施条件。在本实施例中,所述读写控制模块被配置为在当前一个系统时钟脉冲写入一个待滤波数
据,则下一个系统时钟脉冲读取一个待滤波数据,可选地,所述读写控制模块按照所述基准地址计数器产生的基准地址、前置地址计数器产生的前置读地址、第一折叠地址计数器产生的第一折叠读地址、以及第二折叠地址计数器产生的第二折叠读地址,依次读取出所述写入数据缓存空间的待滤波数据,则基准地址、前置读地址、第一折叠读地址和第二折叠读地址都与在先确定的写地址存在重合地址区间。
91.进一步地,所述读写控制模块内部设置递增计数器,所述读写控制模块用于从所述数据缓存空间的缓存首地址开始,每写入一个待滤波数据时,控制递增计数器对当前的缓存地址加一偏移处理,获得下一个写入的待滤波数据的缓存地址,即让递增计数器从缓存首地址开始按照系统时钟脉冲加一计数,直至计数产生的缓存地址(计数值)相对于缓存首地址发生的地址偏移量等于所述当前复用的半带滤波器的抽头数与数值1的差值时,将缓存首地址更新为当前获得的缓存地址,以使得后续写入的待滤波数据覆盖所述缓存首地址最先存有的待滤波数据,并确定对所述数据缓存空间完成一轮连续的缓存地址的遍历,即完成一次回环遍历,此时,确定从往所述缓存首地址写入一个待滤波数据开始,已经经过的系统时钟脉冲的数目等于所述当前复用的半带滤波器的抽头数;其中,连续的缓存地址是由数量为所述当前复用的半带滤波器的抽头数的地址单元组成,以满足当前复用的半带滤波器的抽头数下进行滤波计算所需输入数据的数量需求。
92.具体地,所述读写控制模块,还用于在完成一轮连续的缓存地址的遍历后,若继续按照系统时钟脉冲控制向所述连续的缓存地址写入新的所述待滤波数据,则将所述递增计数器置为递增初始值,并从所述缓存首地址开始,每写入一个待滤波数据时,将当前写入的一个待滤波数据覆盖缓存地址原先存有的待滤波数据,并控制递增计数器对当前的缓存地址加一偏移处理,即递增计数器进行加一计数并将获得计数值配置为新的缓存地址,从而获得下一个写入的待滤波数据的缓存地址,直至当前获得的缓存地址相对于缓存首地址发生的地址偏移量等于所述当前复用的半带滤波器的抽头数与数值1的差值时,将缓存首地址更新为当前获得的缓存地址,并将所述递增计数器的计数值调整为所述递增初始值;需要说明的是,所述递增计数器置出的递增初始值表示所述缓存首地址在所述数据缓存空间内的地址排序;所述递增计数器计数产生的每个计数值都表示对应的系统时钟脉冲内写入的缓存地址在所述数据缓存空间内的地址排序。需要说明的是,所述递增计数器计数产生的计数值所表示的写入地址涵盖前述实施例提及基准地址、前置读地址、中间前置读地址、第一折叠读地址、第二折叠读地址以及中间计算缓存地址。
93.需要说明的是,鉴于本发明的上述模块的实现流程,在具体应用中形成了整体系统结构如;图3是以 7抽头的半带滤波器为例,以此类推,n抽头的滤波器设计是一样的。均在本发明的保护范围之内。
94.上述实施例只为说明本发明的技术构思及特点,其目的是让熟悉该技术领域的技术人员能够了解本发明的内容并据以实施,并不能以此来限制本发明的保护范围。凡根据本发明精神实质所作出的等同变换或修饰,都应涵盖在本发明的保护范围之内。
再多了解一些

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

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

相关文献