EDN China > 设计实例 > 可编程器件 > FPGA > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

(多图) 一种基于FPGA并行流水线的FIR滤波器设计方案

电子技术 同济大学 姚利锋?? 2010年12月01日 ?? 收藏0

  1 Fir滤波器原理

  有限冲激响应(FIR)数字滤波器和无限冲激响应(IIR)数字滤波器广泛应用于数字信号处理系统中。IIR数字滤波器方便简单,但它相位的非线性,要求采用全通网络进行相位校正,且稳定性难以保障。FIR滤波器具有很好的线性相位特性,使得它越来越受到广泛的重视。FIR数字滤波器是一个线性时不变系统(LTI),N阶因果有限冲激响应滤波器可以用传输函数H(z)来描述,

公式

  在时域中,上述有限冲激响应滤波器的输入输出关系如下:

公式

  其中,x[n]和y[n]分别是输入和输出序列。

  N阶有限冲激响应滤波器要用N+1个系数描述,通常要用N+1个乘法器和N个两输入加法器来实现。乘法器的系数正好是传递函数的系数,因此这种结构称为直接型结构,可通过式(1.2)来实现。

  当冲击响应满足下列条件时,FIR滤波器具有对称结构,为线性相位滤波器:

公式

  这种对称性,可使得乘法器数量减半:对n价滤波器,当n为偶数时,乘法器的个数为n/2个;当n为奇数时,乘法器的个数为(n+1)/2个。在电路实现中,乘法器占用的逻辑单元数较多。乘法器的增加,意味着电路成本增加,另外对电路的工作速度也有影响。

  N阶线性相位的因果FIR系统的单位冲激响应滤波器可用对称冲激响应

公式

来描述。

  具有对称冲激响应的FIR传输函数的冲激响应可写成如下形式:

  当N为偶数时

公式

  则FIR线性相位系统的结构可转化成如图1(a)和图1(b)所示。

FIR线性相位系统的结构

  2 滤波器设计方案

  随着数字技术日益广泛的应用,以现场可编程门阵列(FPGA)为代表的ASIC器件得到了迅速普及和发展,器件集成度和速度都在高速增长。FPGA既具有门阵列的高逻辑密度和高可靠性,又具有可编码逻辑器件的用户可编程特性,可以减少系统设计和维护的风险,降低产品成本,缩短设计周期。

  分布式算法是—种以实现乘加运算为目的的运算方法。它与传统算法实现乘加运算的不同在于执行部分积运算的先后顺序不同。简单地说,分布式算法在完成乘加功能时是通过将各输入数据每一对应位产生的部分积预先进相加形成相应部分积,然后在对各部门积进行累加形成最终结果,而传统算法是等到所有乘积产生之后再进行相加来完成乘加运算的。与传统算法相比,分布式算法可极大地减少硬件电路规模,很容易实现流水线处理,提高电路的执行速度。

  FPGA有着规整的内部逻辑块阵列和丰富的连线资源,特别适合细粒度和高并行度结构特点的数字信号处理任务,如FIR、FFT等。利用FPGA实现FIR滤波器的设计过程,并且对设计中的关键技术一分布式算法进行详细描述。

  FIR滤波器的结构主要是非递归结构,没有输出到输入的反馈。并且FIR滤波器很容易获得严格的线性相位特性,避免被处理信号产生相位失真。而线性相位体现在时域中仅仅是h(n)在时间上的延迟,这个特点在图像信号处理、数据传输等波形传递系统中是非常重要的。此外,他不会发生阻塞现象,能避免强信号淹没弱信号,因此特别适合信号强弱相差悬殊的情况。

  通常采用窗函数设计FIR滤波器方法简单,但是这些滤波器的设计还不是最优的。首先通带和阻带的波动基本上相等,另外对于大部分窗函数来说,通带内或阻带内的波动不是均匀的,通常离开过渡带时会减小。若允许波动在整个通带内均匀分布,就会产生较小的峰值波动。对于线性相位因果FIR滤波器,它的系列具有中心对称特性,即h(i)=±h(N一1一i)。令s(i)=x(i)±x(N一1一i),对于偶对称,代入式(1)可得:

公式

  根据要求,要设计一个输入8位,输出8位的9阶线性相位FIR滤波器,所以采用图2(a)的方式,其中输入信号范围为:[99,0,0,O,99,O,0,0,99,O,0,0,99,…],此滤波器Fs为lOOkHz,Fc为10kHz。利用MATLAB设计计算9阶FIR滤波器系数和幅频响应如下:

利用MATLAB设计计算9阶FIR滤波器系数和幅频响应

  整数化后,可得FIR滤波器的参数为:[4c,4f,50,52,52,52,50,4f,4c:]

  根据以上所说的思路,可以将FIR滤波器的原理图设计如下:

FIR滤波器的原理图

  下面对各加法器乘法器的输出位数进行分析,对第一级加法器,输入为8位,输出统一为9位,最后一个加法器为三输入端,输入都为8位,输出为10位。对各个乘法器进行分析,第一个乘法器为4c,因此输入为9位,输出为15位。第二个乘法器为4f,输入为9位,输出为15位。第三个乘法器为50,输入为9位,输出为15位。第四个乘法器为52,输入为10位,输出为16位。乘法器输出结果两两相加,第一个加法器输入都为15位,输出为16位,第二个加法器,输入分别为15位和16位,输出为16位。最后这两路输出之和为16位。将后8位舍去,然后相加,总输出为8位。至此,所有器件的输入输出都已经判定。下面进入模块设计阶段。


上一页12下一页
?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

FPGA? 并行流水线? FIR滤波器?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈