1、 1 草鱼 FPGA 课程设计报告 草鱼 草鱼 草鱼 草鱼 设计题目 : p ork基于 FPGA的 FIR滤波器设计 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼草鱼 专 草鱼 草鱼 草鱼 草鱼业 : pork信息类 草鱼 班 草鱼 草鱼 草鱼 草鱼级 : pork信息 094班 草鱼 学 草鱼 草鱼 草鱼 草鱼号 : pork200900484425 草鱼 姓 草鱼 草鱼 草鱼 草鱼名 : pork 草鱼草鱼 指导教师 : pork杨艳 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 2013 年 1 月 草鱼 草鱼 草鱼 草鱼 基于
2、 FPGA 的 FIR 滤波器的设计报告 草鱼 2 草鱼 草鱼 目 草鱼录 草鱼 1 草鱼 概述 3 草鱼 2 草鱼 课程设计要求 4 草鱼 3 草鱼 设计内容 5 草鱼 3.1 课程设计内容 5 草鱼 3.1.1 草鱼 设计题目 5 草鱼 3.1.2 草鱼 设计要求 5 草鱼 3.2 草鱼 设计方案的确 定 .6 草鱼 3.2.1 滤波器的设计方法 .6 草鱼 3.2.2 草鱼 滤波器设计实现方法 .7 草鱼 3.2.3 方案确定 .8 草鱼 3.3 草鱼 设计方案的实现 .8 草鱼 3.3.1 利用 FDATool 工具设计 FIR 数字滤波器 .8 草鱼 3.3.2 草鱼 FIR 数字滤
3、波器的 FPGA 实现 .12 草鱼 3.4 草鱼 仿真测试与分析 .15 草鱼 4 草鱼 心得体会 .17 草鱼 5 草鱼 参考文献 . 17 草鱼 草鱼 草鱼 草鱼 1 草鱼 概 草鱼 述 草鱼 我们 学生 通过这次的课设 深入理解和消化 了 基本理论 、 pork进一步提高综合应用能力并且锻炼独立解决问题的能力 , 鲤鱼 我们将数字信号处理 、 pork集成电路原理与应用和 FPGA 系统设3 计与应用几门课程融合在一起 综合应用设计一个实用的数字 FIR 滤波器 。 草鱼草鱼 本报告中首先讲解了这次设计的具体内容 , 鲤鱼 以及所要求 的数字 FIR 滤波器的技术指标 。 草鱼 然后
4、,鲤鱼 数字滤波器的一些设计方法 , 鲤鱼 并具体确定我这次设计所用的设计方案 。 草鱼草鱼 滤波器在 matlab 中的设计方法应用 。 草鱼 通过 matlab 得到所需滤波器的具体参数 h( n) , 鲤鱼 草鱼 然后用这些所设计的参数 , 鲤鱼 通过 Quartus 草鱼 ii 工具编程具体实现滤波器功能 。 草鱼草鱼 这次滤波器实现过程中 , 鲤鱼 用到以下小模块 : pork草鱼 延时器 , 鲤鱼 加法器 , 鲤鱼 乘法器 , 鲤鱼 减法器 。 草鱼草鱼 报告中有具体的 VHDL 源码程序 。 草鱼 仿真测试结果 。 草鱼草鱼 草鱼 草鱼 草鱼 草鱼 草 鱼 草鱼 草鱼 草鱼 草鱼
5、 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 4 草鱼 草鱼 草鱼 草鱼 2 草鱼课程设计要求及注意事项 草鱼 1 草鱼 设计过程以小组为单位 , 鲤鱼 各组设一个组长 , 鲤鱼 负责组织和协调本小组的讨论 、 pork任务分工等 ;por k草鱼 2 草鱼 设计过程必须在本组内独立完成 , 鲤鱼 不得跨组参考或抄袭 , 鲤鱼 避免方案出现雷同 ; por k草鱼 3 草鱼 设计书一律采用 专用报告纸 , 鲤鱼 用统一封面装订 ; por k草鱼 4 草鱼 课程设计原则上在 3 周内做完 ; por k草鱼 5 草鱼 最后一周周五进行优秀设计方案评选 , 鲤鱼
6、 在各组推选代表进行方案介绍的基础上 , 鲤鱼 推选出2-3 个优秀设计方案 。 草鱼 草鱼 6 草鱼 学有余力的学生在完成必做设计内容的基础上 , 鲤鱼 可对内容 进一步 展开设计 , 鲤鱼 以提高综合应用能力 , 鲤鱼 锻炼独立解决问题的能力 。 草鱼草鱼 草鱼 3 草鱼课程设计内容 草鱼 3.1 草鱼课程设计题目及要求 草鱼 草鱼 3.1.1 草鱼设计题目 : pork基于 FPGA 的 FIR 滤波器设计 草鱼 草鱼 3.1.2 草鱼设计要求 草鱼 利用所学知识 , 鲤鱼 采用 MATLAB和 FPGA 相结合完成 FIR 滤波器的设 计仿真 。 草鱼 采用直接法或分布式算法实现 FI
7、R 数字滤波器 , 鲤鱼 了解 两种 算 法 的优缺点 , 鲤鱼 选择其中一种算法 , 鲤鱼 得出用它来实现FIR 滤波器的硬件结构 , 鲤鱼 对其实现方式进行研究 , 鲤鱼 分别采用合适的方法来设计 , 鲤鱼 最后利 用 FPGA器件实现 FIR 数字滤波器的硬件电路 , 鲤鱼 并用 Matlab 对实现的结果进行仿真分析 。 草鱼 草鱼 设计指标 : pork草鱼 1)系统采样频率 : pork10KHz 草鱼草鱼 2)通带边缘频率 : pork1KHz 草鱼 3)阻带边缘频率 : pork2KHz 草鱼 5 4)通带最大衰减 : pork1dB 草鱼 5)阻带 最小衰减 : pork47
8、dB 草鱼 6)类型 : porkFIR 低通 草鱼 7)输入序列位宽为 8 位的有符号数(最高位为符号位) ; pork草鱼 8)输出序列位宽为 16 位的有符号数(最高位为符号位) 。 草鱼草鱼 草鱼 3.2 草鱼设计方案的确定 草鱼 3.2.1 滤波器的设计方法 : pork草鱼 一般可分为时窗函数法和等波纹设计法 。 草鱼草鱼 时窗函数法一般设计步骤如下 : pork草鱼 A. 草鱼 根据所需设计的数字滤波器类型(低通 、 pork高通 、 pork带通 、 pork带阻) , 鲤鱼 确定线性相位数字滤波器类型 。 草鱼草鱼 B. 草鱼 根据滤 波器阻带衰减 s , 鲤鱼 选择窗函数
9、)(nw 的类型 , 鲤鱼 根据过渡带宽度确定时窗函数的长度 N ,并根据线性相位条件进行修正 。 草鱼草鱼 C. 草鱼 确定理想数字滤波器的频率响应函数 ()( ) ( ) djwjwddH e H w e , 鲤鱼 其中 ()dHw为幅度特性函数 , 鲤鱼 ()dw 为相位特性函数 。 草鱼草鱼 D. 草鱼 计算理想滤波器的单位脉冲响应 ()dhn, 鲤鱼 即 1( ) ( )2 jw jw nddh n H e e d w 。 草鱼草鱼 E. 草鱼 加窗得到设计结果 ()hn , 鲤鱼 即 ( ) ( ) ( )dh n h n w n 。 草鱼草鱼 等波纹设计一般步骤如下 : pork
10、草鱼 A.根据滤波器的设计指标要求 : por k边界频率 、 por k通带最大衰减 p 、 por k阻带最小衰减 s 等 , 鲤鱼 草鱼 计滤波器的长度 , 鲤鱼 并确定幅度误差加权函数 。 草鱼草鱼 B.采用雷米兹交替算法 , 鲤鱼 获得所设计的滤波器的单位脉冲响应 )(nh 草鱼 3.2.2 草鱼滤波器设计实现方法 草鱼 一般有线性相位 FIR 直接型结构和分布式算法的设计 。 草鱼草鱼 3.2.3 方案确定 草鱼 经过多种方案的比较 , 鲤鱼 本次设计最终的方案是 : pork等波纹法的改进的直接型结构 FIR 数字滤波器 草鱼 6 利用 MATLAB 提供的 FDATOOL 滤波
11、器设计工具 , 鲤鱼 采用等波纹法的设计 。 草 鱼设计的实现为线性相位 FIR 滤波器的直接结构 。 草鱼草鱼 草鱼 3.3 草鱼 方案实现 草鱼 3.3.1 草鱼利 用 FDATool 工具 设计 FIR 数字滤波器 草鱼 FIR 滤波器设计系数的确定 草鱼 等波纹法 低通滤波器 : pork草鱼 阶数 : pork15 草鱼 草鱼 采样频率 : pork10k 草鱼 草鱼 通带频率 : pork1k 草鱼 草鱼 草鱼 阻带频率 : pork2k 草鱼 通带衰减 1db 草鱼 草鱼 草鱼 阻带衰减 : pork47db 草鱼 滤波器类型 : pork等波纹 FIR 草鱼 草鱼 滤波器幅频响
12、应 草鱼 草鱼 滤波器相频响应 草鱼 7 草鱼 草鱼 草鱼 草鱼 草鱼 滤波器系数 草鱼 草鱼 草鱼 导出后的系数 草鱼 Num*( 26) 草鱼 Columns 草鱼 1 草鱼 through 草鱼 9 草鱼 (括号内指在 FPGA 中不带负号的具体移位实现 , 鲤鱼 )草鱼 草鱼 草鱼 草鱼 草鱼 -0.5695(右移 1 位) 草鱼 草鱼 草鱼 -1.4400(原数 +右移 1 位) 草鱼 草鱼 草鱼 -2.0498(左移 1 位) 草鱼 草鱼 草鱼 -1.1969(原数 +右移 2 位) 草鱼 草鱼 草鱼 草鱼 2.0784(左移 1 位) 草鱼 草鱼 草鱼 草鱼 7.5634(左移
13、2 位 +左移 1+原数 +右移 1 位) 草鱼 草鱼 草鱼 13.5214(左移 3 位 +左移 2 位 +原数 +右移 1 位) 草鱼 草鱼 草鱼 17.4256(左移 4 位 +原数 +右移 1 位) 草鱼 草鱼 草鱼 17.4256 草鱼 8 草鱼 草鱼 草鱼 Columns 草鱼 10 草鱼 through 草鱼 16 草鱼草鱼 草鱼 草鱼 草鱼 草鱼 13.5214 草鱼 草鱼 草鱼 草鱼 7.5634 草鱼 草鱼 草鱼 草鱼 2.0784 草鱼 草鱼 草鱼 -1.1969 草鱼 草鱼 草鱼 -2.0498 草鱼 草鱼 草鱼 -1.4400 草鱼 草鱼 草鱼 -0.5695 草鱼
14、草鱼 草鱼 3.3.2 草鱼FIR 数字滤波器的 FPGA 实现 草鱼 草鱼 一 , 鲤鱼 工程实现概述 草鱼 工程设计所用的模块有 : por k草鱼 顶层原理图文件 : por k fir.qdf。 草鱼草鱼 底层 vhdl 文件 : por k 延时器 : por ksuoc8。 草鱼草鱼 实现系数相乘的 mult0mult7 草鱼 。 草鱼草鱼 加法器 : por kadd889, 鲤鱼 add41415, 鲤鱼 add51516, 鲤鱼 草鱼 减法器 : por ksub16 草鱼 直接型结构的 FPGA 实现 。 草鱼 顶层原理图如下 : por k草鱼 9 草鱼 草鱼 我的原理说
15、明是 根据上面原理图的设计顺序逐步进行的 。 草鱼 草鱼 1 草鱼 寄存器(延时器) 。 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 原理图上标有 suoc8 的器件 。 草鱼 输入 8 位数据 , 鲤鱼 通过 suoc8 的 D 触发寄存器 , 鲤鱼 达到延时的作用 。 草鱼 草鱼 2 草鱼 第一级加法器 草鱼 草鱼 草鱼 草鱼 草鱼 数据通过 add889,就是 8 位数字输入 , 鲤鱼 9 位数字输出加法器 , 鲤鱼 完成第一级相加运算 , 鲤鱼 因为本题是 16 阶 FIR 数字滤波器 , 鲤鱼 它的滤波系数有对称的关系 , 鲤鱼 所以采用上面的第一级加法器 , 鲤鱼 达到简化运算的效果 。
16、草鱼 草鱼 3 草鱼 乘法器 草鱼 乘法器用来将数据乘以由 matlab 计算得到的滤波系数 , 鲤鱼 各系数的结果是通过移位运算得到 , 鲤鱼 节约了硬件乘法器资源 。 草鱼草鱼 由系数可知 : pork 草鱼 草鱼 -0.5695(右移 1 位) 草鱼 草鱼 草鱼 -1.4400(原数 +右移 1 位) 草鱼 草鱼 草鱼 -2.0498(左移 1 位) 草鱼 草鱼 草鱼 -1.1969(原数 +右移 2 位) 草鱼 草鱼 草鱼 草鱼 2.0784(左移 1 位) 草鱼 草鱼 草鱼 草鱼 7.5634(左移 2 位 +左移 1+原数 +右移 1 位) 草鱼 草鱼 草鱼 13.5214(左移
17、3 位 +左移 2 位 +原数 +右移 1 位) 草鱼 草鱼 草鱼 17.4256(左移 4 位 +原数+右移 1 位) 前 4 个全为负 , 鲤鱼 后 4 个全为正 。 草鱼 因此前四个相加 , 鲤鱼 后四个相加 , 鲤鱼 再用后四个的10 结果减去前四个结果 , 鲤鱼 即可得到有负号相乘的最终结果 。 草鱼草鱼 但 在乘法器设计时暂时没有考虑符号 , 鲤鱼 符号问题由下面的减法器实现 。 草鱼草鱼 4 草鱼 第二级加 草鱼 第二级加法器 为 add141415。 草鱼 Add141415 就是说 14 位数据加 14 位数据输出 15 位数据 。草鱼草鱼 在乘法级时 , 鲤鱼 我已将数据
18、全都整理成 14 位输出 , 鲤鱼 所以这级可用同一类型加法器 。 草鱼草 鱼 5 草鱼 第三级加 草鱼 与上一级大体相同的原理 , 鲤鱼 加法器为 add151516。 草鱼 草鱼 6 草鱼 减法器输出 草鱼 输出通过 减法器 sub16: pork16 位数减去 16 位数结果输出 16 位数 。 草鱼 由于是向减 , 鲤鱼 不会有溢出现象 , 鲤鱼 因此没做符号位的扩展 。 草鱼 到此 , 鲤鱼 整个 FIR 数字滤波器设计完毕 , 鲤鱼 下面详细说明各个部分的具体实现 。 草鱼 草鱼 草鱼 二 , 鲤鱼 详细说明 草鱼草鱼 草鱼 我的说明是根据上面的概要逐一展开的 。 草鱼 草鱼 我的设计是先编写各个功能的 vhdl 源文件 , 鲤鱼 再生成功能模块 , 鲤鱼 最后在顶层 用原理图的设计方法连线 , 鲤鱼 组成整个系统 。 草鱼 草鱼 草鱼 1 草鱼 寄存器(延时器) 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 设计中用 D 触发器组成寄存器 , 鲤鱼 实现寄存功能 。 草鱼 这里用来寄存一组 8 位的二进制数据 。草鱼 草鱼 实现功能 : por k草鱼 在 CP 正跳沿前接受输入信号 , 鲤鱼 正跳沿时触发翻转 , 鲤鱼 正跳沿后输入即被封锁 。 草鱼 草鱼 源文件 : por k草鱼 LIBRARY 草鱼 IEEE;por k草鱼