📄 time_run.v
字号:
end else begin if(dayback[3:0] == 0) begin dayback[3:0] = 4'h9; dayback[7:4] = dayback[7:4] - 1; end else dayback[3:0] = dayback[3:0] - 1; end end end circs = 4'h5; end end default : begin settime=0; circs = 0; end endcase end end end//--------------------------if normal set begin ---second ,minute ,hour' time going-----------------------------always @(posedge clk)begin if(adj == 1 & settime == 0 ) change = change + 1; //change is 0 means 24hours ; is 1 means 12hoursendalways @(posedge clk)begin if(clm==1) begin if(dclk4==12) begin dclk4 = 0 ; AMorPM = ~ AMorPM ; end else dclk4 = dclk4 + 1 ; endendalways @(posedge clk ) //hour runing begin if(circs == 4'h1) showh = hback ; else if(set == 0 && clm ==1) begin if( mode == 0) begin if(change == 0) begin if(AMorPM==1 & showh <=11 & flag ==1 ) begin flag = 0 ; begin if( showh == 8'h00 ) showh = 8'h12; else if(showh == 8'h01) showh = 8'h13; else if(showh == 8'h02) showh = 8'h14; else if(showh == 8'h03) showh = 8'h15; else if(showh == 8'h04) showh = 8'h16; else if(showh == 8'h05) showh = 8'h17; else if(showh == 8'h06) showh = 8'h18; else if(showh == 8'h07) showh = 8'h19; else if(showh == 8'h08) showh = 8'h20; else if(showh == 8'h09) showh = 8'h21; else if(showh == 8'h10) showh = 8'h22; else if(showh == 8'h11) showh = 8'h23; end end else begin if(showh[7:4]==4'h2) begin if(showh[3:0] == 4'h3) showh = 0; else showh[3:0]=showh[3:0]+1; end else begin if(showh[3:0] == 4'h9) begin showh[3:0] =0; showh[7:4] = showh[7:4]+1; end else showh[3:0]=showh[3:0]+1; end end flag = 0 ; end else begin flag = 1 ; begin if( showh == 8'h12 ) showh = 8'h00; else if(showh == 8'h13) showh = 8'h01; else if(showh == 8'h14) showh = 8'h02; else if(showh == 8'h15) showh = 8'h03; else if(showh == 8'h16) showh = 8'h04; else if(showh == 8'h17) showh = 8'h05; else if(showh == 8'h18) showh = 8'h06; else if(showh == 8'h19) showh = 8'h07; else if(showh == 8'h20) showh = 8'h08; else if(showh == 8'h21) showh = 8'h09; else if(showh == 8'h22) showh = 8'h10; else if(showh == 8'h23) showh = 8'h11; else begin if(showh[7:4]==4'h1) begin if(showh[3:0] == 4'h1) showh = 0; else showh[3:0]=showh[3:0]+1; end else begin if(showh[3:0] == 4'h9) begin showh[3:0] =0; showh[7:4] = showh[7:4]+1; end else showh[3:0]=showh[3:0]+1; end end end end end endendalways @(posedge clk ) //minute runing begin if(circs == 4'h2) showm = mback; else if(set == 0 && cls ==1) begin if(showm[7:4]==4'b0101) begin if(showm[3:0]== 4'b1001) begin showm = 0; end else showm[3:0]=showm[3:0]+1; end else begin if(showm[3:0] == 4'b1001) begin showm[3:0] =0; showm[7:4] = showm[7:4]+1; end else showm[3:0]=showm[3:0]+1; end end end always @(posedge clk )begin if( set==0) //second runing begin if(shows[7:4]==4'h5) begin if(shows[3:0]== 4'h9) begin shows = 0; end else shows[3:0]=shows[3:0]+1; end else begin if(shows[3:0] == 4'h9) begin shows[3:0] =0; shows[7:4] = shows[7:4]+1; end else shows[3:0]=shows[3:0]+1; end end end //--------------------normal state ,day ,week , month ,year' time going------------------------------always @(posedge clk) begin if(circs == 4'h3) year = yearback; else if(circs == 4'h4) month = monthback; else if(circs == 4'h5) begin day = dayback ; week = weekback; end else if(clh == 1) begin if( month==8'h04 || month==8'h06 || month==8'h09 || month==8'h11) // month is 4,6,9,11-----30 daysbegin if(day==8'h30) begin day=8'h01; if(week==3'b111) // if week is 7,reset 1 week = 3'b001; else week=week+1; //else week addself 1 if(month[3:0]==4'h9) //if m'low 4bit is 9,clear m'low 4bit,m'high 4bit addself 1 begin month[3:0]=4'h0; month[7:4]=month[7:4]+1; end else //else m'low 4 bit addself 1 month[3:0]=month[3:0]+1; end //day is not 30 else begin if(day[3:0]==4'h9) //if day'low 4bit is 9,reset low 4bit 0, high 4bit addself begin day[3:0] = 4'h0; day[7:4] = day[7:4]+1; if(week==3'b111) //if week is 7 ,reset 1 week = 3'b001; else week = week+1; //else week addself 1 end else //else day'low 4bit addself 1 begin day[3:0]=day[3:0]+1; if(week==3'b111) //if week is 7 ,reset 1 week = 3'b001; else //else week addself 1 week = week+1; end endend //-----------month is february 02----------------------- else if(month ==8'h02) begin if(leap_year == 1) begin if(day == 8'h29) begin day = 8'h01; month = month+1; if(week==3'b111) week = 3'b001; else week = week+1; end else begin if(day[3:0]==4'h9) begin day[3:0] = 4'h0; day[7:4] = day[7:4]+1; if(week==3'b111) week = 3'b001; else week = week+1; end else begin day[3:0]=day[3:0]+1; if(week==3'b111) week = 3'b001; else week = week+1; end end end else begin if(day == 8'h28) begin month = month+1; day = 8'h01; if(week==3'b111) week = 3'b001; else week = week+1; end else begin if(day[3:0]==4'h09) begin day[7:4] = day[7:4]+1; day[3:0] = 4'h0; if(week==3'b111) week = 3'b001; else week = week+1; end else begin day[3:0]=day[3:0]+1; if(week==3'b111) week = 3'b001; else week = week+1; end end endend //-------------- month is 1 3 5 7 8 10 12 ,31days--------------else begin if(day==8'h31) begin day=8'h01; if(week==3'b111) week = 3'b001; else week=week+1; //--------------------------12 months to year----------------------------------- begin if(month[7:4]>4'h0) //run nian , 2000 years begin , if it is 12 months begin if(month[3:0]==4'h2) begin month = 8'h01; circle = circle +1; if(circle == 4'h4) begin circle = 4'h0; leap_year = 1'b1; end else leap_year =1'b0; if(year[3:0]==4'h9) begin if(year[7:4]==4'h9) begin year[15:0]=16'h2000; leap_year = 1'b1; circle = 4'h1; end else begin year[3:0]=4'h0; year[7:4]=year[7:4]+1; end end else year[3:0]=year[3:0]+1; end else month[3:0]=month[3:0]+1; end else if(month[3:0]==8'h9) begin month[3:0]=4'h0; month[7:4]=month[7:4]+1; end else month[3:0]=month[3:0]+1; end //--------------------------12 months to year----------------------------------- end else begin if(day[3:0]==4'h9) begin day[7:4] = day[7:4]+1; day[3:0] = 4'h0; if(week==3'b111) week = 3'b001; else week = week+1; end else begin day[3:0]=day[3:0]+1; if(week==3'b111) week = 3'b001; else week = week+1; end end end end //first begin to endend endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -