vhdl课程设计实验报告
- 格式:doc
- 大小:576.50 KB
- 文档页数:17
湖南科技大学
信息与电气工程学院
《课程设计报告》
题目:硬件描述语言课程设计
专业:电子信息工程
班级:三班
姓名:康良红
学号: 1204030326
指导教师:——————————胡士刚——————————————————————
2015 年 01 月 13 日
信息与电气工程学院
课程设计任务书
2014—2015 学年第 1 学期专业:学号:姓名:
课程设计名称:
设计题目:
完成期限:自年月日至年月日共周设计依据、要求及主要内容(可另加附页):
指导教师(签字):
批准日期:年月日
摘要
在目前,可编程逻辑器件、单片机、DSP已经成为数字系统的硬件基础,而从事数字系统的设计必须掌握可编程逻辑器件的设计方法,而VHDL语言是一种标准的数字系统硬件电路设计语言,为所有可编程逻辑器件厂商所支持,已成为电路设计人员和电子设计工程师必须掌握的工具。VHDL语言是培养信息类专门人才的一门必修的专业基础课程。通过本次课程设计,使我们能够学习和掌握现代电子系统设计的新技术、新器件,掌握硬件描述语言VHDL的编程技术和硬件描述方法,能够对设计系统进行规范描述掌握相关软件的使用,操作。能对VHDL 语言程序进行编译,调试,以及通过计算机仿真,得到正确的仿真波形图,并根据所得仿真波形图分析判断并改进所设计的电路。
本次课程设计设计主要使用了VHDL语言,采用的开发软件是MAXPLUS II,设计一个多功能数字钟。在MAXPLUS II开发平台下进行了编译、仿真、下载,实现了基本记时显示和设置、调整时间、报时和闹钟功能。
关键词:EDA;VHDL ;Max+plus II;
目录
1.设计目的 (1)
2.设计内容 (1)
3.电路工作原理 (1)
3.1循环彩灯 (1)
3.2抢答器 (1)
3. 3 数字频率计 (1)
4.主要程序和仿真结果 (1)
4.1循环彩灯设计与仿真结果 (1)
4.2抢答器设计与仿真结果 (1)
4.3 数字频率计设计与仿真结果 (1)
5.心得体会 (1)
参考文献 (1)
1.设计目的
1、熟悉maxplus2这一系列仿真软件的应用;
2、熟悉由vhdl设计程序,设计电路,实现功能的过程,进一步了
解vhdl语言;
3、提高动手能力,培养独立思考的思维。
2. 设计内容
1、循环彩灯
2、电子抢答器
3.数字频率计
3.电路工作原理
3.1循环彩灯工作原理
八位流动彩灯由八个彩色灯泡组成,接通电源后彩灯自动形成流动显示状态可用于节日与喜庆日。CLK是1HZ的时钟脉冲,程序定义CNT1进行计数,作为花样彩灯译码模块的输入值,译码后的值就是彩灯的显示代码。
3.2抢答器工作原理
电子抢答器包括抢答器模块与数码管模块。抢答器模块通过一个CLK时钟脉冲,START是开始键,CLR是复位信号,ADD1,ADD2为加分键,SEL_1,SEL_2为选择键,LED为指示灯,有七位,SEG为数码管段选择,SL为数码管位选择,数码管模块主要是译码功能。顶层抢答器主控模块包括抢答、加分以及指示灯驱动功能,分数显示模块采用动态扫描的方法来控制LED数码管的显示。
3.3数字频率器工作原理
数字频率计测频有两种方式:一种是直接测频,即在一定闸门时间测量被测信号的脉冲个数;二是间接测评法,如周期测评法。直接测评法适用于高频信号的频率测量,间接测频法适用于低频信号的频率测量。本设计采用了直接测量法,在一定闸门时间内测量被测信号个数。
4.主要程序和仿真结果
4.1循环彩灯设计与仿真结果
循环彩灯程序:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity caideng is
port(
clk:in std_logic;
light:out std_logic_vector(7 downto 0));
end caideng;
architecture control of caideng is
signal cnt1:std_logic_vector(3 downto 0):="0000"; begin
process(clk)
begin
if(clk'event and clk='1') then
if cnt1="1111" then
cnt1<="0000";
else cnt1<=cnt1+1;
end if;
case cnt1 is
when "0000"=>light<="11000000";
when "0001"=>light<="01100000";
when "0010"=>light<="00110000";
when "0011"=>light<="00011000";
when "0100"=>light<="00001100";
when "0101"=>light<="00000110";
when "0110"=>light<="00000011";
when "0111"=>light<="00000110";
when "1000"=>light<="00001100";
when "1001"=>light<="00011000";
when "1010"=>light<="00110000";
when "1011"=>light<="01100000";
when "1100"=>light<="11000000";
when others=>light<="00000000";
end case;
end if;
end process;
end architecture control;