收藏 分享(赏)

数字逻辑课程设计报告78983new.doc

上传人:dzzj200808 文档编号:2308456 上传时间:2018-09-10 格式:DOC 页数:7 大小:788KB
下载 相关 举报
数字逻辑课程设计报告78983new.doc_第1页
第1页 / 共7页
数字逻辑课程设计报告78983new.doc_第2页
第2页 / 共7页
数字逻辑课程设计报告78983new.doc_第3页
第3页 / 共7页
数字逻辑课程设计报告78983new.doc_第4页
第4页 / 共7页
数字逻辑课程设计报告78983new.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、数字逻辑实验报告多功能数字钟学院:计算机科学与通信学院班级:信息安全 1001姓名:钟伟一、设计任务及要求:(1) 拥有正常的时、分、秒计时功能。(2) 能利用实验板上的按键实现校时、校分及秒清零功能。(3) 能利用实验板上的扬声器做整点报时。(4) 闹钟功能。(5) 在 MAXPLUS 中采用层次化设计方法进行设计。(6) 完成全部电路设计后在实验板上下载,验证设计课题的正确性。二、多功能数字钟的总体设计方案根据总体设计框图,可以将整个系统分成 6 个模块来实现,分别是计时模块、校时模块、整点报时模块,分频模块,动态显示模块。1. 计时模块该模块的设计相对简单,使用一个二十四进制和两个六十进

2、制计数器级联,构成数字钟的基本框架。二十四进制的计数器用于计时,六十进制计数器用于计分和计秒。只要给秒计数器一个 1Hz 的时钟脉冲,则可以进行正常计时。分计数器以秒计数器的进位作为计数脉冲,小时计数器以分计数器的进位作为计数脉冲。(计时模块) (60 进制计数器构成的秒,分计数器)2. 校时模块该模块设计要求实现校时、校分及秒清零的功能。 按下校时键,小时计数器迅速递增以调至所需要的小时位。 按下校分键,分计数器迅速递增以调至所需要的分位。 按下清零键,将秒计数器清零。可以选择实验板上的 3 个脉冲按键进行锁定。对于此模块的设计,有 3 个需要注意的问题:】 在校分时,分计数器的计数不应对小

3、时位产生影响。因而需要屏蔽此时分计数器的进位信号以防止小时计数器计数。具体方法是在分计数器的进位输出时外加一个或门。详见下图。二路选择器与计数器之间连了一个或门,以屏蔽进位信号 按键的“抖动”的消除。所谓的“抖动”是指一次按键时的弹跳现象,通常实验板中按键所用的开关为机械性开关,由于机械触点的弹性作用,按键开关在闭合时并不能马上接通,而断开的时候也不能马上断开,使得闭合及断开的瞬间伴随一系列的电压抖动,从而导致本来一次按键,希望计数一次,结果因为抖动计数多次,且次数随机,这样严重影响了时间的校对。消除抖动较为简单的方法是利用触发器,比如可以使用 D 触发器进行消抖。原因在于,D 触发器边沿触发

4、,则在除去时钟边沿到来前一瞬间之外的绝大部分时间都不接受输入,自然消除了抖动。详见下图加 D 触发器防抖动 计时采用 1Hz 的脉冲驱动计数器计数,而校对时间时应选用相对高频率的信号驱动计数器以达到快速校对时间的目的。显然,这两种计数脉冲之间需要进行相应的选择切换。于是将计时和校时模块合起来的电路实现可以实现(见图 3) 。两种脉冲信号用两路选择器进行选择,选择条件为是否按键。按键输出经过了消抖的过程。3整点报时模块该模块的功能要求是:计时到 59 分 50 秒时,每两秒一次低音报时,整点时进行高音报时,可以将报时信号接到实验板上的扬声器输出。而以不同频率的脉冲信号区分低音和高音报时。比如可用

5、 500Hz 信号进行低音报时信号,1kHz 信号作为高音报时信号。进行报时的条件是计数器计数至所要求的时间点,因而需要实现一个比较模块,将分计数器和秒计数器的输出连至比较模块输入端完成比较过程。整点报时总体设计图以下是整点报时的比较模块设计 VHDL 语言library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity baoshi isport(mhd,mhc,mhb,mha,mld,mlc,mlb,mla,fhd,fhc,fhb,fha,fld,flc,flb,fla:in std_logic;

6、put0,put1:out std_logic);end baoshi;architecture baoshi_arc of baoshi isbeginput1=1 when(mhd=0 and mhc=0 and mhb=0 and mha=0 and mld=0 and mlc=0 and mlb=0 and mla=0 and fhd=0 and fhc=0 and fhb=0 and fha=0 and fld=0 and flc=0 and flb=0 and fla=0)else 0;put0=1 when(mhd=0 and mhc=1 and mhb=0 and mha=1

7、and mld=0 and mlc=0 and mlb=0 and mla=0 and fhd=0 and fhc=1 and fhb=0 and fha=1 and fld=1 and flc=0 and flb=0 and fla=1)OR(mhd=0 and mhc=1 and mhb=0 and mha=1 and mld=0 and mlc=0 and mlb=1 and mla=0 and fhd=0 and fhc=1 and fhb=0 and fha=1 and fld=1 and flc=0 and flb=0 and fla=1)OR(mhd=0 and mhc=1 an

8、d mhb=0 and mha=1 and mld=0 and mlc=1 and mlb=0 and mla=0 and fhd=0 and fhc=1 and fhb=0 and fha=1 and fld=1 and flc=0 and flb=0 and fla=1)OR(mhd=0 and mhc=1 and mhb=0 and mha=1 and mld=0 and mlc=1 and mlb=1 and mla=0 and fhd=0 and fhc=1 and fhb=0 and fha=1 and fld=1 and flc=0 and flb=0 and fla=1)OR(

9、mhd=0 and mhc=1 and mhb=0 and mha=1 and mld=1 and mlc=0 and mlb=0 and mla=0 and fhd=0 and fhc=1 and fhb=0 and fha=1 and fld=1 and flc=0 and flb=0 and fla=1)else 0;end baoshi_arc;4分频模块在本系统中需要用到多种不同频率的脉冲信号,上至高音报时,下至 1Hz 的计秒脉冲。所有这些脉冲信号均可以通过一个基准频率分频器生成。基准频率分频器就是一个进制很大的计数器,利用计数器的分频功能,从不同的输出位得到所需要的脉冲信号。分频

10、器内部构造,其实就是 3 个 16 进制计数器级联电路中用到的分频器5动态显示模块时间的显示需要用到 6 个数码管,如果实验板上可用的静态显示数码管有 6 个或以上则很容易实现显示,只需要将小时高位到秒低位共 6 组输出按顺序锁定到 6 个数码管上即可。但如果资源不足,则无法完整显示 6位时间。在这种情况下,需要采用动态扫描的方式实现时间显示。在动态方式下,所有的数码管对应同一组七段码,每一个数码管由一个选择段控制点亮或熄灭,如果全部点亮,则都显示相同的数字。若要实现 6 位不同时间的显示。则需要利用人的视觉缺陷。具体来讲,可以在 6 个不同的时间段分别将每组时间经过七段译码后输出到 6 个数

11、码管,当某一组时间的七段码到达时,只点亮对应位置上的数码管,显示相应的数字;下一个循环将相邻一组时间的七段码送至数码管,同样只点亮相应位置的数码管,6 次一个循环,形成一个扫描序列。只要扫描频率超过人眼的视觉暂留频率(24Hz) ,就可以达到点亮单个数码管,却能享有 6 个同时显示的视觉效果,人眼辨别不出差别,而且扫描频率越高,显示越稳定。动态显示的模块,左边的引脚接的是时分秒计数器,右上是显示端,右下是控制端动态显示模块内部构造,包含一个 6 进制计数器,一个 3-8 译码器,4 个 8 路选择器,还有一个 7 段译码器以下是 7 段译码器的 VHDL 描述library ieee;use

12、ieee.std_logic_1164.all;entity decoder_bcd_display isport(decoder_in1,decoder_in2,decoder_in3,decoder_in4:in std_logic;decoder_out1,decoder_out2,decoder_out3,decoder_out4,decoder_out5,decoder_out6,decoder_out7:out std_logic);end decoder_bcd_display;architecture behave_decoder_bcd_display of decoder_

13、bcd_display issignal coderin:std_logic_vector(3 downto 0);signal coderout:std_logic_vector(6 downto 0);begincoderin(0)=decoder_in1;coderin(1)=decoder_in2;coderin(2)=decoder_in3;coderin(3)=decoder_in4;with coderin selectcoderout=“1111110“when“0000“,“0110000“when“0001“,“1101101“when“0010“,“1111001“whe

14、n“0011“,“0110011“when“0100“,“1011011“when“0101“,“0011111“when“0110“,“1110000“when“0111“,“1111111“when“1000“,“1110011“when“1001“,“-“when others;decoder_out1=coderout(0);decoder_out2=coderout(1);decoder_out3=coderout(2);decoder_out4=coderout(3);decoder_out5=coderout(4);decoder_out6=coderout(5);decoder_out7=coderout(6);end behave_decoder_bcd_display;三、总结通过这次的数字逻辑课程设计,我体会到了设计出一个数字产品有多困难了。当初拿到这个课题的时候,我粗略的看了一下设计要求,感觉还挺简单,但是在实践的时候就发现并非我想象的那样简单。设计出来的模块有各种各样的问题,有的是接线连错了,有的则是直接想错了。经过了无数次的尝试与失败,最后在老师和同学的帮助下完成了数字钟的设计。当我看到数字钟成功的进行走时和报时时,心里的成就感油然而生。我希望以后能够再有机会进行这类课题的设计与实验,在实验中成长。

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

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报