24小时计时器设计

更新时间:2024-01-12 12:13:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

24小时计时器设计

摘 要:使用硬件描述语言VHDL进行编程,设计六十进制和二十四进制计数器,利

用原理图输入设计方法,使用两片六十进制计数器和一片二十四进制计数器,设计出了一个24小时计时器系统。使用QuartusII软件进行编译,时序仿真,来验证该系统的正确性。整个系统设计简单,使用方便,具有24小时计时显示功能,可以分别对时,分,秒进行校正。

关键词:VHDL 计数器 24小时计时器

目 录

1.设计背景 ............................................................................................................ 1 2.设计方案 ............................................................................................................ 1 2.1.六十进制计数器设计 ................................................................................. 2 2.2.二十四进制计数器设计 ............................................................................. 3 3.方案实施 ............................................................................................................ 5 4.仿真结果 ............................................................................................................ 6 5.参考文献 ............................................................................................................ 7

1.设计背景

随着EDA技术的发展和应用领域的扩大,EDA技术在电子信息、通信、自动控制及计算机应用等领域的重要性日益突出。基于EDA技术的数字系统设计,一般可以再单片PLD实现,具有功能强、功耗低,体积小、可靠性高等特点,成为当今数字系统设计的主流。

此次EDA课程大作业,我的设计课题是24小时计时器系统设计,根据要求使用平时所学VHDL语言进行编程和原理图输入设计方法来完成。报告书主要包括设计背景、设计方案、方案实施、仿真波形。设计方案主要介绍了我对于设计课题的大致设计思路,之后各个部分将会详细介绍设计组成及程序。

2.设计方案

24小时计时器的原理图如图2.1所示。它由两片六十进制计时器和一片二十四进制计数器构成,输入CLK为1Hz的时钟,经过60分频后产生1分钟时钟信号,再经过60分频后,产生1小时的时钟信号,最后进行24分频,得到1天的脉冲送COUT输出。将两个60分频和一个24分频的输出送7段数码管,得到24小时的计时显示结果。

cnt60OUTPUTOUTPUTOUTPUTqm[7..0]qf[7..0]qs[7..0] rstINPUTVCCqm[3..0]clkq0[3..0]rstq1[3..0]coutinst2qm[7..4]cnt60qf[3..0]clkq0[3..0]rstq1[3..0]coutinst3qf[7..4]cnt24qs[3..0]clkq0[3..0]rstq1[3..0]coutinst1qs[7..4] clkjmjfINPUTVCCINPUTVCCINPUTVCCXORinst6XORinst7XOROUTPUTcoutjsINPUTVCCinst8 图2.1 24小时计时器的原理图

图2.1中的CLK是1Hz时钟输入端;RST是复位输入端,高电平有效;JM、JF和JS分别是校秒、校分和校时的输入端,下将沿有效;QM[7..0]、QF[7..0]和QS[7..0]分别

是秒、分、时的计时输出端;COUT是“天”脉冲输出端。校秒、校分和校时信号分别

1

与相关的秒、分和时等输入时钟异或,允许从校时输入端添加脉冲,达到校时目的。

2.1.六十进制计数器设计

基于六十进制计数器设计源程序cnt60.vhd如下: library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity cnt60 is

port (clk,rst:in std_logic;

q0,q1:buffer std_logic_vector(3 downto 0); cout:out std_logic);

end cnt60;

architecture one of cnt60 is signal en1:std_logic;

begin

process(clk,rst)

begin

if rst='1' then q0<=\

elsif clk'event and clk='1' then if q0=\

then q0<=\else q0<=q0+1;

end if;

end if;

if q0=\ then en1<='1'; else en1<='0'; end if;

end process; process(clk,rst)

begin

2

if rst='1' then q1<=\

elsif clk'event and clk='1' then

if en1='1' then

if q1=\

then q1<=\else q1<=q1+1;

end if;

if (q1&q0=\

then cout<='0'; else cout<='1'; end if; end if; end if;

end process;

end one;

2.2.二十四进制计数器设计

基于六十进制计数器设计源程序cnt24.vhd如下: library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity cnt24 is

port (clk,rst:in std_logic;

q0,q1:buffer std_logic_vector(3 downto 0); cout:out std_logic);

end cnt24;

architecture one of cnt24 is signal en1:std_logic;

begin

process(clk,rst)

3

本文来源:https://www.bwwdw.com/article/0alo.html

Top