发明内容
本发明的目的在于提供一种适用于抽取滤波器的数据抽取方法及装置,通过减少滤波器的计算量,使滤波后所有数据都被用到后续的处理中去,达到节省乘法器和加法器等硬件资源的目的。
本发明的技术方案包括:
一种适用于抽取滤波器的数据抽取装置,包括:一用于对采样数据进行储存的输入数据缓冲单元,一用于对采样数据和滤波器系数进行预定滤波运算的滤波器计算单元,其中在所述输入数据缓冲单元和所述滤波器计算单元之间设置一数据系数选择单元;
所述数据系数选择单元用于从所述输入数据缓冲单元读取所述采样数据及选取对应的滤波器系数,并发送给所述滤波器计算单元,用于对每输入M个采样数据,所述滤波器计算单元产生一个滤波输出,其中M为抽取倍数。
其中所述滤波器计算单元包括:设定个数的并行处理之乘加单元和一累加器;所述乘加单元用于对所述采样数据和选取的对应滤波器系数进行运算操作,所述运算操作为乘法操作和加法操作;所述累加器用于将所有乘加单元的输出结果按时间顺序进行串行累加。
其中该装置为一有限冲击响应滤波器。
其中所述抽取倍数为正整数且满足抽样定理。
一种适用于抽取滤波器的数据抽取方法,其包括以下步骤:
A、所述数据系数选择单元读取采样数据和选取滤波器系数,并发送给所述滤波器计算单元;
B、每输入M个采样数据,所述滤波器计算单元产生一个滤波输出,M为抽取倍数,为正整数且满足抽样定理。
其中所述步骤B还包括:
B1、所述滤波器计算单元对收到的所述采样数据和对应的所述滤波器系数作预定的滤波运算;
B2、每输入M个采样数据,所述滤波器计算单元对收到的所述采样数据和对应的滤波器系数作N次乘加运算,N为所述抽取滤波器的抽头数,为M的整数倍。
其中所述步骤A还包括:
A1、所述数据系数选择单元从所述输入数据缓冲单元读取预定的采样数据;
A2、所述数据系数选择单元选取与所述采样数据对应的滤波器系数;
A3、数据系数选择单元将所述采样数据和所述滤波器系数发送给所述滤波器计算单元。
其中所述步骤A1还包括:
A11、对输入的所述采样数据,在所述输入数据缓冲单元的缓冲区内按预定顺序进行缓冲保存;
A12、所述数据系数选择单元从所述缓冲区的预定存储地址读取所述采样数据。
其中所述步骤A12还包括:每输入N个采样数据,循环存储到所述输入数据缓冲单元的预定存储地址,N为所述抽取滤波器的抽头数,为M的整数倍。
其中所述步骤A2还包括:
A21、将M个采样数据设为一组,依次在输入每组的第一个采样数据时,将该第一个采样数据与第一个滤波系数对应,上一组最后一个采样数据与第二个滤波系数对应,一直到最早输入的采样数据与最后一个滤波系数对应;
A22、每输入M个采样数据,数据系数选择单元完成对滤波器系数一个循环选择。
本发明所提供的一种适用于抽取滤波器的数据抽取方法及装置,通过对采样数据的读取和对应滤波器系数的选择,以实现将数据抽取过程放在滤波过程之前,从而减少了滤波计算量;这就是说,对于M倍抽取,滤波计算量就减少为原来的1/M;对应到用硬件实现时,就节省了乘法器和加法器等硬件资源,从而降低了产品成本,尤其在M较大的时候,效果会更加明显。
具体实施方式
以下结合附图,将对本发明的较佳实施例加以详细说明。
本发明提供一种适用于抽取滤波器的数据抽取方法及装置,通过数据系数选择单元从输入数据缓冲单元对采样数据进行预定的读取和选取对应的滤波器系数;实现每输入M个采样数据,滤波器计算单元产生一个滤波输出,其中M为抽取倍数,为正整数;从而减少了滤波器的计算量,达到节省乘法器和加法器等硬件资源目的。
如图2所示是本发明一个较佳实施例的抽取滤波器装置之结构框图,该装置是一FIR(Finite Impulse Response-有限冲击响应)滤波器,包括:输入数据缓冲单元、数据系数选择单元、滤波器计算单元。所述装置被用于对高速采样得到的输入采样数据进行数据抽取和滤波运算,从而实现预定的下采样。
所述输入数据缓冲单元被用于对输入数据进行缓冲保存。所述输入数据缓冲单元包含一缓冲区,所述缓冲区的深度由FIR滤波器的抽头数决定;例如:如果FIR滤波器有30个抽头,则该缓冲区的深度为30。
所述数据系数选择单元被用于从所述输入数据缓冲单元读取所述采样数据及选取对应的滤波器系数,并发送给所述滤波器计算单元。对于一个抽头数为N的抽取滤波器,不考虑系数的对称性,则需要经过N次乘加运算后才能得到一个滤波输出,其中N为M的整数倍。在现有技术中,对于一个M倍的抽取过程,滤波器要得到M个滤波输出才能完成一个完整的滤波运算;但是本发明考虑到其中的M-1个滤波器输出是无效的,所述数据系数选择单元在输入数据缓冲单元中读取预定的采样数据,并选取对应的滤波器系数,因此滤波器只需完成N次乘加运算后就完成了一个滤波运算,这样,滤波运算量就减少为原来的1/M;换句话说,就是将以前每输入一个采样数据对应计算出一个输出值,改成每M个输入只产生一个输出值。
本发明的抽取滤波处理过程是:根据滤波器的时域卷积过程,将其展开,然后按照每个输入的采样周期,从输入数据缓冲单元中的特定单元取出数据,送到滤波器计算单元中去,同时还要选择所对应的系数,这样就可以完成N/M次的乘加运算,则输入M个数据,就完成了N次的乘加运算,得到了一个完整的输出值。
所述滤波器计算单元包括:设定个数并行处理的乘加单元和一累加器。所述乘加单元对所述数据系数选择单元输出的滤波器系数与采样数据进行乘法操作以及加法操作,所述累加器将这些并行工作的乘加单元之输出按时间顺序串行累加到一起。
下面用一个更为具体的实施例来详细说明本发明之实施过程。
例如:抽取倍数为3,滤波器的抽头数为24,输入数据的采样率为30MHz,所述装置运行的时钟频率为60MH;这样,经过3倍抽取后,输出数据的采样率为10MHz,也就是说,每两个时钟周期输入一个采样数据,每6个时钟周期输出一个经过滤波运算的采样数据。
滤波器在时域的卷积过程为:
展开为:
y(n)=x(n)×h(0)+x(n-1)×h(1)+x(n-2)×h(2)+...+x(n-23)×h(23)(2)
将M个采样数据设为一组,依次在输入每组的第一个采样数据时,将该第一个采样数据与第一个滤波系数对应,上一组最后一个采样数据与第二个滤波系数对应,一直到最早输入的采样数据与最后一个滤波系数对应;这就是说,最新输入的数据X(n)与h(0)相乘,最早数据X(n-23)与h(23)相乘,共需要计算24次乘加运算。
如果抽取后输出只取y(n),其中n=3m(m=0,1,2,...),那么当n=3m+1和n=3m+2时,不对这些输入进行处理,而是利用这个时间段完成上式中余下的运算。输入3个采样数据需要6个时钟周期,因此每个时钟周期要处理完4次乘法运算,用4个MAC(Multiplication Add Cell-乘加单元)并行处理,这四个MAC单元分别编号为MAC1、MAC2、MAC3、MAC4,如图3所示。
所述输入数据缓冲单元的缓冲区深度为24,用寄存器保存;第一个数据写入到地址0,后面的数据分别写入到地址1,2...,一直写入到地址23后又从地址0开始循环,因此输入的数据可以编号为x(24n),x(24n+1),x(24n+2),...,x(24n+23),相对应的地址编号为A0,A1,A2,...,A23;所述缓冲区的数据同时被4个所述MAC读取,每个时钟周期读取一次。
在所述数据系数选择单元中,系数编号分别为H0,H1,...,H23,分别对应系数h(0)到h(23);当输入数据x(24n)时,数据写入到地址A0后,规定MAC1完成A0~A5地址的运算,MAC2完成A6~A11地址的运算,MAC3完成A12~A17地址的运算,MAC4完成A18~A23地址的运算,则在本周期以及本周期的相邻下个时钟周期(因为每两个时钟周期输入一个数据),有:
MAC1:A0*H0+A1*H23
MAC2:A6*H18+A7*H17
MAC3:A12*H12+A13*H11
MAC4:A18*H6+A19*H5
其中H0就是系数h(0),H23就是系数h(23),其它类推,此时A1中的数据为24n-23,输入采样数据与滤波器系数的对应关系要满足上述公式(2)。
当输入数据x(24n+1)写入到A1后,MAC1从A2开始取数,从而避免将更新后的A1中的数据取进来参与运算而导致错误,因为A1中的数据已经在上个周期参与运算了,则有:
MAC1:A2*H22+A3*H21
MAC2:A8*H16+A9*H15
MAC3:A14*H10+A15*H19
MAC4:A20*H4+A21*H3
同理可以类推,当输入数据x(24n+2)写入到A2后,有
MAC1:A4*H20+A5*H19
MAC2:A10*H14+A11*H13
MAC3:A16*H8+A17*H7
MAC4:A22*H2+A23*H1
这样,输入数据分别是x(24n)、x(24n+1)、x(24n+2),对应写入到A0、A1、A2后,就完成公式(2)中的所有24次乘法运算和除累加运算外的加法运算,然后将各个MAC输出结果进行累加运算,就得到一个滤波输出;这就是说,每3个采样数据经抽取滤波后只输出一个采样数据,从而完成一个完整的抽取滤波过程。
当输入数据x(24n+3)时,写入到A3后,最新输入的数据在A3与h(0)相乘,最早输入的数据在A4与h(23)相乘,相应得到如下算式:
MAC1:A3*H0+A4*H23
MAC2:A9*H18+A10*H17
MAC3:A15*H12+A16*H11
MAC4:A21*H6+A22*H5
同理可以类推,当输入数据x(24n+4)写入到A4后,有:
MAC1:A5*H22+A6*H21
MAC2:A11*H16+A12*H15
MAC3:A17*H10+A18*H19
MAC4:A23*H4+A0*H3
同理可以类推,当输入数据x(24n+5)写入到A5后,有:
MAC1:A7*H20+A8*H19
MAC2:A13*H14+A14*H13
MAC3:A19*H8+A20*H7
MAC4:A1*H2+A2*H1
这样,另外3个采样数据经抽取滤波后又输出一个采样数据。
照此类推下去,当输入数据x(24n+21)时写入到A21后,有:
MAC1:A21*H0+A22*H23
MAC2:A3*H18+A4*H17
MAC3:A9*H12+A10*H11
MAC4:A5*H6+A6*H5
同理可以类推,当输入数据x(24n+22)写入到A22后,有:
MAC1:A23*H22+A0*H21
MAC2:A5*H16+A6*H15
MAC3:A11*H10+A12*H19
MAC4:A17*H4+A18*H3
同理可以类推,当输入数据x(24n+23)写入到A23后,有
MAC1:A1*H20+A2*H19
MAC2:A7*H14+A8*H13
MAC3:A13*H8+A14*H7
MAC4:A19*H2+A20*H1
这样就输入了24个数据,共用了48个时钟周期,得到了8个滤波输出,从而完成了一个大周期循环;当输入第25个数据时,就要重新开始执行上述过程。
从上面可以看出每个MAC在不同时钟周期的输入采样数据和滤波器系数之对应关系;每个MAC输入数据每48个时钟周期循环一次,而系数则每6个时钟周期循环一次。
综上所述,本发明通过数据系数选择单元从输入数据缓冲单元对采样数据进行预定的读取和选取对应的滤波器系数;实现每输入M个采样数据,滤波器计算单元产生一个滤波输出;这样对于M倍抽取,滤波计算量就减少为原来的1/M;对应到用硬件实现时,就节省了乘法器和加法器等硬件资源,从而降低了产品成本,尤其在M较大的时候,效果会更加明显。
应当理解的是,上述针对具体实施例的描述较为详细,并不能因此而认为是对本发明专利保护范围的限制,本发明的专利保护范围应以所附权利要求为准。