过去半年有几位客户请我帮助他们设计和实现数字下变频器所用的降采样(即“抽取”)滤波器,这种滤波器在软件无线电与数据采集类应用中都很常见。这项工作即便对于经验丰富的设计师也不是一件小事。事实上,仅仅算出在FGPA中实现滤波器所需要的资源可能就是一个很大的问题。虽然MATLAB®(MathWorks 开发)具有用于滤波器设计与分析 (FDA) 的绝妙工具箱,但是它提供太多滤波器设计方法,会让新用户无从下手。另外,您必须能够根据DSP理论解释MATLAB命令产生的结果,仅仅这一点就需要研究。抛开理论的细枝末节,让我们开始围绕上述问题探讨降采样有限脉冲响应 (FIR) 滤波器的设计与实现。本辅导资料实际上旨在向您介绍一种简便、易于理解的流程——从滤波器系数生成到FGPA目标器件中抽取滤波器的实现。所需工具只有MATLAB较新版本(本人仍在使用R2008a)及其FDA工具箱、以及ISE® 11.4套件提供的赛灵思CORE GeneratorTM工具。这些工具是设计多速率FIR滤波器的必备工具。特别是我们将探讨固定降采样速率变化的两个实例:整数值与有理值。您应当能够把我们在本辅导资料介绍的MATLAB指令和CoreGen图形用户界面 (GUI) 设置应用到您的设计当中。为了说明公用逻辑块 (CLB) Slice 、18KB内存RAM块(BRAM) 和DSP48乘法累加 (MAC) 单元等方面的资源占用情况,我们将采用 XC6VLX75T-2ff484 作为目标 FPGA 器件。整数倍降采样器假设基带中进行解调后按250MHz速率传输带宽只有2.5MHz的信号。我们必须过滤从2.5MHz到 250MHz 的所有频率,因为它们不传输任何有用信息;这正是我们准备设计和实现的低通 FIR 滤波器的目的。根据尼奎斯特定理,输出数据速率是信号带宽的两倍;因此,我们需要按照M=50的整数倍对其执行降采样。我将介绍两种采用多级滤波方法的可行备选实现方案:第一种方法采用三个串联的 FIR 抽取滤波器,而第二种方法则同时采用级联积分梳状 (CIC) 滤波器与FIR滤波器。以下是用于设计理想滤波器的MATLAB代码。我们假设通带和阻带频率的衰减分别为0.1dB和100dB。
假设FPGA时钟频率Fclk=Fs_in,那么在Virtex®-6器件中我们需要多少个DSP48 MAC单元?它是用于按M进行降采样的滤波器。根据FIR Complier 5.0数据手册 (fir_compiler_ds534.pdf) 详细阐述的理论,我们可以把DSP48 MAC分成M个相位,因此引入“多相”这一术语。由于每个相位都是按更低的输出频率 Fs_out 进行处理,因此可以按时分复用方式共享DSP48 MAC。以下理论计算表明,FIR-Compiler在通过多相分解方式实现滤波器时采用最小的22个MAC单元(total_num_MAC_ref )。滤波器长度是2100 (total_num_coeff),填写0成为M的整数倍。请注意:此方案考虑系数对称性。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
在布局布线之后,上述两个滤波级占用以下FPGA资源:
第一级(L1/M1= 1/4):
Slice 触发器数量:321 个
Slice LUT数量:223 个
占用 Slice数量:62 个
DSP48 MAC单元数量:4 个
BRAM单元数量:0 个
第二级(L2/M2 = 24/25):
Slice触发器数量:206 个
Slice LUT数量:209 个
占用 Slice数量:68 个
DSP48 MAC单元数量:3 个
BRAM单元数量:1 个
由于采用多级方法,与单级理想滤波器资源占用相比,我们现在可以节约 3% 左右的触发器,4%的LUT,15%的Slice,46%的DSP48以及83%的BRAM单元。尤其是我们只需少得多的MAC与BRAM单元,分别只有6个和5个。原因是第二个滤波器以更低的输入采样频率运行,而采用整数速率变化的第一个滤波器可以充分利用系数对称。
其它资源
我们在本辅导资料中介绍了两个降采样滤波器例子,一个是整数系数(50),另一个是有理数系数(25/6),而且
本文强调了在MATLAB设计滤波器以及采用FIR-Compiler和CIC-Compiler 在赛灵思FGPA中实现它们的方法。相关数据手册详细介绍采用CORE Generator实现滤波器所涉及的参数设置。
如果有兴趣进一步深入DSP领域,有两本专著具体介绍诸多理论和相关 MATLAB 指令:《数字信号处理基础与应
用》,作者:Li Tan(Elsevier,2007 年)和《通信系统多速率信号处理》,作者:Fredric J. Harris(Prentice Hall,2004年)。另外,赛灵思网站提供大量有关多速率数字上变频和下变频的应用手册(尤其是 Xapp113、569、1018 与 936)。
最后,为了理解如何有效实现DSP算法,本人强烈推荐参加赛灵思培训课程《赛灵思FPGA的DSP实现技巧》。
一周热门 更多>