您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 带较时、闹铃功能的数字时钟
【例3】多功能数字钟moduleclock(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;endelsebeginsound=sound+1;ear=0;endendalways@(posedgeclk_2Hz)clk_1Hz=~clk_1Hz;always@(posedgemode)beginif(m==2)m=0;elsem=m+1;endalways@(posedgeturn)fm=~fm;alwaysbegincase(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)if(count2)beginif(loop1==3)num1=1;elsebeginloop1=loop1+1;num1=0;endendelsebeginloop1=0;num1=0;endalways@(negedgeclk)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);assignct2=(num1&clk)|(!num1&count2);assigncta=(num4&clk)|(!num4&h_clk);assignctb=(num2&clk)|(!num2&countb);always@(posedgeclk_1Hz)if(!(sec1^8'h59)|turn&(!m))beginsec1=0;if(!(turn&(!m)))minclk=1;endelsebeginif(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;always@(posedgect2)if(amin==8'h59)amin=0;elseif(amin[3:0]==9)beginamin[3:0]=0;amin[7:4]=amin[7:4]+1;endelseamin[3:0]=amin[3:0]+1;always@(posedgectb)if(ahour==8'h23)ahour=0;elseif(ahour[3:0]==9)beginahour[3:0]=0;ahour[7:4]=ahour[7:4]+1;endelseahour[3:0]=ahour[3:0]+1;alwaysif((min1==amin)&&(hour1==ahour)&&(amin|ahour)&&(!change))if(sec18'h20)alert1=1;elsealert1=0;elsealert1=0;alwayscase(m)3'b00:beginhour=hour1;min=min1;sec=sec1;end3'b01:beginhour=ahour;min=amin;sec=8'hzz;end3'b10:beginhour=hour1;min=min1;sec=8'hzz;endendcaseassignLD_alert=(ahour|amin)?1:0;assignalert=((alert1)?clk_1k&clk:0)|alert2;alwaysbeginif((min1==8'h59)&&(sec18'h54)||(!(min1|sec1)))if(sec18'h54)alert2=ear&clk_1k;elsealert2=!ear&clk_1k;elsealert2=0;endendmodule
本文标题:带较时、闹铃功能的数字时钟
链接地址:https://www.777doc.com/doc-8749320 .html