您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > verilogEDA数字秒表设计quartus
课程考查报告课程名称EDA技术题目名称数字电子钟学生学院信息工程学院专业班级通信工程09(1)班学号310900xx学生姓名陈XX任课教师李学易2013年12月27日电子钟设计目的:根据实验板的资源和利用QuartusII软件编译、仿真可以实现电子钟的数字系统设计。设计内容:数字电子钟的功能:1、时钟显示功能(显示时、分、秒)2、时钟调整功能(小时、分钟的校准)3、闹钟设置功能设计方案:根据程序设计需要,信号的定义如下:Clk:标准时钟信号,频率为4HzClk_1k:产生闹铃声、报时声的时钟信号,频率为1024HzMode:功能控制信号,为0:计时功能;1:闹钟功能;2:手动校时功能Turn:接按键,在手动校时功能时,选择的是校准小时,还是分钟;若长时间按该键,可使秒信号清零Change:接按键,在手动校时时,每按一次,计数器加一若长按,则连续快速加一Hour,min,sec:此三信号分别输出并显示时、分、秒信号Alert:输出到扬声器的信号,产生闹钟音和报时音;闹钟音为持续20秒的“嘀嘀嘀”音,若按住change键,则可屏蔽该音;报时音为“嘀嘀嘀嘀嘟”四短一长音。Ld_alert:接发光二极管,指示是否设置了闹钟功能Ld_hour:接发光二极管,指示当前调整的是小时信号Ld_min:接发光二极管,指示当前调整的是分钟信号实验结果:时序仿真图:RTL图:DENAQPRECLRDQPREENACLRDQPREENACLRDQPREENACLRDQPREENACLRDQPREENACLRDQPREENACLRDQPREENACLRDQPREENACLRDQPREENACLRDENAQPRECLRDENAQPRECLRDQPREENACLRDENAQPRECLRSELDATAADATABOUT0MUX21A[7..0]B[7..0]LESS_THANSEL[1..0]DATA[3..0]OUTMUXSEL[1..0]DATA[3..0]OUTMUXSEL[1..0]DATA[3..0]OUTMUXSEL[1..0]DATA[3..0]OUTMUXSELDATAADATABOUT0MUX21SEL[1..0]DATA[3..0]OUTMUX=A[3..0]B[3..0]EQUAL+A[3..0]B[3..0]ADDER+A[3..0]B[3..0]ADDERSEL[1..0]DATA[3..0]OUTMUXSEL[1..0]DATA[3..0]OUTMUXSEL[1..0]DATA[3..0]OUTMUXA[7..0]B[7..0]LESS_THANDQPREENACLR01001010DQPREENACLRDENAPRECLRQSEL[1..0]DATA[3..0]OUTMUXIO_BUF(TRI)DENAPRECLRQloop1~_OUT0loop1_OUT0loop2~_OUT0loop2_OUT0loop3~_OUT0loop3_OUT0loop4~_OUT0loop4_OUT0num1~0_OUT0num1_OUT0num2~0_OUT0num2_OUT0num3~0_OUT0num3_OUT0num4~0_OUT0num4_OUT0sound~_OUT0sound_OUT0Equal0_OUTct1~0_OUT0ct2~0_OUT0cta~0_OUT0ctb~0_OUT0minclk~1_OUT0minclk_OUT0always9~0_OUT0Mux6_OUTMux7_OUTMux8_OUTMux0_OUTWideNor5_OUT0Mux2_OUTMux3_OUTMux4_OUTLessThan0_OUTmin1~_OUT0ct1_OUT0min1_OUT0Equal18_OUTalert1_OUT0m~_OUT0m_OUT0Mux25_OUTsec[7]~7_OUT0sec[6]~6_OUT0sec[5]~5_OUT0sec[3]~0_OUT0sec[2]~1_OUT0sec[1]~2_OUT0sec[0]~3_OUT0Mux1_OUTsec[2]_557_OUT0clk_2Hzclkloop1[1..0]loop2[1..0]loop3[1..0]loop4[1..0]num1[1..0]1'h0--num2[1..0]1'h0--num3[1..0]1'h0--num4[1..0]1'h0--sound[1..0]earct1~0ct2~0cta~0ctb~0alert~0clk_1kalert2~0alert2~1clk_1Hzsec1[7..0]minclksec1~[15..8]8'h00--WideNor7LessThan18'h54--Mux53'h0--Mux63'h0--Mux73'h0--Mux83'h0--sec1~[7..0]4'h0--Mux03'h0--WideNor5Equal84'h9--Add64'h1--Add74'h1--Mux23'h0--Mux33'h0--Mux43'h0--LessThan08'h20--min1[7..0]always16~9always16~0alert2alert2~2alert~2alertalert~1m[1..0]modesec[4]$latchMux254'h7--sec[4]~4sec[7..0]sec[2]_557心得体会:经过一周的EDA课程设计,对用verilog语言设计数字系统有了一定认识。设计过程当然有点累,可是当完成这个设计时,内心是无比的高兴。通过这次的课程设计,很好地把课堂理论和实践结合起来,认识更深刻了。设计中遇到过很多问题,这时耐心、细心是不可缺少的,通过查阅网上资料和其他参考文献以及和别人交流,最终都把问题解决了。当然其中也缺少不了庞老师的耐心指导,在此,感谢庞老师的教导!参考文献:《Verilog数字系统设计教程》第2版夏宇闻编著《Verilog的135个经典设计实例》王金明编著源代码:moduledigital_watch(clk,clk_1k,mode,change,turn,alert,hour,min,sec,LD_alert,LD_hour,LD_min);inputclk,clk_1k,mode,change,turn;outputalert,LD_alert,LD_hour,LD_min;output[7:0]hour,min,sec;reg[7:0]hour,min,sec,hour1,min1,sec1,ahour,amin;reg[1:0]m,fm,num1,num2,num3,num4;reg[1:0]loop1,loop2,loop3,loop4,sound;regLD_hour,LD_min;regclk_1Hz,clk_2Hz,minclk,hclk;regalert1,alert2,ear;regcount1,count2,counta,countb;wirect1,ct2,cta,ctb,m_clk,h_clk;always@(posedgeclk)beginclk_2Hz=~clk_2Hz;if(sound==3)beginsound=0;ear=1;end//ear信号用于产生或屏蔽声音elsebeginsound=sound+1;ear=0;endendalways@(posedgeclk_2Hz)//由4Hz的输入时钟产生1Hz的时基信号clk_1Hz=~clk_1Hz;always@(posedgemode)//mode信号控制系统在三种功能间转换beginif(m==2)m=0;elsem=m+1;endalways@(posedgeturn)fm=~fm;always//该进程产生count1,count2,counta,countb四个信号begincase(m)2:beginif(fm)begincount1=change;{LD_min,LD_hour}=2;endelsebegincounta=change;{LD_min,LD_hour}=1;end{count2,countb}=0;end1:beginif(fm)begincount2=change;{LD_min,LD_hour}=2;endelsebegincountb=change;{LD_min,LD_hour}=1;end{count1,counta}=2'b00;enddefault:{count1,count2,counta,countb,LD_min,LD_hour}=0;endcaseendalways@(negedgeclk)//如果长时间按下“change”键,则生成“num1”信号用于连续快速加1if(count2)beginif(loop1==3)num1=1;elsebeginloop1=loop1+1;num1=0;endendelsebeginloop1=0;num1=0;endalways@(negedgeclk)//产生num2信号if(countb)beginif(loop2==3)num2=1;elsebeginloop2=loop2+1;num2=0;endendelsebeginloop2=0;num2=0;endalways@(negedgeclk)if(count1)beginif(loop3==3)num3=1;elsebeginloop3=loop3+1;num3=0;endendelsebeginloop3=0;num3=0;endalways@(negedgeclk)if(counta)beginif(loop4==3)num4=1;elsebeginloop4=loop4+1;num4=0;endendelsebeginloop4=0;num4=0;endassignct1=(num3&clk)|(!num3&m_clk);//ct1用于计时、校时中的分钟计数assignct2=(num1&clk)|(!num1&count2);//ct2用于定时状态下调整分钟信号assigncta=(num4&clk)|(!num4&h_clk);//cta用于计时、校时中的小时计数assignctb=(num2&clk)|(!num2&countb);//ctb用于定时状态下调整小时信号always@(posedgeclk_1Hz)//秒计时和秒调整进程if(!(sec1^8'h59)|turn&(!m))beginsec1=0;if(!(turn&(!m)))minclk=1;end//按住“turn”按键一段时间,秒信号可清零,该功能用于手动精确调时elsebeginif(sec1[3:0]==4'b1001)beginsec1[3:0]=4'b0000;sec1[7:4]=sec1[7:4]+1;endelsesec1[3:0]=sec1[3:0]+1;minclk=0;endassignm_clk=minclk||count1;always@(posedgect1)//分计时和分调整进程beginif(min1==8'h59)beginmin1=0;hclk=1;endelsebeginif(min1[3:0]==9)beginmin1[3:0]=0;min1[7:4]=min1[7:4]+1;endelsemin1[3:0]=min1[3:0]+1;hclk=0;endendassignh_clk=hclk||counta;always@(posedgecta)//小时计时和小时调整进程if(hour1==8'h23)hour1=0;elseif(hour1[3:0]==9)beginhour1[7:4]=hour1[7:4]+1;hour1[3:0]=0;endelsehour1[3:0]=hour1[3:0]+1;alw
本文标题:verilogEDA数字秒表设计quartus
链接地址:https://www.777doc.com/doc-2866141 .html