论文导读:语音信号的频率范围是100-4500Hz,因此FIR滤波器的采样频率定为9000Hz,低通滤波器的截止频率定为4000Hz,选择汉明窗函数,阻带最小衰减-53dB,阶数为8,输入数据宽度8位,输出数据宽度10位,滤波器幅频响应波形如图1所示。
关键词:分布式算法,FIR滤波器,MATLAB,LUT
1、引言
现场可编程门阵列FPGA(Field Programmable Gate Array)是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。同时具有编程灵活、开发周期短等优点。FPGA广泛应用于数字信号处理领域,数字信号处理已经发展成为一项成熟的技术,并且在许多应用领域逐步代替了传统的模拟信号处理系统。数字滤波是数字信号处理的重要分支,数字滤波的功能就是把输入序列通过一定的算法变换成输出序列。使用传统的算法单元完成一个滤波周期时,大约需要用N个MAC循环。使用流水线可以缩短这一数量,但也非常有限,仍旧非常长。与传统的乘加结构(MAC)相比,采用分布式算法的滤波器具有明显的优势,可极大减少硬件资源的使用量,提高电路的工作速度,更加容易实现流水线处理。现在分布式算法又得到了改进,有些滤波器的设计加入了串行结构[1],虽然串行结构的应用使硬件资源的占用量明显降低,但并没有提高滤波器的运算速度,本设计在此基础上应用分布式算法的并行结构在FPGA上实现了FIR滤波器,大大加快了滤波器工作速度,更适合实时信号处理的应用。
2、分布式算法原理及其改进
2.1 分布式算法(DA)原理
一个N阶的FIR滤波器的输出可由线性卷积求出[2]:
(1)
对于传统的乘加算法(MAC),每次采样, 都要经过N次乘法和N-1次加法操作,在硬件中实现即占用资源又影响速度[3]。下边来看乘积和公式:

= (2)
其中 是经过的延时, 为第 个滤波器系数, 为第 次采样值。假设滤波器系数 是已知的常数,有符号的 可用B位的二进制补码表示为:
(3)
其中最高位为符号位。将公式(3)带入公式(2)可得:
(4)
公式(4)被称为分布式算法,实质上就是将输入的采样值用二进制补码表示,再用N个滤波器系数分别与N个二进制补码的第b位相乘并求和。容易算出乘积一共有 种结果,事先算出这 种结果,以查找表(LUT)的形式存入RAM中。科技论文。每次将输入值的相同位作为RAM的地址,取出RAM中相应的值。可以看出采用分布式算法的FIR滤波器在FPGA中的工作速度只与输入数据的宽度B有关,与滤波器的阶数N无关,阶数只影响FPGA资源的使用量。
2.2 分布式算法的改进
由上面的讨论可知,当滤波器的阶数增加时,查找表的规模将随地址空间,也就是输入系数N的增加而呈指数增加,单个的查找表是完成不了的。因此对高阶滤波器的实现必须采用串行方式,将一个N输入的查找表分割成L个N/L输入的查找表,再将输出的值求和。这样,每个查找表单元的数量将由 降低到 。本设计将用两个4输入的查找表代替一个8输入的查找表。
当今,实时处理是数字信号处理方面的关键,这就对滤波器的工作速度有了更高要求,这正是本文重点探究的。当输入数据宽度B增大时,滤波器的工作速度将降低,因此对位宽较大的输入需采用并行方式。使输入数据相同的位对应于同一个查找表,不同的位对应于不同的查找表,再将几个查找表输出结果求和,这样,每次同时处理多个位,速度将大大提高。这种改进是以增加资源的使用量为代价的,如果将输入位宽提高一倍,相应的占用的资源也扩大一倍。对于滤波器阶数限制在8以内,这种方法将有很大的意义,本设计将采用这种方法以提高滤波器的工作速度。
1/2 1 2 下一页 尾页 |