新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 用FPGA实现FIR滤波器(08-100)

用FPGA实现FIR滤波器(08-100)

——
作者:Gordon Hands 莱迪思半导体公司时间:2009-02-25来源:电子产品世界收藏

  输入至输出的采样率也会影响你的设计。在简单的设计中,输入速率和输出速率是相等的。然而,在许多低通滤波器设计中,输出以输入的速率运行是不经济的,因为传输信息不要求高的输出率。取十分之一速率的FIR是合适的。其它要求较高输出率的设计,则采样内插FIR。

本文引用地址:http://www.eepw.com.cn/article/91694.htm

  进行设计

  选择的系数有两种方法。Parks-McClellan方法(执行Remez算法)和进行冲击响应的窗口操作。窗口方法依赖于一个事实,要求频率响应的离散Fourier反变换代表的系数。理想的频率响应用作起始点,于是应用窗功能减少系数的数目,成形频率响应。通用的窗功能包括矩形、三角、Hanning、Hamming、Kaiser 和Blackman。

  没有必要对数学进行深究,有许多免费的低成本工具帮助你进行设计。如果使用MATLAB,MathWorks有各种工具可用于FIR设计。如果你不用这些包,用Internet搜索“设计工具”将展现一些免费的低成本工具。

  首先应做出采用哪种设计方法的决策。大多数设计者采用Park-McClellan 方法,因为设计输入是滤波器的要求,这个方法通常满足具有最少抽头的滤波器要求。假设采用这个方法,你可以简便地把要求输入至所选的工具中。大多数设计工具会给出频率响应、冲击响应和滤波器系数。如果选择窗口方法,只要做些实验。要输入截止频率、窗口方法和抽头数目至设计工具。于是设计工具会给出频率响应。如果频率响应不是你所要的,你可以改变输入参数和迭代过程。

  因此,你已经用设计工具产生了系数,检验了频率响应。那么现在是否可以移开这个工具,而在中实现这个设计呢?并非如此,还要考虑一些事情。首先要确定频率响应,数据不是无限精确的。大多数设计工具让你定义一个量化级别并观察结果。倘若级别的精度是合理的,那就不需要做改动。然而,最好是现在发现这些问题而不是在实验室。下一步是研究其它的滤波器设计,诸如Lth带(或者Nyquist)滤波器,这些滤波器大约有一半的系数设置为0,因此减少了数学上的复杂性。

  在中实现设计

  你设置了系数之后,现在打算在中实现这个设计。再次要做出若干决定。首先是选择实现乘法器单元的方法,决定它们能运行多快。通常有两个选择:用在FPGA内实现逻辑的查找表(LUT)来实现乘法器,或者用FPGA内的专用的DSP单元。为了说明这些选择,考虑LatticeECP2 FPGA系列,在这个FPGA内用sysDSP块实现一个18x18乘法器不占用LUT,运行速度高于400MHz。用LUT完成相同的功能其性能大约是100MHz,并要占用许多LUT。专门的DSP块拥有高速并使用少的LUT,通常选择这个方法,除非你保留DSP块准备留作它用。

 

  图4 LatticeECP2 sysDSP块



评论


相关推荐

技术专区

关闭