基于VHDL的IIR数字滤波器的设计.doc_第1页
基于VHDL的IIR数字滤波器的设计.doc_第2页
基于VHDL的IIR数字滤波器的设计.doc_第3页
基于VHDL的IIR数字滤波器的设计.doc_第4页
基于VHDL的IIR数字滤波器的设计.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

毕业设计说明书 学生姓名学生姓名学学 号号170602045 院院 系系 物理与电子电气工程学院 专专 业业电子信息科学与技术 题题 目目基于 VHDL 的 IIR 数字滤波器的设计 指导教师指导教师 教授 硕士 2010年5月 淮阴师范学院毕业论文 设计 1 摘摘 要要 本课题采用一种基于 VHDL 的 IIR 数字滤波器的设计方案 首先分析了 IIR 数字滤 波器的原理及设计方法 然后通过 QUARTUS 的设计平台 采用自顶向下的模块化设计思 想将整个 IIR 数字滤波器分为 时序控制 延时 补码乘加和累加四个功能模块 分别 对各模块采用 VHDL 进行描述后 进行了仿真和综合 仿真结果表明 本课题所设计的 IIR 数字滤波器运算速度较快 系数改变灵活 有较好的参考价值 关键词 关键词 电子设计自动化 IIR 数字滤波器 无限长冲激响应 现场可编程门阵列 硬 件描述 Abstract A kind of IIR digital filter design method was introduced in the paper which is based on FPGA By used the design plant of QUARTUS we adopt blocking method named Top down and divide the entire IIR digital filter into four blocks which are Clock control Time delay Multiply addition and Progression After described with VHDL we do emulate and synthesis to each block The result shows that the introduced IIR digital filter runs fast and the coefficient changes agility It has high worth for consulting Keywords electronic design automation iir digital filter field programmable gate array very high speed integrated circuit hardware description language VHDL 淮阴师范学院毕业论文 设计 2 淮阴师范学院毕业论文 设计 3 目目 录录 1 序 言 3 2 IIR 数字滤波器及其硬件实现方法 3 2 1 IIR 数字滤波器概念 3 2 2 IIR 数字滤波器的硬件实现方案 5 3 EDA 技术和可编程逻辑器件 8 3 1 电子设计自动化 EDA 技术 8 3 2 可编程逻辑器件 9 3 3 硬件描述语言 VHDL 及数字系统设计方法 9 4 IIR 数字滤波器的设计与仿真结果分析 10 4 1 各模块的设计与仿真结果分析 10 4 2 IIR 数字滤波器的仿真与结果分析 14 结 束 语 18 参考文献 19 致 谢 20 附录 1 各模块 VHDL 程序 21 淮阴师范学院毕业论文 设计 4 1 1 序序 言言 随着 EDA 技术的发展和应用领域的扩大和深入 EDA 技术在电子信息 通信 自动控 制及计算机应用等领域的重要性日益突出 这些技术的使用使得现代电子产品的体积减 小 性能增强 集成化程度提高 与此同时其可编程能力也得以提高 在使用 EDA 进行 电子设计时 设计人员可按照 自顶向下 的设计方法 对整个系统进行方案设计和功 能划分 采用硬件描述语言 DHL 完成系统行为级设计 最后通过综合器和适配器生成 最终的目标器件 VHDL 语言是 EDA 设计中常用的一种 IEEE 标准语言 其具有覆盖面广 描述能力强 可读性好 支持大规模设计及逻辑单元利用等优点 因此受到越来越多的 电子工程师的青睐 本次设计采用 EDA 技术中的模块化设计思想 就 IIR 数字滤波器中的一些关键电路 进行设计 主要内容包括 时序控制模块 延时模块 补码乘加模块 累加模块和 IIR 数 字滤波器的顶层设计 分别对各模块采用 VHDL 进行描述后 进行了仿真和综合 取得了 较好的设计效果 实验结果表明 本课题所设计的 IIR 数字滤波器具有运算速度快 系数 改变灵活方便等特点 2 IIR2 IIR 数字滤波器及其硬件实现方法数字滤波器及其硬件实现方法 2 12 1 IIRIIR 数字滤波器概念数字滤波器概念 数字滤波器是完成信号滤波处理功能的 用有限精度算法实现的离散时间线性非时 变系统 输入一组数字量 通过运算输出的是另一组数字量 数字滤波器具有稳定性好 精度高 灵活性大等突出优点 随着数字技术的发展 用数字技术设计滤波器的功能越 来越受到人们的注意和广泛的应用 2 1 12 1 1 IIRIIR 数字滤波器的原理数字滤波器的原理 一个数字滤波器的系统函数可以表示为 zH 1 1 1 H z zX zY N j j j M i i i zb za 1 1 0 1 直接由得出表示输入输出关系的常系数线性差分方程为 zH 淮阴师范学院毕业论文 设计 5 1 1 2 ny M i i inxa 0 N j j jnyb 1 1 式中 为滤波系数 当均为零时 该滤波器为 FIR 数字滤波器 当不均为 i a 1 j b 1 j b 1 j b 零时 则为 IIR 数字滤波器 与 FIR 数字滤波器相比 IIR 数字滤波器可以用较低的阶数 获得高的选择性 所用的存储单元少 成本低 信号延迟小 并且 IIR 数字滤波器可以 借助于模拟滤波器的设计成果 设计工作量相对较小 为此 本文就 IIR 数字滤波器进 行相关讨论 2 1 22 1 2 IIRIIR 数字滤波器的基本结构数字滤波器的基本结构 IIR 数字滤波器有直接型 级联型和并联型三种基本结构 由 IIR 数字滤波器的 N 阶 差分方程 1 1 2 式可知 设 M N 2 则网络结构如图 1 1 所示 图 1 1 直接型结构 2 1 32 1 3 IIRIIR 数字滤波器的设计方法数字滤波器的设计方法 IIR 数字滤波器的设计方法通常有模拟转换法 零极点累试法和优化设计法 1 IIR 数字滤波器的模拟转换设计法 利用模拟滤波器成熟的理论和设计方法来设计 IIR 数字滤波器是经常使用的方法 设计过程是 按照技术要求设计一个模拟滤波器 得到滤波器的传输函数 再按一 sHa 定的转换关系将转换成数字滤波器的系统函数 将传输函数从 s 平面 sHa zH sHa 转移到 z 平面的方法有多种 但工程上常用的是脉冲响应不变法和双线性变换法 2 IIR 数字滤波器的零极点累试法 上述介绍的模拟转换设计法实际上是数字滤波器的一种间接设计方法 而且幅度特 性受到所选模拟滤波器特性的限制 例如巴特沃斯低通幅度特性是单调下降 而切比雪 夫低通特性带内或带外有上 下波动等 对于要求任意幅度特性的滤波器 则不适合采 用这种方法 下述介绍的在数字域直接设计 IIR 数字滤波器的设计方法 其特点是适合 设计任意幅度特性的滤波器 x n a0 y n z 1b0a1 z 1b1a2 淮阴师范学院毕业论文 设计 6 在 IIR 数字滤波器的直接设计法中零极点累试法较为常用 设单位脉冲响应的零极 点表达式为 AzH N k k M r r zd zc 1 1 1 1 1 1 1 1 3 按照 1 1 3 式 系统特性取决于系统零极点的分布 通过分析 我们知道系统极 点位置主要影响系统幅度特性峰值位置及其尖锐程度 零点位置主要影响系统幅度特性 的谷值位置及其凹下的程度 且通过零极点分析的几何作图法可以定性地画出其幅度特 性 上面的结论及方法提供了一种直接设计滤波器的方法 这种设计方法是根据其幅度 特性先确定零极点位置 再按照确定的零极点写出其系统函数 画出其幅度特性 并与 希望的进行比较 如不满足要求 可通过移动零极点位置或增加 减少 零极点 进行 修正 3 优化设计法 IIR 数字滤波器除模拟转换设计法和零极点累试法外 还有一种直接在频域或者时 域中进行设计 联立方程后需要计算机作辅助运算的方法 即所谓的优化设计法 2 22 2 IIRIIR 数字滤波器的硬件实现方案数字滤波器的硬件实现方案 滤波器的实现主要包括两大类 DSPTMS320 系列芯片的实现和 ISP 器件的实现 主要 包括 FPGA 和 CPLD 其中利用 DSPTMS320 系列芯片实现滤波时速度较慢 而利用 ISP 器 件实现时 其运算速度比 DSP 器件要快好多倍 FPGA 的实现包括其自带的核的实现方法 和自编程实现方法 核的实现方法虽然好用并且结构缜密 但一般情况下使用的权限都 会受到注册购买的限制 因此基于 FPGA 的自编程实现方法成了滤波器实现的首选 1 方案一 直接相乘累加式 对于二阶的 IIR 数字滤波器 其传递函数为 1 2 1 zH 2 1 1 0 2 2 1 10 1 zbzb zazaa 滤波器信号流图见图 1 1 在第 n 时刻 是当时的输入样本 是 n 时刻的 IIR nX nY 滤波器的输出 2 1 10 ndbndbnXnd 淮阴师范学院毕业论文 设计 7 1 2 2 210 2 1 andandandnY 因此 可以用硬件乘法器和硬件加法器来实现乘法和加法 由式 1 2 2 可以看出 按照 这种设计方法 要用到 5 个乘法器和 6 个加法器 对于 FPGA 的设计来说 这种方法的缺 点是比较耗费资源 2 方案二 基于 ROM 查表法的 VHDL 结构化设计 采用 ROM 查表的方法 主要是为了避免使用硬件乘法器 二阶 IIR 的一般表示形式为 1 2 3 211022110 nnnnnn ybybxaxaxay 其中是输入序列 是输出序列 和是系数 假设输入序列为 nX nY i a 1 j b nX 位 2 的补码 并以定点表示 并 1 对于可以表示为 w nX nX 1 1 0 2 w k n k k n xxnX 1 2 4 式中 k 表示的第位 上标为 0 的是符号位 因此可以定义一个 5bit 为 nXkw 变量的函数 F 为 1 2 5 2121 k n k n k n k n k n yyxxxF k n k n k n k n k n ybybxaxaxa 211022110 由此可以得到 1 2 6 1 1 2 b k k ny 2121 k n k n k n k n k n yyxxxF 0 2 0 1 0 2 0 1 0 nnnnn yyxxxF 由于 F 函数仅有 32 种可能取值 因此可以设计一个 32 b 位的 ROM 构成的如图 1 2 描述的基于 ROM 的实现结构 数据输入串行移入 SR1 和 SR2 由抽头处得到 每计算出一个值后 n x k n k n k n xxx 21 n y 便并行加载到 SR3 中 然后串行移入 SR4 并在抽头处得到和 ROM 的输入地址 k n y 1 k n y 2 由组成 k n k n k n k n k n yyxxx 2121 按此方法设计的优点是避免了占主要运算量的乘法运算 节省了 FPGA 的硬件资源 缺点与 FIR 滤波器利用 ROM 方法设计相同 即使用不够灵活 当系数发生变化时 更改 ROM 内的数据十分不便 特别是当阶数比较大时 ROM 内的数据较多 程序外的运算量也 很大 修改数据更为不方便 淮阴师范学院毕业论文 设计 8 图 1 2 基于 ROM 的实现结构 3 方案三 基于 ROM 查表法的改进型设计 此方法结合了直接相乘累加式和 ROM 查表法的优点 使得设计灵活 设计周期短 节省资源 二阶 IIR 的一般表示形式为 1 2 6 211022110 nnnnnn ybybxaxaxay 这里是输入序列 是输出序列 和是系数 设输入序列为 nX nY i a 1 j b nX 位 2 的补码 并以定点表示 并 1 对于可以表示为 w nX nX 1 1 0 2 w k n k k n xxnX 1 2 7 式中 k 表示的第位 上标为 0 的是符号位 因此可以定义一个 5bit 为变量 nXkw 的函数为 F 1 2 8 2121 k n k n k n k n k n yyxxxF k n k n k n k n k n ybybxaxaxa 211022110 同理可得 1 2 9 10210 kkkkk bbaaaF k n k n k n k n k bybyaxaxax 1201221100 由此可以得到 2 0 1 0 0 0 2 0 1 0 010210 1 1 bbaaaFbbaaaFy kkkkk b k k n 1 2 10 淮阴师范学院毕业论文 设计 9 令 可以推出 0 0 1 0 0 0 2 0 1 0 0 bbaaaF 1 2 11 2 10210 1 1 kkkkk b k k n bbaaaFy 从式 1 2 11 中可以看出 可以用一个五路 8 位 1 位乘法器在 8 个时钟周期内实现 上述算式 其加法可以直接调用软件的库实现 本方案实现结构如图 1 3 所示 图 1 3 中的作为 FPGA 接口上的 A D 器件的转换数据输入寄存器 各寄存器内的 nX 数据与各自的系数的最高位相乘后 送入累加器相加 并且其和向左移一位 以实现乘 2 运算 下一个时钟 寄存器内数据与其系数的次高位相乘 再送入累加器与其数据相加 再左移一位 接下的 6 个时钟进行类似的操作 第 8 个时钟后 累加器将其数据输出 即 并对累加器清零 同时将寄存器数据送入寄存器 将寄 nY 1 nX 2 nX nX 存器数据送入寄存器 同理 接着再进行下 1 nX 2 1 1 nYnYnYnY 一次运算 对上述三种方法相比较而言 方案三实现较为方便简洁 在节省了 FPGA 硬件资源的 同时 使得设计灵活 设计周期大为缩短 故本设计在方案三为基础上作改进后 来实 现 IIR 数字滤波器的 3 3 EDAEDA 技术和可编程逻辑器件技术和可编程逻辑器件 3 13 1 电子设计自动化电子设计自动化 EDAEDA 技术技术 EDA 是 Electronic Design Automation 的缩写 意为电子设计自动化 即利用计算 输入 X n X n 1 X n 2 Y n 2 Y n 1 b0kb1ka2ka1ka0k 输出 Y n 累 加 器 图 1 3 改进型实现框图 淮阴师范学院毕业论文 设计 10 机自动完成电子系统的设计 回顾近 30 年的电子设计技术的发展历程 可将 EDA 技术分 为三个阶段 七十年代为 CAD Computer Aide Design 阶段 这个阶段主要分别研制了一个个单 独的软件工具 主要有电路模拟 逻辑模拟 版图编辑 PCB 布局布线等 通过计算机的 使用 从而可以把设计人员从大量繁琐 重复的计算和绘图工作中解脱出来 八十年代为 CAE 阶段 这个阶段在集成电路与电子系统方法学 以及设计工具集成 方面取得了众多成果 与 CAD 相比 除了纯粹的图形绘制功能外 又增加了电路功能设 计和结构设计 并且通过电气连接网络表将两者结合在一起 实现了工程设计 九十年代为 EDA 阶段 尽管 CAD CAE 技术取得了巨大的成功 但在整个设计过程中 自动化和智能化程度还不高 各种 EDA 软件界面千差万别 学习实用困难直接影响到设 计环节间的衔接 基于以上不足 人们开始追求贯穿整个设计过程的自动化 即电子系 统设计自动化 3 23 2 可编程逻辑器件可编程逻辑器件 可编程阵列逻辑器件 PAL Programmable Array Logic 和通用阵列逻辑器件 GAL Generic Array Logic 都属于简单 PLD 随着技术的发展 简单 PLD 在集成度和性能 方面的局限性也暴露出来 其寄存器 I O 引脚 时钟资源的数目有限 没有内部互连 因此包括复杂可编程逻辑器件 CPLD Complex PLD 和现场可编程门阵列器件 FPGA Field Programmable Gate Array 在内的复杂 PLD 迅速发展起来 并向着高密度 高速度 低 功耗以及结构体系更灵活 适用范围更广阔的方向发展 FPGA 具备阵列型 PLD 的特点 结构又类似掩膜可编程门阵列 因而具有更高的集成 度和更强大的逻辑实现功能 使设计变得更加灵活和易实现 相对于 CPLD 它还可以将 配置数据存储在片外的 EPROM 或者计算机上 设计人员可以控制加载过程 在现场修改 器件的逻辑功能 即所谓的现场可编程 所以 FPGA 得到了更普遍的应用 3 33 3 硬件描述语言硬件描述语言 VHDLVHDL 及数字系统设计方法及数字系统设计方法 3 3 13 3 1 硬件描述语言硬件描述语言 VHDLVHDL 简介简介 硬件描述语言 Very High Speed Integrated Circuit Hardware Description Language VHDL 是一种用于设计硬件电子系统的计算机语言 包括系统行为级 寄存器 传输级和逻辑门级多个设计层次 支持结构 数据流 行为三种描述形式的混合描述 淮阴师范学院毕业论文 设计 11 因此 VHDL 几乎覆盖了以往各种硬件描述语言的功能 它主要用于描述数字系统的结构 行为 功能和接口 非常适用于可编程逻辑芯片的应用设计 与其它的 HDL 相比 VHDL 具有更强大的行为描述能力 从而决定了它成为系统设计领域最佳的硬件描述语言 3 3 23 3 2 利用利用 VHDLVHDL 设计数字系统设计数字系统 利用 VHDL 语言设计数字系统硬件电路 与传统的设计方法相比 具有以下优点 1 采用自顶向下 TOP DOWN 的设计方法 自顶向下是指从系统总体要求出发 在顶 层进行功能方框图的划分和结构设计 由于设计的主要仿真和调试过程在高层次上完成 这一方面有利于提高了设计的效率 2 降低了硬件电路的设计难度 在使用 VHDL 语言设计硬件电路时 可以免除编写逻 辑表达式或真值表的过程 使得设计难度大大下降 从而也缩短了设计周期 3 主要设计文件是用 VHDL 语言编写的源程序 在传统的硬件电路设计中 最后形成 的主要文件是电路原理图 而采用 VHDL 语言设计系统硬件电路时主要的设计文件是 VHDL 语言编写的源程序 4 方便 ASIC 移植 VHDL 语言的效率之一 就是如果你的设计是被综合到一个 FPGA 或 CPLD 的话 则可以使你设计的产品以最快的速度上市 当产品的产量达到相当的数量 时 采用 VHDL 进行的设计很容易转换成专用集成电路来实现 所以本次设计采用利用 VHDL 语言的数字系统设计方法 4 4 IIRIIR 数字滤波器的设计与仿真结果分析数字滤波器的设计与仿真结果分析 4 14 1 各模块的设计与仿真结果分析各模块的设计与仿真结果分析 本课题在实现方案三的基础上 结合参考文献 4 6 将 IIR 滤波器的硬件系统分为四 个模块 时序控制 延时 补码乘加和累加模块 以下就各个模块的实现及仿真作简要 的分析 4 1 14 1 1 时序控制模块的设计与仿真结果分析时序控制模块的设计与仿真结果分析 时序控制模块主要用来产生对其它模块的时序控制信号 模块的符号如图 3 1 a 所 示 输入信号 CLK 是时钟信号 RES 是复位信号 CLK REG 及 CLK REGBT 是输出信号 淮阴师范学院毕业论文 设计 12 图 3 1 a 时序控制模块图 图 3 1 b 时序控制模块仿真图 时序控制模块仿真如图 3 2 b 所示 其中 counter 为程序内部计数信号 在 clk 的 上升延到来时 counter 以 6 个时钟为周期开始进行计数 clk regbt 每隔 6 个时钟输出 一个低电平 clk reg 则每隔 6 个时钟后输出一个高电平 输出的两个时钟信号正好控制 延时模块 补码乘加模块和累加模块的模块的运行 符合设计要求 时序控制模块程序 见附录 1 4 1 24 1 2 延时模块的设计与仿真结果分析延时模块的设计与仿真结果分析 延时模块的符号如图 3 2 a 所示 其主要作用是在 clk 时钟作用下将差分方程的各 值延迟一个时钟 以实现一次延时运算 即当输入为 xn 和 yn 时 经过一次延时后 其输出分别为 x n 1 和 y n 1 其中 yout 是反馈输入信号 xn 是输入信号 程序见附录 二 淮阴师范学院毕业论文 设计 13 3 2 b 延时模块仿真图 延时模块仿真图如图 3 2 b 所示 由图 3 4 可以看出当输入的 xn yout 都 为时 在时钟信号上升沿的作用下产生延时 经第一个时钟后 5 4 3 2 1 0 x0 x1 x2 y0 y1 的值分别为 10 0 1 0 经第二个时钟后 x0 x1 x2 y0 y1 的 值分别为 2 1 0 2 1 经第三个时钟后 x0 x1 x2 y0 y1 的值分别为 3 2 1 3 2 经第四个时钟后 由此可见该模块仿真值正确 延时模块程序见 附录 1 4 1 34 1 3 补码乘加模块的设计与仿真结果分析补码乘加模块的设计与仿真结果分析 补码乘加模块主要用来实现输入序列 与系数 分别相乘后再相加 nX nY i a i b 的过程 即实现的算法 为了避免过多地使用 211022110 nnnnnn ybybxaxaxay 乘法器 本设计中乘加单元 MAC 的乘法器采用阵列乘法器 以提高运算速度 由于 QUARTUS 的 LPM 库中乘法运算为无符号数的阵列乘法 所以使用时需要先将两个补码乘 数转换为无符号数相乘后 再将乘积转换为补码乘积输出 每个二阶节完成一次运算共 需要 6 个时钟周期 而且需采用各自独立的 MAC 实现两级流水线结构 即每个数据经过 两个二阶节输出只需要 6 个时钟周期 模块的符号如图 3 3 a 所示 淮阴师范学院毕业论文 设计 14 图 3 3 a 补码乘加模块图 图 3 3 b 补码乘加模块仿真图 补码乘加模块仿真图如图3 5所示 clk regbt及clk reg为输入时钟 由时序控制模 块提供 为系数 x0 x1 x2 y0 y1为输入信号 yout为输出信号 图3 3 b i a 1 j b 中75为x0 x1 x2 y0 y1的值15和系数 相乘后再相加的结果 完成了补码乘加 i a 1 j b 的功能 补码乘加模块程序见附录1 4 1 44 1 4 累加模块的设计与仿真结果分析累加模块的设计与仿真结果分析 补码乘加模块所输出的信号送入累加器后 与寄存于累加器中的上一步计算的中间 结果相加 最后将此步的计算结果经由输出引脚输出 所得信号即为最终结果 即该模 块主要实现 youtput yout youtput n 1 的算法 模块的符号如图 3 4 a 所示 淮阴师范学院毕业论文 设计 15 图 3 4 a 累加模块图 图 3 4 b 累加模块仿真图 累加模块仿真图如图3 4 b 其中res为复位信号 clk为时钟信号 yout为输入信 号 由补码乘加模块的输出信号yout提供 由图中可以看出当输入信号为yout 输出为youtput 实现了累加的功能 符合设计要求 累加模 5 4 3 2 1 0 15 10 6 3 1 0 块程序见附录1 4 1 54 1 5 顶层模块设计顶层模块设计 顶层模块设计采用了原理图输入方法 原理图输入方式非常直观 便于信号观察和 电路的调节 图 3 5 顶层模块图 本课题设计的顶层文件名为 iir gdf 设计生成的逻辑符号如图 3 5 所示 顶层模块 设计程序见附录 1 淮阴师范学院毕业论文 设计 16 4 24 2 IIRIIR 数字滤波器的仿真与结果分析数字滤波器的仿真与结果分析 4 2 14 2 1 IIRIIR 数字滤波器的系统设计数字滤波器的系统设计 IIR 数字滤波器顶层原理图如图 3 6 所示 为了便于理解整个系统的设计 现将系统的运行过程进行说明 图 3 6 IIR 数字滤波器顶层原理图 系统先开始处于初始状态 当清零信号为 1 时 对整个系统进行清零 在清零信 号为 0 的前提 时序控制模块在时钟 clk 上升沿的作用下产生两个信号 CLK REG 及 CLK REGBT 其中 CLK REG 信号用来作为延时模块 补码乘加模块和累加模块的输入时钟 CLK REGBT 每隔 6 个时钟产生一个高电平作为这三个模块的复位信号 延时模块在接收到 CLK REG 高电平信号时清零输出端 接收到低电平时 在 CLK REGBT 上升沿的作用下对输 入信号进行延时 以实现一次延时运算 而后将延时信号输出 送给补码乘加模块 补 码乘加模块在接收延时信号的同时也接收读者输入的系数信号 在 CLK REGBT 上升沿的 作用下实现系数和延时信号的补码乘加运算 而此步骤需要 6 个时钟来完成 正好与时 序控制模块的输出信号 CLK REGBT 相一致 补码乘加模块的输出一部分送入延时模块以 实现信号的反馈 另一部分则送入到累加模块 在累加模块中进行结果累加后输出 得 到最终结果 4 2 24 2 2 IIRIIR 数字滤波器的系统仿真与结果分析数字滤波器的系统仿真与结果分析 在各模块编译通过后将各模块进行了综合 针对不同的输入信号和不同的输入系数 淮阴师范学院毕业论文 设计 17 对 IIR 数字滤波器进行了仿真 仿真波形如图 3 7 所示 并将仿真值和计算值进行了比 较 如表 3 2 1 中所示 a b c 图 3 7 IIR 数字滤波器仿真图 淮阴师范学院毕业论文 设计 18 表 3 2 1 滤波后输出的数据 输入数据 Xn 0 1 2 3 4 5 a0 a1 a2 b0 b1 1 计算值 01411244780 仿真值 01411254369 输入数据 Xn 0 1 0 1 0 1 a0 a1 a2 b0 b1 1 计算值 012581524 仿真值 012591523 输入数据 Xn 0 1 0 1 0 1 a0 2 a1 a2 b0 b1 1 计算值 0238142234 仿真值 0249172741 由表 3 2 1 可见 仿真值结果正确 只是与真值之间存在一定的误差 仿真值越大 时误差越大 这是由于有限精度算法所引起的误差 经累加器累加后使得误差变得越来 越大 要解决这一问题可以通过增加二进制位数来提高系统的运算精度 4 2 34 2 3 高阶高阶 IIRIIR 数字滤波器的实现数字滤波器的实现 要实现一个高阶 IIR 数字滤波器 如果采用直接型结构实现 需用的乘法器和延迟 单元相对较多 而且分子和分母的系数相差较大 需要较多的二进制位数才能实现相应 的精度要求 如果采用二阶节级联实现 一方面各基本节的零点 极点可以很方便地单 独进行调整 另一方面可以降低对二进制数位数的要求 以实现一个四阶 IIR 数字滤波 器为例 可以通过两个二阶 IIR 数字滤波器级联的方式来实现较为简洁 图 3 8 给出了 一个四阶 IIR 数字滤波器实现的原理图 具体的工作原理与二阶 IIR 数字滤波器类似 在此本节即不再细述 当然 更高阶的 IIR 数字滤波器的实现方法与四阶滤波器的实现方法类似 只需将 多个二阶 IIR 数字滤波器进行级联 即可实现 淮阴师范学院毕业论文 设计 19 图 3 8 四阶 IIR 数字滤波其的顶层原理 淮阴师范学院毕业论文 设计 20 结结 束束 语语 为期三个月的毕业设计即将结束 在这期间我经历了从查资料 分析课题到学习软 件 设计程序 调试 总结经验教训及书写毕业论文的过程 本课题采用一种基于 VHDL 的 IIR 数字滤波器的设计方案 首先分析了 IIR 数字滤波 器的原理及设计方法 然后通过 QUARTUS 的设计平台 采用模块化 层次化的设计思想 将整个 IIR 数字滤波器分为四个功能模块 时序控制模块 延时模块 补码乘加模块 累加模块 分别对各模块采用语言 VHDL 进行描述后 进行了仿真和综合 仿真结果表明 本课题所设计的 IIR 数字滤波器运算速度较快 但由于有限精度算法问题致使仿真结果 存在一定的误差 针对这一问题可以通过增加二进制位数来提高系统的运算精度 由于 毕业设计即将结束 没有时间继续完善本课题所实现的 IIR 数字滤波器的性能 在这一 方面 滤波器的性能有待提高 淮阴师范学院毕业论文 设计 21 参考文献参考文献 1 刘凌 胡永生译 数字信号处理的 FPGA 实现 M 北京 清华大学出版社 2003 2 丁玉美 高西全 数字信号处理 M 西安 西安电子科技大学出版社 2004 3 潘松 黄继业 EDA 技术实用教程 M 北京 科学出版社 2000 4 潘松 王国栋 VHDL 实用教程 M 成都 电子科技大学出版社 2001 5 倪向东 基于 FPGA 的四阶 IIR 数字滤波器 J 电子技术应用 2003 6 王卫兵 高阶 IIR 数字滤波器的 FPGA 描述 J 电子元器件 2005 3 4 7 黄任 VHDL 入门 解惑 经典实例 经验总结 M 北京 北京航空航天出版社 2005 8 北京理工大学 ASIC 研究所 VHDL 语言 100 例详解 M 北京 清华大学出版社 1999 9 Joseph Evans Efficient IIR Filter Architectures Suitable for FPGA M New York Plenum 2006 淮阴师范学院毕业论文 设计 22 致致 谢谢 本文是在导师李正教授的精心指导和严格要求下完成的 从选题到论文的完成 都 凝聚着李正老师的辛劳和汗水 他在我这三个月的毕业设计期间给了我很多无微不至的 关怀 从 IIR 数字滤波器的理论知识到滤波器的实现方法都有李老师孜孜不倦的教诲 在李老师的帮助下本次毕业设计才能得意顺利完成 李老师渊博的知识 严谨科学的治 学态度和工作作风将给我以后的学习和工作起着模范和激励的作用 在此对李正老师表 示深深的敬意和衷心的感谢 此外 我在毕业设计期间还得到许多老师 同学 朋友的帮助 在此亦表示衷心的 感谢 淮阴师范学院毕业论文 设计 23 附录附录 1 1 各模块各模块 VHDLVHDL 程序程序 时序控制模块程序 library ieee use ieee std logic 1164 all use ieee std logic arith all use ieee std logic unsigned all entity control is port clk res in std logic clk reg clk regbt out std logic end architecture bhv of control is signal counter count bt integer signal clk en std logic begin clk regbt not clk and clk en clk reg not clk and not clk en process clk res begin if res 1 then counter 0 count bt 0 elsif clk event and clk 1 then if counter 6 then clk en 1 counter counter 1 count bt count bt 1 else counter 0 count bt 0 clk en 0 end if end if end process end bhv 淮阴师范学院毕业论文 设计 24 延时模块程序 library ieee use ieee std logic 1164 all use ieee std logic unsigned all use ieee std logic arith all entity delay is port clk in std logic res in std logic xn in std logic vector 4 downto 0 yout in std logic vector 8 downto 0 x0 x1 x2 out std logic vector 4 downto 0 y0 y1 out std logic vector 8 downto 0 end delay architecture bhv of delay is signal reg x0 reg x1 reg x2 std logic vector 4 downto 0 signal reg y0 reg y1 std logic vector 8 downto 0 begin process res clk begin if res 1 then reg x0 00000 reg x1 00000 reg x2 00000 reg y0 000000000 reg y1 000000000 elsif clk event and clk 1 then reg x2 reg x1 reg x1 reg x0 reg x0 xn reg y1 reg y0 reg y0 yout 实现延时 end if x0 reg x0 x1 reg x1 x2 reg x2 y0 reg y0 y1 reg y1 end process end bhv 淮阴师范学院毕业论文 设计 25 补码乘加模块程序 library ieee use ieee std logic 1164 all use ieee std logic arith all use ieee std logic unsigned all entity smultadd1 is port clk regbt clk reg in std logic a0 a1 a2 b0 b1 x0 x1 x2 in std logic vector 4 downto 0 y0 y1 in std logic vector 8 downto 0 yout out std logic vector 8 downto 0 end smultadd1 architecture bhv of smultadd1 is signal tan tbn tp2n std logic signal cnt std logic vector 2 downto 0 signal ta tb taa tbb std logic vector 3 downto 0 signal tmpa tmpb std logic vector 4 downto 0 signal tp tpp tppp std logic vector 7 downto 0 signal ytmp p std logic vector 8 downto 0 begin tmpa 0 tmpb 0 ta tmpa 3 downto 0 淮阴师范学院毕业论文 设计 26 tb tmpb 3 downto 0 tan tmpa 4 tbn tmpb 4 taa not ta 1 when tan 1 else ta 将输入转换为补码 tbb not tb 1 when tbn 1 else tb tp2n tan xor tbn tp taa tbb 完成补码相乘运算 tpp not tp 1 when tp2n 1 else tp p 0 when tmpb 00000 else tp2n process clk reg clk regbt begin if clk reg 1 then cnt 000 ytmp 0 elsif clk regbt event and clk regbt 1 then if cnt 5 then cnt cnt 1 ytmp ytmp p 完成补码相乘后的相加运算 elsif cnt 5 then if ytmp 8 1 then tppp not ytmp 7 downto 0 1 yout 7 downto 0 tppp yout 8 ytmp 8 else tppp ytmp 7 downto 0 yout 7 downto 0 tppp yout 8 ytmp 8 end if end if end if end process end bhv 淮阴师范学院毕业论文 设计 27 累加模块程序 library ieee use ieee std logic 1164 all use ieee std logic unsigned all use ieee std logic arith all entity addyn is port clk in std logic res in std logic yout in std logic vector 8 downto 0 youtput out std logic vector 8 downto 0 end addyn architecture bhv of addyn is signal y out y ou std logic vector 8 downto

温馨提示

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

评论

0/150

提交评论