《数字钟数字逻辑.doc》由会员分享,可在线阅读,更多相关《数字钟数字逻辑.doc(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数字钟的设计一、数字钟的功能描述(1)、计时和显示功能采用24小时制,以十进制数字显示时、分、秒(时从00-23,分、秒从00-59)。(2)、校时功能。当数字钟走时有偏差时,应能手动校时。二、数字钟的设计思路根据功能要求,整个数字钟分为计时和校时两个部分。计时部分秒计时电路接收1Hz时基信号,进行60进制计数,计满后秒值归0,并产生1/60Hz时钟信号,分钟计时电路接收1/60Hz时钟信号,进行60进制计数,计满后秒值归0,并产生1/3600Hz时钟信号,小时计时电路接收1/3600Hz时钟信号,进行24小时计数,计满后小时、分、秒均归0,如此循环往复。校时部分,采用两个瞬态按键配合实现,1
2、号键产生单脉冲,控制数字在计时/校时/校分/校秒两种状态间转换,2号键通过控制计数使能端让时/分/秒计数器发生状态翻转发达到指定的数值。总体原理电路如下图-1所示:图-1 数字钟的原理电路三、采用原理图和HDL混合设计方式实现数字钟(1)小时计时电路小时计时电路需要24进制计数,其电路下图-2所示:图-2 小时计时电路该电路用两片74160(一位十进制加法计数器)采用同步连接构成24进制计数器,通过译码电路识别暂态“24”,输出低电平使计数器清零。整个计数循环为0001022300,共有24个稳定状态。计数值采用BCD码形式,Q7-Q4表示小时的十位,Q3-Q0表示小时的个位。EN输入端当正常
3、计数状态时接收分钟计时电路的进位输出,而在校时状态时接收校时脉冲用于控制小时值的翻转。小时计时模块的输入输出端口如下图-3所示:图-3 小时计时电路的端口特征(2)分钟、秒计时电路分钟、秒计时需要60进制计数,其电路下图-4所示:图-4 分钟计时电路该电路用两片74160(一位十进制加法计数器)采用同步连接构成60进制计数器,通过译码电路识别暂态“59”,输出低电平使计数器清零。整个计数循环为000102585900,共有60个稳定状态。计数值采用BCD码形式,Q7-Q4表示分钟或秒的十位,Q3-Q0表示分钟或秒的个位。EN输入端当正常计数状态时接收分钟计时电路的进位输出,而在校时状态时接收校
4、时脉冲用于控制小时值的翻转。计满进位输出端CO用于触发高一级计数器的计数动作(秒计满触发分钟的计数,分钟计满触发小时的计数)。分钟、秒计时模块的输入输出端口如下图-5所示:图-5 分钟/秒 计时电路的端口特征(1) 计时/校时的切换由模块Count_control实现,其端口特征如下图-6所示:图-6 计时/校时 切换(计数控制)端口特征期中,Func_sel输入端接收功能脉冲输入,维护内部一个模4计数器,以此控制数字钟在计时/校时/校分/校秒四种状态间转换;Setn输入端接收校时脉冲,负脉冲有效,每收到1个校时脉冲,对应的计数单元(时单元或分单元或秒单元)计数加1;Sec_co输出由秒计数单
5、元的进位提供,Min_co输入输出由秒计数单元的进位提供;Sec_sn、Min_en、Hour_en提供三个计数单元所需要的使能信号(由此模块的内部逻辑在前级进位输出和校时脉冲之间作二选一)。计数单元功能选择及相应信号的定义如下表-1 所示:表-1 计数单元功能选择表内部模4计数状态Q1 Q0当前功能Sec_en取值Min_co取值Hour_en取值00计数高电平秒单元进位分单元进位01调时低电平低电平校时脉冲10调分低电平小时脉冲低电平11调秒小时脉冲低电平低电平Count_control模块的AHDL源码如下:subdesign count_control(func_sel:input;s
6、etn:input;sec_co,min_co:input;sec_en,min_en,hour_en:output;)variableq1.0:dff;beginq.clk=func_sel;q=q+1;if(q3)then q=0;end if;case qiswhen 0=sec_en=vcc;min_en=sec_co;hour_en=min_co;when 1=sec_en=gnd;min_en=gnd;hour_en=!setn;when 2=sec_en=gnd;min_en=!setn;hour_en=gnd;when 3=sec_en=!setn;min_en=gnd;hou
7、r_en=gnd;end case;end;以上述模块为基础,可以完成下图-1所示的顶层设计。下面采用扫描显示方式实现时分秒的小时,其扫描显示驱动电路如下图-7所示:图-7 扫描显示驱动电路期中,Select_disp根据模6计数器Counter6的输出将待显示的6位十进制结果分时送给七段译码器Deled以产生显示字形,Counter6的输出同时可以用来将显示结果在6个数码管上展开,只要时钟Clk_scan的频率合适,就可以看到完整的时分秒显示结果。 模块Counter6的AHDL源码如下(其中使用了状态机描述方法):subdesign counter6(clk:input;q2.0:outp
8、ut;)variable ss:machine of bits(q2.0)with states(s0=0,s1=1,s2=2,s3=3,s4=4,s5=5);beginss.clk=clk;table ss=ss;s5=s4;s4=s3;s3=s2;s2=s1;s1=s0;s0=s5;end table;end; 模块select_disp的AHDL源码如下:subdesign select_disp(sel2.0:input;in03.0:input;in13.0:input;in23.0:input;in33.0:input;in43.0:input;in53.0:input;out3.
9、0:output;)begin case seliswhen 0=out=in0;when 1=out=in1;when 2=out=in2;when 3=out=in3;when 4=out=in4;when 5=out=in5;end case;end; 模块deled的AHDL源码如下:SUBDESIGN deled( num3.0:INPUT; a,b,c,d,e,f,g:OUTPUT;)BEGINTABLE num3.0=a,b,c,d,e,f,g; H0 = 1,1,1,1,1,1,0; H1 = 0,1,1,0,0,0,0; H2 = 1,1,0,1,1,0,1; H3 = 1,
10、1,1,1,0,0,1; H4 = 0,1,1,0,0,1,1; H5 = 1,0,1,1,0,1,1; H6 = 1,0,1,1,1,1,1; H7 = 1,1,1,0,0,0,0; H8 = 1,1,1,1,1,1,1; H9 = 1,1,1,1,0,1,1; HA = 1,1,1,0,1,1,1; HB = 0,0,1,1,1,1,1; HC = 1,0,0,1,1,1,0; HD = 0,1,1,1,1,0,1; HE = 1,0,0,1,1,1,1; HF = 1,0,0,0,1,1,1;END TABLE;END;数字钟设计的层次关系如下图-8所示:图-8 数字钟设计的层次关系图四
11、、软件仿真结果【截图】A.时间从01:59:5902:00:00的转变B.时间从09:59:5910:00:00的转变C.时间从23:59:5900:00:00的转变五、 硬件调试结果六、设计心得与体会通过数字钟的设计,体会到了数字逻辑理论在实际生产实践中的应用,学会了设计一个简单数字系统的全过程,熟练掌握了MAX+plus II的各种操作与应用,其中出现了各种大大小小的问题,学会了自己查找资料、查看英文版帮助文档的并解决问题的能力,体会到了研究与设计的乐趣。学会了MAX+plus II的三种常用的逻辑设计输入方式:图形设计输入、文本设计输入、波形设计输入。当然也初步掌握了AHDL语言的基本框架,会进行简单的语言描述。七、参考资料【1】 数字逻辑(第二版). 张辉宜 丁刚.中国科学技术大学出版社,合肥2010【2】电子技术课程设计指导M.彭介华.高等教育出版社,1996【3】数字电子技术 焦素敏 .北京:清华大学出版社,2007【4】数字系统设计与Verlog HDLM.王金明 杨吉斌.北京:电子工业出版社,2002