1、 毕 业 论 文题 目: 低通滤波器的 FPGA 实现 院: 湖南工程学院应用技术学院 专业: 电子信息工程 班级: 0781 学号: 17 学生姓名: 朱文 导师姓名: 林愿 完成日期: 2011 年 6 月 13 日 诚 信 声 明本人声明:1、本人所呈交的毕业设计(论文)是在老师指导下进行的研究工作及取得的研究成果;2、据查证,除了文中特别加以标注和致谢的地方外,毕业设计(论文)中不包含其他人已经公开发表过的研究成果,也不包含为获得其他教育机构的学位而使用过的材料;3、我承诺,本人提交的毕业设计(论文)中的所有内容均真实、可信。作者签名: 日期: 年 月 日毕 业 设 计 ( 论 文 )
2、 任 务 书题目: FIR 低通滤波器的 FPGA 实现 姓名 朱文 系 应用技术学院 专业 信电子信息工程 班级 0781 学号 200713020117 指导老师 林愿 职称 讲师 教研室主任 刘望军 一、基本任务及要求:用 VHDL 描述一个 FIR 低通滤波器。 设计要求: (1) 最小阻带衰减-30db (2) 带内波动小于 1db (3) 通带边缘频率为 100MHz (4) 阻带边缘频率为 125MHz 设计出满足上述性能指标并且所需资源最少的 FIR 滤波器。 用 VHDL 语言描述所设计的 FIR 滤波器,并在 MAXPLUSII 或 QUARTUSII 中进行硬件仿真。 用
3、 MATLAB 分析仿真结果,验证是否满足设计要求。 二、进度安排及完成时间: (1) 第一周至第三周:查阅资料、撰写文献综述和开题报告; (2) 第四周至第五周:学习 FIR 滤波器的基本原理; (3) 第六周至第七周:熟悉并了解 QUARTUSII 和 MATLAB 的用法,会用二者联合设计; (4) 第八周至第十一周:用 VHDL 语言描述,并在 QUARTUSII 中进行硬件仿真。用 MATLAB 分析仿真结果,验证是否满足设计要求; (5) 第十二周至第十三周:撰写设计说明书; (6) 第十四周:毕业设计答辩。 摘要 0ABSTRACT .1第一章 绪 论 21.1 引 言 21.2
4、 MATLAB 软件发展介绍 21.3 EDA 技术介绍 .31.4 课题发展现状和前景展望 .4第二章 滤波器设计原理 52.1 滤波器的实现步骤 .52.2 滤波原理 62.3 FIR 数字滤波器的设计方法 .62.4 FIR 滤波器与 IIR 滤波器的分析比较 .10第三章 基于 MATLAB 的 FIR 滤波器的实现 .123.1 设计课题:FIR 低通滤波器 .123.2 FIR 滤波器的基本设计思路 .123.2.1 FIR 滤波器的基本特点 .123.2.2 FIR 滤波器设计的主要任务 .123.2.3 设计 FIR 滤波器的方法 133.3 FIR 滤波器设计方法内容及其主要
5、思路 .143.4 FIR 滤波器程序设计与仿真 .173.4.1 基于 Matlab 语言的 FIR 滤波器的程序设计 .173.4.2 基于 Matlab 语言的 FIR 滤波器设计的结论 .22第四章 FIR 滤波器的硬件实现与仿真 .244.1 利用 VHDL 语言设计 FIR 低通滤波器原理 244.2 FIR 滤波器 FPGA 的模块划分 244.2.1 四位加法器的实现 254.2.2 12 位加法器实现 .274.2.3 24 位加法器的实现 .294.2.4 24 位乘法器的实现 .314.2.5 延时器的实现 334.3 顶层文件设计程序 .354.4 基于 QUARTUS
6、 II 软件的 FIR 低通滤波器的仿真 374.5 仿真结果的验证 394.6 程序设计、调试和仿真过程中的问题解决 39结 束 语 41参 考 文 献 42致 谢 43FIR 低通滤波器的 FPGA 实现 0低通滤波器的 FPGA 实现摘要:本文在提出了一种采用现场可编程门阵列器件(FPGA)实现线性 FIR 数字滤波器,分析关于低通滤波器的基本知识和现场可编程门阵列 FPGA 的 VHDL 语言描述,随着可编程逻辑器件和 EDA 技术的发展,使用 FPGA 来实现 FIR 滤波器,既具有实时性,又兼顾了一定的灵活性,越来越多的电子工程师采用 FPGA 器件来实现 FIR 滤波器。用窗函数
7、法比较其与等波纹最佳逼近法的差距,通过 Remez 函数得出最佳阶数和h(n)的各阶系数,然后在 FPGA 中设计一个低通滤波器,以 FIR 数字滤波器的基本理论为依据,使用 12 位加法器,24 位加法器,12 位乘法器及延时器,通过顶层文件的链接我们可以实现所需要的 FIR 滤波器。在设计中采用了层次化、模块化的设计思想,将整个滤波器划分为几个功能模块,利用 VHDL 语言和原理图输入两种设计技术进行了各个功能模块的设计,最终完成了 FIR 数字滤波器的系统设计。用 Quartus II 软件进行了仿真,并用 MATLAB 对仿真结果进行了分析,证明所设计的 FIR 数字滤波器功能正确。关
8、键词:FPGA 、 FIR 数字滤波器、 VHDL 语言、 Quartus FIR 低通滤波器的 FPGA 实现 1Based on FPGA implementation of low-pass filterAbstract :This paper presents a field programmable gate array device using (FPGA) to achieve linear FIR digital filters,Analysis of the low pass filter on the basic knowledge and field programmab
9、le gate array FPGA-VHDL language description,Along with the development of PLD device and EDA technology, more and more electrical engineers use FPGA to implement FIR filter, as it not only meet the real-time requirement, but also has some flexibility.In this paper, a method to implement the FIR fil
10、ter using FPGA is proposed. Compared with the window functions such as corrugated and the gap between the best approximation by Remez function, and the optimum order of h (n) coefficient of each order, and then in the FPGA design a low pass filter, To the basic theory of FIR digital filter based on
11、a 12-bit adder, 24-bit adder, 12-bit multiplier, and delay control, through the top link to the file that we can achieve the required FIR filter. Used in the design of hierarchical, modular design concept, the whole filter is divided into several functional modules, the use of VHDL language and sche
12、matic design for two of each function module, finally completed the FIR digital filter Design for the System. Quartus II software with the simulation and the simulation results using MATLAB are analyzed to prove that the design of FIR digital filter function correctly.Keywords: FPGA、 FIR digital Fil
13、ter、 VHDL language、 QuartusFIR 低通滤波器的 FPGA 实现 2第一章 绪 论1.1 引 言模 拟 滤 波 器 与 数 字 滤 波 器 的 设 计 对 工 程 应 用 数 学 及 计 算 机 科 学 都 是 非 常 重 要 的 。对 设 计 人 员 来 说 , 滤 波 器 是 控 制 信 号 处 理 和 通 信 领 域 的 重 要 组 成 部 分 。在 数 字 信 号 处 理 中 , 数 字 滤 波 是 其 基 本 处 理 方 法 之 一 , 占 有 极 其 重 要 的 地 位 。 数字 信 号 发 展 过 程 中 的 另 一 个 重 大 进 展 是 数 字 滤
14、波 器 按 单 位 脉 冲 响 应 h(n)的 长 度 分 类 可分 有 限 脉 冲 响 应 (FIR)滤 波 器 和 无 限 脉 冲 响 应 (IIR)滤 波 器 。 两 者 各 有 优 缺 点 : IIR滤 波器 能 以 较 低 的 阶 次 获 得 相 同 的 幅 度 滤 波 性 能 , 但 一 般 为 非 线 性 相 位 ; FIR滤 波 器 单 位脉 冲 响 应 是 有 限 长 的 , 系 统 必 定 稳 定 , 且 可 以 做 成 严 格 的 线 性 相 位 , 故 在 图 像 处 理 、数 据 传 输 等 需 要 信 道 具 有 线 性 相 位 特 性 的 场 合 应 用 广 泛
15、。 FIR滤 波 器 的 设 计 方 法 有 窗函 数 法 、 频 率 抽 样 法 等 , 两 种 方 法 分 别 从 时 域 和 频 域 为 出 发 点 来 进 行 设 计 。早 在 20 世 纪 90 年 代 中 期 , MATLAB 就 已 成 为 国 际 公 认 的 信 号 处 理 的 标 准 软 件和 开 发 平 台 。 MATLAB 是 英 文 MATrix LABoratory( 矩 阵 实 验 室 ) 的 缩 写 。 该 软 件包 括 : 数 值 分 析 、 矩 阵 计 算 、 数 字 信 号 处 理 、 建 模 和 系 统 控 制 等 应 用 程 序 。MATLAB 语 言
16、简 洁 、 紧 凑 、 使 用 方 便 , 有 丰 富 的 运 算 符 号 和 库 函 数 , 还 具 有 结 构 化的 控 制 语 句 和 面 向 对 象 编 程 的 特 点 , 随 着 其 版 本 的 功 能 越 来 越 强 , 从 而 被 广 泛 用 于 仿真 技 术 、 自 动 控 制 和 数 字 信 号 处 理 等 领 域 。1.2 MATLAB 软件发展介绍MATLAB 软件是由美国 Mathworks 公司推出的用于数值计算和图形处理的科学计算系统环境。MATLAB 是英文 MATrix LABoratory(短阵实验室)的缩写。此软件集中了日常数学处理中的各种功能,包括高效的数
17、值计算、矩阵运算、信号处理和图形生成等功能。在 MATLAB 环境下,用户可以集成地进行程序设计、数值计算、图形绘制、输入输出、文件管理等各项操作。 MATLAB 提供了一个人机交互的数学系统环境,该系统的基本数据结构是矩阵,在生成矩陈对象时,不要求作明确的维数说明。与利用 c 语言或 FoRTRAN 语言作数值计算的程序设计相比,利用 MATLAB 可以节省大量的编程时间。MATLAB 也被用来解决一些实际课题和数学模型问题。典型的应用包括数值计算、算法预设计与验证,以及一些特殊的短阵计算应用,如自动控制理论、统计、数字信号处理(时间序列分拆)等。MTALAB 系统由五个主要部分组成,下面分
18、别加以介绍。 (1)MATALB 语言体系 MATLAB 是高层次的矩阵数组语言具有条件FIR 低通滤波器的 FPGA 实现 3控制、函数调用、数据结构、输入输出、面向对象等程序语言特性。利用它既可以进行小规模端程,完成算法设计和算法实验的基本任务,也可以进行大规模编程,开发复杂的应用程序。 (2)MATLAB 工作环境 这是对 MA 丁 LAB 提供给用户使用的管理功能的总称包括管理工作空间中的变量据输入输出的方式和方法,以及开发、调试、管理 M 文件的各种工具。 (3)图形句相系统 这是 MATLAB 图形系统的基础,包括完成 2D 和 3D 数据图示、图像处理、动画生成、图形显示等功能的
19、高层 MATLAB 命令,也包括用户对图形图像等对象进行特性控制的低层 MATLAB 命令,以及开发 GUI 应用程序的各种工具。 (4)MATLAB 数学函数库这是对 MATLAB 使用的各种数学算法的总称包括各种初等函数的算法,也包括矩阵运算、矩阵分析等高层次数学算法。 (5)MATLAB 应用程序接口 (API) 这是 MATLAB 为用户提供的一个函数库,使得用户能够在 MATLAB 环境中使用 C 程序或 FORTRAN 程序,包括从 MATLAB 中调用于程序(动态链接 ),读写 MAT 文件的功能。 可以看出 MATLAB 是一个功能十分强大的系统,是集数值计算、图形管理、程序开
20、发为一体的环境。除此之外,MATLAB 还具有更强的功能扩展能力,与它的主系统一起,可以配备各种各样的工具箱,以完成一些特定的任务。用户可以根据自己的工作任务,开发自己的工具箱。1.3 EDA 技术介绍EDA 技术是在电子 CAD 技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。 利用 EDA 工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出 IC 版图或 PCB 版图的整个过程在计算机上自动处理完成。 现在对 E
21、DA 的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有 EDA 的应用。目前 EDA 技术已在各大公司、企事业单位和科研教学部门广泛使用。例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到 EDA 技术。本文所指的 EDA 技术,主要针对电子电路设计、PCB 设计和 IC 设计。EDA 设计可分为系统级、电路级和物理实现级。EDA 在教学、科研、产品设计与制造等各方面都发挥着巨大的作用。 在教学方面,几乎所有理工科(特别是电子信息)类的高校都开设了 EDA 课程。主要是让学生了解 EDA 的基本概念和基本原理、掌握用
22、VHDL 语言编写规范、掌握逻辑综合的理论和算法、使用 EDA 工具进行电子电路课程的实验并从事简单系统的设计。一般学FIR 低通滤波器的 FPGA 实现 4习电路仿真工具(如 EWB、PSPICE )和 PLD 开发工具(如 Altera/Xilinx 的器件结构及开发系统) ,为今后工作打下基础。 科研方面主要利用电路仿真工具(EWB 或PSPICE)进行电路设计与仿真;利用虚拟仪器进行产品测试;将 CPLD/FPGA 器件实际应用到仪器设备中;从事 PCB 设计和 ASIC 设计等。 在产品设计与制造方面,包括前期的计算机仿真,产品开发中的 EDA 工具应用、系统级模拟及测试环境的仿真,
23、生产流水线的 EDA 技术应用、产品测试等各个环节。如 PCB 的制作、电子设备的研制与生产、电路板的焊接、ASIC 的流片过程等。1.4 课题发展现状和前景展望在现代信号处理和电子应用技术领域,滤波器作为一种必不可少的组成部分处在了一个十分重要的位置,并日益显示出其巨大的应用价值。尽管滤波技术的发展到现在只有七十多年的历史,但它的发生与发展已经历了诸多变化,作为一种信号处理的技术已相当完善,并不断发挥着其重要的作用。在国内外的研究中,设计FIR滤波器所涉及的乘法运算方式有:并行乘法、位串行乘法和采用分布式算法的乘法。并行乘法虽然速度快,同时占用的硬件资源极大。如果滤波器的阶数增加,乘法器位数
24、也将变大,硬件规模将变得十分庞大。位串行乘法器的实现方法主要是通过对乘法运算进行分解,用加法器来完成乘法的功能,也即无乘法操作的乘法器。但由于一个8x8位的乘法器输出为16位,为了得到正确的16位结果,串行输入的二进制补码数要进行符号位扩展,即将串行输入的8位二进制补码数前补8个0(对正数)或8个1(对负数)后才输入乘法器。如果每一位的运算需要一个时钟周期的话,这个乘法器需要16个时钟周期才能计算出正确结果,这就意味着此类乘法器要完全计算出结果的延迟必将会很大。所以位串行乘法器虽然使得乘法器的硬件规模达到了最省,但是由于是串行运算,使得它的运算周期过长,速度与规模折衷考虑时不是最优的。分布式算
25、法(distributed arithmetic, DA)的主要特点是巧妙的利用ROM查找表将固定系数的乘累加(Multiply-accumulator, MAC)运算转化为查表操作,它与传统算法实现乘累加运算的不同在于执行部分积运算的先后顺序不同。分布式算法在完成乘累加功能时是通过将各输入数据每一对应位产生的部分积预先进行相加形成相应的部分积,然后再对各个部分积累加形成最终结果,而传统算法是等到所有乘积已经产生之后再来相加来完成乘累加运算的。就小位宽来说,DA算法设计的FIR滤波器的速度可以显著的超过基于 MAC的设计。相对于前两种方法,DA算法既可以全并行实现,又可以全串行实现,还可以串并
26、行结合实现,可以在硬件规模和滤波器速度之间作适当的折中,是现在被研究的主要方法。FIR 低通滤波器的 FPGA 实现 5第二章 滤波器设计原理2.1 滤波器的实现步骤滤 波 器 是 用 于 根 据 给 定 的 要 求 对 信 号 频 谱 进 行 修 改 或 整 形 。通 常 , 大 多 数 的 滤 波 器 的 功 能 是 分 离 需 要 的 信 号 与 不 需 要 的 信 号 或 噪 声 。 信 号 或噪 声 一 般 根 据 其 在 频 带 内 的 频 率 成 分 或 信 号 的 能 量 进 行 描 述 , 滤 波 器 的 技 术 指 标 一 般是 指 频 域 内 的 幅 频 响 应 , 增
27、益 或 衰 减 。滤 波 器 是 指 用 来 对 输 入 信 号 进 行 滤 波 的 硬 件 或 软 件 。 如 果 滤 波 器 的 输 入 、 输 出 都是 离 散 信 号 , 则 该 滤 波 器 的 冲 击 响 应 也 必 然 是 离 散 的 , 这 样 的 滤 波 器 定 义 为 数 字 滤 波器 。 一 个 数 字 滤 波 器 可 以 用 一 个 系 统 函 数 表 示 如 下 :(2.0)(1)(0zXYzabzHNkkMii数 字 滤 波 器 的 功 能 , 就 是 把 输 入 序 列 X(n)通 过 一 定 的 运 算 变 换 成 输 出 序 列 Y(n)。一 旦 知 道 了 对
28、 滤 波 器 的 要 求 , 就 可 以 确 定 滤 波 器 的 技 术 指 标 , 设 计 是 从 技 术 指 标 开 始的 , 滤 波 器 实 现 的 过 程 包 括 四 个 一 般 步 骤 :(1)函 数 逼 近(2)电 路 实 现(3)缺 陷 研 究(4)产 品 实 现函 数 逼 近 :是 产 生 满 足 理 想 技 术 指 标 的 转 移 函 数 。电 路 实 现 :滤 波 器 的 转 移 函 数 转 换 为 方 框 图 ( 也 叫 数 字 滤 波 器 网 络 ) 或 转 换 为 乙组 对 输 入 数 字 序 列 进 行 顺 序 计 算 的 方 程 。缺 陷 研 究 :研 究 各 种
29、 非 理 想 因 素 的 影 响 , 如 存 储 采 样 值 和 稀 疏 的 有 限 字 长 , 或 在不 违 反 滤 波 器 技 术 指 标 的 条 件 下 所 允 许 的 最 大 化 量 步 长 。产 品 实 现 :使 用 硬 件 ( DSP 处 理 器 , 专 用 硬 件 , 常 用 VLSI 芯 片 ) 或 者 在 普 通 计算 机 , 专 用 计 算 机 或 阵 列 处 理 器 上 运 行 的 软 件 构 建 滤 波 器 的 原 型 , 需 要 作 出 以 下 判 定 :( a) 期 间 的 类 型 ; ( b) 制 造 方 法 、 数 据 字 长 、 系 数 字 长 等 等 。FI
30、R 低通滤波器的 FPGA 实现 6h(n)2.2 滤波原理 滤波器,顾名思义,其作用是对输入信号起到滤波的作用。x(n) y(n)图 2.1 LSI 系统对图(2.1)所示的 LSL 系统其时域输入输出关系是 (2.1)nhxny若 x(n),y(n)的傅立叶变换存在,则输出输入的频域关系是 jjj eHXeY, (2.2)jjHX,再 假 定如图 2.2(a) , (b)所示,()jwe()jwe()jwYe0 w o w 0 w(a) (b) (c)图 2.2 滤波原理那么由(2.2)式, 将如图 2.2(c)所示。这样,x(n)通过系统 h(n)的结果是使输()jwHe出 y(n)中不
31、再含有 的频率成分,而使 的成分“不失真” 的给以通过。因此,cc设计出不同的形状的 ,可以得到不同的滤波结 。j 4果若滤波器的输入,输出都是离散时间信号,那么,该滤波器的冲击响应也必然是离散的,即单位抽样响应 h(n)。我们称这样的滤波器为数字滤波器(Digital Filter,DF)。当用硬件实现一个 DF 时,所需的元件是延迟器,乘法器和加法器。当在通用机上用软件实现时,它即是一段线性卷积的程序。我们知道,模拟滤波器(Analog Filter,AF)只能用硬件来实现,其元件是 R,L,C 及运算放大器或开关电容等。因此,DF 的实现要比 AF 容易得多,且易获得较理想的滤波性能。2
32、.3 FIR 数字滤波器的设计方法IIR 滤波器的优点是可以利用模拟滤波器的设计结果,缺点是相位是非线性的,若需要线性相位,则要用全通网络进行校正。FIR 滤波器的优点是可方便的实现线性相FIR 低通滤波器的 FPGA 实现 7位。FIR 滤波器单位冲激响应 h(n)的特点:其单位冲激响应 h(n)是有限长(1N=21;N=N+1;b=remez(N,fpts,mag,wt);disp(FIR Filter Coefficients);disp(b)h,w=freqz(b,1,256);plot(w/pi,20*log10(abs(h);grid on;xlabel(omega/pi);yla
33、bel(Gain,dB);FIR Filter Coefficients0.02991927618896 0.01227133176592 -0.02606479285331 -0.03869328309106Columns 5 through 8 0.00605577315339 0.04420913939134 -0.00535592542710 -0.09072068917532Columns 9 through 12 -0.04806946514616 0.17702562493935 0.40440469300573 0.40440469300573Columns 13 throug
34、h 16 FIR 低通滤波器的 FPGA 实现 230.17702562493935 -0.04806946514616 -0.09072068917532 -0.00535592542710Columns 17 through 20 0.04420913939134 0.00605577315339 -0.03869328309106 -0.02606479285331Columns 21 through 22 0.01227133176592 0.02991927618896对数据位数进行截取,即22 阶截取c=0.029 0.012 -0.026 -0.038 0.006 0.044 -
35、0.005 -0.090 -0.048 0.177 0.404 0.404 0.177 -0.048 -0.090 -0.005 0.044 0.006 -0.038 -0.026 0.012 0.029 ;h,w=freqz(c,1,256);plot(w/pi,20*log10(abs(h);grid on;重新植入得到得出幅频特性曲线如下:3.4.2 基于 Matlab 语言的 FIR 滤波器设计的结论由上面两图得到结论:用 MATLAB 算得的 FIR 滤波器传输函数系数的特性为:带FIR 低通滤波器的 FPGA 实现 24内波动小于 0.5dB,满足设计指标要求的带内波动小于 1dB
36、;最小阻带衰减小于 25dB,满足设计指标要求的最小阻带衰减小于 30 dB。由此证明了本设计用 MATLAB 算得的传输函数系数基本符合指标要求。我们把所得到的系数乘以 1000 变成整数,再用补码形式的二进制数给出。如下表所示。表格 3.1 数字转换原数 扩大 1000 倍 12 位二进制补码h0 h21 0.029 29 000000011101h1 h20 0.012 12 000000001100h2 h19 -0.026 -26 1111111100110h3 h18 -0.038 -38 111111011010h4 h17 0.006 6 000000000110h5 h16
37、0.044 44 000000101100h6 h15 -0.005 -5 111111111110h7 h14 -0.090 -90 111110100110h8 h13 -0.048 -48 111111010000h9 h12 0.177 177 000010110001h10 h11 0.424 424 000110101000FIR 低通滤波器的 FPGA 实现 25第四章 FIR 滤波器的硬件实现与仿真4.1 利用 VHDL 语言设计 FIR 低通滤波器原理基于 VHDL 语言的 FIR 低通滤波器设计原理 ASM 框图为:输入 移位寄存器系数 ROM 乘法器 累加器输出图 4-1 原理图由原理图可知,FIR 滤波器的数字硬件系统主要由输入模块、乘累加模块、延迟模块组成,因此在利用 VHDL 语言设计 FIR 滤波器必须包含这几个模块。4.2 FIR 滤波器 FPGA 的模块划分编写 12 位加法器,24 位加法器,12 位乘法器及延时器,我们可以组合出所需的FIR 滤波器。程序中主要是运用 forgenerate、port map 语句,实现一个结构化的描述。具体见下图(其中 sum(010),mul(010),sum(010)为程序中出现的信号) 。