1、 课程设计报告 课程名称: EDA 技术与应用 设计题目: 数字钟设计 数字钟课程设计 1 数字钟设计 摘 要 : 系统使用 EDA 技术设计了数字钟,采用硬件描述语言 VHDL 按模块化方式进行设 计, 然后进行编程, 时序仿真等。 利用 VHDL 语言完成了数字钟的设计。 该数字钟能实现时、 分、 秒计数的显示功能, 且以 24 小时循环计时。 整个系统结构简单, 使用方便, 功能齐全, 精度高,具有一定的开发价值。 关键字: 数字钟;EDA;VHDL; 一、设计要求 1.1、时钟功能 设计一个具有时、分、秒计时的数字钟电路,计时采用 24 小时制。小时、 分钟可调的数字钟。 1.2、准确
2、性要求 设计出的时钟电路要确保高精度的要求,每天的误差不得超过一秒。 二、数字钟的基本原理 1、具有时、分、秒计数显示功能,以 24 小时循环计时。其中 SECOND 模块为 60 进制 BCD 码计数电路, 实现秒计时功能; MINUTE 模块为 60 进制 BCD 码计数电路, 实现分计时功能;HOUR 模块为 24 进制 BCD 码计数电路,实现小时计时功能。 2、有驱动 8 位七段共阴极扫描数码管的片选驱动信号输出和七段码输出。 SELTIME 模块产生 8 位数码管的扫描驱动信号 SEL20和时钟显示数据(动态 显示)DAOUT30。DELED 模块则为数码管显示时钟数据的 7 段译
3、码电路。 数字钟课程设计 2 三、方案论证 3.1、数字钟的基本组成 数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路,其基本组成 电路如下图所示: 图 3.1 数字钟原理图 图(1)中,秒冲发生器产生秒脉冲,作为图中各个计数器的脉冲信号。分、秒 计数器要求设计为六十进制计数器;时计数器则设计为二十四进制计数器。时、 分、秒的计时结果分别送入译码器中,经译码器翻译后,共由六个 LED 数码管显 示出结果。因此,使用计数器作为计时电路是可以实现的。 四、各功能模块 4.1、小时计时功能 实现程序如下: library ieee; 数字钟课程设计 3 use ieee.std_logic_
4、1164.all; use ieee.std_logic_unsigned.all; entity hour is port(reset,clk : in std_logic; daout : out std_logic_vector(7 downto 0); end hour; architecture behav of hour is signal count : std_logic_vector(3 downto 0); signal counter : std_logic_vector(3 downto 0); begin p1: process(reset,clk) begin if
5、 reset=0 then count=“0000“; counter=“0000“; elsif(clkevent and clk=1) then if (counter2) then if (count=9) then count=“0000“; counter=counter + 1; else count=count+1; end if; else if (count=3) then count=“0000“; counter=“0000“; else 数字钟课程设计 4 count=count+1; end if; end if; end if; end process; daout
6、(7 downto 4)=counter; daout(3 downto 0)=count; end behav; 图 4.1 时计时功能模块 4.2、分计时功能 实现程序如下: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity minute is port(reset,clk,sethour: in std_logic; daout : out std_logic_vector(7 downto 0); enhour : out std_logic); end minute; 数字钟课程设计 5 architecture behav of minute is signal count : std_logic_vector(3 downto 0); signal counter : std_logic_vector(3 downto 0); signal carry_out1 : std_logic; s