基于fpga的函数发生器设计毕业设计(编辑修改稿)内容摘要:

gh Speed Integrated Circuit) 计划,其目标是为下一代集成电路的生产实现阶段性的工艺极限,以及建立一项新的描述方法。 1981 年, 美国国防部提出了一种新的硬件描述语言 —— 超高速集成电路硬件描述语言 ( VHSIC Hardware Description Language) 简称 VHDL 语言。 1987 年 12 月,国际电气与电子工程师协会 (Institute of Electrical and Electronics Engineers, IEEE)批准了 VHDL 语言为硬件描述语言的工业标准,即 IEEE STD10761987(LRM87)。 在 1993年升级为 IEEE STD 10761993(LRM93)。 1999 年国际 IEEE 标准协会批准了数字模拟混合版本 VHDLAMS(Analog and MixedSignal)作为工业标准,即 IEEE STD10761999 版 [8]。 VHDL 采用软件编程的方式来描述电子系统的逻辑功能、电路结构和连接形式,它与传统的门级方式相比更适合于大规模集成电路系统的设计。 VHDL 几乎覆盖了以往各种硬件描述语言的功能 [16]。 VHDL 主要用于描述数字系统的结构、行为、功能和接口,非常适用于可编程逻辑芯片的应用设计,其强大的抽象描述能力使得设计过程变得高效简捷。 作为一种通用的硬件描述语言, VHDL 具有以下基本特点: VHDL 支持结构化和自顶向下的设计方法,这样非常便于设计的模块化。 设计者从系统整体要求出发,自上而下将系统 内容细化,最后将模块组合完成系统的整体设计。 8 VHDL 具有多层次描述和仿真系统硬件功能的能力,可以从系统级到门级电路不同层次对数字电路进行建模和描述,不同的描述还可以混合使用,大大简化了硬件设计的任务,提高了设计效率和可靠性,缩短产品开发周期。 VHDL 语言有良好的可移植性,由于它是一种工业标准语言,所以它具有设计与开发环境、具体电路实现工艺以及采用的实现无关的特点,设计成果便于移植、交流和二次开发。 VHDL 程序有良好的可读性,容易被读者理解,需要时还可以转化成电路原理图输出。 使用 VHDL 在进行电子系统设计时可以不了解电路的结构细节,因此相对于Verilog HDL 来说,为设计者减少了大量的工作,极大的提高工作效率,并可以延长设计的生命周期。 VHDL 可以支持各种不同类型的数字电路和系统的设计。 既支持同步电路,也支持异步电路。 既支持 TTL 电路,也支持 CMOS 电路;既可用 CPLD 芯片实现,也可以采用 FPGA 实现 [11]。 开发工具介绍 本次设计采用 Altera 公司推出的一款功能强大,兼容性最好的 EDA 工具软件:QuartusII。 它 是支持原理图、 VHDL、 VerilogHDL 以及 AHDL 等多种设计输入形式,自带综合器以及仿真器,可以完成从设计输入到硬件配置的完 整 PLD 设计流程。 该软件界面友好、使用便捷、功能强大,是一个完全集成化的可编程逻辑设计环境,具有开放性、与结构无关、多平台完全集成化丰富的设计库、模块化工具、支持多种硬件描述语言及有多种高级编程语言接口等特点。 QuartusII 是 Altera 公司推出的 CPLD/FPGA 开发工具, QuartusII 提供了集成、与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,可完成电路描述,并将其保存为设计实体文件;芯片平面布局连线编辑 ;功能强大的逻辑综合工具;完备的电路功能仿真与时序逻辑仿真工具;定时 /时序分析与关键路径延时分析;可使用Signal Tap II 逻辑分析工具进行嵌入式的逻辑分析;支持软件源文件的添加和创建,并将它们链接起来生成编程文件;使用组合编译方式可一次完成整体设计流程;自动定位编译错误;高效的期间编程与验证工具;可读入标准的 VHDL 网表文件和 Verilog网表文件;能生成第三方 EDA 软件使用的 VHDL 网表文件和 Verilog 网表文件。 QuartusII 软件提供了可编程片上系统 (SOPC)设计的一个综合开发环境,是 进行SOPC 设计的基础。 QuartusII 集成环境包括以下内容:系统级设计,嵌入式软件开发、可编程逻辑器件 (PLD)设计、综合、布局布线、验证和仿真。 用户首先对所做项目进行设计 [10],明确设计目的,然后进行设计输入,进行编译直至编译没有错误产生,之后进行仿真,检查是否达到设计要求,最后将设计配置到目标器件中进行硬件验证与测试。 9 具体步骤如下: ( 1) 打开 QuartusII 软件。 ( 2) 选择路径。 注意:工作目录名不能有中文。 ( 3) 添加设计文件。 ( 4) 选择 FPGA 器件。 ( 5) 建立原理图或用 VHDL 语言描述设计电路。 ( 6) 对原理图或用 VHDL 语言进行编译,无误后进行添加信号。 ( 7) 对上述电路进行仿真。 ( 8) 进行管脚分配。 ( 9) 全局编译。 ( 10) 采用 JTAG 或 AS 模式进行下载测试。 QuartusII 设计软件根据设计者需要提供了一个完整的多平台开发环境,它包含整个 FPGA 和 CPLD 设计阶段的解决方案。 QuartusII 流程如下图所示: 图 22 QuartusII 软件的开发流程1 第三章 系统方案设计 系统整体方案 函数信号发生器在生产实践和科技领域中有着广泛的应用,其实现方法通常有以下几种 [3]:(1)用分立元件组成的函数发生器 , 但通常是单函数发生 器 , 其频率不高 , 工作不够稳定 , 不易调试; (2)由晶体管、运放 IC 等通用器件制作 ,多用专门的函数信号发生器产生信号 ,如早期的函数发生器芯片 8038,其功能较少 ,精度不高 ,频率上限只有 300kHz,无法产生更高频率的信号 ,调节方式也不够灵活 ,频率和占空比不能独立调节 ,且相互影响; (3)利用专用直接数字频率合成 DDS 芯片的函数发生器。 本设计主要由波形选择部分,波形发生部分和输出部分组成。 其中波形选择部分是数据选择器电路;波形发生部分包括递增斜波产生电路,递减斜波产生电路,三角波产生电路,梯形波波产生电 路,正弦波产生电路和方波产生电路。 本次设计的主要设计框图见下图。 正 弦 波 产 生 电 路正 弦 波 产 生 电 路方 波 产 生 电 路方 波 产 生 电 路三 角 波 产 生 电 路三 角 波 产 生 电 路梯 形 波 产 生 电 路梯 形 波 产 生 电 路递 减 斜 波 产 生 电 路递 减 斜 波 产 生 电 路递 增 斜 波 产 生 电 路递 增 斜 波 产 生 电 路时 钟 发 生 电 路时 钟 发 生 电 路函 数 选 择 电 路函 数 选 择 电 路输 出 电 路输 出 电 路 图 31 系统框图 根据系统整体设计要求 ,信号发生器由 信 号产生模块、信号控制模块。 其中信号产生模块用来产生所需要的 6 种信号,这些信号的产生可以有多种方式,如用计数器直接产生信号输出 ,或者用计数器产生存储器的地址,在存储器中存放信号输出的数据。 信号发生器的控制模块可以用数据选择器来实现。 用一个 6 选 1 数据选择器可以实现对 6 种波形的选择 ,在本设计中应用 VHDL 语言针对 6 种信号分别设计出 6 种不同的软件包 ,通过不同的选择信号调用与其相对应的软件包。 软件设计 本次设计主要使用 QuartusII 软件、 VHDL 硬件描述语言。 本系统电路设计简单,且可以根据实际的不同需要,修改程序时写入相应的波形数据,即可输出想要的波形,而无需更改硬件电路,该设计成本低,可靠性高,操作灵活方便 [6]。 VHDL 采用软件 11 编程的方式来描述电子系统的逻辑功能、电路结构和连接形式 [7]。 波形产生模块的 递增、递减斜波是以一定常数递增、递减来产生的。 三角波的产生是在输出波形的前半周期内从 0 累加到最大值 255( 8 位 ) ,在后 半周期从最大值递减到 0 来实现的。 梯形波是以一定的常数递增的。 正弦波的产生原理是基于奈奎斯特采样定律,得到离散化波形序列。 方波的产生是在输出波形的前半周期输出低电平,后半周期输出高电平,从而得到占空比为 50%的方波信号。 通过所设计的智能函数发生器可以得到递增、递减斜波,方波,三角波,正弦波和梯形波六种波形。 软件设计流程图见图 32。 图 32 软件设计流程图 第四章 波形模块的设计和仿真 12 递增斜波信号产生模块 递增斜波产生原理:当复位信号为 1 时,电路清零,恢复为初始状态,输出全为0;每当复 位信号为 0,并检测到时钟上升沿时,计数器值加 1,当增加到最大后清零。 计数值增加呈现线性关系,因此输出的波形是递增的斜波。 其电路图和仿真结果图如下所示。 C L KC L RQ [ 7 . . 0 ]in c re a s ein s tV C CC L KIN P U TV C CC L RIN P U TQ [ 7 . . 0 ]O U T P U T 图 41 递增斜波信号产生模块电路图 图 42 递增斜波函数发生电路波形仿真图 递减斜波信号产生模块 递减斜波产生原理:当复位信号为 1 时,电路清零,恢复为初始状态,输出全为1;每当复位信号为 0 并检测到时钟上升沿时,计数器值减 1,当增加到 0 后赋值到最大。 计数值减少呈现线性关系,因此输出的波形是递减的斜波。 其电路图和仿真结果图如下所示。 图 43 递减斜波信号产生模块电路图 13 图 44 递减斜波函数发生电路波形仿真图 三角波信号产生模块 三角波函数发生电路波形仿真如下图所示,图 46说明了三角波函数在最小值(输出信号的每一位都是 0)附近的波形变化,首先,在每个时钟周期的上升沿,都对输出函数进行减 1 操作,直到出现最小值,此后每经过一个时钟周期的上升沿都对输出进行加 1 操作。 图 47 说明了三角波函数在最大值(即输出全 1)附近的波形变化。 图 45 三角波信号产生模块电路图 图 46 三角波函数发生电路最小值处波形仿真图 14 图 47 三角波函数发生电路最大值处波形仿真图 梯形波信号产生模块 梯形波产生原理:数据的递增是以一定的阶梯常数往上增加,所以输出的波形是呈现阶梯状的,而不是完全呈现是直线增长。 在每个时钟周期的上升沿,都对输出信号在幅度上进行一定程度的增加,以体现梯形波的特征,在本次设计中设定为 16,当输出波形的幅度达到最大时,则将其清零开始新一轮的循环递增。 其电路图和仿真结果图如下所示。 图 48 梯形波信号产生模块电路图 图 49 梯形波函数发生电路波形仿真图 方波信号产生模块 方波产生原理:其内部计数到达 64 时,根据输出标志的数值输出对应的数值, 15 输出只有两种取值:最小值表示为全 0(十进制表示为 0)、最大值表示为全 1(十进制表示为 255),每经过一定数量的时钟周期(本次设计中设定为 64),输出信号在两个输出取值之间进行翻转,连续的输出便成了观测的方波波形。 其电路图和仿真结果图如下所示。 图 410 方波 信号产生模块电路图 图 411 方波函数发生电路波形仿真图 正弦波信号产生模块 正弦波产生原理:预先在一个正弦周期中平均选取了 64 个求值点,计算得到每个点在正 弦函数中的值,并将其转换为对应的二进制数。 在每个时钟周期上升沿到达时,输出函数输出对应点的取值。 其频率取决于读取数据的速度。 电路图和仿真结果图如下所示。 图 412 正弦波信号产生模块电路图 16 图 413 正弦波函数发生电路波形仿真图 函数选择器模块 选择器产生原理:选择器是一个 6 选 1 的数据选择器,其中 SEL 为波形数据选择端口, D0— D5 为 6 位二进制输入端口 , Q 为 8 位二进制输出端口。 函数选择模块的本质即选择译码电路。 其电路图和仿真结果图如下所示。 图 414 函数选择电路图 图 415 函数选择电路波形仿真图 17 函数发生器的顶层设计 将上述模块生成符号,供顶层电路调用。 智能函数发生器总体框图如下图所示;图中输入 CLK 为时钟信号,用于调整输出波形的频率;输入 CLR 为复位信号;输入SEL[2..0]为选择信号,用于选择输出波形。 顶层电路的连接如图所示: 图 416 系统顶层电路连接图 ( 1)系统整体波形仿真图 图 417 顶层电路波形仿真图 ( 2)波形选择电路与输出波形对应表 18 表 41 输出电路与波形选择对应表 SEL[2..0] 对应的波形 000 递增斜波。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。