资源描述:
《数字逻辑课程设计报告new》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、数字逻辑与数字系统课程设计实验报告姓名:学号:专业班级:指导老师:一)设计题目:电子钟二)设计任务和基本要求:1.实验台上的六个数码管显示时、分、秒;2.能使电子钟复位(清零);3.能启动和停止电子钟运行;4.在电子钟停止运行状态下,能够修改时、分、秒的值;5.具有报时功能,整点时喇叭鸣叫。三)所用主要器件和设备:1、TDS系列数字电路实验系统2、ISP系统可编程器件以及《数字逻辑》课程实验所用部分中、小规模集成电路等3、PC计算机4、ISP1032E可编程逻辑器件以及数据选择器、触发器、移位寄存器、计数器及基本门
2、电路等5、在Windows平台上运行的ispLEVER编程软件四)设计思想:数字钟电路的基本结构由两个60进制计数器和一个24进制计数器组成,分别对秒、分、小时进行计时,当计时到23时59分59秒时,再来一个计数脉冲,则计数器清零,重新开始计时。当数字钟处于计时状态时,秒计数器的进位输出信号作为分钟计数器的计数信号,分钟计数器的进位输出信号又作为小时计数器的计数信号时、分、秒的计时结果通过6个数码管来动态显示。数字钟除了能够正常计时外,还应能够对时间进行调整。因此,通过模式选择信号MOD1、MOD2控制数字钟的工作
3、状态,即控制数字钟,使其分别工作于正常计时,调整分、时和设定分、时5个状态。当数字钟处于计时状态时,3个计数器允许计数,且秒、分、时计数器的计数时钟信号分别为CLK,秒的进位,分的进位;当数字钟处于调整时间状态时,被调的分或时会一秒一秒地增加;当数字钟处于定时状态时,可以设定小时和分;当计时到所设定的时刻时,会响闹钟五)设计步骤及程序:pause是暂停键,当暂停时set1与set2分别控制调节为时还是为分或是为秒。exam提供一个模拟上升沿,hh,hl,mh,ml,sh,sl分别控制小时高位,低位,分钟高位,分钟低
4、位,秒高位,低位。thh,thl,tmh,tml,tsh,tsl分别表示时分秒变化的中间变量。alarm表示闹钟是否报时libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityclockisport(clk:instd_logic;clr:instd_logic;pause:instd_logic;set1:instd_logic;set2:instd_logic;clk1:instd_logic;alarm:outst
5、d_logic;hh,hl,mh,ml,sh,sl:outstd_logic_vector(3downto0));endclock;architecturebehavioralofclockissignalcount:integerrange0to1000;signalthh,thl,tml,tmh,tsh,tsl:std_logic_vector(3downto0);signalexam:integer;beginprocess(clk,clk1,clr,pause,set1,set2)beginalarm<='
6、0';if(clr='0')thenhh<="0000";hl<="0000";mh<="0000";ml<="0000";sh<="0000";sl<="0000";thh<="0000";thl<="0000";tmh<="0000";tml<="0000";tsh<="0000";tsl<="0000";count<=0;exam<=0;elsif(clk='1'andclk'event)thenif(pause='1')thenif(count=999)thencount<=0;if(thh="0010"a
7、ndthl="0011"andtmh="0101"andtml="1001"andtsh="0101"andtsl="1001")thenthh<="0000";thl<="0000";tmh<="0000";tml<="0000";tsh<="0000";tsl<="0000";elsif(tsl="1001")thentsl<="0000";if(tsh="0101")thentsh<="0000";if(tml="1001")thentml<="0000";if(tmh="0101")thentmh<="00
8、00";if(thl="1001")thenthl<="0000";thh<=thh+1;elsethl<=thl+1;endif;elsetmh<=tmh+1;endif;elsetml<=tml+1;endif;elsetsh<=tsh+1;endif;elsetsl<=tsl+1;endif;elsecount<=count+1;endif;elsif