文献标识码:A
DOI:10.16157/j.issn.0258-7998.2015.12.011
中文引用格式:周云,冯全源. 数字下变频中抽取滤波器的设计及FPGA实现[J].电子技术应用,2015,41(12):45-47,50.
英文引用格式:Zhou Yun,Feng Quanyuan. Design and FPGA implementation of decimation filter in DDC[J].Application of Electronic Technique,2015,41(12):45-47,50.
0 引言
数字下变频是软件无线电接收机的关键模块,高速数字信号进行变频、降采样、滤波,将高速中频信号变为低速基带信号[1-2],便于后级处理。其中,降采样和滤波是下变频的关键模块,由抽取滤波器来完成[3]。由于多级结构可以大大降低滤波器的阶数[4],允许每一级归一化过渡带宽比较宽[5],抽取滤波器一般采用多级结构实现,常用结构如图1所示,级联积分梳状(Cascaded integrator-com,CIC)滤波器通常作为第一级抽取滤波器[1-6]。
为缩短关键路径,从而提高采样速度,滤波器常采用并行处理及流水线技术[6]。CIC滤波器中有反馈回路,加入流水线寄存器则会导致反馈回路不同步,从而无法采用流水线技术;FIR滤波器则可以采用并行处理及流水线技术。对于半带滤波器(Half-band Filter, HBF)而言,采用分布式算法则可以很好地兼容并行处理与流水线技术,且无需速率受限的乘法器资源。本设计对流水线式全并行分布式算法进行改进用以实现HBF,而并行处理提高采样率是采用复制硬件的方法[7],全并行结构的HBF则是复制使用LUT,在满足处理速度的要求下,本文将HBF置于数据位宽最小的输入级(如图2)。
1 抽取滤波器整体设计及Simulink建模仿真
本文将64倍抽取的总抽取率分为3级实现:2倍抽取的前置HBF、16倍抽取的CIC抽取滤波器以及2倍抽取的FIR补偿滤波器,如图2所示。各级指标如表1所示。
Simulink是MATLAB中的一种可视化仿真工具,可以对动态系统进行建模仿真及分析,支持多速率系统,广泛应用于数字信号处理领域的建模仿真。本文的系统模型如图3所示。
顶层系统使用3路信号选择器作为输入接口,输入信号经由矩形框内所示子系统即抽取滤波器进行降采样及滤波。其中FIR补偿滤波器的系数由本文2.3节得到。设置输入控制信号为“1”,选择采样率为200 MHz的频率分别为1 MHz、4 MHz、10 MHz的混合正弦信号作为抽取滤波器的输入信号,各级输出信号的频谱如图4所示。
2 抽取滤波器的FPGA实现
2.1 前置半带滤波器
HBF是近一半的系数为0的FIR滤波器,在多速率系统中采用HBF可以大大缩小硬件规模。本文结合表分割技术与并行处理的优势进行改进,以达到第一级高速处理的目的。考虑内积公式:
考虑N=LP,L、P均为正整数,则n=l·P+p,l=0,1,…,L-1,p=0,1,…,P-1,式(2)改写为:
本文35阶高速HBF系数对称,且有近一半系数为零,选择P=4,将整个LUT表分解为2个4输入和1个2输入的子表。改进后的算法结构如图5所示,相比于文献[8],查表后的流水线式加法树比移位累加器的实时性更高;并行及流水线处理处理可以有效提高滤波器的处理速度,且表分割技术使得该并行结构不必以过多的资源消耗为代价。
2.2 CIC抽取滤波器
CIC滤波器结构简单,是高速抽取或插值系统中非常有效的单元[9]。单级CIC滤波器第一旁瓣抑制为13.46 dB,阻带衰减极不理想[10]。为达阻带衰减的指标,本文采用多级CIC滤波器级联的结构实现。N级CIC滤波器归一化传递函数如下[11]:
其中R是抽取因子,M是梳状部分中延迟量,该设计取M为1。由式(4)知N级R倍抽取的CIC的幅频响应:
可计算出,R=5时即可满足阻带衰减的需求。本文首先实现所有的积分器,然后是16倍抽取,最后实现梳状部分。对于多级CIC滤波器而言,可以剪除一些较低有效位而不影响系统的完整性[7]。本文采用逐级剪除的方法,以减少位宽截断引起的量化噪声,并节省资源占用。该设计中CIC滤波器输入位宽19 bit,输出为20 bit,内部最大位宽为40 bit。逐级剪除后,CIC滤波器各级位宽如表2所示。CIC滤波器频率响应如图6。可见,通带衰减是CIC滤波器的主要弊端之一,故而需要补偿滤波器进行通带补偿。
2.3 CIC补偿滤波器
补偿滤波器通常处于较低速率的位置,以减小硬件复杂度。为避免频谱混叠,本文的补偿滤波器的通带边界频率fc应满足:fc≤fs_cic/4R,fs_cic是CIC滤波器的输入采样频率。
本文补偿滤波器选取fc=1.56 MHz。因其频率响应是CIC滤波器频响的倒数[12],即:
基于式(6),利用MATLAB中firceqrip函数计算出其浮点型系数,再进行量化。经反复试验,补偿滤波器长度为33即可。此时,补偿后的滤波器通带波纹小于0.01 dB,补偿滤波器及补偿后的滤波器频响如图6。可见,补偿滤波器设计较为合理。由于CIC滤波器输出位宽20 bit,位宽较大,该滤波器不再使用图3所示结构,选用IP核导入滤波器系数,选择脉动阵列乘累加结构实现。
3 系统验证及分析
利用MATLAB生成采样率为200 MHz,频率分别为1 MHz、18 MHz的混合正弦信号数据写入TXT文档,之后将数据读入到FPGA寄存器,在时钟激励下,模拟ADC的输出,作为系统的输入。Modelsim仿真结果如图7所示。
由图7(a)可知,每隔63个输入数据有一个输出,达到了64倍抽取的目的;且图7(b)显示波形较为平滑,位宽截断引起的误差基本可以忽略,表明本文中的逐级剪除的位宽阶段方式是有效的。
4 结论
本文针对数字下变频中降采样率的要求,设计了一种的HBF前置的抽取滤波器结构。利用Simulink对系统进行了建模仿真,并详细说明了FPGA实现各级滤波器的设计方法,对整个系统进行了Modelsim仿真验证。结果表明,本文设计的抽取滤波器工作性能良好,完全达到了实际需求指标。且本文的设计方案具有较强的工程应用价值,目前已用到中频200 MHz的数字下变频系统中。
参考文献
[1] XU P,XIA W,HE Z S.A design of VB-DDC using DA-based systolic FIR filter[J].Applied Mechanics and Materials,2012,130:3950-3953.
[2] 赵良羽.可变带宽的多级滤波器数字下变频设计[J].电子技术应用,2014(3):32-34.
[3] 王亚磊,张浩,杨亚光,等.一种基于FPGA的抽取滤波器的实现与优化[J].微电子学与计算机,2013(9):30.
[4] 吴笑峰,刘红侠,李迪,等.高精度Σ-?驻 ADC中的数字抽取滤波器设计[J].中南大学学报(自然科学版),2010,41(3):1038.
[5] 徐以涛,王金龙.软件无线电数字中频处理的优化设计[J].信号处理,2002(4):299-302.
[6] 张立立,杨华,黄锦元.基于FPGA技术的数字中频系统的设计[J].电子器件,2015(1):126-129.
[7] PARHI K K.VLSI digital signal processing systems: design and implementation[M].John Wiley & Sons,2007:47-61.
[8] 朱效效,蔡俊,陆伟.基于优化DA算法滤波器的设计及其FPGA实现[J].电子技术应用,2015(2):59-60,64.
[9] Meyer-Baese U.Multirate Signal Processing[M].Digital Signal Processing with Field Programmable Gate Arrays. Springer Berlin Heidelberg,2014:305-416.
[10] 刘彬彬,林伟.基于Matlab和FPGA的CIC滤波器的设计[J].电子器件,2010(2):231-234.
[11] DOLECEK G J,LADDOMADA M.An improved class of multiplierless decimation filters: Analysis and design[J].Digital Signal Processing,2013,23(5):1773-1782.
[12] Altera Corporation,Understanding CIC compensation filters,Application Note 455,Ver.1.0,April 2007.