基于fpga流水线分布式算法的fir滤波器的实现 - 世

上传人:子 文档编号:43191923 上传时间:2018-06-04 格式:DOC 页数:9 大小:18.13KB
返回 下载 相关 举报
基于fpga流水线分布式算法的fir滤波器的实现 - 世_第1页
第1页 / 共9页
基于fpga流水线分布式算法的fir滤波器的实现 - 世_第2页
第2页 / 共9页
基于fpga流水线分布式算法的fir滤波器的实现 - 世_第3页
第3页 / 共9页
基于fpga流水线分布式算法的fir滤波器的实现 - 世_第4页
第4页 / 共9页
基于fpga流水线分布式算法的fir滤波器的实现 - 世_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《基于fpga流水线分布式算法的fir滤波器的实现 - 世》由会员分享,可在线阅读,更多相关《基于fpga流水线分布式算法的fir滤波器的实现 - 世(9页珍藏版)》请在金锄头文库上搜索。

1、基于基于 FPGAFPGA 流水线分布式算法的流水线分布式算法的 FIRFIR 滤波器的实现滤波器的实现 - - 世世自己收藏的觉得很有用故上传到百度与大家一起分享!基于 FPGA 流水线分布式算法的 FIR 滤波器的实现 摘要: 提出了一种采用现场可编码门阵列器件(FPGA)并利用窗函数法实现线性 FIR 数字滤波器的设计方案并以一个十六阶低通 FIR 数字滤波器电路的实现为例说明了利用Xilinx 公司的 Virtex-E 系列芯片的设计过程对于在 FPGA 中实现 FIR 滤波器的关键-乘加运算给出了将乘加运算转化为查找表的分布式算法设计的电路通过软件进行了验证并进行了硬件仿真结果表明:

2、电路工作正确可靠能满足设计要求关键词: FIR 滤波器 FPGA 窗函数 分布式算法 流水线 随着数字技术日益广泛的应用以现场可编程门阵列(FPGA)为代表的 ASIC 器件得到了迅速普及和发展器件集成度和速度都在高速长FPGA 既具有门阵列的高逻辑密度和高可靠性又具有可编码逻辑器件的用户可编程特性可以减少系统设计和维护的风险降低产品成本缩短设计周期分布式算法是一种以实现乘加运算为目的的运算方法它与传统算法实现乘加运算的不同在于执行部分积运算的先后顺序不同简单地说分布式算法在完成乘加功能时是通过将各输入数据每一对应位产生的部分积预先进相加形成相应部分积然后在对各部门积进行累加形成最终结果而传统

3、算法是等到所有乘积产生之后再进行相加来完成乘加运算的与传统算法相比分布式算法可极大地减少硬件电路规模很容易实现流水线处理提高电路的执行速度FPGA 有着规整的内部逻辑块阵列和丰富的连线资源特别适合细粒度和高并行度结构特点的数字信号处理任务如 FIR、FFT 等本文详细讨论利用 FPGA 实现 FIR 滤波器的设计过程并且对设计中的关键技术-分布式算法进行详细描述1 FIR 和分布式算法 1.1 FIR 的基本概念 FIR 滤波器的数学表达式为: 式中N 是 FIR 滤波器的抽头数x(n)表示第 n 时刻的输入样本;h(i)是 FIR 滤波器的第 i 级抽头系数普通的直接型 FIR 滤波器结构如

4、图 1 所示FIR 滤波器实质上是一个分节的延迟线把每一节的输出加权累加便得到滤波器的输出对于 FIR 滤波器幅度上只需满足以下两个条件之一就能构成线性相位 FIR 滤波器h(n)=h(N-1-n) (2) h(n)=-h(N-1-n) (3) 式(2)称为第一类线性相位的幅度条件(偶对称)式(3)称为第二类线性相位的幅度条件(奇对称)1.2 FIR 滤波器的优化 在实际应用中为了减少逻辑资源的占有量和提高系统的运行速度对 FIR 滤波器需要进行优化处理本文采用的优化主要有两种:一种是对表达式进行优化另一种是在 FPGA 实现中利用特有的查找表进行优化1.2.1 表达式的直接优化 对于线性相位

5、因果 FIR 滤波器它的系列具有中心对称特性即 h(i)=h(N-1-i)令 s(i)=x(i) x(N-1-i)对于偶对称代入式(1)可得: 根据方程(4)线性相位 FIR 滤波器的直接型结构可以改为如图 2 所示的结构从而使 N 次乘法减少为N/2次加法次数增加了N/2次(N 为偶数)总的运算量减少1.2.2 利用查找表进行设计优化 由于实现的是固定系数的 FIR 滤波器所以可以用利用简化的过程(如查找表)减少设计所耗用的器件资源以一个 8 阶 FIR 滤波器为例来说明在 FPGA 实现中优化的过程假定滤波器的输入为 2bit 的正整数由(4)可以得到输出为: y(n)=s(0)h(0)+

6、s(1)h(1)+s(2)h(2)+s(3)h(3) (5) 这时的乘法和加法就可以并行地采用查找表实现其结构示意图如图 3 所示在图 3 中右面 4 个信号是输入的低位 bit左边是输入信号的高位 bit低位和 P1 最多使用 4bit由于系数固定查找表实现起来很方便;高位和 P2 可按同样方法计算在该结构中部门积 P1 和 P2 可以利用 Virtex-E 的 4 输入查找表实现所有的计算都可并行完成由于输入为 2bit因此只用了一个加法器;对于更多位数的输入来说将需要更多的加法器这样就实现了将乘法器转化为回法器减少了解逻辑资源优化了设计1.3 分布式算法 分布式算法在 20 多年前被首次

7、提出但直到 Xilinx 发明 FPGA 的查找表结构以后分布式算法才在 20 世纪 90 年代初重新受到重视并被有效地应用在 FIR 滤波器的设计中下面介绍分布式算法的原理式(1)可以用下式表示: 式中hi 即 h(i)xi(n)即 x(n-i)N 为滤波器的抽头数把数据源数据格式规定为 2 的补码形式则: 式中xib(n)为二进制数取值为 0 或 1;xio(n)为符号位为 1 表示数据为负为 0 表示数据为正将(7)式代入(6)式可得: 由此可以看出方括号是输入变量的一个数据位和所有滤波器抽头系数 h0hi 的每一位进行“与“运算并求和而指数部分则说明了求和结果的位权整数乘以 2b 就是

8、左移 b 位对此可以通过硬件连线实现不占用逻辑资源这样就可以通过建立查找表来实现方括号中的运算查找表可用所有输入变量的一同一位进行寻址2 系统设计与实现 下面以一个 16 阶的线性相位 FIR 低通滤波器为例说明设计的过程2.1 设计指标及参数提取 2.1.1 滤波器的设计指标 采样频率:50MHz 归一化截止频率:0.4MHz 类型:低通 输入数据宽度:8 位 阶数:16 阶 输出数据宽度:16 位 2.1.2 参数提取 采用汉字窗函数(Hanning)设计 16 阶线性相位 FIR 数字滤波器并提取其特性参数这里需要注意的是:下载到 FPGA 的程序是按照 FIR 滤波器的差分方程式编写的

9、由于从 MATLAB 中算出的系数 h(n)的值是一组浮点数而 FPGA 器件只进行定点值的计算所以要进行浮点值到定点值的转换假定“1“对应 10000000000000000(17 位相当于乘上 65536)用汉字窗(Hanning)进行设计此 16 阶 FIR 数字低通滤波器特性参数经过换算如下: h0=h15=0000 h1=h14=0065 h2=h13=018F h3=h12=035A h4=h11=0579 h5=h10=078E h6=h9=0935 h7=h8=0A1F 2.2 系统具体实现步骤 2.2.1 查找表的建立 我们知道如果滤波器抽头数 N 过多用单个查找表就不能执行

10、全字(因为查找表位宽=滤波器抽头数的数量)在这种情况下可以将表的地址输入位数(即滤波器抽头数 N)进行降低既利用部分表并将结果相加如果加上流水线寄存器这一改进并没有降低速度但是却可以极大地减少设计规模因为查找表的规模是随着地址空间也就是滤波器抽头数 N 的增加而呈指数增加根据卷积和 定义 16 阶内积滤波器抽头数是 16 个考虑到线性 FIR 滤波器的偶对称特性只考虑 8 个独立滤波器抽头数则需要一个 2 88 的表(其中指数 8 指的是 8 个滤波器抽头数后面的 8 指的是输入数据的位宽)但是 Virtex-e FPGA 只能提供 4 输入的查找表所以要对查找表的地址进行电路分割将 8 位地

11、址线分为高 4 位和低 4 位分别作为两个 2 48 的查找表的地址输入从而指数倍地节省了硬件资源2.2.2 查表计算部分积累加和的过程 假定输入数据 xn的值 x0=1 10=00000001 2c,x1=-1 10=11111111 2c,x2=3 10=00000011 2c,x3=2 10=00000010 2c(注:2c 代表用二进制补码表示最高位为符号位) 数据校验结果:h0x0+h1x1+h2x+h3x3=2812 说明利用分布式查表算法的计算结果与直接计算结果相同算法正确无误查找表(2)的查表计算结果依此类推只是需要注意:查找表(2)的数据输入 x 是 8 位数据 x4、x5、

12、x6、x7而不是 x3、x2、x1、x0根据系数偶对称性质x8、x9、x10、x11查查找表(2)x12、x13、x14、x15查查找表(1)3 设计结果 本系统的 FPGA 采用 Xilinx 公司的 Virtex-E 系列中的 XCV100E FPGA使用的软件是 Xilinx 公司的 ISE5.2i 及 Modelsim 公司的 Modelsim时序仿真工具对 FIR 滤波器进行描述编程使用的是 VHDL 语言实现 FIR 滤波器的最上层的原理图如图 4 所示输入 16 个 8 位数据 data_in=1,-1,3,2,2-1,1,-1,1,-1,3,2,2,-1,1,1系统仿真的时序图如图 5 所示所设计 FIR 滤波器的幅频、相频、单位脉冲冲激响应如图 68 所示FIR 滤波是 DPS 的基本运算形式这一本文介绍的基于 FPGA 的分布式算法提高了系统运行的速度并且节省了大量的 FPGA 资源通过阶段以及查找表中抽头系数的设定还可以灵活地实现除低通外的高通、宽阻和带通滤波器设计的电路已通过 FPGA 验证说明工作正常符号设计指标

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号