1、一、课程设计的目的与要求1设计目的 熟悉 MAXPLUS2/Quartus II 软件,掌握软件的 VHDL 程序输入、程序编译和程序仿真操作; 学习利用 VHDL 语言设计闹钟系统控制电路程序。2设计要求 根据设计正文提出的闹钟控制电路功能设计相应 VHDL 程序。 有能力的同学,可以在设计正文提出的闹钟功能基础上,再提出新的功能并完成设计。二、设计正文设计一个闹钟系统控制电路,其功能如下:计时功能:是钟表的基本功能,这里要求设计的时钟能够显示小时、分钟、秒钟(用户可以选择时钟工作方式是 24 小时显示方式或 12 小时显示方式)。闹钟功能:用户设置闹钟时间,当时钟时间与闹钟时间相同时,闹钟
2、发出警报。VHDL 源程序:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; 包含库和程序包entity naozhong isport( clk,reset:in std_logic;resettime: in std_logic_vector(16 downto 0);端口表定义 clk,reset,clocktime 等输入变量;elert,hour,minute,secind 输出变量clocktime:in std_logic_vector(16 downto 0);elert:ou
3、t std_logic;hour: out std_logic_vector(4 downto 0); minute: out std_logic_vector(5 downto 0);second: out std_logic_vector(5 downto 0);end naozhong; ARCHITECTURE clock of naozhong is SIGNAL count1 : STD_LOGIC_VECTOR (5 DOWNTO 0);SIGNAL count2 : STD_LOGIC_VECTOR (5 DOWNTO 0); SIGNAL count3 : STD_LOGIC
4、_VECTOR (4 DOWNTO 0); 设置信号 count1 count2 count3BEGIN second=count1;minute=count2;hour=count3; PROCESS(clk,reset)BEGIN if (clocktime=count3elseelert=0;end if; IF (reset=1)THENcount1=resettime(5 downto 0);count2=resettime(11 downto 6); 计时功能:以 24 小时的时钟计时count3= resettime(16 downto 12); elsif (clkevent
5、AND clk=1) then count1=count1+1; if (count1=“111011“) thencount2=count2+1;count1=“000000“;if(count2=“111011“)thencount3=count3+1;count2=“000000“;if (count3=“10111“)thencount3=“00000“;end if; end if;end if;end if; 程序结束END PROCESS;END clock; 三、实验结果与分析图表 1 闹钟系统控制秒钟由图表 1 看出在时钟信号 clk 作用下,秒钟由 000000,00000
6、1,000010,000100,依次递增计时,并且从闹钟定时 clocktime=00000000000000000,报时输出 elert=1,完成报时功能。图表 2 闹钟系统控制秒钟由图 2 中可看出,当秒钟计时到 second=111011 即 59 秒时,跳转到 second=000000,并且有分钟进位 minute=0000001,实现了进位功能。图表 3 闹钟系统控制分钟从图 3 红框中看出分钟计时 minute 由 000000,000001,000010,000011,依次递增完成分计时;并且闹钟功能依然有效。要完成显示小时计时功能必须对时钟进行设定才能观察得到,因此加入 re
7、set 功能,当将时间设定为 resettime。图表 4 闹钟系统控制时钟从图表 4 中橙色和红色方框中可以看出当分钟 minute 由 111011 进位到 000000,并且使小时位 hour 开始计时,分钟每六十进位,小时加 1,;当 reset=1 时,将 resettime=00000111010111011 传递给时钟,实现了时钟设置功能。图表 5 闹钟系统控制闹钟功能如上图中红色框中可看出设定的闹钟时间为 clocktime=00000000000000110,当时钟计时到该时间时,如橙色框中看出闹钟报时 elert=1,完成报时功能。综合以上分析可知该闹钟系统控制电路完成了所需功能。