FPGA实现高速FIR滤波器设计
TECHNICAL EXPLORATION 技术探讨
65
中国仪器仪表 CHINA INSTRUMENTATION
2010年 第8期
www.cnim.cn
但由于其计算是串行的,在高速系统中应用有所欠缺,
而FPGA可以自由配置硬件资源,实现各种数字运算
可显著提高数据吞吐率。
有限脉冲响应滤波器(Finite Impulse Response,
FIR)是现代数字信号处理的一项重要技术。FIR滤波
器具有良好的稳定性、理想的线性特征,在数字通讯、
图像处理、语音信号处理等方面获得了广泛应用。
FIR滤波器的数学表达式为:
y n a h k x n k
k
M
0
= -
=
c ^^ ^ hh h
式中:M为滤波器的阶数;y(n)为输出;h(n)为输
入;h(k)为该滤波器的脉冲响应即滤波器的系数。
从公式(1)中可知FIR滤波器在硬件上的设计主
要是完成乘积累加功能,实现的一种方法是直接相
乘累加,因实际中滤波器的阶数都很高,实现高数据
吞吐率就需要很多的硬件乘法器,这将消耗大量的
逻辑资源,且大位数的乘法器将带来较高延时,影响
系统工作频率。Croisier在1973年提出的分布式算法
(Distributed Arithmetic, DA)给出FIR滤波器设计
的另一种方法。本文将使用Altera公司的CYCLONEII
系列FPGA芯片及QuartusII和Matlab软件实现一种基
于分布式算法的多级流水结构的高速FIR滤波器。
2 分布式算法原理
自FPGA等可编程器件大规模发展以来,分布式
算法优越性便逐渐体现出来,成为一项重要的FPGA
技术而广泛地应用于乘积之和的计算。对于FIR滤波
器,设输入x(n)为L位的有符号补码数,则:
x n a x n x n2 2
i
L
i
i
L
L0
2
1
1= -
=
-
-
-
c ^^ ^^ ] hh hh g
式中:x(n)(i)表示x(n)的第i位。
于东浩 胡 毅 程文涛
(合肥工业大学,安徽 合肥 230009)
摘 要:介绍一种FIR滤波器的FPGA实现方法,该方法
以分布式算法为基本原理,详细设计了FPGA
上查找表的划分、流水线结构的设计、采样及
系统时序的控制等。并阐述了系统采样频率与
主时钟以及系统资源消耗之间的关系。
关键词:FIR滤波器 FPGA 分布式算法 流水线结构
Abstract:This paper describes a implementation
method of the FIR filter FPGA, the basic principles of
the method is a Distributed Algorithm, and detailed
designs the division of the FPGA LUT, pipeline
structure design, sampling and system timing control.
And describes the system sampling frequency, the
master clock, the consumption of system resources and
the relationship between them.
Key words:FIR filter FPGA Distributed algorithm
Pipeline structure
FPGA实现高速FIR滤波器设计
Achieve High-speed FIR Filter Design with FPGA
1 引言
随着计算机技术的飞速发展以及集成电路规模
的剧增,数字信号处理技术的应用与实现也日趋成
熟。目前实现数字信号处理的硬件核心主要是DSP芯
片和FPGA,DSP芯片主要以专门的硬件计算模块配
以不同的软件程序来方便地实现各种数字信号算法,
(1)
(2)
技术探讨 TECHNICAL EXPLORATION
66
CHINA INSTRUMENTATION
2010年 第8期
www.cnim.cn
将式(2)带入式(1)得到:
y n a h k a x n x n2 2
k
M
i
L
i
i
L
L0 0
2
1
1= -
= =
-
-
-
cc ^^ ^ ^^
hh h hh
; 6
E@
y n a x n k2
k
M
i
i
i0 0
L 2h k= - -
= =
-c^^^^hhhh
a h k x n k2
k
M
L
L0
1
1-
=
-
-
c ^^hh
y n a a h k x n k2 2
i
L
i
k
M
i0
2
0
= - -
=
-
=
cc ^^ ^^
hh hh
a h k x n k2L
k
M
L
1
0 1--
= -
c ^^ ]hhg
由于系数h(k)为确定的常数,由式(4)可知,先将
系数按不同的组合方式相加,将结果置于储存单元
中,并以各延时单元的相应位为地址查表得到 a h
k
M
0=
c
k x n k i-^^ ^
hhh
项,将结果移位相加便可得到y(n)。
3 FIR滤波器设计
3.1 系数及查找表的确定
首先使用MATLAB的Filter Design Tool 来设计
一个32阶的低通滤波器,采样频率fs=10M,通带频率
fc=1M加Hamming窗。其频率响应如图1所示。
从软件中可以得到滤波器各阶的系数,接下来需
将32个系数按不同的组合相加作为查表的数据,数据
用16bit有符号数表示。如果直接用32个系数制成一张
统一的表将使用232×16=64Gbit,这样规模的存储单
元消耗系统是无法承受的,所以这里将32个系数分成4
组分别查表再对其求和,即:
h k x n k h k x n ki
k
i
k0
7
8
15
- + - +
= =
^^ ^^^^
hh hhhh! !
h k x n k h k x n ki
k
i
k16
23
23
31
- + -
= =
^^ ^^^^
hh hhhh! !
这样每组消耗存储单元为4Kbit。借助MATLAB
将求和结果转化成16位定点数并写入用于ROM配置
的hex文件中。
3.2 硬件结构设计
设计的整体思路是,首先采样32次,得到x(n)~
x(n-3)将其的最低位分4组查表,把查表结果相加后代
数右移一位,再与用次低位查表所得的结果相加,反
复移位相加得到最终结果。
为了确定系统的总体结构,首先要确定系统时钟
频率与采样频率之间的关系,由于存储器模块在每个
机器周期只能读取一次,故在不复制查找表的情况下
完成一次滤波操作最少需要的时钟周期数等于输入数
据的位数,对于本例为12个时钟周期。这样进一步提
高数据吞吐率便需要提高系统的工作频率,本设计采
用多级流水线结构。将较大的组合逻辑分解为较小的
几块,中间插入触发器,这样可以提高电路的工作频
率,这就是所谓“流水线”(Pipelining)技术,图2描
述了流水线技术的基本原理,对于图2的上半部分,它
的工作频率受制于较大的组合逻辑的延时,通过适当
的方法平均分配组合逻辑,可以避免在两个触发器之
间出现过大的延时,消除速度瓶颈。针对上面的分析,
这里将设计在时间上分为12个周期,在空间上分成3级
流水线。
第一级功能为数据缓存及产生查表地址,其结构
如图3所示。
图3中多路器通过周期信号的控制输出查找表的
地址信号,在第i周期地址输出为x(n)到x(n-31)的第i位
Magnitude(dB)
0
-20
-40
-60
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5
Frequency(MHz)
图1 滤波器频率响应
INPUT OUTPUT
组合逻辑
组合逻辑 组合逻辑
INPUT OUTPUT
时钟
图2 流水线技术原理
(3)
(4)
TECHNICAL EXPLORATION 技术探讨
67
中国仪器仪表 CHINA INSTRUMENTATION
2010年 第8期
www.cnim.cn
记为ai。这一级在第12周期时执行采样将新的数据存
入x(n)并将x(n-31)移出。
第二级的功能为查表求和得到第i位的系数和记
为Ci,如图4所示。
ROM0 ROM1 ROM2 ROM3
图4 第二级流水线结构
如设第三级得到的结果为S i,则该级的功能可表
示为:
( )S S C2 12i
i
i
1 #= + --
这里将本级寄存器中现有值即Si-1代数右移1位得
到Si-1/2,接着Ci与Si-1/2的前16位做和(或差)得到Si的
高16位,再将Si-1/2的低12位复制过来得到Si。第三级
的结构如图5所示。
由于在第12个周期第一级流水线送出a11,所以在
下一个采样的第一个周期即周期信
号等于0时第二级得到C 11,由公式
(4)知,此时第3级执行减法运算,而
下一周期即周期信号等于1时本次计
算结束输出y(n),同时对于此时到来
的第二个采样序列的C0使用0与其相
加。
三级结构之间使用寄存器相连
使系统连续的工作起来,滤波器的时
序如图6所示,图中给出每个周期流水
线上的数据与数据位数的对应关系。
4 系统仿真
按照上述的硬件结构编写VHDL并综合后,需
要对系统的功能进行仿真。本设 计使用 Matlab和
modelsim软件进行协同仿真。首先使用Matlab软件产
生输入数据,先生成一个频率700K并带有高频噪声的
正弦波如图7所示,每点间隔时间为100ns即10M的采
样频率,接下来将数据转成12位有符号补码数表示如
图8,并将数据输出。编写testbench,这里使用VHDL
标准库ST D中的一个程 序 包 TE XTIO,它提 供了
VHDL与磁盘文件直接访问的桥梁,使用它模拟AD
采样将数读入,并将结果输出。将系统在modelsim中
仿真运行得到输出数据文件读入matlab中转换后得到
结果如图9。
5 性能分析
本设计的资源消耗主要集中在存储单元,而逻辑
周期信号
Simpled X(n) X(n-7) X(n-8) X(n-15) X(n-15) X(n-23) X(n-24) X(n-31)
x(n)(0)..x(n-7)(0) x(n-8)(0)..x(n-15)(0)
x(n-16)(0)..x(n-23)(0) x(n-24)(0)..x(n-31)(0)
地址选择
多路器
地址选择
多路器
地址选择
多路器
地址选择
多路器周期信号
图3 第一级流水线结构
图5 三级流水线结构
Ci Si-1/2高16位 Si-1/2低12位
周期信号
多路器
右移 0
Si低12位Si高16位
y(n) 周期信号
0 1 2 3 4 5 6 7 8 9 10 11
数据
A0
S10
C11 Y(n)
A1
C0 S0
C1
A2
S1
C2
A3
S2
C3
A4
S3
C4
A5
S4
C5
A6
S5
C6
A7
S6
C7
A8
S7
C8
A9
S8
C9
A10
S9
C10
A11
采样
图6 系统时序
技术探讨 TECHNICAL EXPLORATION
68
CHINA INSTRUMENTATION
2010年 第8期
www.cnim.cn
单元和寄存器资源的消耗比较小。使用本文介绍的方
法可较容易地实现高阶数FIR滤波器的设计。实际设
计中滤波器的阶数有时达到上百阶甚至几百阶,对于
高阶数的滤波器只需增加存储器数量,若存储单元有
限也可减小每块存储器的面积并增加加法的级数,可
方便地根据资源容量、采样频率等指标调整流水线级
数和存储器块的大小。对于时序方面,只要流水线划
分合理,阶数的增加就不会导致频率的大幅下降,采
样频率始终等于数据位数倍的时钟频率。当然使用多
个乘法器模块也可已实现相同甚至更好的功能,但会
消耗很多比存储器单元珍贵的逻辑单元,而且自行设
计高效稳定的高位数硬件乘法器模块并不容易。
参考文献
1 Vegte(加).数字信号处理基础[M].电子工业出版社,
2003:235~284.
2 Brown等(美).数字逻辑与VHDL设计.清华大学出版
社,2004:311~370.
3 吴继华等.Altera FPGA/CPLD设计(高级篇)[M].人
民邮电出版社,2005:27~52.
4 李林.利用DA算法实现大规模FIR滤波器[J].试验科
学与技术,2002,4(2).
5 Peled A,Liu B. A new hardware realization
of digitalfilters[M]. IEEE TRANSACTIONS
OS ACOUST ICS,SPEECH, AND SIGNAL
PROCESSING, 1974, 22(6).
6 曾繁泰等,EDA工程方法学[M].北京:清华大学出版
社,2003.
作者简介:于东浩,男,硕士研究生,主要研究嵌入式系统在测
试测量领域的应用。图7 图8 图9
《中国仪器仪表》杂志创刊于1981年,由中国机械工业
联合会主管,机械工业仪器仪表综合技术经济研究所、中国
仪器仪表行业协会主办,是国内仪器仪表行业、工业自动化
控制领域的综合类技术期刊。长期以来,杂志始终围绕传播
仪器仪表和工业自动化控制领域科技知识,跟踪国际技术进
展;探讨企业技术创新、生产和管理,市场开发和成果应用经
验;架设技术推广桥梁的办刊宗旨。其综合性、权威性以及发
行量、传播范围等倍受读者关注和喜爱,具有相当的影响和
威望。
我们加大了以市场、企业和技术三个版块的定位和传播,
拓展客户、读者和作者群体在这三方面的需求服务,活跃科
研、设计、制造、生产、销售、应用等方面专业人员和管理人
员参与的氛围。《中国仪器仪表》杂志面向国内外公开发行,
国内统一刊号:CN11-3359/TH,国际标准刊号:ISSN1005-
2852。大16开,月刊,每月25日出版。每本定价10元,全年12期
计120元,含邮寄费。
广告服务内容
1、产品介绍和推广— 开展市场咨询、产品调研活动,
与客户、读者建立信息交流和市场需求关系。
2、企业介绍和推广— 使客户、读者近距离接触企业,
报道企业管理和企业文化。增进企业与用户的合作交流,建立
客户间的信誉关系。
3、网络 推广— 通过《中国仪器 仪表》杂志网www.
cnim.cn促进平面、网络媒体广告综合传播的效果。凡签订《中
国仪器仪表》杂志2010年3期以上的广告客户,可享受同期网址
或网页免费链接,杂志网其他栏目宣传及推广5折优惠。
联系方式:
地址:北京市广安门外大街甲397号216室 邮编:100055
电话:010-63261815,63461006,63490360
传真:010-63490360
E-mail:cnim@163. com
网址:www.cnim.cn
诚征《中国仪器仪表》杂志广告
FPGA实现高速FIR滤波器设计.pdf