VHDL数字电子钟的设计与实现论文_第1页
VHDL数字电子钟的设计与实现论文_第2页
VHDL数字电子钟的设计与实现论文_第3页
VHDL数字电子钟的设计与实现论文_第4页
VHDL数字电子钟的设计与实现论文_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 . 基于VHDL数字电子钟的设计与实现学生:新钧 080307039指导老师:唐飞VHDL 与 单片机的关系摘 要:本课程设计完成了数字电子钟的设计,数字电子钟是一种用数字显示秒、分、时的计时装置,由于数字集成电路技术的发展和采用了先进的石英技术,它使数字钟具有走时准确、性能稳定、携带方便等优点。数字钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以与办公室等公共场所,给人们的生活带来极大的方便。在这里我们将已学过的比较零散的数字电路的知识有机的、系统的联系起来用于实际,来培养我们的综合分析和设计电路的能力。关键词:电子钟;门电路与单次按键;琴键开关一. 引言20纪末,电子技术获得了

2、飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。 时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。所以,要制作一个定时系统。随时提醒这些容易忘记时间的人。 钟表的数字化给人们生产生活带来了极大的方便,而且大扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、定时启闭电路、定时开关烘箱、通断动力设备,甚至各

3、种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟与扩大其应用,有着非常现实的意义。 通过数字电子钟的设计,巩固计算机组成原理课程,理论联系实际,提高分析、解决计算机技术的实际问题的独立工作能力;掌握用VHDL语言编制简单的小型模块,学会数字钟的设计方法,熟悉集成电路的使用方法,初步掌握电子钟的设计方法并实现时间的显示和校对,以与报时的功能,并能对数字电子钟进行扩展。数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。数字钟从原理上讲是一种典型的数字电路,其中包括了组合

4、逻辑电路和时序电路。因此,此次设计与制作数字钟就是为了了解数字钟的原理,从而学会制作数字钟.而且通过数字钟的制作进一步的了解各种在制作中用到的中小规模集成电路的作用与实用方法.且由于数字钟包括组合逻辑电路和时叙电路.通过它可以进一步学习与掌握各种组合逻辑电路与时序电路的原理与使用方法1.2 课程设计的容本次设计以数字电子为主,实现对时、分、秒、星期数字显示的计时装置,周期为243要采用中规模CMOS集成电路.本系统的设计电路由脉冲逻辑电路模块、时钟脉冲模块、电源模块、时钟译码显示电路模块、整点报时模块、校时模块、星期模块等几部分组成。采用电池作电源,采用低功耗的CMOS芯片与液晶显示器,发生器

5、使用晶体振荡、计数振荡器CD4060与双JK触发器CD4027,将标准秒信号送入“秒计数器”;计数器采用“可予制四位二进制异步清除”计数器来实现,分别组成两个六十进制(秒、分)、一个二十四进制(时)的计数器;整电报时电路以门电路、触发器与扬声器构成,要求在离整点差5秒时,每1秒钟鸣叫一次,共响5次,前四次为低音512Hz,最后一声为高音1024Hz;星期计数器是用四个D触发器组成;校时电路是由与非门构成的双稳态触发器,用来对“星期”、“时”、“分”、“秒”显示数字进行调整的;译码显示电路选用BCD-7段锁存译码驱动器CC4511构成,再经过设计一个电子钟,具有时、分、秒显示功能,在计时过程中具

6、有报时功能,同时能对时、分进行校对,在使用74LS290输入脉冲时能够显示一周的星期,具有一分钟闹铃功能.实验仪器:74LS161(7片),74LS48(BCD_7段译码器), 74LS29(4片),门电路与单次按键,琴键开关2 VHDL的介绍1)VHDL语言        超高速集成电路硬件描述语(VHSIC Hardware Deseription Language,简称VHDL),是IEEE的一项标准设计语言。它源于美国国防部提出的超高速集成电路(Very High Speed Integrated Circ

7、uit,简称VHSIC)计划,是ASIC设计和PLD设计的一种主要输入工具。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,(简称93版)。现在,VHDL和Verilog作为IEE

8、E的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。有专家认为,在新的世纪中,VHDL于Verilog语言将承担起大部分的数字系统设计任务。2.2.1 VHDL的用途与优点VHDL主要用于描述数字系统的结构,行为,功能和接口。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,与端口)和部(或称不可视部分),既涉与实体的部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成外部分的概念是VHDL系统设计的基

9、本点。应用VHDL进行工程设计的优点是多方面的。 (1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。 (2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。 (3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效、高速的完成必须有多人甚至多个代发组共同并行工作才能实现。(4)对于用VHDL完成的一个确定的设计,

10、可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。 (5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。2)VHDL语言开发的流程 (1)文本编辑:用任何文本编辑器都可以进行,也可以用专用的HDL编辑环境。通常VHDL文件保存为.vhd文件。 (2)功能仿真:将文件调入HDL仿真软件进行功能仿真,检查逻辑功能是否正确(也叫前仿真,对简单的设计可以跳过这一步,只在布线完成以后,进行时序仿真)。 (3)逻辑综合:将源文件调入逻辑综合软件进行综合,即把语言综合成最简的布尔表达式和信号的连接关系。逻

11、辑综合软件会生成.edf(edif)的EDA工业标准文件。 (4)布局布线:将.edf文件调入PLD厂家提供的软件中进行布线,即把设计好的逻辑安放到PLD/FPGA。 (5)编程下载:确认仿真无误后,将文件下载到芯片中。3数字电子时钟的设计方案3.1设计规划系统的工作原理:振荡器产生稳定的分频脉冲信号,作为数字钟的时间基准,然后经过分频器输出标准秒脉冲。秒计数器满60分向分计数器进位,分计数器满60后向小时计数器进位,小时计数器按照“24翻1”规律计数。计数器的输出分别由译码器送显示器显示。计时出现误差时,可以用校时电路校时、校分。数字电子钟的电路组成方框图片如下:图3.1 数字电子钟的电路组

12、成方框图硬件电路的设计: 如图3.1所示,以74LS161作为控制部件。47LS161被接成十进制计数器,其置数输入端A、B、C、D(3脚4脚5脚6脚)接低电平,LD、EP、ET(9脚10脚7脚)接高电平,秒脉冲由CP(2脚)端输入。计数器的输出端QA、QB、QC、QD(14脚13脚12脚11脚)接译码电路CD4511的输入端D、C、B、A。用74LS290做一个七进制的加法计数器,将时的十位的进位脉冲接到显示星期的74LS290的输入脉冲就可以了。硬件电路图如下:74LS48时钟基准74LS290晶体振荡器LED数码管74LS161图3.2 硬件电路图软件电路的设计:考虑到实用性,在该电子钟

13、的设计中修改定时或调整时间时采用了闪烁。在编程上,首先进行了初始化定义了程序的入口地址以与中断的入口地址,在主程序的开始定义了一组固定单元用来存储计数的秒,分,时等。在显示程序段中主要进行了闪烁的处理,采用定时器中断置标志位,再与位选相互结合的方法来控制调时或定时中的闪烁。时、分、秒的显示则是用了软件译码 (查表 )的方式,再用了一段固定的程序段进行进制转化。初始化之后,用中断方式对其计数,计数的同时采用了定时器比较的方法,比较当前计数时间与定时时间是否相等,若相等则将闹铃标志位置数。为了避免响铃影响显示定时,选时或调时程序段。对当前时间或定时时间修改后又返回到最初的显示程序段,如此循环下去。

14、程序流程图如图所示。响铃结束显示初始化TF读键有无闹钟?是否为调时、定时?开始TT定时FF调时TF调时?是否修改?图3.3 程序流程图3.2 各模块原理与程序3. 2.1秒脉冲发生器秒脉冲发生器是数字钟的重要部分,它的精度稳定度决定了数字钟的质量,通常用晶体振荡器发生的脉冲经过整形、分频获得1Hz的秒脉冲。如晶振为32768Hz,通过15次二分频后可获得1Hz的脉冲输出。(本实验中实验箱上已经有1hz脉冲)。按键由琴键或拨码开关发出脉冲或电平信号,控制整个系统工作。原理图如下: 其程序代码如下:ORG 0000H AJMP MAIN ORG 000BH AJMP TIME ORG 0

15、300H MAIN: mov 20h,#00h MOV 21H,#00H MOV 22H,#00H MOV 23H,#00H MOV IP,#02H ;IP,IE初始化 MOV IE,#82H MOV TMOD,#01H ;设定定时器工作方式? MOV TL0,#0B0H MOV TH0,#3CH SETB TR0 ;启动定时? MOV SP,#40H ;重设堆栈指针 NEXT: LCALL DISP ;调用显示子程序? LCALL KEY ;调用按键检测子程序 JZ NEXT ; LCALL ANKEY ;调用按键处理子程序 SJMP NEXT ;重新循环 NOP NOP NOP 3.2.2

16、可调时钟模块有了时间标准“秒”信号后,就可以根据60秒为1分、60分为1小时、24小时为1天的计数周期,分别组成两个六十进制(秒、分)、一个二十四进制(时)的计数器。将这些计数器适当连接,就可以构成秒、分、时的计数,实现计时功能。其程序流程图如下:174LS161构成秒、分的六十进制计数器 数字钟的“秒”、“分”信号产生电路都是由六十进制计数器构成,“时”信号产生电路为二十四进制计数器。它们都可以用两个“可予制四位二进制异步清除”计数器来实现。利用74LS161芯片的预置数功能,也可以构成不同进制的计数器。因为一片74LS161含有一个四位二进制异步清除计数器,因此需用两片74LS161就可以

17、构成六十进制计数器了。集成电路74LS161芯片的电路其中(如图3)CP为时钟脉冲输入端,P0、P1、P2、P3为预置数输入端, 为置数控制端, 为异步复位端,二者均为低电平有效;Q0、Q1、Q2、Q3为计数器的输出端。该计数器能同步并行预置数据,具有清零置数,计数和保持功能,具有进位输出端,可以串接计数器使用。4位二进制同步计数器74LS161引脚图它的管脚排列如图所示:图  74LS161管脚排列图a:计数功能:当 = =CTP=CTT=1,CP=CP时,实现计数功能。b:同步并行置数功能:当 =1时,预置控制端 =0,并且 CP=CP时,Q3Q2Q1Q0= P3P2P1P0,实

18、现同步预置数功能。c:保持功能:当 = =1且CTP·CTT=0时,输出Q3Q2Q1Q0保持不变。d:异步清零功能:当复位端 =0时,输出Q3Q2Q1Q0全为零,实现异步清零功能(又称复位功能)。秒个位计数器 74LS161被接成十进制计数器,其置数输入端A、B、C、D(3脚4脚5脚6脚)接低电平,LD、EP、ET(9脚10脚7脚)接高电平,秒脉冲由CP(2脚)端输入。计数器的输出端QA、QB、QC、QD(14脚13脚12脚11脚)接译码电路CD4511的输入端D、C、B、A。当秒脉冲输入时,电路状态按二进制自然序列依次递增1,QA、QB、QC、QD输出为0000、0001、0010

19、、0011、0100、0101、0110、0111、1000、1001,当输出为1010也就是10时,QA、QC输出都为1,经过一个与非门后一路经反相后送入或非门的一个输入端,输出送往计数器的清零端RD使秒计数器清零,另一路经反相后作为进位脉冲送入秒十位计数器的脉冲输入端。秒十位计数器 在这里74LS161被接成六进制计数器,接法与秒个位计数器一样,秒个位计数器送来的进位脉冲送入秒使位计数器的脉冲输入端,使其按二进制自然序依次递增1,QA、QB、QC、QD端输出为0000、0001、0010、0011、0100、0101,当输出为0110也就是6时,QB、QC输出为1,QA、QD输出为0,QB

20、、QC经过一个与非门后一路先送往秒十位计数器的清零端,然后取反接或非门的另一个输入端后送入秒个位计数器的清零端,将整个秒计数器清零,另一路经反相后作为进位脉冲送入分个位计数器的脉冲输入端。分计数器的连接方法与秒计数器一样,分计数器向时计数器送进位脉冲。秒、分的六十进制计数器的构成如图所示:其程序代码如下:;定时中断处理程序: TIME: PUSH ACC ;保护现场 PUSH PSW MOV TL0,#0B4H ;赋定时初值 MOV TH0,#3CH INC 20H ; MOV A,20H CJNE A,#20,RETI1 MOV 20H,#00H ;一秒钟时间到 MOV A,21H ADD

21、A,#01H DA A MOV 21H,A CJNE A,#60H,RETI1 MOV 21H,#00H ;一分钟时间到 MOV A,22H ADD A,#01H DA A MOV 22H,A CJNE A,#60H,RETI1 MOV 22H,#00H ;一小时时间到 274LS161构成二十四进制计数器 二十四进制计数器,也是用两个74LS161集成块来实现的,方法与二十四进制计数器小异,但其要求个位是十进制,状态变化在00001001间循环,十位是二进制,状态变化在00000010间循环,显示为023时。原理:由分计数器送来的进位脉冲送入时个位计数器,电路在分进位脉冲的作用下按二进制自然

22、序依次递增1,当计数到24,这时小时个位输出0100(也就是4),小时十位输出0010(也就是2),小时十位计数器只有QC端有输出,小时个位计数器只有QB端有输出,将QC、QB端接一个二输入与非门,与非门输出一路先送入十位计数器的清零端然后取反送入或非门的另一个输入端,输出接小时个位计数器的清零端,其每10小时清零并向小时十位计数器送进位脉冲,当十位输出为二,小时个位输出为四时,将整个电路清零,另一路取反后作为星期进位脉冲送入星期显示电路的脉冲输入端,完成24小时的显示与向星期电路送星期进位脉冲的功能。二十四进制计数器的构成如图所示:3.2.3闹铃功能:一分钟整点报时功能。其电路图如下:本实验

23、使用LED发光。 3.2.4日历系统:星期显示。74LS48的部逻辑入图所示为显示星期,本实验只用到前面的七中状态,只要满足 ,则可以正显示从星期一到星期日。用74LS290做一 个七进制的加法计数器,将时的十位的进位脉冲接到显示星期的74LS290的输入脉冲就可以了。电路图如下:数字钟总电框图如下图所示:实验容与步骤:根据实验原理,将所需要的各部分做好,在将起接在一起就得到了所需的电路图。其程序代码如下:MOV A,23HCJNE A,#24H,RETI1 MOV 23H,#00H ;到时间达到24小时,清零. RETI1: POP PSW ;恢复现场 RETI ;中断返回? NOP ;显示

24、子程序 DISP: ANL 2FH,#10H ;处理小数点 MOV A,21H ;处理秒21H->2DH,2EH MOV A,22H ;处理分钟22H->2CH,2DH MOV A,23H ;处理小时23H->2AH,2BH MOV R0,#2FH ;显示偏移量 MOV P0,a ;送显示 MOV R2,#80H ;延时 DJNZ R3,LOOP1 ;循环显示 TABLE: db 28h,7eh,0a2h,62h,74h,61h,21h ;不带小数点 DB 7ah,20h,60h,00,00,00,00,00,00 DB 8H,5eH,82H,42H,54H,41H,1H,5

25、aH ;带小数点 DB 00H,40H,00,00,00,00,00,00 ;按键判断程序 JZ RETX ;无键按下则返回 JZ RETX ;键盘去抖动。 MOV R6,A ;将键值存入R6。 JNZ LOOP2 ;等待键释放 ANKEY: CLR EA ;关中断 LX: MOV A,R6 ACC.2,L1 ;是功能键转L1 ACC.3,L2 ;是确认键转L2 ACC.4,L3 ;是减1键转L3 JNB ACC.5,L12 ;不是增1键,转L12 2BH.4,L6 ;判断使哪一位(时、分、秒)的值加1 LCALL KEY ;判断有无键按下。 L2: MOV 25H,#00H ;确认键处理程序

26、 L3: 2BH.4,L61 ;增一键处理程序 L1: MOV A,25H ;功能键处理程序 LB1: MOV 25H,#01H ;25H单元是标志位,(25H)=01H调节时单元的值 LB3: MOV 25H,#04H ;25H单元是标志位,(25H)=01H调节秒单元的值LB2: MOV 25H,#02H ;25H单元是标志位,(25H)=01H调节分单元的值 L6: MOV A,23H ;时加一 L8:MOV A,22H ;分加一 L9: MOV A,21H ;秒加一 ADD A,#01H DA A 四系统仿真该电子钟对源程序进行编译,自动地把VHDL描述转变成门级电路,进而完成各种测试

27、工作。软件平台自动对设计结果进行编译,检查连接,给出错误报告并进行逻辑综合,同时将产生编程文件和用于时序仿真用的输出文件,最后给出实现此项目最适合的器件。经过编译, EDA软件平台报告电路连接没有错误。4.1系统仿真图图4.1 顶层设计仿真图由图可知,当遇到上升沿时发一个信号,在高电位时有效,而在低电位时无效。在遇到上升沿时计数器进位加一,当计数器不为零时不发信号,只有当计数器为零时才发一个信号。单片机时间基准振荡电路中振荡晶体频率的选择必须要和程序中的时间基准相一致,也就是说要采用振荡频率为12M的振荡晶体,否则若采用了11.59M的振荡晶体就会使得单个振荡周期变长,故而使单个时间间隔变长,最终会导致实际上的电子钟走时变“慢”。由于单片机处理数据过程中要响应中断等原因,而中断服务程序所花费的时间必须在中断返回后在计时单元中扣除掉,否则实际上制作出来的电子钟会变“慢”。在本次程序设计中将中断服务程序所花费的时间直接从定时间隔 (50ms) 中扣除,也就是说将定时间隔设置得比50ms小一些,必须不断地通过软件调试该时间间隔,这样才能使得电子钟

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论