您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > verilog数字钟课程设计
第1页课程设计报告课程设计题目:数字钟系统学号:201420130228学生姓名:刘进辉专业:通信工程班级:1421301指导教师:钟凯老师2017年1月1日第2页目录一.摘要..........................................3二.概念及原理...................................4三.实验过程及分析................................5四.实验心得.....................................7五.参考文献......................................7六.实验代码......................................8七.评分表........................................14第3页摘要在社会快速发展的今天,时钟在人们的生活中显得越发重要,因此设计数字钟就变得尤为重要。本文介绍一种利用verilog语言产生多功能数字钟的设计方案,不仅让大家对数字钟更为了解,而且可以为人们的生活带来便利。数字钟它具有时、分、秒的正常显示功能及调节时和分的特殊功能,此外,以24小时循环计数,具有整点报时功能,并且由按键输入进行对数字钟的校时、清零功能。本文设计的数字钟方案由控制模块、计时模块、以及报时模块三大模块组成,满足所有的功能要求,并且代码是经modelsim软件编译和仿真所设计。第4页二.概念及原理数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路。由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路。如图所示为数字钟的一般构成框图。主要包括时间基准电路、计数器电路、控制电路。其中的控制逻辑电路是比较灵活多样的,不断完善它可以增强数字钟的功能。数字钟应该具有的功能有:显示时—分—秒、整点报时、小时和分钟可调等基本功能。整个钟表的工作应该是在1Hz信号的作用下进行,这样每来一个时钟信号,秒增加1秒,当秒从59秒跳转到00秒时,分钟增加1分,同时当分钟从59分跳转到00分时,小时增加1小时,小时的范围为0~23。在实验中为了显示的方便,由于分钟和秒钟显示的范围都是从0~59,小时他的范围是从0~23,所以可以均用一个4位的二进制码显示十位和个位。对于整点报时功能,本实验设计的是当进行正点发出一个高音信号和59分50、5254、56、58秒发出一个高音信号。调整时间的按键用按键模块的S1和S2,S1调节小时,每按下一次,小时增加一个小时;S2调整分钟,每按下一次,分钟增加一分钟。另用外reset按键作为系统时钟复位,复位后全部显示00—00—00。第5页三.实验过程及分析1.功能:显示时—分—秒、整点报时、小时和分钟可调等基本功能。整个钟表的工作应该是在1Hz信号的作用下进行,这样每来一个时钟信号,秒增加1秒,当秒从59秒跳转到00秒时,分钟增加1分,同时当分钟从59分跳转到00分时,小时增加1小时,小时的范围为0~23。仿真图:由图可知:hour_g,minute_s,minute_g,second_s,second_g分别对应于时、分、秒的十和个位,显然可以正常显示并满足条件。2.功能:对于整点报时功能,本实验设计的是当进行正点发出一个高音信号和59分50、5254、56、58秒发出一个高音信号。仿真图:上图可知在50、52、54、56、58秒时有一个高电平脉冲信号发出低音,在正点时有一个高脉冲信号发出高音。第6页3.功能:调整时间的按键用按键模块的S1和S2,S1调节小时,每按下一次,小时增加一个小时;S2调整分钟,每按下一次,分钟增加一分钟。另用外reset按键作为系统时钟复位,复位后全部显示00—00—00。仿真图:上图可知,通过按键S1,S2控制了时和分的校准功能,并且通过reset键控制清除功能。第7页四.实验心得通过本次verilog的数字钟课程设计,不仅巩固了所学的相关知识,还对其有了更加深刻的认识。学东西,基本功要学的扎实,这样会给上层建筑带来难以想象的益处,就如在本次实验中的测试模块的函数调用的内置变量的摆放位置的不当,导致程序无法得出自己想要的结果,还要不断的去检查,盲目的修改,耗时巨大。另有一些编程的小技巧,这点钟凯老师的功劳很大,虽然原理一样,但是用不同的方式去编写,有时会取得不一样的结果。这次实验考验的不仅是学生的基本功,而且考察学生自我学习,自我查找相关资料主动学习的能力,一路自己做下来,会收获你想象不到的东西。这或许就是能力的提高吧。在最后感谢钟凯老师的耐心解疑,学生受益匪浅。六.参考文献【1】《数字系统设计与VerilogHDL》第五版王金明编著电子工业出版社【2】刘君,常明,秦娟,《基于硬件描述语言(VHDL)的数字时钟设计》,天津理工大学学报,2007,第23卷第4期,40-41。【3】王开军,姜宇柏,《面向CPLD/FPGA的VHDL设计》,机械工业出版社,2006,28-65。第8页六.实验代码modulekongzhi_count(clk,S1,S2,reset,hour_s,hour_g,minute_s,minute_g,second_s,second_g,cout_1,cout_2,alarm_clock_low,alarm_clock_high);inputclk,S1,S2,reset;outputreg[3:0]hour_s,hour_g,minute_s,minute_g,second_s,second_g;outputwirecout_1,cout_2;outputregalarm_clock_low,alarm_clock_high;regR1,R2;always@(posedgeclk)beginif(S1==1)beginR1=1;endelseif(S2==1)beginR2=1;endendalways@(posedgeclk)//秒个位显示beginif(~reset)second_g=0;elseif(second_g==9)second_g=0;elsesecond_g=second_g+1;endalways@(posedgeclk)//秒十位显示beginif(~reset)second_s=0;elseif(second_g==9)beginif(second_s==5)second_s=0;elsesecond_s=second_s+1;end第9页endassigncout_1=((second_g==9)&&(second_s==5))?1:0;always@(posedgeclk)//分个位显示beginif(~reset)beginminute_g=0;endelseif(R2==1)beginif(minute_g==9)minute_g=0;elsebeginminute_g=minute_g+1;endR2=0;endelseif(cout_1)beginsecond_g=0;second_s=0;if(minute_g==9)minute_g=0;elseminute_g=minute_g+1;endendalways@(posedgeclk)//分十位显示beginif(~reset)beginminute_s=0;endelseif(R2==1)beginif(minute_g==9)beginif(minute_s==5)minute_g=0;elseminute_s=minute_s+1;end第10页R2=0;endelseif(cout_1)beginsecond_g=0;second_s=0;if(minute_g==9)beginif(minute_s==5)minute_g=0;elseminute_s=minute_s+1;endendendassigncout_2=(((minute_g==9)&&(minute_s==5)&&(cout_1==1))||((minute_g==9)&&(minute_s==5)&&(S2==1)))?1:0;always@(posedgeclk)//时个位显示beginif(~reset)beginhour_g=0;endelseif(R1==1)beginif(hour_g==9)hour_g=0;elseif((hour_s==2)&&(hour_g==3))hour_g=0;elsebeginhour_g=hour_g+1;endR1=0;endelseif(cout_2)beginsecond_g=0;second_s=0;minute_g=0;minute_s=0;if(hour_g==9)第11页hour_g=0;elseif((hour_s==2)&&(hour_g==3))hour_g=0;elsehour_g=hour_g+1;endendalways@(posedgeclk)//时十位显示beginif(~reset)beginhour_s=0;endelseif(R1==1)beginif((hour_g==3)&&(hour_s==2))hour_s=0;elseif(hour_g==9)beginhour_s=hour_s+1;endR1=0;endelseif(cout_2)beginsecond_g=0;second_s=0;minute_g=0;minute_s=0;if((hour_g==3)&&(hour_s==2))hour_s=0;elseif(hour_g==9)hour_s=hour_s+1;endendalways@(posedgeclk)//低音警报beginif(!reset)beginalarm_clock_low=0;endelseif((minute_g==9)&&(minute_s==5))第12页if(((second_s==4)&&(second_g==9))||((second_s==5)&&(second_g==1))||((second_s==5)&&(second_g==3))||((second_s==5)&&(second_g==5))||((second_s==5)&&(second_g==7)))alarm_clock_low=1;elsealarm_clock_low=0;endalways@(posedgeclk)//高音警报beginif(!reset)beginalarm_clock_high=0;endelseif(cout_2)alarm_clock_high=1;elsealarm_clock_high=0;endEndmodulemoduleclock_test();regclk,reset,S1,S2;wire[3:0]hour_s,hour_g,minute_s,minute_g,second_s,second_g;wirecout_1,cout_2,alarm_clock_low,alarm_clock_high;parametercycle=100;kongzhi_countu1(.clk(clk),.S1(S1),.S2(S2),.reset(reset),.hour_s(hour_s),.hour_g(hour_g),.minute_s(minute_s),.minute_g(minute_g),.second_s(second_s),.second_g(second_g),.cout_1(cout_1),.cout_2(cout_2),.alarm_clock_low(alarm_clock_low),.alarm_clock_high(alarm_clock_high));always#(cycle/2)clk=~clk;
本文标题:verilog数字钟课程设计
链接地址:https://www.777doc.com/doc-5424751 .html