基于 fpga 的高速...

4
基于 F P G A 的高 FI R 器的 设计 王心焕 ( 浙江大学 信息工程学院 浙江 杭州   310029) 摘 要 : 采用了分布式算法、 Booth 算法、 Wallace 树和超前进位加法器、进位选择加法器结构 , 以及流水线技术 , 基于 FP GA 进行了高速 FIR 数字滤波器的设计。以低通 FIR 数字滤波器为例 , 利用 Matlab 辅助滤波器设计并做了频谱特性的 验证 ,ISE 软件上进行了功能仿真、时序仿真和综合 , 并给出了综合的电路框图、资源使用情况以及最高工作频率。通过 运用多种优秀的快速算法及流水线技术 ,可以打破 F P GA 中缺乏实现乘累加运算有效结构的缺点 ,实现高速 FIR 数字滤波 器的设计 ,使 F P GA 在数字信号处理方面有长足发展 。 关键词 : 分布式算法 ;Booth 算法 ;Wallace ; 超前进位加法器 ; 进位选择加法器 ; 流水线技术 ;ISE 中图分类号 : TN713 文献标识码 :B 文章编号 :1004 - 373X(2007) 15 - 184 - 04 High Speed FIR Digital Filter Design Based on FPGA WAN G Xinhuan (College of Information Science and Engineering ,Zhejiang University , Hangzhou ,310029 ,China) Abstract :Using distributed algorithm ,Booth algorithm ,Wallace tree and carry - look - ahead adder ,carry - select adder ,as well as pipelining technology ,a high speed FIR digital filter design based on FPGA is presented.Let s take a low - pass digital FIR filter for example. The verification of the spectrum is done by Using Matlab auxiliary filter design ,the functional simula2 tion ,timing simulation and synthesis is applied on ISE ,and the general schematic circuit diagram ,the use of resources and the maximum operating frequency are given. Through the use of a variety of excellent and fast algorithm pipeline technology ,lac2 king of effective structure for realization of cumulative operation ,the shortcomings in FPGA ,can be broken ,high speed FIR digital filter design can be achieved ,and FPGA in the field of digital signal processing can be developed by leaps and bounds. Keywords:distributed algorithm;Booth algorithm;Wallace tree ;carry - look - ahead adder ;carry - select adder ;pipeline technology;ISE 收稿日期 :2007 - 04 - 26 1 引 言 目前 FIR 滤波器的实现方法主要有 3 : 利用单片通 用数字滤波器集成电路、 DSP 器件和可编程逻辑器件实 现。单片通用数字滤波器使用方便 , 但由于字长和阶数的 规格较少 ,不能完全满足实际需要。使用 DSP 器件实现 虽然简单 ,但由于程序顺序执行 ,执行速度必然不快 。 F P GA 有着规整的内部逻辑阵列和丰富的连线资源 , 特别适合于数字信号处理任务 ,相对于串行运算为主导的 通用 DSP 芯片来说 , 其并行性和可扩展性更好。但长期 以来 , F P GA 一直被用于系统逻辑或时序控制上 , 很少有 信号处理方面的应用 ,其原因主要是因为在 F P GA 中缺乏 实现乘法运算的有效结构。本文利用 F P GA 乘累加的快 速算法 , 可以设计出高速的 FIR 数字滤波器 , 使 F P GA 数字信号处理方面有了长足的发展 。 2 Matlab 设计滤波器参数 以表 1 的滤波器参数为例 ,分析设计高速 FIR 数字滤 波器的方法 。 1 FIR 低通滤波器的参数指标 参数名 参数值 参数名 参数值 采样频率 FS 最小阻带衰减 A S 输入数据宽度 8 1 6 kHz - 50 dB 8 位补码 截止频率 FC 通带允许起伏 输出数据宽度 3 1 4 kHz - 1 dB 16 位补码 利用 Matlab 为设计 FIR 滤波器提供的工具箱 , 选择 滤波器类型为低通 FIR , 设计方法为窗口法 , 阶数为 16 , 口类型为 Hamming ,Beta 0 1 5, FS 8 1 6 kHz, FC 3 1 4 k Hz ,导出的滤波器系数如下 : h( 0) = h( 15) =- 0 1 000 7 ; h( 1) = h( 14) =- 0 1 002 5 ; h( 2) = h( 13) = 0 1 012 ; h( 3) = h( 12) =- 0 1 027 7 ; h( 4) = h( 11) = 0 1 035 7 ; h( 5) = h( 10) =- 0 1 007 2 ; 4 8 1 电子技术 王心焕 : 基于 F P GA 的高速 FIR 数字滤波器的设计 © 1994-2008 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net

Upload: others

Post on 15-Aug-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 基于 FPGA 的高速 FIR数字滤波器的设计read.pudn.com/downloads166/sourcecode/embed/764296/FIR.pdf · 实现乘法运算的有效结构。本文利用FPGA 乘累加的快

基于 FPGA 的高速 FIR数字滤波器的设计

王心焕(浙江大学 信息工程学院  浙江 杭州  310029)

摘  要 :采用了分布式算法、Booth 算法、Wallace 树和超前进位加法器、进位选择加法器结构 ,以及流水线技术 ,基于

FP GA 进行了高速 FIR 数字滤波器的设计。以低通 FIR 数字滤波器为例 ,利用 Matlab 辅助滤波器设计并做了频谱特性的

验证 ,在 ISE 软件上进行了功能仿真、时序仿真和综合 ,并给出了综合的电路框图、资源使用情况以及最高工作频率。通过

运用多种优秀的快速算法及流水线技术 ,可以打破 FP GA 中缺乏实现乘累加运算有效结构的缺点 ,实现高速 FIR 数字滤波

器的设计 ,使 FP GA 在数字信号处理方面有长足发展。

关键词 :分布式算法 ;Booth 算法 ;Wallace 树 ;超前进位加法器 ;进位选择加法器 ;流水线技术 ; ISE

中图分类号 : TN713      文献标识码 :B      文章编号 :1004 - 373X(2007) 15 - 184 - 04

High Speed FIR Digital Filter Design Based on FPGAWAN G Xinhuan

(College of Information Science and Engineering ,Zhejiang University , Hangzhou ,310029 ,China)

Abstract :Using dist ributed algorithm ,Booth algorithm ,Wallace t ree and carry - look - ahead adder ,carry - select adder ,as

well as pipelining technology ,a high speed FIR digital filter design based on FP GA is presented. Let′s take a low - pass digital

FIR filter for example. The verification of the spect rum is done by Using Matlab auxiliary filter design ,the functional simula2tion ,timing simulation and synthesis is applied on ISE ,and the general schematic circuit diagram ,the use of resources and the

maximum operating f requency are given. Through the use of a variety of excellent and fast algorithm pipeline technology ,lac2king of effective st ructure for realization of cumulative operation , the shortcomings in FP GA ,can be broken ,high speed FIR

digital filter design can be achieved ,and FP GA in the field of digital signal processing can be developed by leaps and bounds.

Keywords :dist ributed algorithm ;Booth algorithm ; Wallace t ree ;carry - look - ahead adder ;carry - select adder ;pipeline

technology ; ISE

收稿日期 :2007 - 04 - 26

1  引  言

目前 FIR 滤波器的实现方法主要有 3 种 :利用单片通

用数字滤波器集成电路、DSP 器件和可编程逻辑器件实

现。单片通用数字滤波器使用方便 ,但由于字长和阶数的

规格较少 ,不能完全满足实际需要。使用 DSP 器件实现

虽然简单 ,但由于程序顺序执行 ,执行速度必然不快。

FP GA 有着规整的内部逻辑阵列和丰富的连线资源 ,

特别适合于数字信号处理任务 ,相对于串行运算为主导的

通用 DSP 芯片来说 ,其并行性和可扩展性更好。但长期

以来 ,FP GA 一直被用于系统逻辑或时序控制上 ,很少有

信号处理方面的应用 ,其原因主要是因为在 FP GA 中缺乏

实现乘法运算的有效结构。本文利用 FP GA 乘累加的快

速算法 ,可以设计出高速的 FIR 数字滤波器 ,使 FP GA 在

数字信号处理方面有了长足的发展。

2  Matlab 设计滤波器参数

以表 1 的滤波器参数为例 ,分析设计高速 FIR 数字滤

波器的方法。表 1  FIR低通滤波器的参数指标

参数名 参数值 参数名 参数值

采样频率 FS

最小阻带衰减 A S

输入数据宽度

≥81 6 k Hz

≤- 50 dB

8 位补码

截止频率 FC

通带允许起伏

输出数据宽度

314 k Hz

- 1 dB

16 位补码

利用 Matlab 为设计 FIR 滤波器提供的工具箱 ,选择

滤波器类型为低通 FIR ,设计方法为窗口法 ,阶数为 16 ,窗

口类型为 Hamming ,Beta 为 015 , FS 为 816 k Hz , FC 为

314 k Hz ,导出的滤波器系数如下 :

 h(0) = h(15) = - 01000 7 ; h(1) = h(14) = - 01002 5 ;

 h(2) = h(13) = 01012 ; h(3) = h(12) = - 01027 7 ;

 h(4) = h(11) = 01035 7 ; h(5) = h(10) = - 01007 2 ;

481

电 子 技 术 王心焕 :基于 FP GA 的高速 FIR 数字滤波器的设计

© 1994-2008 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net

Page 2: 基于 FPGA 的高速 FIR数字滤波器的设计read.pudn.com/downloads166/sourcecode/embed/764296/FIR.pdf · 实现乘法运算的有效结构。本文利用FPGA 乘累加的快

 h(6) = h(9) = - 01106 8 ; h(7) = h(8) = 01596 5。

3  快速 FIR 滤波器算法的基本原理

(1) 分布式算法

分布式算法在完成乘加功能时是通过将各输入数据

每一对应位产生的部分积预先相加形成相应的部分积 ,然

后再对各部分积进行累加得到最终结果。

对于一个 N ( N 为偶数) 阶线性相位 FIR 数字滤波

器 ,输出可由式 (1) 表示 :

y = ∑N/ 2 - 1

n = 0

[ x ( n) + x ( N - 1 - n) ] h( i) (1)

  其乘法运算量减小了一半。实现如图 1 所示。

图 1  线性相位直接型结构

(2) 乘法器设计

高性能乘法器是实现高性能的 FIR 运算的关键 ,分析

乘法器的运算过程 ,可以分解为部分积的产生和部分积的

相加两个步骤。部分积的产生非常简单 ,实现速度较快 ,

而部分积相加的过程是多个二进制数相加的加法问题 ,实

现速度通常较慢。解决乘法器速度问题 ,需要分别从这两

个方面入手 ,减小部分积的个数 ,提高部分积相加运算的

速度。

3. 1  Booth 算法

Booth 算法针对二进制补码表示的符号数之间的相

乘 ,即可以同时处理二进制正数/ 负数的乘法运算。Booth

算法乘法器可以减少乘法运算部分积个数 ,提高乘法运算

的速度。

下面讨论一个 M b ×N b 乘法器基本单元的设计。

设乘数为 A ,为 M 比特符号数 ,2 的补码表示 ,相应各比

特位的值为 ai ( i = 0 , 1 , ⋯, M - 2 , M - 1) ,用比特串可表

示为 :

A = aN - 1 aN - 2 ⋯a2 a1 a0 (2)

  设被乘数为 B ,为 N 比特符号数 ,2 的补码表示 ,相应

各比特位的值为 bi ( i = 0 ,1 , ⋯, N - 2 , N - 1) ,用比特串可

表示为 :

B = bN - 1 bN - 2 ⋯b2 b1 b0 (3)

  MacSoley 提出了一种改进 Booth 算法 ,将需要相加的

部分积数减少为一半 ,大大提高了乘法速度。改进 Booth

算法对乘数 A 中相邻 3 个比特进行编码 ,符号数 A 可表

示为 :

A = aM - 1 aM - 2 ⋯a2 a1 a0 = ∑M/ 2 - 1

i = 0

( a2 i- 1 + a2 i - 2 a2 i+1 ) 22 i

= ∑M/ 2 - 1

i = 0

d i22 i (4)

这里 a- 1 = 0。于是 , A ×B 可以表示为 :

A ×B = ∑M/ 2 - 1

i = 0

d iB 22 i = ∑M/ 2 - 1

i = 0

Pi22 i (5)

  改进 Booth 算法根据用 2 的补码表示的乘数比特图

案给出编码值 d i ,其真值表如表 2 所示。表 2  改进 Booth 编码真值表

a2 i+1 a2 i a2 i- 1 d i

0 0 0 0

0 0 1 1

0 1 0 1

0 1 1 2

1 0 0 - 2

1 0 1 - 1

1 1 0 - 1

1 1 1 0

因此 ,应用改进 Booth 算法的乘法器运算过程仍然包

括 Booth 编码过程 ,即部分积产生过程和部分积相加过

程。所不同的是 ,其产生的部分积个数减少到原来的

一半。

3. 2  Wallace 树加法

在采用改进 Booth 算法将部分积数目减少为原来的

一半之后 ,乘法运算的主要问题就是处理多个多比特二进

制操作数相加的问题。最直观的算法是将多个部分积逐

一累加 ,但效率很低 ,运算时延巨大。

Wallace 在 1964 年提出采用树形结构减少多个数累

加次数的方法 ,称为 Wallace 树结构加法器。Wallace 树充

分利用全加器 3 - 2 压缩的特性 ,随时将可利用的所有输

入和中间结果及时并行计算 ,因而可以将 N 个部分积的累

加次数从 N - 1 次减少到 log2 N 次 ,大大节省了计算时延。

如图 2 所示为 Wallace 树结构与 CSA 结构的对照 ,其结构

的关键特征在于利用不规则的树形结构对所有准备好输

入数据的运算及时并行处理。

图 2  Wallace 树与 CSA 结构原理

Wallace 树结构一般用于设计高速乘法器 ,其显著优

点是速度快 ,尤其对处理多个数相加的情况具有相当的优

越性 ,缺点是其逻辑结构形式不规整 ,在 VL SI 设计中对

布局布线的影响较大。

3. 3  进位的快速传递

考虑到提高两个多比特操作数相加运算的速度 ,关键

581

《现代电子技术》2007 年第 15 期总第 254 期  þ 电子技术应用 ü

© 1994-2008 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net

Page 3: 基于 FPGA 的高速 FIR数字滤波器的设计read.pudn.com/downloads166/sourcecode/embed/764296/FIR.pdf · 实现乘法运算的有效结构。本文利用FPGA 乘累加的快

在于解决进位传递时延较大的问题。采用以牺牲硬件资

源面积换取速度的方式 ,以独立的逻辑结构单独计算各个

加法位需要的进位输入以及产生的进位输出 ,提高进位传

递的速度 ,从而提高加法运算速度。

3. 3. 1  四位超前进位加法器的设计

两个加数分别为 A 3 A 2 A 1 A 0 , B3 B2 B1 B0 , C- 1 为低位进

位。令两个辅助变量分别为 G3 G2 G1 G0 和 P3 P2 P1 P0 : Gi =

A i &B i , Pi = A i + B i 。G和 P 可用与门、或门实现。

一位全加器的逻辑表达式可化为 :

S i = Pi ·Gi σ C i- 1

Ci- 1 = Gi + Pi &C i- 1 (6)

  利用上述关系 ,一个 4 比特加法器的进位计算就变化

为下式 :

C0 = G0 + P0 C- 1

C1 = G1 + P1 C0 = G1 + P1 G0 + P1 P0 C- 1

C2 = G2 + P2 C1 (7)

= G2 + P2 G1 + P2 P1 G0 + P2 P1 P0 C- 1

C3 = G3 + P3 C2

= G3 + P3 G2 + P3 P2 G1 + P3 P2 P1 G0 + P3 P2 P1 P0 C- 1

  由式(7) 可以看出每一个进位的计算都直接依赖于整

个加法器的最初输入 ,而不需要等待相邻低位的进位传

递。理论上 ,每一个进位的计算都只需要 3 个门延迟时

间 ,即同时产生 G[ i] , P[ i] 的与门以及或门 ,输入为 G[ i] ,

P[ i] , C- 1 的与门 ,以及最终的或门。同样道理 ,理论上最

终结果 sum 的得到只需要 5 个门延迟时间。

实际上 ,当加数位数较大时 ,输入需要驱动的门数较

多 ,其 VL SI 实现的输出时延增加很多 ,考虑互联线延时

的情况将会更加糟糕。因此 ,通常在芯片实现中设计位数

较少的超前进位加法器结构 ,而后以此为基本结构构造位

数较大的加法器。

3. 3. 2  进位选择加法器结构

实际上 ,超前进位加法器只是提高了进位传递的速

度 ,其计算过程与行波进位加法器同样需要等待进位传递

的完成。借鉴并行计算的思想 ,人们提出了进位选择加法

器结构 ,其算法的实质是增加硬件面积换取速度性能的提

高。利用二进制加法的特点 ,进位或者为逻辑 1 ,或者为

逻辑 0 ,二者必居其一。将进位链较长的加法器分为 M 块

分别进行加法计算 ,对除去包含最低位计算的 M - 1 块加

法结构复制两份 ,其进位输入分别预定为逻辑 1 和逻辑 0 ,

于是 M 块加法器可以同时并行进行各自的加法运算 ,然

后根据各自相邻低位加法运算结果产生的进位输出 ,选择

正确的加法结果输出。进位选择加法器的逻辑结构图如

图 3 所示。

4  基于 FPGA设计 FIR数字滤波器

FIR 数字滤波器的结构如图 4 所示 ,图中 clk1 为取样

时钟 (读数时钟) ,clk2 为 FIR 数字滤波器的工作时钟 ,

clk2 频率远大于 clk1 频率。其工作过程 :clk1 时钟的上升

沿启动一次计算过程 ,控制器输出 reset 信号使触发器 1

清 0 ;其后每个 clk2 周期计算一个 h( i) [ x ( i) + x ( N - i -

1) ] 并进行累加 ,共需 N/ 2 个 clk2 周期完成计算 ,完成计

算后控制器输出 OE 信号将结果输出。

图 3  12 比特进位选择加法器原理

图 4  FIR 设计框图

(1) 对冲激响应系数 h 的处理 :由 Matlab 设计 FIR 滤

波器系数是一系列的浮点数 ,而 FP GA 不支持浮点数的运

算 ,因此浮点数需转换成定点数 ,设计可采用 Q 值量化法 ,

把系数扩大了 27 = 128 倍 ,然后转化为 8 位二进制数补

码。最终结果再右移 7 位就可等到真正结果。

(2) 本设计对于有符号数采用补码表示的方法 ,在设

计中多次出现加法运算 ,可能会产生溢出 ,所以应进行符

号位扩展。将符号位扩展到输出统一的最高位 ,才能够保

证计算结果的正确性。

扩展方法为 :

P9 P8 P7 P6 P5 P4 P3 P2 P1 P0

  = P9 P9 P9 P9 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0

其中 : P9 为补码的符号位。

(3) Booth 编码处理由于存在求“ - x”的运算 ,需进行

求反加 1。如果每 1 次调用 Booth 编码都进行加 1 运算 ,

不仅使资源大大浪费 ,而且由于位数较长 ,也会大大影响

681

电 子 技 术 王心焕 :基于 FP GA 的高速 FIR 数字滤波器的设计

© 1994-2008 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net

Page 4: 基于 FPGA 的高速 FIR数字滤波器的设计read.pudn.com/downloads166/sourcecode/embed/764296/FIR.pdf · 实现乘法运算的有效结构。本文利用FPGA 乘累加的快

乘法器的速度。而本设计将加 1 放在 Wallace 树中计算 ,

尽管多了 1 级 Wallace 树 ,但速度和资源上都大大提高了。

(4) 由于 FIR 是线性相位 , h( i) = h(15 - i) ,可以将

乘法运算由 16 次减少到 8 次 ;

再通过对 h ( i) 进行 Booth 编码

可以将部分积减少到 4 个 ;最终

利用 Wallace 树以及超快速加

法器将 4 个部分积的相加 ,得到

8 3 8 乘法器的结果。由于将

Booth 编码中的加 1 放在 Wal2lace 树中 ,经过分析需要 3 级

Wallace 树。

5  FIR滤波器的频率特性分析

利用 Matlab 中 rand ( ) 和 round ( ) 函数产生 - 128~

128 之间中 100 个整随机数 ,求幅频响应如图 5 所示。

图 5  幅频响应

再将这 100 个数通过 FIR 滤波器 ,求输出的幅频响应

如图 6 所示。

图 6  输出的幅频响应

比较输入 x 与输出 y 的幅频特性 ,可以看出 FIR 滤波

器为低通滤波 ,指标符合设计要求。

6  用 ISE综合分析 FIR滤波器的性能分析

分析设计框图可以看出 ,占用时间最长的路径为 8 位

加法器———乘法器———累加器 ,这是影响工作频率最主要

的部分。设计中采用流水线技术 ,在这条路径中增加寄存

器 ,将最长路径拆分成较短路径 ,可以取得比较好的效果 ,

提高系统的工作频率。

图 7  RTL 电路图

表 3  FIR滤波器资源使用量

Device Utilization Summary (estimated values)

Logic Utilization Used Available Utilization

Number of Slices 287 13 696 2 %

Number of Slice Flip Flops 203 27 392 0 %

Number of 4 input L U Ts 417 27 392 1 %

Number of bonded IOBs 29 556 5 %

Number of GCL Ks 2 16 12 %

FIR 滤波器的最高工作频率如下 :

Timing Summary :

- - - - - - - - -

Speed Grade : - 7

Minimum period :61458 ns (Maximum Frequency :

1541839 M Hz)

Minimum input arrival time before clock :11418 ns

Maximum output required time after clock :31293 ns

Maximum combinational path delay :No path found

可以看出最高工作频率可以达到 154184 M Hz ,实现

了高速 FIR 数字滤波器的设计。

参  考  文  献

[1 ] 程佩清. 数字信号处理教程 [ M ] . 2 版. 北京 :清华大学出版

社 ,2006.

[2 ] 王金明. 数字系统设计与 Verilog HDL [ M ]. 2 版. 北京 :电

子工业出版社 ,2005.

[3 ] 刘军 ,黄君凯 ,易清明. 一种高速 FIR 滤波器的设计及实现

[J ] . 微电子学与计算机 ,2004 ,21 (7) :150 - 152.

[4 ] 胡皓 ,赵文亮 ,罗熙. 32 位快速乘法器设计 [J ] . 电子测量技

术 ,2006 ,29 (5) :190 - 192.

[5 ] 赵忠民 ,林正浩. 一种改进的 Wallace 树型乘法器的设计

[J ] . 电子设计应用 ,2006 (8) :113 - 116.

781

《现代电子技术》2007 年第 15 期总第 254 期  þ 电子技术应用 ü

© 1994-2008 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net