基于FPGA的FIR数字滤波器的设计_第1页
基于FPGA的FIR数字滤波器的设计_第2页
基于FPGA的FIR数字滤波器的设计_第3页
基于FPGA的FIR数字滤波器的设计_第4页
基于FPGA的FIR数字滤波器的设计_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于 FPGA 的 FIR 数字滤波器的设计 The Design Of FIR Digital Filter Based On FPGA 系 院 名称 电子信息与电气工程系 QQ 号 目目 录录 摘要摘要 I Abstract II 引言引言 1 第一章 FIR 数字滤波器设计 2 1 1 FIR 数字滤波器 2 1 1 1 数字滤波器简介 2 1 1 2 FIR 数字滤波器 3 1 1 3 FIR 数字滤波器的结构 4 1 2 FIR 数字滤波器设计方法 6 1 2 1 时窗函数法 6 1 2 2 频率采样法 8 1 2 3 等波纹最佳逼近法 10 1 2 4 三种设计方法的比较 11 第二章 基于 MATLAB 的 FIR 数字滤波器的设计与仿真 12 2 1 MATLAB 软件 12 2 2 使用 MATLAB 函数进行 FIR 数字滤波器的设计 12 2 2 1 时窗函数设计法 12 2 2 2 频率采样设计法 13 2 2 3 等波纹最佳逼近设计法 14 2 3 使用 FDATool 设计 FIR 数字滤波器 15 2 4 使用 Simulink 进行仿真 16 第三章 EDA 技术与分布式算法 19 3 1 EDA 技术 19 3 1 1 EDA 技术简介 19 3 1 2 QUARTUS II 软件介绍 19 3 1 3 FPGA 介绍 20 3 2 FPGA 设计方法 22 3 3 分布式算法 23 3 3 1 分布式算法基础 23 3 3 2 并行的分布式算法 24 3 3 3 串行的分布式算法 24 第四章 15 阶并行 FIR 数字滤波器的设计与仿真 26 4 1 顶层文件的设计 26 4 2 并行 FIR 各个模块的设计 28 4 2 1 输入数据预处理模块 28 4 2 3 预相加模块 30 4 2 4 查找表模块 32 4 2 5 加法器模块 35 4 2 6 移位累加器模块 37 4 2 7 输出处理模块 38 4 3 顶层综合与仿真 38 4 4 数据误差分析 41 结论 43 致谢 44 参考文献 45 I 基于基于 FPGA 的的 FIR 数字滤波器的设计数字滤波器的设计 摘要摘要 线性相位是 FIR 数字滤波器设计中的一个重要条件 线性相位 FIR 滤波器的设计 方法主要包括时窗函数法 频率采样法 等波纹最佳逼近法 本文基于 MATLAB 软件 分别用这三种方法设计 FIR 低通滤波器 并进行比较分析 为了验证 FIR 滤波器的性能 本文使用 MATLAB 自带的 FDATool 工具设计等波纹法 15 阶低通滤波器 在 Simulink 里进行仿真 最后得到预期的结果 设计好 15 阶 FIR 低通滤波器的系数后 本文就 FIR 低通滤波器的 FPGA 实现进行了研究 EDA 技术的发展和大规模可编程逻辑器件的应用 使得数字信号处理借助于 FPGA 实现变为可能 为了实现这一目标 本文讨论了 FPGA 器件的结构 特点和分布式算法实现 FIR 滤波器的可行性 然后给出了基于并行分布式 算法的 FIR 滤波器的 VHDL 描述 最后借助于 EDA 软件 QUARTUSII 进行了综合和仿 真 并取得了成功 关键词关键词 分布式算法 FIR 数字滤波器 线性相位 II The Design Of FIR Digital Filter Based On FPGA Abstract Linear phase is one of the important conditions of FIR digital filter design The design method of the linear phase FIR filter mainly includes window function method frequency sampling method and the optimal approximation corrugated This paper based on the MATLAB software with the three methods designs FIR low pass filters and analysis the results In order to verify the performance of FIR filter this paper use FDATool owned by MATLAB software to design low pass filter of 15 order with corrugated method and convent it into a model for the simulation later carried out The final simulation gets the expected results Finishing design 15 order FIR low pass filter coefficients this paper will study FIR low pass filter on FPGA realizing With the development of EDA technology and the wide application of large scale programmable logic devices the application of digital signal processing on FPGA realizing become possible In order to achieve this goal this paper discusses the structure and characteristics of FPGA device and the feasibility of FIR filter design based on distributed algorithm and propose the VHDL code based on the parallel distributed FIR filter Finally we use EDA software called QUARTUSII for the synthesizing and simulation and achieve a success Key words Distributed Algorithm FIR Digital Filter Liner Phrase 1 引引 言言 近年来 随着数字信号处理技术的发展和数字集成电路的广泛应用 越来越多的工 程领域在将模拟信号转为数字信号后 面临的首要任务即是滤除干扰信号 滤波的好坏 直接决定着系统能不能得到有用的信号 因此滤波在数字信号处理中处于基础性的地位 同时 计算机技术的发展为数字滤波器的设计与仿真提供了便利 例如 使用 MATLAB 软件即可在很短的时间内就能设计性能很高的数字滤波器 并且还可以进行模 拟仿真 这使得我们可以在硬件实现以前对系统的性能可以有个初步的感性认识 此外 大规模可编程逻辑器件的应用 为数字滤波器的硬件实现提供了新的方式 在设计合理的情况下 能提高数字滤波器的工作速度 并且还能节省资源和功耗 基于此 本文将充分利用便捷的 EDA 技术 采用 MATLAB 进行 FIR 数字滤波器的 设计和仿真 并研究使用 VHDL 进行硬件描述 然后在 FPGA 上开发的可行性 通过本 文 可以感受到计算机技术带给数字滤波系统设计的快捷与便利 2 第一章 FIR 数字滤波器设计 1 1 FIR 数字滤波器 数字滤波器在数字信号处理中属于预处理的部分 因而起着基础性的作用 数字滤 波器包括 IIR 和 FIR 数字滤波器 数字滤波器具有精度高 稳定性好 灵活性强 不要求 阻抗匹配 易于修改等特点 下面将首先介绍一下数字滤波器 然后重点讨论 FIR 数字 滤波器的设计原理和结构 1 1 1 数字滤波器简介 一个简单的数字滤波系统如图 1 1 所示 图中 x t 为模拟信号 经过 A D 转换器后 变为一个有着先后顺序的数字序列 x n 然后 x n 通过数字滤波系统 H z 即得到数字 滤波器的输出 y n H z 为该数字滤波系统的单位脉冲响应 h n 的 Z 变换 即 1 1 n n znhzH 若 h n 为无限长序列 则得到的数字滤波器为 IIR 数字滤波器 又称递归滤波器 反 之 若 h n 为有限长序列 则得到的数字滤波器为 FIR 滤波器 也称非递归滤波器 一个 线形时不变因果滤波器可表示为 1 2 1 0 N n n znhzH 其中 N 为 h n 的长度 即滤波器的长度 滤波器的阶数为 N 1 y n x t A D x n H z 图 1 1 数字滤波系统 IIR 滤波器主要是基于对模拟滤波器如巴特沃斯滤波器 椭圆滤波器等的幅频响应进 行逼近 而其相频响应是非线性的 与 IIR 滤波器不同 FIR 滤波器可以把相位特性设计 成线性 这使得 FIR 数字滤波器在信号无失真传输 数据通信 图像传输与处理 语音 信号处理等有线性相位要求的领域应用广泛 FIR 滤波器的优点是软硬件实现结构简单 3 不用考虑系统的稳定性问题 缺点是实现较高性能的频率响应需要较高的滤波器阶数 1 1 2 FIR 数字滤波器 由于线性相位 FIR 滤波器的广泛应用 本文将首先讨论一下如何实现线性相位 FIR 滤波器 由式 1 2 将代入 得到 jw ez 1 3 1 0 N n jwnjw enheH 为复数 因此可以表示成如下形式 jw eH 1 4 wjjw ewHeH 式中 为实函数 称为幅度特性函数 为相位特性函数 wH w 当满足 w 1 5 ww 0 为初始相位 为常数 该滤波器具有广义的线性相位 将 1 5 式变换为 0 1 6 ww w 0 由 1 6 式可知 不为常量 这样 当不同频率的信号通过该滤波器时 便会产 w w 生相位的失真 不过通常较小 相比来说小得多 由引起的相位失真可忽略不 0 w 0 0 计 在 1 5 式中 当时 为常量 这时滤波器有严格的线性相位 0 0 w w 即对于不同频率的信号 通过该滤波器都有恒定的延迟 而不产生相位的失真 将式 1 3 1 4 1 5 联立 可得 1 7a 1 0 0 cos cos N n wwHnwnh 1 7b sin sin 1 0 0 wwHnwnh N n 将 1 7a 式除以 1 7b 式 消去 得到 wH 4 0 1 8 1 0 0 sin N n wnnh 当时 式 1 8 变为 0 0 0 1 9 1 0 sin N n wnnh 观察可知 若关于求和区间中心奇对称 则 1 9 式成立 sin wnnh 2 1 N 由于关于奇对称 令关于偶对称 则满足 sin wn n nh2 1 N2 1 N 关于求和区间中心奇对称的要求 即 1 9 式成立 sin wnnh 2 1 N 当时 式 1 8 变为 2 0 1 10 0 cos 1 0 N n wnnh 若关于奇对称 关于偶对称 则 1 10 nh2 1 Nn cos wn 2 1 Nn 式成立 基于的对称不同和长度 N 的奇偶区别 线性相位 FIR 数字滤波器的幅度频率特 nh 性有所不同 因而所实现的滤波器的功能有所不同 具体如表 1 1 所示 第三列为能够 实现的滤波器的性能 表 1 1 四种类型的线性相位滤波器 I 型N 为奇数低通 带通 高通 带 阻 II 型N 为偶数 1 nNhnh 低通 带通 III 型N 为奇数带通 IV 型N 为偶数 1 nNhnh 带通 高通 1 1 3 FIR 数字滤波器的结构 根据 FIR 数字滤波器实现算法的不同 可以把 FIR 滤波器的结构划分为直接型 级 联型 频率采样型和快速卷积型四种基本形式 本文主要讨论前两种结构 A 直接型结构 5 由式子 1 2 可直接画出 FIR 数字滤波器的直接型结构 如图 1 2 所示 对于直 接型结构来说 一个长度为 N 的 FIR 滤波器 每产生一个输出数据 要经过 N 次乘 法 N 1 次加法 对于使用 FPGA 开发 FIR 数字滤波器 这样的结果显然不令人满意 x n h 0 h 1 h 2 h N 2 h N 1 1 z 1 z 1 z y n 图 1 2 直接型结构 于是本文做了一下改进 这种改进是基于线性相位的 FIR 数字滤波器的 以严格 线性相位 N 为偶数的 FIR 滤波器为例 如图 1 3 所示 x n 1 z 1 z 1 z 1 z 1 z 1 z 1 z 1 z h 0 h 1 h 2 h N 2 y n 图 1 3 直接型的改进 由于关于对称 我们可以将经过延时环节的位置关于 nh2 1 Nn 对称的数据预先相加 然后可以再乘以相应的滤波器系数进行累加得到最终2 1 N 的输出结果 这样 每产生一个输出 经过次乘法 次加法 比原来减少2 N1 N 次乘法 2 N B 级联型结构 对式子 1 2 进行因式分解 并将零点共轭的因式放在一起 这样产生了若干个 一阶子式和二阶子式 将一阶子式看作二阶子式的一个特例 则系统函数可以表 zH 示为 1 11 L l zazahzH 1 2 12 1 11 1 0 6 FIR 数字滤波器的级联型结构如图 1 4 所示 x n 1 z 1 z 1 z 1 z 1 z 1 z 11 21 12 22 1L 2L h 0 y n 图 1 4 级联型结构 从图中可以看出 级联型结构每产生一个输出 需要次乘法 次加法 1 N1 N 级联型的最大特点是可以分别独立调整每个子系统的零点之值 当需要精确控制滤波 器的零点位置时 往往采用这种结构 1 2 FIR 数字滤波器设计方法 FIR 数字滤波器的设计方法主要有三种 时窗函数法 频率采样法和等波纹设计法 下面将分别讨论一下这三种方法的设计原理 然后给出设计步骤 最后在比较一下这三 种方法的优缺点 1 2 1 时窗函数法 一个理想低通滤波器的幅频特性如图 1 5 所示 的表达式为 jw d eH 1 ww ww eH c cjw d 0 1 11 w jw d eH c w c w 图 1 5 理想低通滤波器频谱图 对进行离散时间傅里叶逆变换 得 jw d eH 7 dweeHnh jwnjw dd 2 1 1 c c w w c jwn n nw dwe sin 2 1 12 是一个关于对称的无限长序列 是系统的单位脉冲响应 这说明系统是非因 nhd 0 d h 果的 在物理上不可实现 为了能够得到一个可实现的系统 可以将截取一部分 nhd 并顺序右移 使之成为一个因果的有限长序列 这种方法就好比在时域打开一个窗口一 样 因而称为时窗法 可以预见 使用这种方法截取的序列越长 对理想的幅频特性逼 近的越好 常见的时窗函数有矩形窗 汉宁窗 汉明窗 布莱克曼窗 凯塞窗等 矩形窗的表 达式为 为整数 当用矩形窗设计 FIR 滤波器时 所产生的 其它 0 10 1 Nn w nR n 频率响应 与理想滤波器的频率特性相比 在理想特性不连续点处附近形成了过 c ww 渡带 并在过渡带两侧形成持续时间很长 逐渐衰减的波纹 即通带内产生了波动 而 阻带内产生了余振 这种现象称之为吉布斯 Gibbs 效应 吉布斯效应直接影响到滤波器 的性能 因为通带内的波动会影响到滤波器的平稳性 阻带内的波动则影响阻带最小衰 减 为了克服吉布斯效应 可以从两个方面着手 一是在频域 避免理想滤波器频谱中 出现的跃变现象 把它改造成一条连续光滑的曲线 所用的方法是镶边法 二是在时间 域 对截尾函数进行改造 也即设计出好的时窗函数 nh 一个好的时窗函数的要求 A 主瓣宽度尽可能地小 B 旁瓣水平 振幅或能量 相 对于主瓣来说也尽可能地小 但是这两个标准之间彼此是有矛盾的 即主瓣宽度越大 旁瓣水平才可能越低 因此实际上 我们只能在这两个标准之间作一权衡 针对具体问 题 找出一个适当的时窗函数 五种窗函数的主要参数如表 1 2 所示 应当说明的是 用时窗函数法设计的 FIR 滤波器通带波纹幅度近似等于阻带波纹幅 度 一般阻带最小衰减达到 40dB 以上 则通带最大衰减就小于 0 1dB 最后 总结一下利用时窗函数设计 FIR 数字滤波器的步骤 A 根据所需设计的数字滤波器类型 低通 高通 带通 带阻 确定线性相位数字滤 波器类型 8 B 根据滤波器阻带衰减 选择窗函数的类型 根据过渡带宽度确定时窗函数的长 s nw 度 并根据线性相位条件进行修正 N C 确定理想数字滤波器的频率响应函数 其中为幅度特性 wj d jw d d ewHeH wHd 函数 为相位特性函数 w d D 计算理想滤波器的单位脉冲响应 即 nhd dweeHnh jwnjw dd 2 1 E 加窗得到设计结果 即 nh nwnhnh d 表 1 2 五种窗函数参数表 窗函数主瓣宽度 rad旁瓣水平 db过渡带宽度 rad阻带最小衰减 db 矩形窗N 4 13N 8 1 21 汉宁窗N 8 31N 2 6 44 汉明窗N 8 41N 6 6 53 布莱克曼窗N 12 57N 11 74 凯塞窗 7 865 N 0 10 57N 10 80 1 2 2 频率采样法 频率采样法是一种基于频率域抽样来逼近所要设计的 FIR 滤波器的频率特性的一种 方法 频率设计法的基本设计流程如图 1 6 所示 jw d eH确定 2 kHeH d Nj d nHIDFTnh d nhZTzH 抽样N点 离散傅里叶逆变换 图 1 6 频率设计法流程 为了保证具有线性相位条件 其单位采样响应是实序列 且满足条件 zH nh 9 对于偶对称的情况来说 线性相位条件如下 1 nNhnh nh 1 13 wj g jw d ewHeH 1 14 wNw 1 2 1 令代入式 1 13 1 14 得到Nkw 2 1 15 kj gd ekHkH 式中 Nkwgg wHkH 2 Nkw wk 2 N 为奇数 kNHkH gg N 为偶数 kNHkH gg 频率响应函数在各采样点上等于 而采样点之间的值是由各采 jw eH kHd jw eH 样值之间的内插函数叠加形成 因而有一定的逼近误差 误差的大小取决于理想频率响 应的曲线形状 采样点之间的理想频率特性变化越陡 则内插值与理想值之间的误差就 越大 因而在理想频率响应特性的不连续点附近 就会产生肩峰和波纹 反之 理想频 率响应特性变化越平缓 则内插值越接近理想值 逼近误差小 因此 可以在理想频率 下响应特性的通带与阻带之间设置过渡带 从而减小逼近误差 过渡带的采样点个数 m 与所设计的滤波器的阻带最小衰减有关 具体如表 2 3 所 s 示 此外过渡带的带宽与采样点数 m 之间的关系为 1 16 NmB 1 2 表 1 3 过渡带采样点数与阻带最小衰减的关系 m0123 dB s 20 44 5465 7585 95 综上 频率采样法的设计步骤为 A 根据阻带最小衰减 确定过渡带的样点数 m s B 根据过渡带宽度的要求 估算滤波器的长度 B 10 C 构造希望逼近的频率响应函数 一般为具有理想频率特性 并满足 jw d eH jw d eH 线性相位的要求 D 对进行频域等间隔 N 点采样 得到 jw d eH kHd E 对进行 N 点 IDFT 得到 kHd nh 1 2 3 等波纹最佳逼近法 等波纹最佳逼近法是基于最大误差最小化的设计原则 最大误差最小化能使幅度误 差在整个逼近频段上均匀分布 即所设计的 FIR 数字滤波器的幅度特性在通带和阻带范 围内是等波纹的 且可以分别独立控制通带和阻带的波纹幅度 并且在滤波器长度给定 的情况下 加权的幅度波纹误差最小 定义加权幅度误差函数为 1 17 wHwHwWwe d 式中为幅度误差加权函数 用来控制不同频带的幅度逼近误差 一般地 在要求 wW 逼近精度高的频带 取值大 而要求逼近误差精度低的频带 取值小 设计 wW wW 过程中是由设计者根据通带最大衰减和阻带最小衰减的指标要求取定的已知 wW p s 函数 对于 FIR 数字低通滤波器 常取 1 18 wwk wwk wW p p 0 12 式中 和分别为滤波器设计指标中通带和阻带的振荡波纹幅度 k 为正的系数 1 2 滤波器的通带最大衰减和阻带最小衰减与通带和阻带的振荡波纹幅度和的 p s 1 2 换算关系为 1 19 110 110 20 20 1 p p 1 20 20 2 10 s 等波纹最佳逼近法的设计 在于找到滤波器的系数向量 使得在通带和阻带 nh 0 p w 频带内的最大绝对值幅度误差为最小 s w we 11 帕克斯 麦克莱伦采用基于交替定理的雷米兹交替算法 通过逐次迭代逼近的运算求 得滤波器的系数向量 从而实现等波纹最佳逼近法 一般情况下 估计滤波器长度 nh N 的凯塞经验公式为 1 21 1 2 6 14 13lg 20 21 ps ww N 综上 用等波纹最佳逼近法设计 FIR 数字滤波器的步骤为 A 根据滤波器的设计指标要求 边界频率 通带最大衰减 阻带最小衰减等 估 p s 计滤波器的长度 并确定幅度误差加权函数 B 采用雷米兹交替算法 获得所设计的滤波器的单位脉冲响应 nh 1 2 4 三种设计方法的比较 时窗函数法和频率采样法 设计简单方便 易于实现 缺点是不能够精确指定滤波 器的边界频率和 并且不能够分别控制通带和阻带波纹 等波纹法能够分别独立控 p w s w 制通带和阻带波纹 确定边界频率 并且所设计的滤波器的阶数与前两种方法相比要少 12 第二章 基于 MATLAB 的 FIR 数字滤波器的设计与仿真 2 1 MATLAB 软件 MATLAB 是由 MATRIX 和 LABORATORY 两个英文单词的前三个字母组合而成 意为矩阵实验室 它有着强大的数值分析 符号运算 信号处理和图形显示的功能 能 够满足绝大部分的计算要求 MATLAB 程序语言语法结构和 C 语言相似 简单易用 可 移植性好 易于开发 MATLAB 内嵌了许多科学研究和工程应用领域的工具箱 Tool box 诸如优化算法 神经网络 信号处理 图像处理 嵌入式系统开发 DSP 与通讯 电力系统仿真等 使用户可以直接使用工具箱进行学习 应用和研究而不需要自己编写 代码 MATLAB 内嵌了一个优秀的仿真软件 Simulink 主要用来实现对工程问题的建模和 动态仿真 Simulink 应用了模块化设计和系统级仿真的思想 使得建模仿真如同搭积木一 样简单 Simulink 可以应用于动力系统 信号控制 通信系统设计 金融财会及生物医学 等多个领域 Simulink 还可以与 MATLAB 中的 DSP 工具箱 信号处理工具箱以及通信工 具箱等联合使用 进而实现软硬件的接口 从而成为实用的控制软件 2 2 使用 MATLAB 函数进行 FIR 数字滤波器的设计 设计指标 归一化通带截止频率 0 2 归一化阻带截止频率 0 4 通带最大衰减 1db 阻带最小衰减 47d 类型 FIR 低通 2 2 1 时窗函数设计法 13 根据阻带最小衰减 查看表 1 2 选择汉明窗 过渡带带宽为 MATLAB 程N 6 6 序如下 clear all Wp 0 2 pi Ws 0 4 pi B Ws Wp N ceil 6 6 pi B 1 n 0 1 N 1 a N 1 2 Wc Ws Wp 2 hd sin Wc n a eps pi n a eps w ham hamming N hn hd w ham freqz hn 1 求得滤波器的长度为 34 可知该滤波器类型为 II 型低通 频率响应如图 2 1 所示 实N 际的归一化通带截止频率为 0 247 阻带最小衰减为 50db 滤波器线性相位 图 2 1 使用窗函数法设计的 FIR 低通的频率响应 14 2 2 2 频率采样设计法 根据阻带最小衰减 可确定 m 1 过渡带带宽 B Ws Wp 0 2 由 N 20 取 N 21 令过渡带样值为 0 3 Wp 位于 n 3 处 MATLAB 程序如下 Bm 1 2 N 21 T1 0 3 a N 1 2 n 0 N 1 wl 2 pi n N Hrs 1 1 T1 zeros 1 15 T1 1 1 Hdr 1 1 0 0 Wd 0 0 2 0 2 1 k1 0 floor N 1 2 k2 floor N 1 2 1 N 1 angH a 2 pi k1 N a 2 pi k2 N H Hrs exp j angH h real ifft H N freqz h 1 频率响应如图 2 2 所示 实际的归一化通带截止频率为 0 15 阻带最小衰减为 50db 滤 波器类型为 I 型低通 图 2 2 使用频率采样法设计 FIR 低通滤波器的频率响应 15 2 2 3 等波纹最佳逼近设计法 等波纹最佳逼近法的 MATLAB 程序如下 wp 0 2 pi ws 0 4 pi Rp 1 As 47 a1 10 Rp 20 1 10 Rp 20 1 a2 10 As 20 rip a1 a2 f wp pi ws pi m 1 0 M f0 m0 w remezord f m rip hn remez M f0 m0 w freqz hn 1 使用等波纹最佳逼近法设计的 FIR 滤波器的滤波器的长度为 16 归一化通带截止频率为 0 20 阻带最小衰减为 43db 频率响应如图 2 3 所示 图 2 3 使用等波纹法设计 FIR 低通滤波器的频率响应 16 2 3 使用 FDATool 设计 FIR 数字滤波器 MATLAB 提供了功能齐全的滤波器设计 与信号处理交互式图形用户界面 Interactive Graphicla User Interface 主要包括 FDATool 和 SPTool 两种交互工具 其中 FDATool 主要用于数字滤波器的设计和分析 而 SPTool 不仅可以设计 分析滤波器 而 且可以对信号进行时域和频域进行分析 本次设计的硬件实现就是采用 FDATool 工具设 计的滤波器 在 MATLAB 命令窗口中 执行 FDATool 命令 就会启动 FDATool 滤 波器设计与分析工具 其图形界面如图 2 4 所示 图 2 4 FDATool 界面 Response type 选择低通 选中 FIR 类型 再选择等波纹 然后选择归一化频率 通带截 止频率选择 0 2 阻带截止频率选择 0 4 通带最小衰减选择 1db 阻带最小衰减选择 47db 点击 DESIGN FILTER 按键 即可设计 FIR 滤波器了 滤波器的频率响应和图 2 3 中相同 滤波器的系数如式 2 1 所示 2 1 26685 0 8 7 19873 0 9 6 097168 0 10 5 0085449 0 11 4 038574 0 12 3 042236 0 13 2 026367 0 14 1 0058594 0 15 0 hh hh hh hh hh hh hh hh 17 2 4 使用 Simulink 进行仿真 仿真原理 一个 50Hz 的正弦波和 450Hz 的正弦波相加得到受干扰的信号 然后通过 所设计的 FIR 低通滤波器滤出 仿真过程 打开 Simulink 新建一个 mdl 文件 然后将 3 3 节中设计的 FIR 滤波器转 换成一个 Simulink 模块 并拖入到新建的 mdl 文件中 然后在 Simulink Library 里找到 DSP 工具箱 拖出两个正选波模块 一个设置为 幅度为 1 频率为 50Hz 初始相位为 0 采样时间为 0 001s 每帧采样点数为 100 另一个除了频率为 450Hz 初始相位为 以外 其它均与第一个相同 再分别拖入频谱示波器和矢量示波器 频谱示波器缓2 冲区设为 512 缓冲输出设为 256 矢量示波器帧数设为 5 帧 最后在拖入相加模块 便 可以搭建模型了 连接方式如图 2 5 由于篇幅限制 本文只给出了输出信号波形及频谱 以及混杂有噪音的信号波形 具体如图 2 6 2 7 2 8 所示 可以看到 450Hz 的噪音已 经衰减到 45db 以上 所设计的滤波器较好的实现了滤波功能 图 2 5 Simulink 仿真 18 图 2 6 混有噪音的信号波形 图 2 7 输出的信号波形 图 2 8 输出的信号的频谱 19 第三章 EDA 技术与分布式算法 3 1 EDA 技术 3 1 1 EDA 技术简介 EDA 是 Electronic Design Automation 的缩写 意思是电子设计自动化 即利用计算 机自动完成电子系统的设计 EDA 技术是以计算机和微电子技术为先导 汇集了计算机 图形学 拓扑 逻辑学 微电子工艺与结构学和计算数学等多种计算机应用学科最新成 果的先进技术 EDA 技术作为现代电子设计技术的核心 通过功能强大的计算机和 EDA 工具软件平 台 对以硬件描述语言 HDL 为系统逻辑描述手段完成的设计文件 自动地完成逻辑编译 逻辑化简 逻辑分割 逻辑综合 以及逻辑优化和仿真测试 以至实现既定的电子线路 系统功能 3 1 2 QUARTUS II 软件介绍 QUARTUS II 是 ALTERA 公司在 21 世纪初推出的 FPGA CPLD 开发环境 是 ALTERA 前一代 FPGA CPLD 集成开发环境 MAX PLUS II 的更新换代产品 其功能强大 界面友好 使用简便 QUARTUS II 软件集成了 ALTERA 的 FPGA CPLD 开发流程中所 涉及的所有工具和第三方软件接口 图 3 1 给出了 QUARTUS II 软件的交互界面 20 图 3 1 QUARTUS II 软件的交互界面 QUARTUS II 具有一下特点 A 支持多时钟定时分析 Logic Lock基于块的设计 SOPC 可编程的片上系统 TM 内嵌 SignalTapII 逻辑分析仪和功率估计器等高级工具 B 易于引脚分配和时钟约束 C 强大的 HDL 综合能力 D 支持的器件种类多 利用 QUARTUS II 软件进行 FPGA CPLD 开发的流程如图 3 2 所示 图 3 2 FPGA CPLD 开发流程图 3 1 3 FPGA 介绍 可编程逻辑器件 PLD Programmable Logic Devices 是 ASIC Application Specific 21 Integrated Circuits 的一个重要分支 FPGA 属于复杂高密度的 PLD 器件 FPGA 使用了可编 程的查找表 Look Up Table LUT 结构 其中 LUT 是可编程的最小的逻辑构成单元 LUT 示 意图如图 3 3 所示 图 3 3 查找表结构图 由于设计人员可以将存储在片外的 EPPROM 或者计算机的配置数据控制加载到 FPGA 器件中进而实现在现场修改器件的逻辑功能 FPGA 得到了普遍的应用 下面以 CYLONEII 系列 FPGA 器件为例来介绍一下 FPGA 器件的结构 CYLONEII 系列 FPGA 器件是由美国 Altera 公司生产的中端产品 CYLONEII 系列 FPGA 器件采用了 90nm 工艺 片内逻辑单元数量最多可达 68416 个逻辑单元 片内存储器容量最多可达 1 1Mbts 用户可用引脚最多有 622 个 CYLONEII 系列 FPGA 器件嵌有乘法器 这些乘 法器可用于完成高速乘法操作 使得 CYLONEII 系列 FPGA 器件的数字信号处理能力得 到增强 CYLONEII 系列 FPGA 器件的速度等级有三个 6 7 和 8 其中 6 的速度最 快 CYLONEII 系列 FPGA 器件的内部资源是按行 列的方式呈二维分布 如图 3 4 所 示 这些资源主要包括逻辑阵列 M4k 存储器块 乘法器等 这些资源模块通过 FPGA 内部的各种连接通路连接起来 22 IOE PLLIOEPLL IOE PLLIOE 逻辑阵列 M4k内存块 逻辑阵列 乘法器 逻 辑 阵 列 M4k内存块 逻辑阵列 PLL 图 3 4 EP2C20 资源分布图 逻辑单元 Logic Element LE 是 FPGA 内部用于完成用户资源的最小单元 一个逻辑阵 列包含 16 个逻辑单元以及一些其他资源 一个逻辑单元主要有以下部件组成 一个 4 输 入的查找表 一个可编程的寄存器 一条进位链和一条寄存器级联链 逻辑单元结构图 如图 3 5 所示 时钟使能1 时钟使能0 时钟1 时钟0 时钟选择 逻辑 异步 复位 逻辑 IN0 IN1 IN3 IN2 进位逻辑 链输入 寄存 器级 联链 LUT 进位链 同步 加载 和复 位 D CLR EN Q 行连接 列连接 直接连接 本地连接 寄存器级链 输出 行连接 列连接 直接连接 图 3 5 逻辑单元结构图 CYLONEII 系列 FPGA 器件内部的存储器是以 M4k 存储器块的形式按列排列的 每 个 M4k 存储器块的大小为 4608bit M4k 存储器块包括输入 输出寄存器 输入寄存器用 于同步输入信号 输出寄存器在设计中增加一级流水线 使用输入 输出寄存器可以改善 电路的性能 M4k 存储器除了可以用作标准的存储器使用外 还可以被配置为移位寄存 23 器 先入先出寄存器 只读存储器等 CYLONEII 系列 FPGA 器件内部嵌有硬件乘法器 可以完成高速乘法运算操作 实 现许多数字信号处理运算如滤波 快速傅里叶变换 卷积 解相关等 CYLONEII 系列 FPGA 器件关于时钟控制的部分主要是全局时钟网络和锁相环 PLL 全局时钟网络负责把时钟分配到器件内部的各个单元 控制器件内部的所有资 源 锁相环可以完成分频 倍频 移相等关于时钟的基本操作 3 2 FPGA 设计方法 传统的数字系统设计一般是从选择具体的元器件开始 通过这些元器件进行逻辑电 路设计 完成系统中各独立功能模块的设计 再把这些模块连接起来 组装成整个硬件 系统 上述过程是自下而上的 这种设计过程的优点是符合硬件工程师的设计习惯 缺 点是在进行底层设计时缺乏对整个系统总体性能的把握 在整个系统设计完成后 如果 发现性能不能满足要求 修改起来比较困难 因而设计周期长 与上述设计过程相反 自顶向下的设计过程是在设计的最高层 把整个系统看成是 包含输入输出端口的单个模块 并在系统层次上对其性能进行描述 再通过系统仿真 对其性能进行优化 然后这个系统模块又可以进一步划分为各个子功能模块 再对每一 个子功能模块进行描述 同时进行相关的仿真 最后通过 FPGA 开发工具提供的逻辑综 合软件自动地综合到特定元器件上 从而完成设计工作 采用自顶向下的设计方法 可以从一开始就掌握要实现的系统的性能 再结合要实 现的系统的具体性能要求 通过调整 直接进行性能的优化 随着设计层次的向下的进 行 系统的性能参数将进一步得到细化 并随时根据需要进行调整 从而保证了设计的 正确性 缩短了设计的周期 而且随着系统的扩大 这种设计方法的优势更为明显 3 3 分布式算法 3 3 1 分布式算法基础 分布式算法 Distributed Arithmetic DA 是一项重要的 FPGA 技术 广泛地应用于计 算乘积和 3 1 1 0 N n nxncxcy 这种算法可用于滤波器 卷积 相关 DFT 等凡是有乘累加运算的地方 24 一个线性时不变网络的输出可用式 3 1 表示 假设为常量 为变量 对 nc nx 于有符号 DA 系统 可表示为 nx 3 2 b B b bB B nxnxnx2 2 1 0 将式 3 2 代入式 3 1 得 1 0 1 0 1 0 2 2 N n N n B b b bb B nxncnxncy 1 0 1 0 1 0 2 2 N n B b N n b b B B nxncnxnc 3 3 1 0 2 2 B b b b B B nxncfnxncf 其中 x n 为 B 1 位 称为位乘积 其中 b 0 B 1 函数 1 0 N n bb nxncnxncf 的实现方法是利用一个 LUT 实现映射 预先设定程序的 LUT 接收一个 N 位的 nxncf b 输入向量 输出为 各个映射都 1 1 0 Nxxxx bbbb nxncf b nxncf b 由相应的二次幂加权累加 最后得到一次滤波的结果 由上分析可知 分布式算法是将乘法运算转换成基于查找表结构的移位相加算法 从而实现多个乘法运算操作 在被乘数位数较少的情况下 相比直接的乘法器结构 这 种算法有明显的速度和算法优势 这种算法尤其是在乘法器资源很少的 FPGA 器件中有很 大的应用前景 3 3 2 并行的分布式算法 分布式算法有串行实现方式和并行实现方式 并行方式的算法结构如图 3 6 所示 图中 ROM 的输出和求和结果的输出都加上了虚线框 这些虚线框为流水线寄存器 上下 级流水线寄存器之间的数字电路按照时钟频率工作而不用考虑它们本身的延迟 这使得 整个系统的工作频率增加 从而加快了运算速度 但是这种并行结构增加了额外的 LUT 寄存器和加法器 当输入数据位宽较少时 比如 4 到 8 位 这种实现方式会有令人满意 的结果 25 图 3 6 并行 DA 结构 3 3 3 串行的分布式算法 串行方式不能有效地提高系统的处理速度 但是能够节省大量的资源 一个四阶的 FIR 滤波器的串行 DA 结构如图 3 7 所示 位移寄存器中存储着按先入先出顺序从高位到 低位排列的数据比特 每隔一个字长抽出一个抽头 这样 每个数据的低位到高位将会 相继移出到抽头 然后再对 ROM 进行寻址 得到一个部分积后移位累加 最终得到输出 结果 图 3 7 四阶 FIR 滤波器的串行 DA 结构 26 第四章 15 阶并行 FIR 数字滤波器的设计与仿真 4 1 顶层文件的设计 利用自顶向下设计方法 按照并行分布式算法 本文首先设计出了并行 FIR 数字滤波器的顶层文 件 其数据流向及结构示意图如图 4 1 所示 x n 预处理并行延时 预相加 查找表 移位相加加法器组输出处理 y n 图 4 1 并行 FIR 数据及结构图 顶层文件的 VHDL 代码如下 library ieee FIR 文件 Use ieee std logic 1164 all 27 entity filter is port xin in std logic vector 7 downto 0 输入端口 clk in std logic yout out std logic vector 15 downto 0 十六位输出 end filter architecture arc of filter is component reg is port xin in std logic vector 23 downto 0 clk in std logic yout out std logic vector 15 downto 0 end component component shiftadd is 移位相加 port z0 z1 z2 z3 z4 z5 z6 z7 in std logic vector 12 downto 0 clk in std logic y out std logic vector 23 downto 0 end component component firrom is 查找表 port y0 y1 y2 y3 y4 y5 y6 y7 in std logic vector 7 downto 0 clk in std logic z0 z1 z2 z3 z4 z5 z6 z7 out std logic vector 12 downto 0 end component component preadd is 预相加 port a0 a1 a2 a3 a4 a5 a6 a7 b0 b1 b2 b3 b4 b5 b6 b7 in std logic vector 7 downto 0 clk in std logic y0 y1 y2 y3 y4 y5 y6 y7 out std logic vector 7 downto 0 end component component shiftreg is 并行延时 port xin in std logic vector 7 downto 0 clk in std logic a0 a1 a2 a3 a4 a5 a6 a7 b0 b1 b2 b3 b4 b5 b6 b7 28 buffer std logic vector 7 downto 0 end component signal s std logic vector 23 downto 0 signal a0 a1 a2 a3 a4 a5 a6 a7 b0 b1 b2 b3 b4 b5 b6 b7 std logic vector 7 downto 0 signal y0 y1 y2 y3 y4 y5 y6 y7 std logic vector 7 downto 0 signal z0 z1 z2 z3 z4 z5 z6 z7 std logic vector 12 downto 0 begin u1 shiftreg port map xin xin clk clk a0 a0 a1 a1 a2 a2 a3 a3 a4 a4 a5 a5 a6 a6 a7 a7 b0 b0 b1 b1 b2 b2 b3 b3 b4 b4 b5 b5 b6 b6 b7 b7 u2 preadd port map a0 a0 a1 a1 a2 a2 a3 a3 a4 a4 a5 a5 a6 a6 a7 a7 b0 b0 b1 b1 b2 b2 b3 b3 b4 b4 b5 b5 b6 b6 b7 b7 clk c lk y0 y0 y1 y1 y2 y2 y3 y3 y4 y4 y5 y5 y6 y6 y7 y7 u3 firrom port map y0 y0 y1 y1 y2 y2 y3 y3 y4 y4 y5 y5 y6 y6 y7 y7 clk clk z0 z0 z1 z1 z2 z2 z3 z3 z4 z4 z5 z5 z6 z6 z7 z7 u4 shiftad port map z0 z0 z1 z1 z2 z2 z3 z3 z4 z4 z5 z5 z6 z6 z7 z7 clk clk y s u5 reg port map xin s clk clk yout yout end arc 4 2 并行 FIR 各个模块的设计 4 2 1 输入数据预处理模块 该模块用于将 A D 转换器输出的 8 位有符号数据转换成二进制补码形式 并进行锁 存 由于在计算机中采用的数据形式是二进制补码 为了仿真方便 在仿真时去掉了这 个模块 该模块的 VHDL 代码如下 library ieee use ieee s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论