数字时钟设计.docx

上传人:b****6 文档编号:6774553 上传时间:2023-01-10 格式:DOCX 页数:24 大小:469.42KB
下载 相关 举报
数字时钟设计.docx_第1页
第1页 / 共24页
数字时钟设计.docx_第2页
第2页 / 共24页
数字时钟设计.docx_第3页
第3页 / 共24页
数字时钟设计.docx_第4页
第4页 / 共24页
数字时钟设计.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

数字时钟设计.docx

《数字时钟设计.docx》由会员分享,可在线阅读,更多相关《数字时钟设计.docx(24页珍藏版)》请在冰豆网上搜索。

数字时钟设计.docx

数字时钟设计

 

东北石油大学

课程设计

课程硬件课程设计

题目数字钟设计

院系

专业班级

学生姓名

学生学号

指导教师

 

2009年7月10日

东北石油大学课程设计任务书

课程硬件课程设计

题目数字钟设计

专业

主要内容、基本要求等

一、主要内容:

利用EL教学实验箱、微机和QuartusⅡ软件系统,使用VHDL语言输入方法设计数字钟。

可以利用层次设计方法和VHDL语言,完成硬件设计设计和仿真。

最后在EL教学实验箱中实现。

二、基本要求:

1.具有时,分,秒,计数显示功能,以24小时循环计时。

2.具有清零功能。

三、扩展要求

1.调节小时、分钟功能。

2.整点报时功能,整点报时的同时LED灯花样显示。

四、参考文献

[1]李国丽,朱维勇.电子技术实验指导书.合肥:

中国科技大学出版社,2000

[2]康华光,电子技术基础模拟部分.出版社:

高等教育出版社.

[3]李朝清,单片机原理及技术接口出版社,2011

[4]张国勋.缩短ICL7135A/D采样程序时间的一种方法.电子技术应用.1993

[5]孙富明,李笑盈.基于多种EDA工具的FPGA设计,电子技术应用,2002年12月,第1期

完成期限2周

指导教师

专业负责人

东北石油大学课程设计成绩评价表

课程名称

硬件课程设计

题目名称

数字钟设计

学生姓名

序号

评价项目

指标(优秀)

满分

评分

1

选题难度

选题难度较高,或者对原题目进行了相当程度的改进。

10

2

工作量、工作态度和出勤率

工作量饱满,工作努力,遵守纪律,出勤率高,工作作风严谨,善于与他人合作。

10

3

课程设计质量

按期圆满的完成了规定的任务,方案设计合理,思考问题全面,系统功能完善。

40

4

报告质量

问题论述思路清晰,结构严谨,文理通顺,撰写规范,图表完备正确。

30

5

回答问题

在进行课程设计程序系统检查时,能正确回答指导教师所提出的问题。

10

6

创新(加分项)

工作中有创新意识,对前人工作有改进或有应用价值。

在进行系统检查时能对创新性进行说明,并在报告中有相应的论述。

+5

总分

评语:

指导教师:

年月日

摘要

 

本文介绍了利用EDA-V硬件系统和微机上的Quartus7.2-II等软件系统。

VHDL的英文全名是Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage,诞生于1982年。

1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。

自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。

此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。

有专家认为,在新的世纪中,VHDL于Verilog语言将承担起大部分的数字系统设计任务。

EDA技术在电子系统设计领域越来越普及,本设计主要利用VHDL语言在EDA平台上设计一个电子数字钟,它的计时周期为24小时,显示满刻度为23时59分59秒,另外还具有校时功能和闹钟功能。

总的程序由几个各具不同功能的单元模块程序拼接而成,其中包括分频程序模块、时分秒计数和设置程序模块、比较器程序模块、三输入数据选择器程序模块、译码显示程序模块和拼接程序模块。

并且使用MAX+PLUSII软件进行电路波形仿真,下载到EDA实验箱进行验证。

关键词:

EDA(电子设计自动化);VHDL(硬件描述语言),数字钟。

 

目 录

第1章概述1

1.1EDA的概念1

1.2EDA的工作平台2

第2章数字钟的系统分析3

2.1设计目的3

2.2设计要求3

2.3实验原理3

2.4系统硬件4

第3章数字钟的底层电路设计5

3.1设计规划5

3.2设计说明5

3.3底层电路程序6

第4章顶层文件设计13

4.1系统设计13

4.2顶层文件程序13

第5章数字钟的调试与运行17

5.1数字钟的调试17

5.2数字钟的适配与测试20

总结…………………………………………………………………………………….22

参考文献……………………………………………………………………………….23

第1章概述

1.1EDA的概念

EDA是电子设计自动化(ElectronicDesignAutomation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的[1]。

EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作[2]。

现在对EDA的概念或范畴用得很宽。

包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用[3]。

目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用[4]。

例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术[5]。

本文所指的EDA技术,主要针对电子电路设计、PCB设计和IC设计。

EDA设计可分为系统级、电路级和物理实现级。

本次毕业设计课题实现的核心技术即为EDA相关技术[6]。

1.1.1EDA技术发展趋势

人类社会已进入到高度发达的信息化社会。

信息化社会的发展离不开电子信息产品开发技术、产品品质的提高和进步。

电子信息产品随着科学技术的进步,其电子器件和设计方法更新换代的速度日新月异。

实现这种进步的主要原因就是电子设计技术和电子制造技术的发展,其核心就是电子设计自动化(EDA,ElectronicsDesignAutomation)技术,EDA技术的发展和推广应用又极大地推动了电子信息产业的发展。

为保证电子系统设计的速度和质量,适应“第一时间推出产品”的设计要求,EDA技术正逐渐成为不可缺少的一项先进技术和重要工具。

目前,在国内电子技术教学和产业界的技术推广中已形成“EDA热”,完全可以说,掌握EDA技术是电子信息类专业学生、工程技术人员所必备的基本能力和技能[7]。

EDA技术在硬件实现方面融合了大规模集成电路制造技术,IC版图设计技术、ASIC测试与封装技术、FPGA/CPLD编程下载技术、自动检测技术等;在计算机辅助工程方面融合了计算机辅助技术(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)、计算机辅助工程(CAE)技术以及多种计算机语言的设计概念;而在现代电子学方面则容纳了更多的内容,如电子线路设计理论、数字信号处理技术、数字系统建模和优化技术及长线技术理论等等[8]。

1.2EDA的工作平台

1.2.1EDA硬件工作平台

1.计算机。

2.EDA实验开发系统:

EDA-V。

1.2.2EDA的软件工作平台

PLD(ProgrammableLogicDevice)是一种由用户根据需要而自行构造逻辑功能的数字集成电路。

目前主要有两大类型:

CPLD(ComplexPLD)和FPGA(FieldProgrammableGateArray)[9]。

它们的基本设计方法是借助于EDA软件,用原理图、状态机、布尔表达式、硬件描述语言等方法,生成相应的目标文件,最后用编程器或下载电缆,由目标器件实现。

生产PLD的厂家很多,但最有代表性的PLD厂家为Altera、Xilinx和Lattice公司[10]。

第2章数字钟的系统分析

2.1设计目的

1.掌握多位计数器相连的设计方法。

2.掌握十进制,六进制,二十四进制计数器的设计方法。

3.继续巩固多位共阴极扫描显示数码管的驱动,及编码。

4.掌握扬声器的驱动。

5.LED灯的花样显示。

6.掌握CPLD技术的层次化设计方法。

2.2设计要求

1.具有时,分,秒,计数显示功能,以24小时循环计时。

2.具有清零,调节小时、分钟功能。

3.具有整点报时功能,整点报时的同时LED灯花样显示。

2.3实验原理

在同一EPLD芯片EPF10K10上集成了如下电路模块:

1.时钟计数:

秒——60进制BCD码计数;

分——60进制BCDD码计数;

时——24进制BCDD码计数;

同时整个计数器有清零,调分,调时功能。

在接近整数时间能提供报时信号。

2.具有驱动8位八段共阴扫描数码管的片选驱动信号输出和八段字形译码输出。

3.扬生器在整点时有报时驱动信号产生。

4.LED灯在整点时有花样显示信号产生。

2.4系统硬件

1.主芯片EPF10K10LC84-4。

2.8个LED灯。

3.扬声器。

4.8位八段扫描共阴级数码显示管。

5.三个按键开关(清零,调小时,调分钟)。

第3章数字钟的底层电路设计

3.1设计规划

该数字钟可以实现3个功能:

计时功能、整点报时功能和重置时间功能,因此有3个子模块:

计时、报时(alarm1)、重置时间(setmin1、sethour1)。

其中计时模块有3部分构成:

秒计时器(second1)、分计时器(minute1)、时计时器(hour1)。

1.秒计数模块:

秒计数,在频率为1HZ的时钟下以60次为循环计数,并产生进位信号影响分计数。

2.分计数模块:

分计数,在秒进位信号为高电平时,计数一次,同样以60次为一个循环计数,同时产生分进位信号影响时计数。

3.时计数模块:

时计数,在分进位信号为高电平时,计数一次,以24次为一个循环计数。

4.时间显示模块:

通过选中不同的数码管,同时进行一定频率的扫描显示时,分,秒。

5.时间设置模块:

设置调试使能端,可以调时,分。

基本功能是在使能端为高电平时,可以使时和分循环计数;

6.整点报时模块:

在秒计数到50秒时,同时分计数到59分开始,丰鸣器产生每个2秒的鸣叫(500HZ),到整点是产生750HZ的鸣叫。

7.闹钟模块:

在设定闹钟闹铃时间后,当闹钟使能端有效时,可在闹铃时间闹铃,并有彩灯显示[10]。

3.2设计说明

首先分析数字时钟,得出进位法则大体相同,故所得时分秒进位方式语法基本相同,因此可以将时分秒定义成六位输出端口,即分别将时分秒定义为3个component,分别给予设计。

3.3底层电路程序

3.3.1秒计时器(VHDL语言编译)

其代码如下:

(VHDL语言):

LIBRARYieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

ENTITYsecondIS

PORT(

clk,reset,setmin:

INSTD_LOGIC;

enmin:

OUTSTD_LOGIC;

daout:

outstd_logic_vector(6downto0));

ENDentitysecond;

ARCHITECTUREfunOFsecondIS

SIGNALcount:

STD_LOGIC_VECTOR(6downto0);

BEGIN

daout<=count;

process(clk,reset,setmin)

begin

--enmin<=k;

if(reset='0')then

count<="0000000";

elsif(setmin='0')then

enmin<=clk;

elsif(clk'eventandclk='1')then

if(count(3downto0)="1001")then

if(count<16#60#)then

if(count="1011001")then

enmin<='1';

count<="0000000";

ELSE

count<=count+7;

endif;

else

count<="0000000";

endif;

elsif(count<16#60#)then

count<=count+1;

enmin<='0'after100ns;

else

count<="0000000";

endif;

endif;

endprocess;

ENDfun;

秒计时器实际上是一个60进制的计数器,它从时钟脉冲接受脉冲信号,每当一个脉冲信号来时,秒就自动加1,所以,输入的时钟信号应该是的频率应该是1hz,当秒计满60时,发出一个脉冲信号给分组件,再将本身清零。

这样,每计满60s,分钟就加1,正好按着正常的时间规律计时。

3.3.2分计时器(VHDL语言编译)

其代码(VHDL语言)如下:

LIBRARYieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

ENTITYminuteIS

PORT(

clk,clk1,reset,sethour:

INSTD_LOGIC;

enhour:

OUTSTD_LOGIC;

daout:

outstd_logic_vector(6downto0));

ENDentityminute;

ARCHITECTUREfunOFminuteIS

SIGNALcount:

STD_LOGIC_VECTOR(6downto0);

BEGIN

daout<=count;

process(clk,reset,sethour)

begin

if(reset='0')then

count<="0000000";

elsif(sethour='0')then

enhour<=clk1;

elsif(clk'eventandclk='1')then

if(count(3downto0)="1001")then

if(count<16#60#)then

if(count="1011001")then

enhour<='1';

count<="0000000";

ELSE

count<=count+7;

endif;

else

count<="0000000";

endif;

elsif(count<16#60#)then

count<=count+1;

enhour<='0'after100ns;

else

count<="0000000";

endif;

endif;

endprocess;

ENDfun;

分计时器也是一个60进制的计数器,它从秒计时器的脉冲输出端接受脉冲信号。

每当一个脉冲信号来时,分就自动加1,当分计满60时,发出一个脉冲信号给时组件,再将本身清零。

这样,每计满60MIN,小时就加1,正好按着正常的时间规律计时。

该模块还能对分进行数字调整,并可以将其全部清零。

3.3.3时计时器(VHDL语言)

代码如下:

LIBRARYieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

ENTITYhourIS

PORT(

clk,reset:

INSTD_LOGIC;

daout:

outstd_logic_vector(5downto0));

ENDentityhour;

ARCHITECTUREfunOFhourIS

SIGNALcount:

STD_LOGIC_VECTOR(5downto0);

BEGIN

daout<=count;

process(clk,reset)

begin

if(reset='0')then

count<="000000";

elsif(clk'eventandclk='1')then

if(count(3downto0)="1001")then

if(count<16#24#)then

count<=count+7;

else

count<="000000";

endif;

elsif(count<16#24#)then

count<=count+1;

else

count<="000000";

endif;

endif;

endprocess;

ENDfun;

时计时器是一个24进制的计数器,它从分组件的脉冲信号输出端接受脉冲信号,每当一个脉冲信号来时,时就自动加1,并且输出个信号给时组件,直到计满24,再将本身清零。

该组件还能对时进行数字调整,并可以将其全部清零。

3.3.4时间显示Deled(VHDL语言)

代码如下:

LIBRARYieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

ENTITYdeledIS

PORT(num:

INstd_logic_vector(3downto0);

led:

OUTstd_logic_vector(6downto0));

ENDdeled;

ARCHITECTUREfunOFdeledIS

BEGIN

led<="1111110"whennum="0000"else

"0110000"whennum="0001"else

"1101101"whennum="0010"else

"1111001"whennum="0011"else

"0110011"whennum="0100"else

"1011011"whennum="0101"else

"1011111"whennum="0110"else

"1110000"whennum="0111"else

"1111111"whennum="1000"else

"1111011"whennum="1001"else

"1110111"whennum="1010"else

"0011111"whennum="1011"else

"1001110"whennum="1100"else

"0111101"whennum="1101"else

"1001111"whennum="1110"else

"1000111"whennum="1111";

ENDfun;

Deled模块是一个简单的电路,它的功能将时、分、秒三个组件中所计的数编码后,能对应在七段数码管山显示成数字形式。

3.3.5报时模块alert(VHDL语言)

代码如下:

LIBRARYieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

ENTITYalertIS

PORT(

clk:

INSTD_LOGIC;

dain:

INSTD_LOGIC_VECTOR(6DOWNTO0);

speak:

OUTSTD_LOGIC;

lamp:

OUTSTD_LOGIC_VECTOR(2DOWNTO0));

ENDalert;

ARCHITECTUREfunOFalertIS

signalcount:

std_logic_vector(1downto0);

signalcount1:

std_logic_vector(1downto0);

BEGIN

speaker:

process(clk)

begin

speak<=count1

(1);

if(clk'eventandclk='1')then

if(dain="000000")then

if(count1>="10")then

count1<="00";

else

count1<=count1+1;

endif;

endif;

endif;

endprocessspeaker;

lamper:

process(clk)

begin

if(rising_edge(clk))then

if(count<="10")then

if(count="00")then

lamp<="001";

elsif(count="01")then

lamp<="010";

elsif(count="10")then

lamp<="100";

endif;

count<=count+1;

else

count<="00";

endif;

endif;

endprocesslamper;

ENDfun;

报时模块也是个简单的程序,它的功能是:

当每满一个小时时,有该组件输出一个脉冲信号给试验箱上的喇叭,喇叭会相应其信号,能持续发出一段蜂鸣声,从而达到报时的目的。

3.3.6译码模块seltime(VHDL语言)

代码如下:

LIBRARYieee;

useieee.std_logic_1164.all

useieee.std_logic_unsigned.all;

useieee.std_logic_arith.all;

ENTITYseltimeIS

PORT(

clk1,reset:

INSTD_LOGIC;

sec,min:

INSTD_LOGIC_VECTOR(6downto0);

hour:

instd_logic_vector(5downto0);

daout:

OUTSTD_LOGIC_vector(3downto0);

sel:

outstd_logic_vector(2downto0));

ENDseltime;

ARCHITE

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1