低功耗WOLA滤波器组及其分析阶段电路
技术领域
本发明涉及电子行业数字信号处理技术领域,尤其涉及一种低功耗WOLA滤波器组及其分析阶段电路。
背景技术
数字助听器是对低功耗要求十分严格的便携式医疗电子设备。在当前几乎所有的高端数字助听器系统中,都采用基于多通道信号处理的方法,实现响度补偿和噪声消除等功能。
在信号的多通道处理中,离散傅立叶变换(Discrete Fourier Transform,简称DFT)滤波器组是最常用的一种均匀带宽滤波器组,而WOLA(Weighted Overlap Add)结构是它的一种高效实现方法。WOLA滤波器组以灵活的块处理方式,实现对输入信号进行多通道分析和综合操作,并且各通道间交叠较少,从而使得可以相对独立而准确的对每一个通道的信号进行处理。因此,WOLA滤波器组非常适合在数字助听器中采用。
WOLA滤波器组的算法实现大致如下:
WOLA滤波器组的分析阶段实现对输入信号的多通道分离,其输出表达式为:
上式中,k=0,1,……K-1,K为通道数。Wk=exp(j2π/K),R为降采样因子,m为帧标号,h(n)为分析原型滤波器(称为分析窗),阶数为LA。K、R的值均为2的整数次幂,LA的值为K的整数倍。分析阶段的具体实现步骤如下:
(1)每次从输入缓冲器输入R个样本,连同以前的LA-R个样本组成长度为的LA序列;
(2)加权,用滤波器系数h(n)对上述序列加权;
(3)叠接、相加,即将加权后的序列分成LA/K组,每组长度为K,然后将各组序列累加;
(4)对累加得到的K点序列进行循环移位,实现的相移;
(5)对上述K点序列进行离散傅立叶变换(DFT),即得到分析滤波器组的K点复数序列输出Xk(m)。
WOLA滤波器组的综合阶段实现了分析滤波器组的逆过程,其输出表达式为:
上式中,f(n)是综合原型滤波器(称为综合窗),阶数为LS。LS的值为K的整数倍。Yk(m)为综合滤波器组的第k个通道的输入信号,是对Xk(m)进行处理的结果。综合阶段的具体实现步骤如下:
(1)对K点复数序列Yk(m)进行离散傅立叶逆变换(IDFT);
(2)对IDFT变换结果进行循环移位;
(3)将上述K点序列周期扩展为长度为LS的序列;
(4)加权,用滤波器系数f(n)对序列加权;
(5)与上一次的计算结果的历史数据进行相加;
(6)相加结果的LS点序列中,最左边的R点作为WOLA滤波器组综合阶段本次计算的输出;
(7)将整个序列左移R个地址后,并将最右端的R点数据置0,该序列作为下一次相加的历史数据。
为了便于说明,首先给出和算法直接对应的WOLA滤波器组的硬件实现结构图,如图1所示,mem0、mem1分别是输入缓冲存储器和输出缓冲存储器;mem2~mem7是数据存储器,保存不同阶段的运算结果;mem8、mem9分别是分析窗系数存储器和综合窗系数存储器。
如图1所示,分析阶段的硬件实现过程为:将mem2(地址深度为LA)中的输入样本序列左移R个地址,然后从输入缓冲器mem0中输入最新的R个样本,写到mem2的LA-R~LA-1地址单元,与原来的LA-R个样本组成长度为LA的一帧序列。将该序列从0地址开始依次读出,与分析窗系数对应相乘(即加权),结果写入存储器mem3(地址深度为LA)。将mem3中的数据分成r=LA/K组,每组数据为K个,并将各组内序号相同的数据叠加,结果写入mem4(地址深度为K)。mem4中的数据经过循环移位后进行K点FFT即可。
如图1所示,综合阶段的硬件实现过程为:对处理后的多通道信号进行IFFT变换,结果写入mem5(地址深度为K),并在经过循环移位后周期扩展为长度为LS的序列,写入mem6(地址深度为LS)。将mem6中的数据序列与综合窗系数相乘(加权)后与历史数据存储器mem7(地址深度为LS)中的数据相加,相加结果原址写回mem7。mem7最左边的R个数据作为本次综合阶段运算的结果送入输出缓冲器mem1,之后将mem7中的数据整体左移R个地址,并将最右边的R个地址单元(LS-R~LS-1)置零后,作为下一次相加操作的历史数据。
尽管WOLA滤波器组高效地实现了信号的多通道分析和综合操作,但是因为数字助听器的便携式应用特点,人们对降低其系统功耗、延长电池使用寿命,不断提出更高的要求。低功耗成为高端数字助听器设计研究的主题之一。作为数字助听器中的关键模块之一的WOLA滤波器组,其低功耗硬件设计对降低整个数字助听器系统的功耗有着十分重要的意义。
在实现本发明的过程中,申请人意识到现有技术WOLA滤波器组存在如下技术问题:由于多次进行存储器的读写操作,造成WOLA滤波器的功耗较高。
发明内容
(一)要解决的技术问题
针对现有技术中存在的上述问题,本发明提出了一种WOLA滤波器组及其分析阶段电路,以尽量减少存储器的读写操作,降低WOLA滤波器组的功耗。
(二)技术方案
根据本发明的一个方面,提供了一种WOLA滤波器组的分析阶段电路。该分析阶段电路包括:输入缓冲模块、样本序列存储模块、分析窗系数获取模块、乘-累加MAC运算模块、运算结果存储模块、FFT处理模块和分析电路控制模块,其中:输入缓冲模块,与数据来源端相连接,用于缓存输入的样本数据,当累积到预设数目的样本数据时,将该预设数目的样本数据读出并转存至样本序列存储模块;样本序列存储模块,用于存储长度为LA的样本序列,该样本序列被分为r组,每组有K个数据,其中r=LA/K;其中,r为大于等于1的整数,K为2的整数次幂;分析窗系数获取模块,用于获取对样本序列数据加权所需的窗系数,该窗系数也被分为r组,每组有K个窗系数;MAC运算模块,与样本序列存储模块和分析窗系数获取模块相连接,用于以窗系数中各组的第j个窗系数作为权重,对样本序列各组中对应的第j个数据进行加权并累加,其中j=0,1,2,……K-1,最终输出K个加权累加的结果;运算结果存储模块,与MAC运算模块相连接,用于存储MAC运算模块的运算结果;FFT处理模块,与运算结果存储模块相连接,用于从运算结果存储模块获取加权累加结果的K点序列,并对K点序列进行离散傅里叶变换,输出离散傅里叶变换的结果Xk(m)。
优选地,本发明分析阶段电路中,样本序列存储模块采用折叠结构,其存储深度减半而数据字长加倍,每次读/写操作完成两个样本数据,即每组的第2*i个和第2*i+1个数据,其中i=0,1,2,……K/2-1的读出/写入;分析窗系数获取模块采用折叠结构,其存储深度减半而数据字长加倍,每次读操作完成两个窗系数,即每组的第2*i个和第2*i+1个系数的读出。同时,本发明分析阶段电路还包括分析电路第一寄存器,该寄存器与输入缓冲模块相连接,用于暂存地址为偶数的数据;样本序列存储模块,其输入端的高W位和低W位分别与分析电路第一寄存器和输入缓冲模块相连接,用于从分析电路第一寄存器中获取地址为偶数的数据,从输入缓冲器获取地址为奇数的数据,在同一拍将两个数据写入同一地址单元,两个数据分别位于同一地址单元的高W位和低W位。
优选地,本发明分析阶段电路中,MAC运算模块包含第一和第二MAC单元,这两个MAC单元与样本序列存储模块和分析窗系数获取模块相连接;样本序列存储模块,在同一拍读出两个样本数据,分别送入第一MAC单元和第二MAC单元;分析窗系数获取模块,用于在同一拍读出对应的两个窗系数,分别送入第一MAC单元和第二MAC单元;第一MAC单元用于以窗系数中各组的第2*i个数据作为权重,对样本序列各组中对应的第2*i个数据进行加权并累加,第二MAC单元用于以窗系数中各组的第2*i+1个数据作为权重,对样本序列各组中对应的第2*i+1个数据进行加权并累加。同时,本发明分析阶段电路还包括:分析电路第二寄存器和多路选择器,其中:分析电路第二寄存器,与第二MAC单元相连接,用于暂存第二MAC单元的运算结果;多路选择器,与第一MAC单元和分析电路第二寄存器相连接,用于将第一MAC单元和第二MAC单元的运算结果分两拍写入运算结果存储模块。
优选地,本发明分析阶段电路中,样本序列存储模块,采用改变初始读/写操作地址和模寻址的方式,实现样本序列的循环移位;和/或运算结果存储模块,采用改变初始读/写操作地址和模寻址的方式,实现加权累加结果数据的缓存和循环移位。
优选地,本发明分析阶段电路中,分析窗系数获取模块,采用译码电路方式,用于对接收到的分析窗系数的地址,进行译码得到对应的窗系数。
根据本发明的另一个方面,还提供了一种WOLA滤波器组的综合阶段电路。该综合电路包括:IFFT处理模块、IFFT运算结果存储模块、综合窗系数获取模块、历史数据存储模块、乘-加运算模块和综合阶段控制模块,其中:IFFT处理模块,用于对K点序列Yk(m)进行离散傅立叶逆变换,获得K点数据序列X'K(m);IFFT运算结果存储模块,与IFFT处理模块相连接,用于保存K点数据序列X'K(m);综合窗系数获取模块,用于获取与K点数据序列X'K(m)对应的窗系数;该综合窗系数获取模块深度为LS,被分为s组,每组有K个数据;历史数据存储模块,用于存储历史运算结果,其深度为LS,被分为s组,每组有K个数据,并同址写回乘-加运算模块的运算结果;乘-加运算模块,与IFFT运算结果存储模块和综合窗系数获取模块相连接,并与历史数据存储模块双向连接,用于将从IFFT运算结果存储模块获取的X'K(m)中的第j个数据,与从综合窗系数获取模块中获取的各组中的第j个系数相乘,然后与从历史数据存储模块中读取的对应组中的第j个历史数据相加;并将乘-加运算的结果按照原址返回历史数据存储模块;输出缓冲模块,与历史数据存储模块相连接,用于将从历史数据存储模块中读出的最旧的R个数据进行缓存,并按照预设时间输出。
优选地,本发明综合阶段电路中,IFFT运算结果存储模块采用折叠结构,存储深度减半而数据字长加倍,每次读操作完成两个数据,即第2*i个数据和第2*i+1个数据的读出;综合窗系数获取模块采用折叠结构,每次读操作完成两个窗系数的读出,即同时获取各组中的第2*i个和第2*i+1个窗系数。同时,本发明综合阶段电路还包括:综合电路第一寄存器,综合电路第一寄存器,与IFFT运算结果存储模块相连接,用于暂存地址为偶数的数据;IFFT运算结果存储模块,其输入端的高W位和低W位分别与综合电路第一寄存器和IFFT处理模块相连接,用于从综合电路第一寄存器中获取地址为偶数的数据,从IFFT处理模块获取地址为奇数的数据,在同一拍将两个数据写入同一地址单元,两个数据分别位于同一地址单元的高W位和低W位。
优选地,本发明综合阶段电路中,乘-加运算模块包含第一乘-加单元和第二乘-加单元,这两个乘-加单元与IFFT运算结果存储模块和综合窗系数获取模块相连接,并与历史数据存储模块双向连接;其中,第一乘-加单元用于将从IFFT运算结果存储模块获取的X'K(m)中的第2*i个数据,与从综合窗系数获取模块获取的各组中的第2*i个窗系数相乘,与从历史数据存储模块读取的相应组中的第2*i个历史数据相加,并将乘-加运算的结果按照原址返回历史数据存储模块,第二乘-加单元用于将从IFFT运算结果存储模块获取的X'K(m)中的第2*i+1个数据,与从综合窗系数获取模块获取的各组中的第2*i+1个窗系数相乘,与从历史数据存储模块读取的相应组中的第2*i+1个历史数据相加,并将乘-加运算的结果按照原址返回历史数据存储模块;IFFT运算结果存储模块,采用折叠结构,存储深度减半而数据字长加倍,用于在同一拍读出两个数据,分别送入第一乘-加单元和第二乘-加单元;综合窗系数获取模块,采用折叠结构,用于在同一拍读出对应的两个窗系数,分别送入第一乘-加单元和第二乘-加单元;历史数据存储模块,采用折叠结构,每次读操作完成两组历史数据的读出,获取各组中的第2*i个和第2*i+1个历史数据,分别送至第一乘-加单元和第二乘-加单元。
同时,本发明综合阶段电路还包括:综合电路第二寄存器和多路选择器,其中:综合电路第二寄存器,与历史数据存储模块相连接,用于暂存从历史数据存储模块读出的低W位数据;多路选择器,与历史数据存储模块和第二寄存器相连接,用于将从历史数据存储模块获取的高W位数据和从综合电路第二寄存器获取的低W位数据分两拍写入输出缓冲模块。
优选地,本发明综合阶段电路中,IFFT运算结果存储模块,采用改变初始读/写操作地址和模寻址的方式,实现K点数据序列X'K(m)的循环移位;和/或历史数据存储模块,采用改变初始读/写操作地址和模寻址的方式,实现历史数据的循环移位。
优选地,本发明综合阶段电路中,综合窗系数获取模块,采用译码电路方式,用于对接收到的综合窗系数的地址,进行译码得到对应的窗系数。
根据本发明的再一个方面,还提供了一种低功耗WOLA滤波器组,其特征在于,该WOLA滤波器组包括上述的分析阶段电路和综合阶段电路。
(三)有益效果
本发明的WOLA滤波器组及其分析阶段电路和综合阶段电路具有下列有益效果:
(1)本发明采用以非连续地址读取数据进行“乘-累加(MAC)”和“乘-加”的方法,减少了功耗开销较大的存储器读写的次数;
(2)本发明采用双运算单元结合折叠结构的存储器,实现两路运算并行执行,进一步减少整个系统操作所需时钟周期数,从而可以方便采用降低系统时钟频率或者时钟门控技术来降低动态翻转功耗;
(3)本发明采用折叠结构的存储器、逻辑译码电路代替存储器“存储”数值固定的窗系数等方法,进一步减少了存储器读写的次数;
(4)本发明采用改变初始读写地址结合模寻址的方式,代替数据移位操作,从而进一步减少了存储器读写的次数。
附图说明
图1为现有算法直接对应的WOLA滤波器组的结构示意图;
图2为本发明实施例分析阶段电路一的结构示意图;
图3为本发明实施例分析阶段电路二的结构示意图;
图4为本发明实施例综合阶段电路一的结构示意图;
图5为本发明实施例综合阶段电路二的结构示意图;
图6为本发明实施例WOLA滤波器组分析阶段电路的结构示意图;
图7为本发明实施例分析阶段电路中基于MAC单元实现加权叠接相加运算的示意图;
图8为图7中MAC单元内部的结构示意图;
图9a为本发明实施例Srcdata_mem第一次读/写操作的示意图;
图9b为本发明实施例Srcdata_mem第二次读/写操作的示意图;
图9c为本发明实施例Srcdata_mem第三次读/写操作的示意图;
图10为本发明实施例分析阶段电路Srcdata_mem中折叠结构及样本数据存储状态的示意图;
图11为本发明实施例WOLA滤波器组综合阶段电路的结构示意图;
图12为本发明实施例综合阶段电路中基于“乘-加”单元实现加权和相加操作的示意图;
图13为图12中所用到的“乘-加”单元内部的结构示意图。
【主要元件符号说明】
分析阶段电路10
输入缓冲模块102; 分析电路第一寄存器104;
样本序列存储模块106; 分析窗系数获取模块108;
乘-累加(MAC)运算模块110;
分析电路第二寄存器112; 多路选择器114;
运算结果存储模块116; K点FFT处理模块118。
分析电路控制模块120。
综合阶段电路20
IFFT处理模块202; 综合电路第一寄存器204;
IFFT运算结果存储模块206; 综合窗系数获取模块208;
乘-加运算模块210;
历史数据存储模块212; 综合电路第二寄存器214;
多路选择器216; 输出缓冲模块218;
综合电路控制模块220。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
本发明的基本思想是:①尽量减少功耗开销较大的存储器读写操作;②减少整个运算所需的时钟周期数,则可通过降低系统时钟频率或者采用时钟门控技术来降低动态翻转功耗。下文中,如无特别说明,各参数均为大于1的整数,如LA,LS,r,k等。
在本发明的一个基础实施例中,公开了一种WOLA滤波器组分析阶段电路。图2为本发明实施例分析阶段电路一的结构示意图。如图2所示,本实施例分析阶段电路10包括:输入缓冲模块102、样本序列存储模块(以下简称Srcddata_mem)106、分析窗系数获取模块(以下简称anal_coef)108、乘-累加(MAC)运算模块110、运算结果存储模块(以下简称mac_mem)116、K点FFT处理模块(以下简称K点FFT)118和分析电路控制模块120。其中:输入缓冲模块102,与数据来源端相连接,用于缓存输入的样本数据,当累积到预设数目的样本数据时,将该预设数目的样本数据读出并转存至样本序列存储模块;样本序列存储模块106,用于存储当前次输入的R点样本和最近的LA-R点历史样本,组成长度为LA的样本序列,该样本序列被分为r组,每组有K个数据,其中r=LA/K;分析窗系数获取模块108,用于获取对样本序列数据加权的窗系数,该窗系数也被分为r组,每组有K个数据;MAC运算模块110,由一个MAC单元构成,并与样本序列存储模块106和分析窗系数获取模块108相连接,用于以窗系数中各组的第j个数据作为权重,对样本序列各组中对应的第j个数据进行加权并累加(其中j=0,1,2,……K-1),最终输出K个加权累加的结果;运算结果存储模块116,与MAC运算模块110相连接,用于存储上述加权累加的结果;FFT处理模块118,与运算结果存储模块116相连接,用于从运算结果存储模块获取加权累加结果的K点序列,并对K点序列进行离散傅里叶变换,输出离散傅里叶变换的结果Xk(m);分析电路控制模块120,与分析阶段电路中的各模块相连接,用于控制分析阶段电路各模块的运算和读写的操作时序。
本实施例的WOLA滤波器组分析阶段电路中,采用在加权的同时累加,且最后只将累加的结果保存到mac_mem中,无需保存加权的中间运算结果,从而减少了存储器的读写操作。
本实施例的WOLA滤波器组分析阶段电路中,样本序列存储模块,采用改变初始读/写操作地址和模寻址的方式,实现样本序列的循环移位。运算结果存储模块,采用改变初始读/写操作地址和模寻址的方式,实现加权累加结果数据的缓存和循环移位。上述设置避免了在循环移位过程中所需的存储器读写操作,进一步降低了功耗。
图3为本发明实施例分析阶段电路二的结构示意图。如图3所示,本实施例分析阶段电路中,样本序列存储模块采用折叠结构,其存储深度减半而数据字长加倍,每次读/写操作完成两个样本数据的读出/写入;分析窗系数获取模块采用折叠结构,存储深度减半而数据字长加倍,每次读操作完成两个窗系数的读出。本实施例的MAC运算模块由第一MAC单元和第二MAC单元(以下分别称为MAC单元0以及MAC单元1)构成。本实施例中,样本序列存储模块106,在同一拍读出两个样本数据,分别送入MAC单元0和MAC单元1;分析窗系数获取模块108,用于在同一拍读出对应的两个窗系数,分别送入MAC单元0和MAC单元1;此实施例中,MAC单元0,用于以窗系数各组中的第2*i个数据作为权重,对样本序列各组中对应的第2*i个数据进行加权并累加,并将累加结果送入运算结果存储模块;MAC单元1,与样本序列存储模块106和分析窗系数获取模块108相连接,用于以窗系数各组中的第2*i+1个数据作为权重,对样本序列各组中对应的第2*i+1个数据进行加权并累加,并将累加结果送入运算结果存储模块(其中i=0,1,2,……K/2-1)。MAC单元0和MAC单元1平行设置。
本实施例采用双运算单元(MAC单元0和MAC单元1)结合上述折叠结构的样本序列存储模块和分析窗系数获取模块,实现两路运算并行执行,进一步减少整个系统操作所需时钟周期数,从而可以方便采用降低系统时钟频率或者时钟门控技术来降低动态翻转功耗。
此外,如图3所示,本实施例分析阶段电路还包括:分析电路第一寄存器104、分析电路第二寄存器112和多路选择器114。分析电路第一寄存器104,与输入缓冲模块102相连接,用于暂存地址为偶数的数据;样本序列存储模块106,其输入端的高W位和低W位分别与分析电路第一寄存器104和输入缓冲模块102相连接,用于从分析电路第一寄存器中获取地址为偶数的数据,从输入缓冲器获取地址为奇数的数据,在同一拍将两个数据写入同一地址单元,这两个数据分别位于同一地址单元的高W位和低W位。分析电路第二寄存器112,与MAC单元1相连接,用于暂存MAC单元1加权累加运算的结果。多路选择器114,与MAC单元0和分析电路第二寄存器112相连接,用于将MAC单元0和MAC单元1的运算结果分两拍写入运算结果存储模块116。
本实施例分析阶段电路中,分析窗系数获取模块,采用译码电路方式,用于对接收到的分析窗系数的地址,进行译码得到对应的窗系数。因为窗系数的值固定,从而用译码电路代替窗系数存储器。译码电路的实现形式的面积和功耗开销,均比采用存储器来存储系数的方法要小。该译码电路模块的输入/输出端口及其时序与存储器完全相同。
图4为本发明实施例综合阶段电路一的结构示意图。如图4所示,该综合阶段电路20包括:K点IFFT处理模块(以下简称K点IFFT)202、IFFT运算结果存储模块(以下简称IFdata_mem)206、综合窗系数获取模块(以下简称synth_coef)208、历史数据存储模块(以下简称Redata_mem)212、乘-加运算模块210、输出缓冲模块(以下简称Out_buffer)218和综合电路控制模块220。其中:IFFT处理模块202,用于对K点序列Yk(m)进行离散傅立叶逆变换,获得K点数据序列X'K(m);IFFT运算结果存储模块206,与IFFT处理模块202相连接,用于保存K点数据序列X'K(m);综合窗系数获取模块208,用于获取与K点数据序列X'K(m)对应的窗系数,该综合窗系数获取模块深度为LS,被分为s组,每组有K个数据;历史数据存储模块212,用于存储历史运算结果,其深度为LS,被分为s组,每组有K个数据,并同址写回乘-加运算模块210的运算结果;乘-加运算模块210,由一个乘-加单元构成,与IFFT运算结果存储模块206和综合窗系数获取模块208相连接,并与历史数据存储模块212双向连接,用于将从IFFT运算结果存储模块206获取的X'K(m)中的第j个数据,与从综合窗系数获取模块208中获取的各组中的第j个系数相乘,与从历史数据存储模块212中获取的相应组中的第j个历史数据相加,并将乘-加运算的结果同址写回历史数据存储模块212;输出缓冲模块218,与历史数据存储模块212相连接,用于将从历史数据存储模块中读出的最旧的R个数据进行缓存,并按照预设时间输出;综合电路控制模块220,与所述综合阶段电路中的各模块相连接,用于控制综合阶段电路各模块的运算和读/写操作的时序。
本实施例中,每从IFFT运算结果存储模块读出一个数据可使用LS/K次,省去了周期扩展所需存储器以及相应的存储器读写操作。IFFT运算结果存储模块206,采用改变初始读/写操作地址和模寻址的方式,实现K点数据序列X'K(m)的循环移位。历史数据存储模块212,采用改变初始读/写操作地址和模寻址的方式,实现历史数据的循环移位。
图5为本发明实施例综合阶段电路二的结构示意图。如图5所示,该综合阶段电路的乘-加运算模块由第一乘-加单元和第二乘-加单元(以下分别称为乘-加单元0以及乘-加单元1)构成。IFFT运算结果存储模块206采用折叠结构,存储深度减半而数据字长加倍,每次读/写操作完成两个数据的读出/写入。综合窗系数获取模块208采用折叠结构,每次读操作完成两个窗系数的读出,即同时获取各组中的第2*i和第2*i+1个窗系数。历史数据存储模块212,采用折叠结构,存储深度减半而数据字长加倍,每次读操作完成两组历史数据的读出,获取各组中的第2*i和第2*i+1个历史数据,分别送至乘-加单元0以及乘-加单元1。在该实施例中,乘-加单元0,用于将从IFFT运算结果存储模块206获取的X'K(m)中的第2*i个数据,与从综合窗系数获取模块208获取的各组中的第2*i个窗系数相乘,然后与从历史数据存储模块212获取的相应组中的第2*i个历史数据相加,并将乘-加运算的结果同址写回历史数据存储模块212。乘-加单元1,与IFFT运算结果存储模块206和综合窗系数获取模块208相连接,并与历史数据存储模块212双向连接,用于将从IFFT运算结果存储模块206获取的X'K(m)中的第2*i+1个数据,与从综合窗系数获取模块208获取的各组中的第2*i+1个窗系数相乘,然后与从历史数据存储模块212获取的相应组中的第2*i+1个历史数据相加(其中i=0,1,2,……K/2-1),并将乘-加运算的结果同址写回历史数据存储模块212。乘-加单元0和乘-加单元1平行设置。
同上述分析阶段电路的实施例类似,本实施例中,IFFT运算结果存储模块206、历史数据存储模块212均采用折叠结构来减少读写操作次数,并与双“乘-加”单元相结合实现两路运算并行执行,减少操作时间开销。
如图5所示,在本发明中,综合窗系数获取模块,采用译码电路方式,用于对接收到的综合窗系数的地址,进行译码得到对应的窗系数。
该综合阶段电路还包括:综合电路第一寄存器204(以下简称reg_1)。综合电路第一寄存器204,与IFFT运算结果存储模块206相连接,用于暂存地址为偶数的数据。IFFT运算结果存储模块206,其输入端的高W位和低W位分别与综合电路第一寄存器204和IFFT处理模块202相连接,用于从综合电路第一寄存器204中获取地址为偶数的数据,从IFFT处理模块202获取地址为奇数的数据,在同一拍将两个数据写入同一地址单元,这两个数据分别位于同一地址单元的高W位和低W位。
该综合阶段电路还包括:综合电路第二寄存器214(以下简称reg_2)多路选择器216(以下简称MUX)。综合电路第二寄存器214,与历史数据存储模块212相连接,用于暂存从历史数据存储模块212读出的低W位数据。多路选择器216,与历史数据存储模块212以及综合电路第二寄存器214相连接,用于将从从历史数据存储模块212获取的高W位数据和综合电路第二寄存器214获取的低W位数据分两拍写入输出缓冲模块220。
本实施例的技术特征和分析阶段电路中相应的技术特征所带来的技术效果相同,此处不再赘述。
此外,根据本发明的再一个方面,还提供了一种WOLA滤波器组。该WOLA滤波器组包括上述各实施例中的分析阶段电路和综合阶段电路。
以下将在上述各实施例的基础上,给出本发明的最优实施例。需要说明的,该最优的实施例仅用于理解本发明,并不用于限制本发明的保护范围。并且,最优实施例中的特征,在无特别注明的情况下,均同时适用于分析阶段电路和综合阶段电路,在相同或不同实施例中出现的技术特征在不相互冲突的情况下可以组合使用。
图6为本发明实施例WOLA滤波器组分析阶段电路结构示意图。图中的FFT处理模块是信号处理等系统中常见的电路模块,用于完成K点序列的离散傅立叶变换;ctr_0~ctr_9是由分析电路控制模块给出的其余各模块的控制信号。该WOLA滤波器组分析阶段电路采用折叠存储器和双MAC单元结构,其实现所需运算的过程和其余各主要模块的具体结构如下文。
图7为本发明实施例分析阶段电路中基于MAC单元实现加权叠接相加运算的示意图。该图以采用非折叠存储器和单MAC单元的结构为例来说明,基于折叠存储器和双MAC单元的情况与此类似。本发明直接将Srcdata_mem中存储的输入样本序列和分析窗系数均分为每组为K个数据的r=LA/K组,将样本序列和窗系数各组的第i个数据(其中i=0,1,2……K-1)依次读出(即读操作地址不连续,而是间隔为K)送入MAC单元,完成加权并同时累加,且最后只将累加的结果保存到mac_mem中。
图8为图7中MAC单元内部的结构示意图。该运算单元是数字信号处理等系统中常见的电路单元。这样,本实施例将加权与累加操作合并,完全无需保存加权的中间运算结果,从而大幅度减少了存储器的读写操作。
图9为本发明实施例分析阶段电路中Srcdata_mem的读/写操作方式示意图。Srcdata_mem的读/写操作采用模寻址的方式,并通过读/写起始地址的改变取代数据的移位操作。
图9a为本发明实施例Srcdata_mem第一次读/写操作的示意图。如图9a所示,Srcdata_mem将最新由输入缓冲器送来的R个样本按照输入时间先后依次存放在LA-R到LA-1的地址单元,并以0为起始地址读出数据用于MAC运算。
图9b为本发明实施例Srcdata_mem第二次读/写操作的示意图。Srcdata_mem将最新由输入缓冲器送来的R个样本按照输入时间先后依次存放在0到R-1的地址单元,并以R为起始地址读出数据用于MAC运算。
图9c为本发明实施例Srcdata_mem第三次读/写操作的示意图。与图9b所示的方法类似。其余各次读/写操作以此类推。
运算结果存储模块mac_mem采用类似图9的模寻址和改变初始读/写操作地址的方式,实现数据的循环移位。
实际上,本实施例的Srcdata_mem存储器模块采用折叠结构,即将字长加倍为2W而将深度减半为LA/2,每次读/写操作完成两个样本数据的读出/写入,则可使得存储器读/写操作的次数减半。
图10为本发明实施例分析阶段电路中Srcdata_mem折叠结构及样本数据存储状态的示意图。如图10所示,通过寄存器reg_1将地址为偶数的数据延迟一拍,并与地址为奇数的数据在同一拍写入折叠结构的Srcdata_mem的同一个地址单元(分别位于该地址单元的高W位和低W位)。而在读操作时,每一拍同时读出两个数据,分别送入MAC单元0和MAC单元1,并同时执行运算,提高了运算速度。
图6中的分析窗系数获取模块anal_coef以译码电路取代存储器“保存”分析窗系数,同时采用与图10中Srcdata_mem类似的折叠结构(但是anal_coef没有写操作的过程),每次同时输出两个系数,分别送入MAC单元0和MAC单元1,并同时执行运算。
图11为本发明实施例WOLA滤波器组综合阶段的电路结构图。图中的IFFT处理模块是信号处理等系统中常见的电路模块,用于完成K点序列的离散傅立叶逆变换;ctr_0~ctr_9是由控制模块给出的各模块的控制信号。图中,IFFT的运算结果,按照上文的模寻址和改变初始地址的方式写入IFFT运算结果存储模块IFdata_mem,取代数据在存储器中的循环移位操作。并且,IFFT运算结果存储模块IFdata_mem、历史数据存储模块Redata_mem均采用了上文的折叠结构来减少读/写操作次数,并结合双“乘-加”单元实现两路运算并行执行,减少操作时间开销。综合窗系数获取模块synth_coef以译码电路实现综合窗系数的“存储”,并采用上文的折叠结构。图中的多路选择器MUX用于将历史数据存储模块Redata_mem同时输出的两个数据分两拍依次写入输出缓冲器Out_buffer。
图12为本发明实施例综合阶段电路中基于“乘-加”单元实现加权和相加操作的示意图。该图以采用非折叠存储器和单“乘-加”单元的结构为例来说明,基于折叠存储器和双“乘-加”单元的情况与此类似。IFdata_mem中的数据不进行周期扩展,而是以每组为K个数据的方式将综合窗系数和历史数据分成s=LS/K组,并以间隔为K的地址将窗系数各组的第i个数据(其中i=0,1,2……K-1)依次读出用于对IFdata_mem中的第i个数据进行加权,并同时与历史数据相应组的第i个数据(与窗系数的读出方式相同)进行相加(该加权-相加操作通过“乘-加”单元实现),结果按照原址写回历史数据存储模块Redata_mem。在该方法中,每从IFdata_mem读出一个数据可使用LS/K次,省去了周期扩展所需要的存储器开销以及相应的存储器读/写操作。其中,图13中的历史数据存储模块Redata_mem为双端口结构的存储器,可同时读出一个数据用于相加操作并将前次相加结果写回。并且,该存储模块采用类似图10的模寻址和改变初始读/写地址的方式,实现数据的移位。
图13为图12中所用到的“乘-加”单元内部的结构示意图。该运算单元结构简单并且是数字信号处理等系统中常见的电路。
综上,本发明公开的WOLA滤波器组及其分析阶段电路、综合阶段电路,减少了功耗开销较大的存储器的读写次数,从而可直接降低硬件实现的功耗;此外,读写和运算时间开销的减少,可以方便在数据吞吐量不变的前提下,借助降低系统时钟频率或者时钟门控技术进一步降低动态翻转功耗。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。