发明内容
本发明实施例提供一种FIR滤波器的实现结构装置,能够大幅度减少元器件的个数,降低实现成本;同时能够灵活可靠的自动适配不同数据码率。
本发明实施例提供以下技术方案:
一种发送FIR滤波器的实现结构装置,包括:第一多路选择器、若干个寄存器、输入控制模块、模四计数器、数据选通生成矩阵模块、若干个乘法器、寄存器组、第二多路选择器、若干个加法器组成的加法器树;其中,
所述第一多路选择器,用于选择输入数据并将所述输入数据提供给寄存器;
所述寄存器,用于存储输入数据;
所述输入控制模块,用于在所述模四计数器的控制下,控制所述寄存器中存储的数据每四个时钟节拍移位更新一次;
所述模四计数器,用于控制所述数据选通生成矩阵模块在不同的时钟节拍选取不同的寄存器和滤波参数,并通过所述乘法器进行乘法运算;
所述寄存器组,用于存储所述乘法器的运算结果,并将所述运算结果通过第二多路选择器提供给所述加法器作为输入;
所述第二多路选择器,用于在所述模四计数器的控制下,将不同时钟节拍的所述乘法器的输出结果送到所述加法器作为输入,由所述加法器进行加法计算并输出最终结果。
优选的,所述寄存器的个数为17个;所述加法器树为4级15个加法器;所述乘法器的个数为13个,其中,每一时钟节拍中未用到的乘法器用于计算下一个时钟节拍中未计算过的数据或者轮空空闲。
优选的,所述模四计数器在时钟节拍的控制中,通过随路数据传输结束标志和随路数据有效标志控制滤波器内部流水线的暂停和恢复。
本发明还提供另一种发送FIR滤波器的实现结构装置,包括:第一多路选择器、若干个寄存器、输入控制模块、模四计数器、数据选通生成矩阵模块、若干个乘法器、第二多路选择器、若干个加法器组成的加法器树;其中,
所述第一多路选择器,用于选择输入数据并将所述输入数据提供给寄存器;
所述寄存器,用于存储输入数据;
所述输入控制模块,用于在所述模四计数器的控制下,控制所述寄存器中存储的数据每四个时钟节拍移位更新一次;
所述模四计数器,用于控制所述数据选通生成矩阵模块在不同的时钟节拍选取不同的寄存器和滤波参数,并通过所述乘法器进行乘法运算;
所述第二多路选择器,用于在所述模四计数器的控制下,将不同时钟节拍的所述乘法器的输出结果送到所述加法器作为输入,由所述加法器进行加法计算并输出最终结果。
优选的,所述寄存器的个数为17个;所述加法器树为4级15个加法器;所述乘法器的个数为16个,其中,每一时钟节拍中未用到的乘法器轮空空闲。
优选的,所述模四计数器在时钟节拍的控制中,通过随路数据传输结束标志和随路数据有效标志控制滤波器内部流水线的暂停和恢复。
同时,本发明还提供一种接收FIR滤波器的实现结构装置,包括:第一多路选择器、若干个寄存器、输入控制模块、模四计数器、数据选通生成矩阵模块、所述若干个乘法器、第二多路选择器、若干个加法器组成的加法器树;其中,
所述第一多路选择器,用于选择输入数据并将所述输入数据提供给寄存器;
所述寄存器,用于存储输入数据;
所述输入控制模块,用于在所述模四计数器的控制下,控制所述寄存器中存储的数据每四个时钟节拍移位更新一次;
所述模四计数器,用于控制所述数据选通生成矩阵模块在不同的时钟节拍选取不同的寄存器和滤波参数,并通过所述乘法器进行乘法运算;
所述第二多路选择器,用于在所述模四计数器的控制下,将不同时钟节拍的所述乘法器的输出结果送到所述加法器作为输入,由所述加法器用四个时钟节拍分四步计算全部时钟节拍的累加结果,并输出最终结果。
优选的,所述寄存器的个数为65个;所述加法器树为4级15个加法器;所述乘法器的个数为9个,其中,每一时钟节拍中未用到的乘法器轮空空闲。
优选的,所述模四计数器在时钟节拍的控制中,通过随路数据传输结束标志和随路数据有效标志控制滤波器内部流水线的暂停和恢复。
本发明实施例提供的FIR滤波器的实现结构装置,能够大幅度减少元器件的个数,降低实现成本;同时能够灵活可靠的自动适配不同数据码率。具体而言,本发明根据FIR发送、接收滤波器系数镜像的特点,把传统FIR滤波和数字信号的插值和抽取过程结合起来,提出并设计了具有较为优化实现结构,最大效率复用最少的乘法器和加法器,试验结果表明,该滤波器的优化结构能够大量减少硬件成本,达到设计性能指标。另外,本发明采用了随路数据传输结束标志和随路数据有效标志这两个随滤波器输入信号同步输入的指示信号,其中,前者标识一个数据帧传输结束,后者标志当前有效输入数据。当一个数据帧没有结束,而下一个有效的数据没有到达时,本发明提供的滤波器将暂停流水线直到有效数据到来。本发明通过采用这样的机制,能够满足滤波器传输码率随时改变的应用需求。
具体实施方式
本发明实施例提供一种FIR滤波器的实现结构,能够大幅度减少元器件的个数,降低实现成本;同时能够灵活可靠的自动适配不同数据码率。为使本发明的目的、技术方案及优点更加清楚明白,下面参照附图并举实施例,对本发明进一步详细说明。
首先,阐述一下发送滤波器的设计原理。按照LTE设计指标要求,发送滤波器采用65阶1:4补零插值FIR滤波器,详细阐述如下:
65阶滤波器,2N+1=65,N=32,系数镜像对称;输出表达式:
因为系数对称(AN-i=AN+i),
所以有 输入表达式:
输出表达成如下形式:
其中(k=0,1,2,...)。
这里y(k),y(k+1),y(k+2)以及y(k+3)可以用四个处理阶段分别计算。具体说明如下:
1、y(4k)
当i=4,8,12,16,20,24,28,32时,中间的求和表达式等于非零值,它的系数A序号为:N-i=28,24,20,16,12,8,4,0。同样当i=4,8,12,16,20,24,28,32时,右边的求和表达式等于非零值,它的系数A序号为:N-i=28,24,20,16,12,8,4,0,所以可以折叠合并两个求和项:
2、y(4k+1)
当i=1,5,9,13,17,21,25,29时,右边的求和表达式等于非零值,它的系数A序号为:N-i=31,27,23,19,15,11,7,3。而当i=3,7,11,15,19,23,27,31时,中间的求和表达式等于非零值,它的系数A序号为:N-i=29,25,21,17,13,9,5,1,二者系数A序号不同,不能折叠,展开求和表达式:
3、y(4k+2)
当i=2,6,10,14,18,22,26,30时,中间的求和表达式等于非零值,它的系数A序号为:N-i=30,26,22,18,14,10,6,2。同样当i=2,6,10,14,18,22,26,30时,右边的求和表达式等于非零值,它的系数A序号为:N-i=30,26,22,18,14,10,6,2,所以可以折叠合并两个求和项:
4、y(4k+3)
当i=3,7,11,15,19,23,27,31时,右边的求和表达式等于非零值,它的系数A序号为:N-i=29,25,21,17,13,9,5,1。而当i=1,5,9,13,17,21,25,29时,中间的求和表达式等于非零值,它的系数A序号为:N-i=31,27,23,19,15,11,7,3,二者系数A序号不同,不能折叠,展开求和表达式:
综上,因为y(4k),y(4k+1),y(4k+2),y(4k+3)连续四拍循环输出,所以,第1拍计算y(4k),需要9个乘法器;第2拍计算y(4k+1),需要16个乘法器;第3拍计算y(4k+2),需要8个乘法器;第4拍计算y(4k+3),需要16个乘法器。第1拍和第3拍所用到的乘法器较少,如果按照四拍复用16个乘法器,则第1拍乘法器利用率56.25%,第3拍乘法器利用率50%。本发明采用13个乘法器实现该滤波器,并在第1拍和第3拍用空闲的4个乘法器计算第2拍和第4拍的后四个数据,具体为:在第1拍,乘法器0~8被分配用于计算y(4k),而乘法器9~12被分配用于计算y(4k+1)中的因子A29*x[4k+4],A25*x[4k+8],A21*x[4k+12]以及A17*x[4k+16];在第2拍,乘法器0~11被分配用于计算y(4k+1)中剩下的12个因子,乘法器12轮空空闲;同理,在第3拍,乘法器0~7被分配用于计算y(4k+2)的8个因子,乘法器8轮空空闲,而乘法器9~12被分配用于计算y(4k+3)中的因子A31*x[4k+4],A27*x[4k+8],A23*x[4k+12]以及A19*x[4k+16],在第4拍,乘法器0~11被分配用于计算y(4k+3)中剩下的12个因子,乘法器12轮空空闲。这样,每个阶段乘法器的利用率分别为100%、92.3%、92.3%、92.3%。
如图3所示,为本发明实施例发送滤波器实现结构示意图。其中,寄存器f32至寄存器f4用作保存输入信号x[4k+32]到x[4k+4],寄存器0保存输入信号x[4k],寄存器p4至p32保存输入信号x[4k-4]到x[4k-32],共17个寄存器。在模四计数器和输入控制模块的共同作用下,每4个节拍移位更新一次。在模四计数器的控制下,数据选通生成矩阵在不同的节拍选取不同的寄存器和滤波参数(A0~32)参与乘法运算,例如在节拍2,选取A29和寄存器p4(x[4k+4])作为乘法器0的两个输入,选取A25和寄存器p8(x[4k+8])作为乘法器0的两个输入,依次类推。多路选择器(MUX)的四路输入,从上到下,依次来自第1,2,3,4节拍的乘法器输出。在图3中可以看到,第1拍的输入来自乘法器0~8的输出;第2拍的输入除了来自乘法器0~11,还有(在第1拍提前计算并保存)寄存器组中的乘法器9~12的乘积;第3拍的输入来自乘法器0~7的输出;第4拍的输入除了来自乘法器0~11,还有(在第3拍提前计算并保存)寄存器组中的乘法器9~12的乘积。在模四计数器的控制下,不同的节拍的输入将被选中送到加法器的输入,由加法器计算输出最终结果。
如4所示,为本发明实施例发送滤波器工作原理图。发送滤波器根据时钟节拍,循环地工作在节拍4k,节拍4k+1,节拍4k+2以及节拍4k+3四个状态,每经过一个时钟节拍,如果输入数据有效,就切换到下一个工作状态,否则暂停,在暂停状态下,所有流水线轮空而中间计算数据保存。每个状态向共享乘法器流水线输出一组操作数。对应地,共享乘法器向节拍4k加法流水线,节拍4k+1加法流水线,节拍4k+2加法流水线以及节拍4k+3加法流水线输出一组相乘结果。输出选择循环地把节拍4k加法流水线,节拍4k+1加法流水线,节拍4k+2加法流水线以及节拍4k+3加法流水线的输出结果输出到外部下游模块。
下面,再阐述一下接收滤波器的设计原理。按照LTE设计指标要求,接收滤波器采用65阶4:1抽取FIR滤波器,详细阐述如下:
65阶滤波器,2N+1=65,N=32,系数镜像对称;
输出表达式:
抽取表示如下:
并且每4个时钟节拍计算一次y(4k),所以y(4k)可以用连续四个时钟节拍计算获得:
其中step_1用到9个乘法器,step_2,step_3,step_4用到8个乘法器。代入N=32,下行抽取滤波器需要9个乘法器。
如图5所示,为本发明实施例接收滤波器实现结构示意图。其中,寄存器f32至寄存器p32,共计65个寄存器用作缓存输入信号,每1个节拍移位更新一次;数据选通矩阵和滤波参数(A0~32)和发送滤波器实现原理一致,此处不再赘述。多路选择器(MUX)的四路输入,从上到下,依次来自第1,2,3,4节拍的乘法器输出。在图5中可以看到,第1拍的输入来自乘法器0~8的输出;第2,3和4拍的输入来自乘法器0~7。在模四计数器的控制下,不同的节拍的输入将被选中送到加法器的输入,由加法器用4拍分4步计算全部节拍的累加结果。
如图6所示,为本发明实施例接收滤波器工作原理图。接收滤波器根据时钟节拍,循环地工作在节拍4k,节拍4k+1,节拍4k+2以及节拍4k+3四个状态,每经过一个时钟节拍,如果输入数据有效,就切换到下一个工作状态,否则暂停,在暂停状态下,所有流水线轮空而中间计算数据保存。每个状态向共享乘法器流水线输出一组操作数。对应地,共享乘法器向节拍4k加法流水线,节拍4k+1加法流水线,节拍4k+2加法流水线以及节拍4k+3加法流水线输出一组相乘结果。和发送滤波器不同的是,节拍4k+1加法流水线,节拍4k+2加法流水线以及节拍4k+3加法流水线分别累加了节拍4k加法流水线,节拍4k+1加法流水线,节拍4k+2加法流水线的加法运算结果。而节拍4k+3加法流水线的输出结果直接输出到外部下游模块。
本领域普通技术人员可以理解实现上述实施方法携带的全部或部分步骤是可以通过与程序指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
综上所述,本发明提供了FIR滤波器的实现结构,能够大幅度减少元器件的个数,降低实现成本;同时能够灵活可靠的自动适配不同数据码率。具体而言,本发明采用的FIR滤波器实现结构不仅融入了现有技术的传统方法,并结合发送滤波器将输入数据1∶4插值、接收滤波器对数据进行4∶1抽取的特点,将滤波处理分为四个处理阶段,每个阶段仅提取有效输入数据,对无效数据不作运算,并通过四个处理阶段复用乘法器进一步减少了乘法器数目;最后通过将本处理阶段空闲的乘法器用于后续阶段数据计算,从而提高了每个阶段中乘法器的利用率,进一步减少了乘法器的数目。采用本发明的实现方法,发送滤波器需要13个乘法器,比现有方法节省20个;接收滤波器需要9个乘法器,比现有方法节省24个。此外如果都采用图4所示的加法器树对乘法器输出结果进行计算,则现有方法需要6级流水线,32个加法器。采用本发明的实现方法,发送滤波器加法树需要4级流水线,15个加法器,比现有方法节省17个;接收滤波器加法树需要4级流水线,8个加法器,比现有方法节省24个。另外,本发明在滤波器上增加额外的控制逻辑,使滤波器流水线相应地根据输入数据暂停而暂停,能够灵活可靠的自动适配不同数据码率。
以上对本发明所提供的FIR滤波器的实现方法及结构进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方案;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。