数字时钟的VHDL设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数字系统设计与硬件描述语言

期末考试作业

题目:数字时钟的VHDL设计

学院:信息学院

专业:物联网工程

学号:3011204286

:洋

2013-11-06

一、选题设计描述

1.功能介绍

设计一台能显示时、分、秒的数字钟。

由时钟信号经分频产生秒脉冲;

计时计数器用24进制计时电路;

可手动校时,能分别进行时、分的校正;

具有整点报时功能。

2.算法简介

设计原理

图1 数字钟的系统框图

该系统由振荡器、分频器、“时、分、秒”计数器、译码器及显示器、校时电路、整点报时电路等组成。振荡器和分频器产生整个系统的时基信号,它直接决定计时系统的精度。“秒计数器”采用六十进制计数器,每累计60秒向“分计数器”进位;“分计数器”采用六十进制计数器,每累计60分向“时计数器”进位;“时计数器”采用二十四进制计数器,按照“24翻1”规律计数。“时、分、秒”计数器的输出经译码器送显示器显示。校时电路用来当计时出现误差时对“时、分、秒”进行校对调整。

设计过程

1. 设计思路

时钟脉冲信号作为数字钟的时间基准,再经分频器输出标准秒脉冲。秒计数器计满60后向分计数器进位,分计数器计满60后向小时计数器进位,小时计数器是计满24后,系统自动复位重新开始计数。计数器的输出经译码电路后送到显示器显示。可以用校时电路进行校时。

2.数字钟的设计方案

数字钟的设计包括编码模块、分频模块、秒计时模块、分计时模块、小时计时模块和报时模块。该数字钟可以实现3个功能:计时功能、报时功能和设置时间功能。

2.1. 编码模块

编码模块主要是对时(sethour)、分(setmin)、秒(setsec)的设置输入。

2.2. 分频模块

在数字钟的设计中,外部输入时钟信号clk1的频率为8hz,其分频后的频率为clk,使其分频结果为1hz,用来提供给秒计时模块、分计时模块、小时计时模块。

2.3. 秒计时模块

将“秒计时脉冲”clk接信号源单元的1HZ脉冲信号,此时秒显示将从00计时到59,然后回到00,重新计时。在秒位进行计时的过程中。

秒计时器是由一个60进制的计数器构成的,具有置数和计数功能。其中rst为置数信号,当rst为1时,秒计时器置数。clk为驱动秒计时器的时钟,sec1、sec0为秒计时器的高位和低位输出。

2.4. 分计时模块

分计时电路:将“分计时脉冲”clk接信号源单元的1HZ脉冲信号,此时分显示将从00计时到59,然后回到00,重新计时。在分位进行计时的过程中。分计时器是由一个60进制的计数器构成的,具有置数和计数功能。其中rst为置数信号,当rst为1时,分计时器置数。min1、min0为分计时器的高位和低位输出。

2.5. 小时计时模块

将“小时计时脉冲”clk接信号源单元的1HZ脉冲信号,此时小时显示将从00计时到24,然后回到00,重新计时。

时计时器是由一个24进制的计数器构成的,具有置数和计数功能。其中的rst为置数信号,当rst为1时,时计时器置数。hr1、hr0为时计时器的高位和低位输出。3.2.6, 报时模块

当分位到59时,秒位计到51秒、53秒、55秒、57秒、59秒时报时一次,而后小时位加1。

二、程序源代码及说明

源程序

数字钟整体程序

整个程序分为五个部分,分别为分频部分、校时部分、秒部分、分部分、小时部分。

VHDL程序如下:

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity clock_24 is

Port (

clk1 : in STD_LOGIC;--时钟

rst : in STD_LOGIC;--复位,高有效

sethr : in STD_LOGIC;--小时设置,增加1

setmin : in STD_LOGIC;--分钟设置

setsec : in STD_LOGIC;--秒设置

hr0 : out STD_LOGIC_VECTOR(3 downto 0);--小时个位

hr1 : out STD_LOGIC_VECTOR(3 downto 0);--小时十位

min0 : out STD_LOGIC_VECTOR(3 downto 0);--分钟个位

min1 : out STD_LOGIC_VECTOR(3 downto 0);--分钟十位

sec0 : out STD_LOGIC_VECTOR(3 downto 0);--秒个位

sec1 : out STD_LOGIC_VECTOR(3 downto 0);--秒十位

speak : out STD_LOGIC--报时输出

);

end clock_24;

architecture rtl of clock_24 is

signal co_sec0: STD_LOGIC;--秒个位计数溢出标示

signal co_sec1: STD_LOGIC;

signal co_min0: STD_LOGIC;

signal co_min1: STD_LOGIC;

signal co_hr0: STD_LOGIC;

signalt_sec0: STD_LOGIC_VECTOR(3 downto 0);--秒个位计数器

signalt_sec1: STD_LOGIC_VECTOR(3 downto 0);

signalt_min0: STD_LOGIC_VECTOR(3 downto 0);

signalt_min1: STD_LOGIC_VECTOR(3 downto 0);

signalt_hr0: STD_LOGIC_VECTOR(3 downto 0);

signalt_hr1: STD_LOGIC_VECTOR(3 downto 0);

signal state_hour:STD_LOGIC_VECTOR(1 downto 0);--小时个位当前状态,当state_hour="00","01"时,cnt_hr0计数从0到9,当state_hour="10"时,cnt_hr0计算从0到3.

begin

相关文档
最新文档