硬件课程设计-彩色led组跑马灯的设计与仿真(编辑修改稿)内容摘要:

非标准的硬件描述语言。 1993年, IEEE 章世浩 《 彩色 LED组跑马灯的设计与仿真》 第 6 页 共 29 页 对 VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展 VHDL的内容,公布了新版本的 VHDL,即 IEEE标准的 10761993版本,(简称 93版)。 现在, VHDL和 Verilog作为 IEEE的工业标准硬件描述语言,又得到众多 EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。 有专家认为,在新的世纪中, VHDL于 Verilog语言将承担起大部分的数字系统设计任务。 (2)VHDL 语言的特点 与其他硬件描述语言相比, VHDL具有以下特点 [5]: A 功能强大、设计灵活 VHDL具有功能强大的语言结构,可以用简洁明确的源代码来描述复杂的逻辑控制。 它具有多层次的设计描述功能,层层细化,最后可直接生成电路级描述。 B 支持广泛、易于修改 由于 VHDL已经成为 IEEE标准所规范的硬件描述语言,目前大多数 EDA工具几乎都支持 VHDL,这为 VHDL的进一步推广和广泛应用奠定了基础。 在硬件电路设计过程中,主要的设计文件是用 VHDL编写的源代码,因为 VHDL易读和结构化,所以易于修改设计。 C 强大的系统硬件描述能力 VHDL具有多层次的设计描述功能,既可以描述系统级电路,又可以描述门级电路。 而描述既可以采用行为描述、寄存器传输描述或结构描述,也可以采用三者混合的混合级描述。 另外, VHDL支持惯性延迟和传输延迟,还可以准确地建立硬件电路模型。 D 独立于器件的设计、与工艺无关 E 很强的移植能力,易于共享和复用 VHDL是一种标准化的硬件描述语言,同一个设计描述可以被不同的工具所支持,使得设计描述的移植成为可能。 VHDL采用基于库( Library)的设计方法,可以建立各种可再次利用的模块 [6]。 这些模块可以预先设计或使用以前设计中的存档模块,将这些模块存放到库中,就可以在以后的设计中进行复用。 章世浩 《 彩色 LED组跑马灯的设计与仿真》 第 7 页 共 29 页 MAX+plusⅡ软件 MAX+plusⅡ( Multiple Array and Programming Logic User System)开发工具是美国Altera 公司推出的 一种 EDA 工具,具有灵活高效,使用便捷,易学易用的特点。 使用MAX+plusⅡ软件,设计者无需精通器件内部的复杂结构,只需熟悉所用的设计输入工具,如硬件描述语言、原理图等进行输入, MAX+plusⅡ自动将设计转换成目标文件下载到器件中去。 MAX+plusⅡ设计步骤: 步骤 1:为本项工程设计建立文件夹 任何一项设计都是一项工程( Project),都必须首先为此工程建立一个放置与此工程相关的文件的文件夹,此文件夹将被 EDA软件默认为工作库( Work Library)。 一般不同的设计项目最好放在相应的文件夹中 ,注意,一个设计项目可以包含多个设计文件,文件夹名不能用中文,且不可带空格。 步骤 2:输入设计项目和存盘 设计者将所设计的系统或电路以开发软件要求的某种形式表现出来,并送入计算机的过程称为设计输入。 设计输入通常有以下几种方式。 步骤 3:将设计项目设置成工程文件 为了使 MAX+ plusII能对输入的设计项目按设计者的要求进行各项处理,必须将设计文件设置成当前 Project。 步骤 4:选择目标器件并编译 这是器件设计中的核心环节。 在设计处理过程中,编译软件将对设计输入文件进行逻辑化简、综合和优化,并适当地用一 片或多片器件自动进行适配,最后产生编程用的编程文件。 步骤 5:时序仿真 步骤 6:建立元件 步骤 7:引脚锁定 步骤 8:编程下载 章世浩 《 彩色 LED组跑马灯的设计与仿真》 第 8 页 共 29 页 3 设计步骤 设计功能及分析 本系统主要具有以下两大点功能: 实现 8个红色 LED的亮、灭、交错显示等,其显示如下 ( 1)复位时, 8个灯全灭; ( 2)从左到右第一个开始亮,依次亮到最后一个; ( 3)从右到左第一个开始亮,依次亮到最后一个; ( 4)从中间亮到两边; ( 5)从两边亮到中间; 随着彩灯显示图案的变化,发出不同的音响声。 由上述的具有的功能可知,本系统主 要需要五大模块组成,分别是集成分频模块、32进制计数器模块、彩灯控制模块、 4选 1选择器模块、 4进制计数器模块。 对与每个模块的具体功能介绍请看第四节。 系统总体框架结构 这次的跑马灯设计采用的是分模块来完成的,包括分频器、计数器、选择器、彩灯控制器。 其中彩灯控制器是用来输出不同的花样,彩灯控制器的输出则是用一个 32 进制的计数器来控制,如图 所示。 扬声器的输出时用不同的频率来控制,所以用了一个集成分频器来使输入的频率被分为几种不同的频率,不同频率的选择性的输出则是用一个 4 选一的选择器来控制,如图 所示。 3 2 进 制 计 数 器 跑 马 灯 控 制 器 L E D 输 出 图 跑马灯的输出原理方框图 4 进 制 计 数 器分 频 器4 选 1 选 择 器 扬 声 器 输 出时 钟 脉 冲控 制 端选 择 端输 出 章世浩 《 彩色 LED组跑马灯的设计与仿真》 第 9 页 共 29 页 图 扬声器输出原理方框图 MAX+plus II 应用与 程序调试 ( 1) 首先在 maxplus 下建立一个工程目录,然后打开 MAX +plusⅡ软件,其初始界面如图 所示: 图 MAX +plusⅡ 软件初始 化 界面 ( 2) 在工具栏中选择 “新建 ”按钮。 在选择输入路径时,选择 “Text Editor File”以进行文本输 入,如图 所示 : 图 输入路径选择为文本输入 ( 3) 在文本输入界面内进行程序输入,如图 所示 : 章世浩 《 彩色 LED组跑马灯的设计与仿真》 第 10 页 共 29 页 图 程序输入界面 ( 4) 输入完毕后,需要对程序进行保存。 文件名和实体定义的符号必须保持一致,即文件名为 flift。 因为是使用 VHDL 语言,所以文件后缀名须改成 vhd。 ( 5) 保存以后,对程序进行编译。 在编译前,需要把文件设置为顶层文件,或称工程文件 Project。 选择菜单 “File”→“Project”→“Set Project to Current File”, 当前的文件即被指定。 详见 图 所示 : 图 设置顶层文件 ( 6) 在 “MAX +plusⅡ ”下拉按钮里选择 “Compiler”,对程序进行编译,此时, MAX +plusⅡ 软件会对程序进行纠错等处理。 当程序被确认无误以后会出现如下界面,如图 所示 : 章世浩 《 彩色 LED组跑马灯的设计与仿真》 第 11 页 共 29 页 图 编译完成图 ( 7) 在编译完成以后,打开程序页面,选择 “File”→“Edit Symbol”, 出现引脚图,如下图 所示 : 图 引脚图 章世浩 《 彩色 LED组跑马灯的设计与仿真》 第 12 页 共 29 页 4 硬件电路的设计与软件设计 集成分频器模块 (1)功能说明和设 计 设计要求显示不同的 跑马灯 的时候要伴随不同的音乐,所以设计分频器来用不同的频率控制不同的音乐输出。 元器件如图 所示。 模块说明: rst:输入信号 复位信号 用来复位集成分频器的输出使输出为“ 0”,及没有音乐输出。 clk:输入信号 模块的功能即为分频输入的频率信号。 clk_ clk_ clk_ clk_10:输出信号 即为分频模块对输入信号 clk 的分频,分别为 1/4 分频输出、 1/6 分频输出、 1/8 分频输出、 1/10 分频输出。 图 集成分频器 (2) 分频器 VHDL 程序编写 程序 VHDL 源代码请见附录一。 (3) 仿真结果 仿真结果如图 所示。 由上述的功能分析可知,本模块主要是进行分频的。 在仿真时, clk 的时钟周期是 100ns。 当 clk 产生 4 个上升沿信号时, 1/4 分频将会输出一个高电平;当 clk 产生 6 个上升沿信号时, 1/6 分频将会输出一个高电平;当 clk 产生 8 个 章世浩 《 彩色 LED组跑马灯的设计与仿真》 第 13 页 共 29 页 上升沿信号时, 1/8 分频将会输出一个高电平;当 clk 产生 10 个上升沿信号时, 1/10 分频将会输出一个高电平。 图 中,在 50ns 时, a=1,b=1,c=1,d=1,各分频输出均为 0;在 150ns 时, a=2,b=2,c=2,d=2,各分频输出均为 0;在 250ns 时, a=3,b=3,c=3,d=3,各分频输出均为 0;在 350ns 时,此时 1/4 分频器将会输出 1,并且 a=0, a=0,b=4,c=4,d=4,其余分频输出均为 0;在 450ns 时, a=1,b=5,c=5,d=5,分频输出均为 0;在 550ns 时,此时 1/6 分频器将会输出 1,并且 b=0, a=2,b=0,c=6,d=6,分频输出均为 0;在 650ns 时,a=2,b=1,c=7,d=7,分频输出均为 0;在 750ns 时,此时 1/4 分频器将会输出 1,并且 a=0,1/8 分频器 将会输出 1,并且 c=0, a=0,b=1,c=0,d=8,分频输出均为 0;在 850ns 时,a=1,b=2,c=1,d=9,分频输出均为 0;在 950ns 时,此时 1/10 分频器将会输出 1,并且 d=0,a=1,b=2,c=1,d=9,分频输出均为 0;所以此仿真图的结果完全符合设计要求。 图 集成分频器仿真波形 32 进制计数器模块 (1) 功能说明和设计 32 进制模块用来控制彩灯输出模块,即确定跑马灯控制器的不同的输出。 元器件如图 所示。 Rst:输入信号 复位信号 用来复位 32 进制使其输出 为“ 00000”。 Clk:输入信号 用来给模块提供工作频率。 Count_out[4..0]:输出信号 即为 32 进制计数器的输出。 图 32 进制计数器 章世浩 《 彩色 LED组跑马灯的设计与仿真》 第 14 页 共 29 页 (2) 32 进制计数器 VHDL 程序编写 程序 VHDL 源代码请见附录二。 (3) 仿真结果 仿真结果如图 所示。 由上述的功能设计可以知道,本模块主要是在时钟信号产生上升沿时,输出为 0 到 31 的值。 在本此仿真实验中, clk 的时钟周期为 50ns。 所以在下图可以看到,在 25ns 时,产生一个上升沿信号,计数器输出 1。 在 625ns 时,产生一个上升沿信号,计 数器输出 13,即二进制的 01101。 所以本次仿真结果符合功能设计要求。 图 32 进制计数器仿真波形 彩灯控制模块 (1) 功能说明和设计 彩灯控制模块用来直接控制跑马灯的输出,使彩灯表现出不同的花样。 元器件如图 所示。 Rst:输入信号 使彩灯控制模块的输出为“ 00000000”,即让彩灯无输出。 Input[4..0]:输入信号 不同的输入使彩灯控制模块有不同的输出即彩灯显示出不同的花样。 Output[7..0]:输出信号 直接与彩灯相连来控制彩 图 彩灯控制模块 章世浩 《 彩色 LED组跑马灯的设计与仿真》 第 15 页 共 29 页 (2) 彩灯控制模块 VHDL 程序编写 程序 VHDL 源代码请见附录三。 (3) 仿真结果 仿真结果如图 所示。 由上述的功能设计说明可知,本模块将对输入的信号 input产生相应的输出信号,从而实现彩灯的控制和实现。 如图 所示,在 0ns—— 200ns 时,输入信号为 00000, rst 输入信号为 0,此时输出信号 output 为 10000000, sm为 0000110,所以符合该程序的设计要求。 在 时间里, rst 信号为。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。