闹钟设计实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
闹钟设计实验报告
院系: 计算机与通信学院
专业: 计算机科学与技术
班级: 01154 班
姓名: 伍晨曦(13号)
指导老师: 杨华
一.实验目的:
1.学会VHDL语言的并发执行的特点;
2.熟悉VHDL的一些语法;
3.初步了解VHDL的编程思路;
二.内容实验:
一个电子钟.能用数码管显示时间.可以更改时间.可以闹铃.. 具有电子钟得功能.即可以正确的显示时间,可以更改时间.可以在规定的时间内闹铃,闹铃的时间为1分钟.闹铃的时间可调.
三.实验原理
根据VHDL语言编制底层模块,采用基本的图像法来完成顶层的布线,利用VHDL语言编制模块可以省去很多复杂的连线及列写复杂的逻辑函数关系。
其中的时间模块用计数器来模拟.一个24位计数器来模拟小时,两个60位计数器来模拟分钟和秒.其中闹铃里要加一个寄存器来存贮闹铃的设定.显示模块用数码管来显示.
按照本课程设计要求及提供的数字逻辑系统EDA实验设备,思路如下:设计好小时、分钟、秒钟、按键、寄存器、扫描、闹铃、七段码、二选一、顶层电路的设计。这些模块采用VHDL语言设计,然后生成模块存放在库中供以后调用。采用图形法来设计顶层模块并编译、仿真并下载,生成大模块已完成课程要求。
四:源程序的实现
1.小时的模块:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity hour is
port(
clk :in std_logic;
ho2,ho1 :out std_logic_vector(3 downto 0)
);
end hour;
architecture structure of hour is
signal h2_temp :std_logic_vector(3 downto 0);
signal h1_temp :std_logic_vector(3 downto 0);
begin
process(clk)
begin
if(clk'event and clk='1') then
if(h2_temp="0010" and h1_temp="0011")then
h2_temp<="0000";
h1_temp<="0000";
elsif(h1_temp="1001")then
h1_temp<="0000";
h2_temp<=h2_temp+1;
else
h1_temp<=h1_temp+1;
end if;
end if;
ho2<=h2_temp;
ho1<=h1_temp;
end process;
end structure;
波形图
2.分钟的模块:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity minute is
port(
clk :in std_logic;
cn :out std_logic;
ho2,ho1 :out std_logic_vector(3 downto 0)
);
end minute;
architecture structure of minute is
signal h2_temp :std_logic_vector(3 downto 0); signal h1_temp :std_logic_vector(3 downto 0); begin
process(clk)
begin
if(clk'event and clk='1') then
if(h2_temp="0101" and h1_temp="1001")then
h2_temp<="0000";
h1_temp<="0000";
cn<='1';
elsif(h1_temp="1001")then
h1_temp<="0000";
h2_temp<=h2_temp+1;
else
h1_temp<=h1_temp+1;
cn<='0';
end if;
end if;
ho2<=h2_temp;
ho1<=h1_temp;
end process;
end structure;
波形图
3.秒钟的模块:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity second is
port(
clk :in std_logic;
cn :out std_logic;
ho2,ho1 :out std_logic_vector(3 downto 0)
);
end second;
architecture structure of second is
signal h2_temp :std_logic_vector(3 downto 0);
signal h1_temp :std_logic_vector(3 downto 0);
begin
process(clk)
begin
if(clk'event and clk='1') then
if(h2_temp="0101" and h1_temp="1001")then
h2_temp<="0000";
h1_temp<="0000";
cn<='1';
elsif(h1_temp="1001")then
h1_temp<="0000";
h2_temp<=h2_temp+1;
else
h1_temp<=h1_temp+1;
cn<='0';
end if;
end if;
ho2<=h2_temp;
ho1<=h1_temp;
end process;
end structure;
波形图和分钟的一样.
4.按键设计的模块:
library ieee;
use ieee.std_logic_1164.all;
entity set is
port(
clk :in std_logic;
hour,minute,second,bar:in std_logic;
c1,c2 :in std_logic;