基于FPGA的FIR数字滤波器的优化设计

2011-08-19 13:33:56来源: 互联网
    在图像处理、语音识别等数字信号处理中,数字滤波器占有重要的地位,其性能对系统有直接的影响。随着系统在宽带、高速、实时信号处理上要求的提高,对滤波器的处理速度、性能等也提出更高的要求。目前数字滤波器的硬件实现方法通常采用专用DSP芯片或FPGA,DSP特有的一些硬件结构和特性使其非常适合作数字滤波电路,但由于其软件算法在执行时的串行性,限制了它在高速和实时系统中的应。FPGA最明显的优势在于其实现数字信号处理算法的并行性,可以显著提高滤波器的数据吞吐率,随着FPGA技术的不断发展,现在的FPGA不仅包含查找表、寄存器、多路复用器、分布式块存储器,而且还嵌入专用的快速加法器、乘法器和输入/输出设备,因而成为高性能数字信号处理的理想器件。而在FPGA中,数字滤波器不同的实现方法所消耗的FPGA资源是不同的,且对滤波器的性能影响也有较大差异。基于此,本文从FIR滤波器的系数考虑,采用CSD编码,对FIR数字滤波器进行优化设计。

  1 FIR滤波器的基本原理

  一个L阶的FIR数字滤波器的基本系统函数见式(1):

a.jpg

  式中:h(n)表示滤波器的系数;x(i)表示带有时间延迟的输入序列,此表达式对应的直接型实现结构可用图1来表示。

b.jpg

  可以看出,FIR滤波器是由一个“抽头延迟线”加法器和乘法器的集合构成的。传给每个乘法器的操作数就是一个FIR系数。对每次采样x(n)要进行N次连续的乘法和(N-1)次加法操作,因实际中滤波器的阶数都很高,实现高数据吞吐率就需要很多的硬件乘法器,硬件实现时将占用大量的资源,同时也会因此影响滤波器的速度和性能。为了解决这个问题,人们从多个角度寻求优化方法。从数字滤波器表达式看,对它

  的优化操作,实际最终转换成两类改进。一类是针对输入xi的DA操作的改进;另一类是针对系数hi编码的操作。

  2 DA算法

  分布式算法(Distributed Arithmetic,DA)是为了解决乘法资源问题而提出的经典优化算法这种算法结构,可以有效地将乘法运算转换成基于查找表LUT(Look Up Table)的加法运算,利用查表方法快速得到部分积。

  对于低阶而言,由于LUT表地址空间较小,与传统算法相比,分布式算法可极大地减少硬件电路的规模,提高电路的执行速度。然而当FIR滤波器阶数很高时,作为查找表的ROM将很大。阶数每增加1位,ROM容量就增加1倍,这种以2的幂次递增的资源占用是硬件资源不可接受的。因而在滤波器系数较高时,为了减小查找表的规模,常采用一定的方法将大LUT分割为一些小的LUT的方法。如滤波器的多相分解结构、多路复用器和加法器替代查找表的算法等。

  3 CSD编码算法

  常数乘法可以通过“移位-加”来完成,而乘数中“1”的个数决定了“加”操作的次数,当然“1”的个数越少越好,正则有符号数字量CSD(Canonic Signed Digit)编码就可以实现“1”的个数的最小化。

  3.1 CSD编码

  与传统的二进制编码的二值表示法不同,CSD编码的数字值域为0,1和-1。-1常表示成1。这种编码是具有最少非零元素的一种表示法,用CSD编码表示数字的形式具有惟一性。在实际硬件电路中可以采用如下原则生成最佳CSD编码:

  ①从最低有效位开始,用10…0l.jpg取代所有大于2的1序列,此外还需要用110l.jpg取代1011;

  ②从最高有效位开始,用011代替10l.jpg

  最佳CSD编码的特点是:

  ①在一个CSD数据里,没有两个连续的非零位;

  ②对同一个数字的CSD编码是独一无二的;

  基于CSD编码,可以将式(1)做以下的变化:

c.jpgd.jpg

  从以上式子可看出,应用CSD表示法,由于可以降低系数中非零元素的数量,因而在运算中能减少加法的次数,有利于提高运算速度和减少资源的占用。

  3.2 最佳CSD编码设计与结果

  根据前面所列举的最佳CSD编码方法,用C语言生成最佳CSD编码,部分伪代码如下:

e.jpg

  ③是数字表示法里,所含非零位数最少,相比于二进制补码系统平均减少33%的非零项。

  测试实验数据及结果如图2所示。在本C语言程序中用X来指代码src=/upload/info/news/content/20110817/0862391001313549277.jpg,输入数据为16位。

f.jpg

  4 实例设计过程与仿真

  4.1 FIR系数提取

  利用Matlab中Fdatlool设计一个16阶低通FIR滤波器,各项性能指标为:采用频率fs=48 kHz,截止频率fstop=12 kHz,通带宽度fpass=9.6 kHz。系数数据宽度为16位;输出数据宽度是16位。为了便于FIR滤波器的FPGA实现,减小误差,将Fdatlool提取的滤波器的系数量化取整后为:

g.jpg

 

[1] [2]

关键字:FPGA  FIR

编辑:北极风 引用地址:http://www.eeworld.com.cn/FPGA/2011/0819/article_2420.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
FPGA
FIR

小广播

独家专题更多

TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 

夏宇闻老师专栏

你问我答FPGA设计

北京航空航天大学教授,国内最早从事复杂数字逻辑和嵌入式系统设计的专家。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved