优化FIR数字滤波器的FPGA实现
研究数字滤波器的意义就在于它们正日益成为一种主要的DSP(DigitaI Signal Processing)运算,并正在逐渐代替传统的模拟滤波器。它可以保证任意幅频特性的同时具有严格的线性相频特性。而现场可编程门阵列(Field Programmable Gate Array,FPGA)可并行执行的特点决定它更加广泛地应用于实时数字信号处理领域。不能想象今天的生活如果没有音频;视频和言语交际的样子,而这些都要应用数字信号处理技术。并且在任何时候,高性能,低规模,低成本都是设计的目标。滤波器(Finite Impulse Response,FIR)的实现方法有很多种,最常见的有串行结构和并行结构方法。前者根据FIR滤波器的实现表达式,将滤波器实质看作是做一个乘累加运算。一次乘累加运算的次数由滤波器的阶数来决定。这种方法使用硬件资源相对较少,但速度较慢。并行结构的方法,将滤波器的串行实现展开,就可以直接用多个乘法器和加法器并行实现,其可以在一个时钟周期内完成一次滤波,但要占用大量的乘累加器,器件延迟比较大。目前为了满足面积和速度的需要,人们通常采用Booth算法、CSD算法,分布式算法等技术对FIR设计进行优化,优化效果各有利弊。本文针对串行结构对乘累加运算的乘和加分
别进行优化设计。分析了提高乘法器速度的途径;针对多数据量的运算,提出了一种新型的快速加法器的解决方案。体现了优化设计中提高速度和减小面积的设计理念。同时给出并实现了一个16阶FIR的设计实例。
1 用Matlab设计滤波器系数
利用Matlab软件的FDATool模块,选择滤波器类型为低通FIR,设计方法为窗口法,阶数为16,窗口类型为Kaiser,数据采样频率fs为4.8 kHz,滤波器的截止频率fc为1.08 kHz,导出的滤波器系数为16个15位的小数。将每一个系数扩大相同的倍数,最后四舍五人得到一系列整数系数。如下:
2 优化FIR滤波器在FPGA中的实现结构
2.1 FIR滤波器的基本算法原理
本文采用滤波器实现的基本的串行乘累加结构。FIR滤波器的差分方程可表示为:
式中:t为滤波器的阶数。
其直接运算结构如图1所示。
从公式(1)中可知FIR滤波器在硬件上的设计主要是完成乘累加功能,实现的一种方法是直接相乘累加。在实际应用中,当滤波器设计对滤波速度要求不高时,可采用串行结构或改进串行结构来实现,这样可以选取资源较少的器件,降低设计成本;当对滤波速度有较高要求时,可以考虑采用并行或DA来实现。但要进行FIR运算,尤其在阶数较高时,几乎无法在FPGA内实现并行结构,所以这里采用串行运算的结构,仅使用一个乘加器。所以本文的设计着重于提高串行结构FIR的速度。下面将介绍一种高速的Booth算法乘法器和高速的加法器。
2.2 乘法器设计
乘法器是数字信号处理电路中最常用的单元,20年前就已经研究的非常成熟。高性能乘法器是实现高性能的FIR运算的关键,乘法器的运算过程可以分解为部分积的产生和部分积的相加2个步骤。部分积的产生非常简单,实现速度较快;而部分积相加的过程是多个二进制数的相加,实现速度通常较慢。解决乘法器速度问题,需要减小部分积的个数、提高部分积相加运算的速度。在乘法器设计上这里着重研究能够减少部分积的Booth算法。
Booth算法乘法器可以减少乘法运算部分积个数,提高乘法运算的速度。本文讨论Radix-2的Booth算法,其基本算法思想是,一次看乘数的两个位,依照当前与前一位的不同,执行不同的操作。总结出Radix-2 Booth算法的编码规则如表1所示。
2.3 累加器设计
对于乘累加运算的加法,传统的算法将使多个乘法器的结果逐一累加,效率低、运算时延大。本文提出了一种结合了CSA算法加法器和树型结构的新型加法器结构,对乘法器的结果一次性相加。
图2为6个数相加的实例。如果不用其他加法器的话,6个数据的相加将耗去5个加法器,其关键路径总共经过三级的加法电路延迟,有必要对电路的面积和延迟进行改进。因此在多个数据相加的情况下,CSA(Carry Save Adder)加法器是很好的选择。
CSA加法器仍然保留原有的全加器架构,一个n-bit的CSA器件如图3所示。
如果只有个数不多的数据相加时,采用CSA器件不管是在电路面积和时序特性上都没有优势。但当多个数据相加时,CSA加法器就能在电路面积和时序特性上体现出它的优越性。树型加法器结构的关键特性在于利用不规则的树形结构对所有的准备好输入数据的运算及时并行处理,大大节省了计算延时,尤其是在多个数相加的情况下;缺点是其逻辑结构形式不规整,在VLSI设计中对布局布线的影响较大。本文用CSA加法器为单元组成树型结构,设计出一种如图4所示的快速加
- 用频率采样法设计FIR滤波器(10-07)
- 高阶FIR滤波器的计算机设计与FPGA实现(03-13)
- FIR结构IQ串行处理RRC滤波器(04-18)
- 基于Matlab的FIR数字滤波器设计(10-07)
- 详解FIR滤波器和IIR滤波器的区别(04-04)
- GreenFire系统:智能电网的核心(08-25)