基于多速率DA的根升余弦滤波器的FPGA实现
2.2多速率FIR的多相表示
设FIR滤波器转移函数为:本文引用地址://m.amcfsurvey.com/article/191894.htm
式中:N为滤波器长度。假设满足条件N=DQ(其中D,Q为整数),则H(z1)可以写成:
根据文献[7],传统的滤波后再抽取的多速率系统如图3所示。
图3中,T2=DT1。可以看出,卷积运算在下采样之前进行。通过对滤波器进行多相分解,得到多相分解表示如图4所示。
Ek(z1D)相当于一组滤波器,利用多采样率系统中结构的互易性对滤波器位置进行等效变换,将抽取操作前置,这样卷积运算已经变换到在低抽样率下进行,滤波运算量减少到原来的1/D,大大减少运算量,如图5所示。
由图5可知,每相仍然相当于低阶的FIR滤波器,下节对其采用DA算法,可以看到运算速度将进一步提高,运算量也将大幅减少。
3多速率DA根升余弦滤波器的结构及其FPGA实现
按查找表的方式,DA算法可以分为串行实现方式和位并行实现方式两种。本文采用位并行方式实现。因为本文针对的是一个48阶平方根升余弦滤波器,从表1可以看到结构是对称的,LUT的规模随地址空间,也就是输入系数N的增加而呈指数增加。这里系数N=48,用单个LUT不能够执行全字(输入LUT位宽等于系数的数量)。为了减小LUT的规模,根据文献[8]可以利用部分表计算,并将结果相加,即用m个滤波系数为k的滤波单元构成系数为N(N=m×k)的滤波单元。如果再加上流水线寄存器,这一改进并没有降低速度,却可以极大地减少设计规模,这里采用4输入LUT,如图6所示。考虑滤波器的对称性,需要6种LUT,对于每个4输入LUT:
b0~b3为x[n]~x[n-3]的第0位,构成了一组查找表的查找地址。
LUT表中存储的是所有可能使用到的数值,是滤波器系数的16种组合形式。
评论