EDA课程设计报告

  • 格式:doc
  • 大小:303.00 KB
  • 文档页数:20

下载文档原格式

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

课 程 设 计

课程名称 EDA 技术 课题名称 电子时钟的设计 专 业 电子技术 班 级 学 号 姓 名

指导教师 陈意军

2012 年 6 月 23 日

湖南工程学院

课程设计任务书

课程名称:eda技术

题目:多功能电子钟的设计

专业班级:电子科学与技术

学生姓名:

指导老师:陈意军

审批:

任务书下达期2012年6 月10 日

设计完成日期2012年6 月23 日

目录

一引言 (1)

二设计目的及总体方框图 (1)

三电子时钟功能 (1)

四电子时钟设计 (2)

4.1设计思路 (2)

4.2电子时钟各个模块的设计 (2)

4.2.1秒计时器的设计 (2)

4.2.2分计时器的设计 (4)

4.2.3时计时器的设计 (5)

4.2.4 7段译码器的设计 (8)

4.2.5 整点报时器的设计 (9)

五电子时钟顶层电路图 (11)

六系统仿真波形 (11)

七硬件测试及引脚的锁定 (12)

八设计心得与体会 (13)

一引言

EDA技术在电子设计领域越来越普及,本设计主要利用VHDL语言在EDA平台上设计一个电子数字时钟,它的计时周期为24小时,显示的最大时间为23时59分59秒,另外还具有校时功能和整点报时功能。总的程序由5个模块组成,分别为秒计时器、分计时器、时计时器、7段显示译码器和整点报时器。

二设计目的及总体方框图

此次设计的主要目的是学会使用quartus软件,掌握用VHDL语言设计编写源程序,并要求下载到实验箱实现所实现电子时钟的各项功能。通过这次设计,让我们加深对理论知识的理解,培养理论联系实际的能力,提高分析问题和解决问题的能力

总体方框图

三电子时钟功能

(1)计时功能:

这是电子时钟的基本功能,每隔一秒钟计时一次,并在显示屏上显示当时时间。

(2)校时功能:

能设置实时时间作为数字钟的当前时间,具有小时、分钟、秒钟的校准时间功能。

(3)整点报时功能:

每逢整点,整点报时器自动报时。

四电子时钟设计

4.1 设计思路

该数字钟可以实现3个功能:计时功能、整点报时功能和重置时间功能,因此有3个子模块:计时、报时、重置时间。其中计时模块由3部分构成:秒计时器、分计时器和时计时器。

秒计时器和分计时器都是由60进制的计数器构成的,具有清0、置数和计数功能。当清0信号为低电平时,计时器清0;当置数信号为高电平时,计时器置数;clk为脉冲信号,ci为输入信号。co为计时器的进位信号,作为下一级的输入信号。

时计时器是由一个24进制的计数器构成的,具有清0、置数和计数功能。当清0信号为低电平时,计时器清0;当置数信号为高电平时,计时器置数;clk为脉冲信号,ci为输入信号。

7段数码显示模块的功能是在显示屏上显示当时时间。1对应的显示代码为0110000,2对应的显示代码为1101101,3对应的显示代码为1111001,4对应的显示代码为0110011,5对应的显示代码为1011011,6对应的显示代码为1011111,7对应的显示代码为1110000,8对应的显示代码为1111111,9对应的显示代码为1111011,0对应的显示代码为1111110。

报时模块的功能是当整点时,报时器输出高电平,并且持续1分钟。

4.2 电子时钟各模块的设计

4.2.1 秒计时器的设计

(1)秒计时器源程序

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity second is

port(clk,ci,nreset,load:in std_logic;

d:in std_logic_vector(7 downto 0);

co:out std_logic;

qh:buffer std_logic_vector(3 downto 0);

ql:buffer std_logic_vector(3 downto 0));

end second;

architecture behave of second is

begin

co<='1'when(qh="0101"and ql="1001"and ci='1')else'0'; process(clk,nreset)

begin

if(nreset='0')then

qh<="0000";

ql<="0000";

elsif(clk'event and clk='1')then

if(load='1')then

qh<=d(7 downto 4);

ql<=d(3 downto 0);

elsif(ci='1')then

if(ql=9)then

ql<="0000";

if(qh=5)then

qh<="0000";

else

qh<=qh+1;

end if;

else

ql<=ql+1;

end if;

end if;

end if;

end process;

end behave;

(2)秒计时器仿真波形

在秒计时器的(clk)输入一个周期为(2us)的时钟信号;清0端(nreset)前面一小段为低电平,后面均为高电平;置数端(load)中间一段为高电平,其余均为低电平;将(ci)端置高电平,秒重置端(d)置数值为56秒,进行仿真,产生如下波形:

图1 秒计时器仿真波形图

由上述波形可以清楚的看到:当清0信号(reset)无效时,秒计时器置数,从50秒开始计数,到59秒时回到0,并且从ensec输出一个高电平。

(3)秒计时器原理图

图2 秒计时器原理图

4.2.2 分计时器的设计

(1)分计时器源程序

library ieee;

use ieee.std_logic_1164.all;