发明内容
本发明实施例提供一插值滤波器,用于解决现有技术中插值滤波器阶数受限制的技术问题,提高滤波器阶数的灵活性。
本申请实施例提供一种插值滤波器,包括:
静态存储器,用于存储输入数据;
操作处理单元,与所述静态存储器相连;
查找表单元,与所操作处理单元相连;
其中,所述操作处理单元用于通过所述查找表单元获得滤波系数,根据所述滤波系数对所述输入数据进行滤波操作。
可选的,插值滤波器还包括:
可编程只读存储器,与所述查找表单元相连,应用存储所述滤波系数。
可选的,插值滤波器包括两个所述静态存储器:第一静态存储器和第二静态存储器;
所述第一静态存储器分别与第一多路选择器和第一寄存器相连;所述第二静态存储器分别与第二多路选择器和第二寄存器相连;
所述第一寄存器与所述第二多路选择器相连,所述第二寄存器与所述第一多路选择器相连;
所述第一多路选择器和所述第二多路选择器通过一加法器与所述操作处理单元相连。
可选的,当所述插值滤波器的长度M为偶数时,输入数据序列为偶数的所述输入数据存放在所述第一静态存储器中,输入数据序列为奇数的所述输入数据存放在所述第二静态存储器中;
当对所述输入数据进行加法操作时,同时从所述第一静态存储器和所述第二静态存储器中读取数据进行加法运算。
可选的,当所述插值滤波器的长度M为奇数时,滤波系数相互对称的输入数据会存放在同一静态存储器中;
当对所述输入数据进行加法操作时,从所述第一静态存储器或所述第二静态存储器中读取第一个输入数据存储在第一寄存器或第二寄存器中,从所述第二静态存储器或所述第一静态存储器中读取第二个输入数据,并将所述第一个输入数据和所述第二个输入数据进行加法运算。
可选的,所述处理操作单元包括:
移位加法单元,用于从输入所述处理操作单元的待乘数据中提取公共因子获得第一中间数;
可配置的乘法单元,用于根据所述滤波系数和所述第一中间数获得第二中间数;
累加求和单元,用于将所述可配置的乘法单元获得的所有第二中间数进行累加求和,并输出累加求和结果以完成滤波操作。
本申请实施例中的上述一个或多个技术方案,至少具有如下技术效果:
在插值滤波器中增设静态存储器,将插值滤波器的输入数据存储在静态存储器中,从而通过静态存储器代替寄存器来实现插值滤波器的延时链路。因为静态存储器面积小,存储密度大,给定一定存储空间,可以根据阶数需求调用静态存储器的一部分存储空间来用,所以静态存储器实现延时链路具有不受阶数限制的灵活性,解决了现有技术中插值滤波器阶数受限的技术问题,提高了滤波器阶数的灵活性,并且静态存储器硬件开销比寄存器小,能够减小整个滤波器件的面积。
实施例一
请参考图1,本申请实施例提供一种插值滤波器,该插值滤波器包括:
静态存储器10,用于存储输入数据;
操作处理单元20,与所述静态存储器10相连;
查找表单元30,与所操作处理单元20相连;
其中,所述操作处理单元20用于通过所述查找表单元30获得滤波系数,根据所述滤波系数对所述输入数据进行滤波操作。
在具体实施过程中,本申请实施例提供的插值滤波器可以应用于软件定义的无线通信领域。该插值滤波器可以是具有线性相位的有限冲击响应(FiniteImpulse Response,FIR)滤波器。在该插值滤波器中设置静态存储器10(StaticRandom Access Memory,SRAM),用于存储器输入插值滤波器的输入数据。具体的,可以设置两个静态存储器10:第一静态存储器SRAM1和第二静态存储器SRAM2,静态存储器10通过多路选择器(Multiplexer,MUX)和加法器与操作处理单元20相连。其中,第一静态存储器SRAM1分别与第一多路选择器MUX1和第一寄存器D1相连;第二静态存储器SRAM2分别与第二多路选择器MUX2和第二寄存器D2相连;第一寄存器D1与第二多路选择器MUX2相连,第二寄存器D2与第一多路选择器MUX1相连;第一多路选择器MUX1和第二多路选择器MUX2通过一加法器与操作处理单元20相连。
操作处理单元20(operand element)与加法器相连,接收加法器执行加法操作后获得的数据,并对该数据进行乘法运算及累加求和运算。本申请实施例提供的操作处理单元20在进行乘法运算时采用滤波系数查找表的方法实现,所以在插值滤波器中还设置了查找表单元30(Look up table unit),通过查找表单元30查找获得滤波器的滤波系数,进而根据滤波系数完成对其接收到的数据进行乘法运算,并对乘法运算获得的所有结果进行累加求和,实现对输入插值滤波器的输入数据的滤波操作。
进一步的,本申请实施例还在插值滤波器中设置了可编程只读存储器(Programmable read-only memory,PROM),用于存储滤波器系数。在具体实施过程中,可以通过改写PROM中的滤波器系数来实现插值滤波器的可配置功能。
请参考图2,为了减小操作处理单元20的硬件开销,本申请实施例提供包括:移位加法单元21(shift and add)、可配置的乘法单元22(multiply unit)和累加求和单元23(accumulation unit)的操作处理单元20。其中,移位加法单元21用于从输入处理操作单元的待乘数据中提取公共因子获得第一中间数;可配置的乘法单元22用于根据插值滤波器的滤波系数和第一中间数获得第二中间数;累加求和单元23用于将可配置的乘法单元22获得的所有第二中间数进行累加求和,并输出累加求和结果以完成滤波操作。
下面给出具体的可配置插值滤波器的工作流程:
如图1所示,本申请实施例采用第一静态存储器10和第二静态存储器10来存放输入数据。对于线性相位的FIR滤波器来说,滤波器的系数具有对称性,当滤波器的长度M为偶数时,滤波器的输出结果如公式(1)所示,M为奇数时,滤波器的输出结果如公式如(2)所示。
其中,x表示输入数据,n表示周期数,k为0到M/2-1之间的变量,M表示滤波器的长度,h[k]表示滤波器的系数。
请参考图3,当插值滤波器的长度M为偶数时,输入数据x[n-k]和x[n-M+1+k]的滤波系数相互对称,即滤波系数均为h[k],并且x[n-k]和x[n-M+1+k]分别存放在不同的SRAM中。具体的,输入数据序列为偶数的输入数据存放在第一静态存储器中,输入数据序列为奇数的所述输入数据存放在所述第二静态存储器中。当进行x[n-k]和x[n-M+1+k]的加法操作时,由于第一静态存储器与第一多路选择器直接相连,第二静态存储器与第二多路选择器直接相连,因此可以直接从第一静态存储器和第二静态存储器中同时读取数据进行运算,实现了多相位折叠结果,降低了数据的存储和读写次数,缩短了插值滤波器的延时链路。请参考图3为M为偶数时滤波器的运算过程,在一个时钟周期内,第一静态存储器SRAM1和第二静态存储器SRAM2中x[n-k]和x[n-M+1+k]同时被多路选择器读出并输入加法器相加,其中m1和m2分别表示第一多路选择器和第二多路选择器读取的数据。
当插值滤波器的长度M为奇数时,滤波系数相互对称的输入数据x[n-k]和x[n-M+1+k]会存放在同一个的SRAM中,为此在对x[n-k]和x[n-M+1+k]进行加法操作时,从第一静态存储器10或第二静态存储器10中读取第一个输入数据存储在第一寄存器或第二寄存器中;由于第一寄存器与第二多路选择器相连,第二多路选择器与第二寄存器直接相连,第二寄存器与第一多路选择器相连,第一多路选择器与第一寄存器直接相连,所以可以在从第二静态存储器10或第一静态存储器10中读取第二个输入数据时,将第一个输入数据和第二个输入数据进行加法运算,实现了具有系数对称性的FIR滤波器多相位折叠,缩短了延时链路。
例如:在第一个时钟内,从第一静态存储器中读取x[n-k],并将x[n-k]存放在第一寄存器当中,然后在下个时钟将x[n-M+1+k]从第二静态存储器中读出,并与第一寄存器中的数据x[n-k]完成相加操作。请参考图4为M为奇数时的静态存储器的读写说明,第一静态存储器SRAM1和第二静态存储器SRAM2中加重标识的表示从中读取数据存入寄存器中等待调用,m1和m2中加重标识的代表从寄存器中读出数据,而不是直接从静态存储器10中读取。
在具体实施过程中,输入数据分别从两个静态存储器10中取出并进行相加操作时,由于需要完成M阶滤波器的系数相乘并累加,因此滤波器需要工作在比数据的输入采样频率fs快N倍以上的Nfs工作频率上,N为(M-1)/2(M位奇数时)或者M/2(M位偶数时)。
从两个静态存储器10中取出输入数据并进行相加操作后,相加获得的结果输入操作处理单元20进行乘法运算。在操作处理单元20中,先通过移位加法单元21提取待乘数据的公共因子,采用2bit的二进制的公共子式消除方法(Binary Common Subexpression,BCS),减小硬件开销。通常情况下,对滤波系数进行16bit的定点化操作已经能够满足比较高精度的要求,所以本申请实施例以满足16bit以内的系数定点化乘法操作为例进行说明,如图5所示,采用16位以内的可扩展移位加法器。具体实施过程中,用x2=x1+2-1x1来替代式子(3)中的x1,则变为式子(4)。式子(4)表示滤波系数全为“1”情况,那么移位加法单元21便消除了公共子式“11”。
y1=x1+2-1x1+2-2x1+2-3x1+…+2-14x1+2-15x1 (3)
y1=x2+2-1x2+2-2x2+…+2-13x1+2-14x2 (4)
请参考图5,Xin为加法器输入操作处理单元20的待乘数据,即Xin=x[n-k]+x[n-M+1+k],Xin和Xin/2表示二进制系数的11,也就是连续两个1的操作都可以通过移位加法单元21来公用,待乘数据中包含的“11”都可以提取出来用它实现,不用每个待乘数据中含有连续两个1的操作再用单独的硬件逻辑来实现,使操作处理单元20中的逻辑操作数最少化。
移位加法单元21移位相加获得的第一中间数存储在通道M8~M1中,进一步进入可配置的乘法单元22中,通过编码的滤波系数查找表来实现乘法操作。请参考图6,S7-S0为8个4:1多路选择器MUX,S为2:1多路选择器MUX,S由滤波系数的符号位控制,当滤波系数为负数时符号位为“1”,输出第二中间数(即Mout)选择以补码的形式输出,当滤波系数为正数时符号位为“0”,直接输出第二中间数(即Mout)。而S7-S0根据查找表单元30查找到的滤波系数选择对应的数据进行下一步,以S7为例:滤波系数对应位上的控制系数为“11”时,选择M8输出进行加法操作;滤波系数对应位上的控制系数为“10”时选择Xin输出进行加法操作;滤波系数对应位上的控制系数为“01”时选择Xin/2输出进行加法操作;滤波系数对应位上的控制系数为“00”时选择0输出进行加法操作。需要说明的是,对于实现不同定点化位数的操作,比如9bit的定点化操作,可以编码将S2-S0的输出设为0,S3的输出设定为2-8Xin或者0。
请参考图7,可配置的乘法单元22的输出结果Mout进一步输入累加求和单元23,经过累加求和单元23完成M阶滤波器的累加求和操作。操作处理单元20在滤波器系数处理上,通过移位加法单元21和可配置的乘法单元22替代通用的乘法器,提高了硬件利用效率。
通过本申请实施例中的一个或多个技术方案,可以实现如下一个或多个技术效果:
1、在插值滤波器中增设静态存储器,将插值滤波器的输入数据存储在静态存储器中,从而通过静态存储器代替寄存器来实现插值滤波器的延时链路。因为静态存储器面积小,存储密度大,给定一定存储空间,可以根据阶数需求调用静态存储器的一部分存储空间来用,所以静态存储器实现延时链路具有不受阶数限制的灵活性,解决了现有技术中插值滤波器阶数受限的技术问题,提高了滤波器阶数的灵活性,并且静态存储器硬件开销比寄存器小,能够减小整个滤波器件的面积。
2、通过提供两个静态存储器来存储输入数据,并为两个静态存储器分别提供两个输出电路,一路与多路选择器直接相连,另一路与寄存器相连再由寄存器与另一个多路选择器相连,使得静态存储器中的输入数据可以在一个时钟周期内同时被读出并进行加法运算,或者在两个时钟周期内被读出并进行加法运算,进一步缩短了插值滤波器的延时链路。
3、通过提供可编程只读存储器来存储滤波系数,方便配置,能够实现不同位系数定点化乘法操作和不同阶数的滤波器,满足在不同协议下的处理要求,灵活的配置。
4、采用移位加法器尽可能多的提取待乘数据的公共子式,以共用逻辑操作单元,使得插值滤波器中的逻辑操作单元数目最少化,并且由于移位加法器具有通用可配置性、能够重复利用,进而减小了硬件开销、方便了流水线结构的实现。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。