数字钟的设计与制作.doc

上传人:仙人指路1688 文档编号:2881247 上传时间:2023-03-01 格式:DOC 页数:22 大小:822KB
返回 下载 相关 举报
数字钟的设计与制作.doc_第1页
第1页 / 共22页
数字钟的设计与制作.doc_第2页
第2页 / 共22页
数字钟的设计与制作.doc_第3页
第3页 / 共22页
数字钟的设计与制作.doc_第4页
第4页 / 共22页
数字钟的设计与制作.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《数字钟的设计与制作.doc》由会员分享,可在线阅读,更多相关《数字钟的设计与制作.doc(22页珍藏版)》请在三一办公上搜索。

1、 长沙理工大学计算机组成原理课程设计报告数字钟的设计与制作杨学镇学 院计算机与通信工程专 业计算机科学与技术 班 级 085010502 学 号 200550080230 学生姓名 杨学镇 指导教师 肖晓丽 课程成绩 完成日期 2007年1月18日课程设计任务书计算机与通信工程学院 计算机科学与技术专业 课程名称计算机组成原理课程设计时间20062007学年第一学期1920周学生姓名杨学镇指导老师肖晓丽题 目数字钟的设计与制作主要内容:本课程设计主要是利用硬件描述语言VHDL的设计思想,采用自顶向下的方法、划分模块来设计数字钟的几个模块。通过课程设计深入理解计算机的基本原理和方法,加深对计算机

2、组成的理解。要求:(1)通过对相应文献的收集、分析以及总结,给出相应课题的背景、意义及现状研究分析。(2)通过课题设计,掌握计算机组成原理的分析方法和设计方法。(3)学按要求编写课程设计报告书,能正确阐述设计和实验结果。(4)学生应抱着严谨认真的态度积极投入到课程设计过程中,认真查阅相应文献以及实现,给出个人分析、设计以及实现。应当提交的文件:(1)课程设计报告。(2)课程设计附件(源程序、各类图纸、实验数据、运行截图等)。课程设计成绩评定学 院 计算机与通信工程 专 业 计算机科学与技术班 级 计05-02班 学 号 200550080230 学生姓名 杨学镇 指导教师 肖晓丽 课程成绩 完

3、成日期 2007.1.18 指导教师对学生在课程设计中的评价评分项目优良中及格不及格课程设计中的创造性成果学生掌握课程内容的程度课程设计完成情况课程设计动手能力文字表达学习态度规范要求课程设计论文的质量指导教师对课程设计的评定意见综合成绩 指导教师签字 年 月 日数字钟的设计与制作学生姓名:杨学镇 指导老师:肖晓丽摘 要 系统使用EDA技术设计了数字钟,采用硬件描述语言VHDL按模块化方式进行设计,然后进行编程,时序仿真等。利用VHDL语言完成了数字钟的设计。该数字钟能实现时、分、秒计数的显示功能,且以24小时循环计时。整个系统结构简单,使用方便,功能齐全,精度高,具有一定的开发价值。关键字

4、数字钟;EDA;VHDL; 目录1引言11.1课题的背景、目的11.2设计的内容12 EDA、VHDL简介22.1EDA技术22.2硬件描述语言VHDL2VHDL的简介2VHDL语言的特点2VHDL的设计流程33 数字钟设计43.1数字钟的工作原理43.2晶体振荡器53.3分频器电路63.4时、分、秒计数器电路64 系统仿真91.秒表计数器电路仿真图92.小时计数器电路仿真图93.分计数器电路仿真图10结束语11致谢12参考文献13附录141 引 言随着社会的发展,科学技术也在不断的进步。特别是计算机产业,可以说是日新月异,数字钟作为计算机的一个组成也随之逐渐进入人们的生活,从先前的采用半导体

5、技术实现的数字钟到现在广泛应用的采用高集成度芯片实现的数字钟。数字钟正在向着功能强,体积小,重量轻等方向不断发展,本设计主要介绍的是一个基于超高速硬件描述语言VHDL对数字钟中显示电路进行编程实现。近年来,集成电路和计算机应用得到了高速发展,现代电子设计技术已迈入一个崭新的阶段,具体表现在:(1)电子器件及其技术的发展将更多地趋向于为EDA服务;(2)硬件电路与软件设计过程已高度渗透;(3)电子设计技术将归结为更加标准、规范的EDA工具和硬件描述语言VHDL的运用;(4)数字系统的芯片化实现手段已成主流。因此利用计算机和大规模复杂可编程逻辑器件进行现代电子系统设计已成为电子工程类技术人员必不可

6、少的基本技能之一。1.1课题的背景、目的本次设计的目的就是在掌握EDA实验开发系统的初步使用基础上,了解EDA技术,加深对计算机体系结构的理解。通过学习的VHDL语言结合电子电路的设计知识理论联系实际,掌握所学的课程知识,学习VHDL基本单元电路的综合设计应用。通过对实用数字钟的设计,巩固和综合运用计算机原理的基本理论和方法,理论联系实际,提高IC设计能力,提高分析、解决计算机技术实际问题的独立工作能力。通过课程设计深入理解计算机的组成原理,达到课程设计的目标。1.2 设计的内容利用VHDL设计数字钟显示电路的各个模块,并使用EDA工具对各模块进行仿真验证。数字钟显示电路的设计分为下面几个模块

7、:秒计数模块、分计数模块、小时计数模块.。完成以后把各个模块整合后,显示相应的输出状态。2 EDA、VHDL简介2.1 EDA技术 EDA是电子设计自动化(Electronic Design Automation)缩写,EDA是以计算机为工具,根据硬件描述语言HDL( Hardware Description language)完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局布线、仿真以及对于特定目标芯片的适配编译和编程下载等工作。典型的EDA工具中必须包含两个特殊的软件包,即综合器和适配器。综合器的功能就是将设计者在EDA平台上完成的针对某个系统项目的HDL、原理图或状态图形

8、描述,针对给定的硬件系统组件,进行编译、优化、转换和综合,最终获得我们欲实现功能的描述文件。综合器在工作前,必须给定所要实现的硬件结构参数,它的功能就是将软件描述与给定的硬件结构用一定的方式联系起来。 2.2 硬件描述语言VHDL VHDL的简介 VHDL的英文全名是Very-High-Speed Integrated Circuit HardwareDescription Language,诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言 。自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL设计环

9、境,或宣布自己的设计工具可以和VHDL接口。此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,(简称93版)。现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。有专家认为,在新的世纪中,VHDL于Verilog语言将承担起大部分的数字系统设计任务。 VHDL语言的特点1.用VHDL代码而不是用原理图进行设计,意味着

10、整个电路板的模型及性能可用计算机模拟进行验证。2.VHDL元件的设计与工艺u无关,与工艺独立,方便工艺转换。3.VHDL支持各种设计方法,自顶向下、自底向上或者混合的都可以。4.可以进行从系统级到逻辑级的描述,即混合描述。5.VHDL区别于其他的HDL,已形成标准,其代码在不同的系统中可交换建模。 VHDL的设计流程1.设计规范的定义明确这个系统有哪些设计要求,和你要想到达的目标。2.采用VHDL进行设计描述这部分包括设计规划和程序的编写。设计规划主要包括设计方式的选择及是否进行模块划分。设计方式一般包括直接设计,自顶向下和自底向下设计,这个和其他软件语言差不多。最重要还是模块划分。3.VHD

11、L程序仿真4.综合、优化和布局布线综合指的是将设计描述转化成底层电路的表示形式,其结果是一个网表或者是一组逻辑方程;优化,这个主要是为了提高程序的执行效率及减少资源的利用;布局布线,指的是将逻辑关系转化成电路连接的方式。5.仿真这个与VHDL程序仿真不同,这个不仅是对逻辑方面的验证,还要进行时序功能验证。6.器件编程3 数字钟设计3.1数字钟的工作原理 数字钟是一个将“ 时”,“分”,“秒”显示于人的视觉器官的计时装置。它的计时周期为24小时,显示满刻度为23时59分59秒,另外应有校时功能和一些显示星期、报时、停电查看时间等附加功能。因此,一个基本的数字钟电路主要由译码显示器、“时”,“分”

12、,“秒”,“星期”计数器、校时电路、报时电路和振荡器组成。干电路系统由秒信号发生器、“时、分、秒、星期”计数器、译码器及显示器、校时电路、整点报时电路组成。秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器加分频器来实现。将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。“时计数器”采用24进制计时器,可实现对一天24小时的累计。每累计24小时,发出一个“星期脉冲”信号,该信号将被

13、送到“星期计数器”,“星期计数器” 采用7进制计时器,可实现对一周7天的累计。工作原理图如图3.1所示。 图3.1 数字钟的工作原理图3.2晶体振荡器 晶体振荡电路是构成数字式时钟的核心,它保证了时钟走时准确及稳定。晶体振荡器它的作用是产生时间标准信号。数字钟的精度主要取决于时间标准信号的频率及其稳定度。因此,一般采用石英晶体振荡器经过分频得到这一信号。晶体振荡器电路给数字钟提供一个频率稳定准确的32768Hz的方波信号,可保证数字钟的走时准确及稳定。不管是指针式的电子钟还是数字显示的电子钟都使用了晶体振荡器电路。如图3.2所示晶体振荡电路框图。 图3.2 晶体振荡电路3.3分频器电路分频器电

14、路将32768HZ的高频方波信号经32768次分频后得到1Hz的方波信号供秒计数器进行计数。分频器实际上也就是计数器。本次设计是运用了CD4060分频器进行分频,分频电路可提供512HZ和1024HZ的频率,在经CD4027分频器进行一分频,为此电路输送一秒脉冲。2进制计数器我们采用CMOS管CD4013B。CD4013B其实是一个双D型触发器。它是由两个相同的、独立的数据型触发器组成。每个触发器有独立的数据、置位、复位、时钟输入和Q输出。在时钟脉冲正变化沿时预置在D输入的逻辑电平转换至Q输出。时钟置位和复位是独立的,分别通过在置位或复位线上高电平完成。3.4 时、分、秒计数器电路(1)原理时

15、、分、秒计数器电路有相似的地方,用两个74LS161组成一个二十四进制计数器,显示023时。由分计数器送来的进位脉冲送入时个位计数器,计10小时清零并向时十位计数器送进位脉冲,当十位输出为二,个位输出为四时将整个电路清零并向下一级的星期显示电路送进位脉冲。本电路也可理解为用两个74LS161组成一个一百进制计数器显示099,当计数到24是将整个电路清零。时、分、秒计数器都需要用译码电路和LED数码管进行译码和显示。时、分、秒计数器电路如图3.3所示。图3.3 时、分、秒计数器电路 时、分、秒电路部分代码如下:library ieee; use ieee.std_logic_1164.all;

16、use ieee.std_logic_unsigned.all; entity second is port(clk:in std_logic; reset:in std_logic; setmin:in std_logic; enmin:out std_logic; daout:out std_logic_vector(6 downto 0); end entity second; architecture art of second is signal count:std_logic_vector(6 downto 0); signal enmin_1,enmin_2:std_logic;

17、begindaout=count;enmin_2=(setmin and clk);enmin=(enmin_1 or enmin_2);process(clk,reset,setmin)begin if(reset=0)then count=0000000;enmin_1=0;elsif(clkevent and clk=1)then if(count(3 downto 0)=1001) then if(count16#60#)then if(count=101101)then enmin_1=1;count=0000000; else count=count+7; end if; else

18、 count=0000000;end if; elsif (count16#60#)then count=count+1; enmin_1=0; else count=0000000;enmin_1=0; end if; end if;end process;end art; 4 系统仿真1. 秒表计数器电路仿真图秒表计数器电路仿真图如图4.1:将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。 图4.1 秒计数器电路仿真图2 小时计数器电路仿真图时计数器电路仿真图如图4.2:“时计数器”采用24进制计时器,可

19、实现对一天24小时的累计。每累计24小时,发出一个“星期脉冲”信号,该信号将被送到“星期计数器”,图4.2 小时计数器电路仿真图3分计数器电路仿真图分计数器电路仿真图如图4.3:“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。图4.3 分计数器电路仿真图结束语通过两星期的紧张工作,最后完成了我的设计任务数字钟的设计与制作。通过本次课程设计的学习,我深深的体会到设计课的重要性和目的性所在。本次设计课不仅仅培养了我们实际操作能力,也培养了我们灵活运用课本知识,理论联系实际,独立自主的进行设计的能力。它不仅仅是一个学习新知识新方法的好机会,同时也

20、是对我所学知识的一次综合的检验和复习,使我明白了自己的缺陷所在,从而查漏补缺。希望学校以后多安排一些类似的实践环节,让同学们学以致用。课程设计中要求要有耐心和毅力,还要细心,稍有不慎,一个小小的错误就会导致结果的不正确,而对错误的检查要求我要有足够的耐心,通过这次设计和设计中遇到的问题,也积累了一定的经验,对以后从事集成电路设计工作会有一定的帮助。在应用VHDL的过程中让我真正领会到了其并行运行与其他软件(C语言)顺序执行的差别及其在电路设计上的优越性。用VHDL硬件描述语言的形式来进行数字系统的设计方便灵活,利用EDA软件进行编译优化仿真极大地减少了电路设计时间和可能发生的错误,降低了开发成

21、本,这种设计方法必将在未来的数字系统设计中发挥越来越重要的作用。致 谢 本课程设计在选题和设计过程中得到了肖晓丽老师的悉心指导,肖老师多次询问课程设计进程,并多次指导我对课程设计进行修改,帮助我完善了该课程设计。在此对肖老师表示衷心的感谢。 参考文献1 杨刚 VHDL数字控制系统设计 北京:电子工业出版社 20042曾繁泰 VHDL程序设计 北京:清华大学出版社 20013 黄仁欣 DEA技术使用教程 北京:清华大学出版社 20064 曹欣燕 DEA技术实验与课程设计 北京:清华大学出版社 2006附 录1.秒计数器模块的VHDL源程序: library ieee;use ieee.std_l

22、ogic_1164.all; use ieee.std_logic_unsigned.all; entity second is port(clk:in std_logic; reset:in std_logic; setmin:in std_logic; enmin:out std_logic; daout:out std_logic_vector(6 downto 0); end entity second; architecture art of second is signal count:std_logic_vector(6 downto 0); signal enmin_1,enm

23、in_2:std_logic;begindaout=count;enmin_2=(setmin and clk);enmin=(enmin_1 or enmin_2);process(clk,reset,setmin)begin if(reset=0)then count=0000000;enmin_1=0;elsif(clkevent and clk=1)then if(count(3 downto 0)=1001) then if(count16#60#)then if(count=101101)then enmin_1=1;count=0000000; else count=count+

24、7; end if; else count=0000000;end if; elsif (count16#60#)then count=count+1; enmin_1=0; else count=0000000;enmin_1=0; end if; end if;end process;end art;2.分计数器模块的VHDL源程序:library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity minute is port(clk:in std_logic; clks:in std_lo

25、gic; reset:in std_logic; sethour:in std_logic; enhour:out std_logic; daout:out std_logic_vector(6 downto 0); end entity minute; architecture art of minute is signal count:std_logic_vector(6 downto 0); signal enhour_1,enhour_2:std_logic;begindaout=count;enhour_2=(sethour and clks);enhour=(enhour_1 or

26、 enhour_2);process(clk,reset,sethour)begin if(reset=0)then count=0000000;enhour_1=0;elsif(clkevent and clk=1)then if(count(3 downto 0)=1001) then if(count16#60#)then if(count=101101)then enhour_1=1; count=0000000; else count=count+7; enhour_1=0; end if; else count=0000000;end if; elsif (count16#60#)

27、then count=count+1; enhour_1=0after 100 ns; else count=0000000;enhour_1=0; end if; end if;end process;end art;3.小时计数器模块的VHDL源程序:library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity hour is port(clk:in std_logic; reset:in std_logic; daout:out std_logic_vector(5 downto 0)

28、; end entity hour; architecture art of hour is signal count:std_logic_vector(5 downto 0); begindaout=count;process(clk,reset)begin if(reset=0)then count=000000;elsif(clkevent and clk=1)then if(count(3 downto 0)=1001) then if(count16#23#)then count=count+7; else count=000000;end if; elsif (count16#23#)then count=count+1; else count=000000; end if; end if;end process;end art;

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号