📄 time_run.v
字号:
`timescale 1ns / 1ps//////////////////////////////////////////////////////////////////////////////////// Company: // Engineer: // // Create Date: 20:54:58 04/13/2008 // Design Name: // Module Name: showchange24or12 // Project Name: // Target Devices: // Tool versions: // Description: //// Dependencies: //// Revision: // Revision 0.01 - File Created// Additional Comments: ////////////////////////////////////////////////////////////////////////////////////module time_run(clk, adj , cf , mode , set , shows, showm, showh , day , week , month , year); input clk; input adj; input cf; input mode; input set; output [7:0] shows ; output [7:0] showm ; output [7:0] showh ; output [7:0] day ; output [7:0] week ; output [7:0] month ; output [15:0] year ; reg ADJ=0 , leap_year=1 ,AMorPM = 0 , change = 0 , flag = 0; reg cls=0 , clm=0 , clh = 0 ;reg modestate = 0;reg[7:0] shows = 8'h00 , showm = 8'h00 , showh = 8'h23 , day = 8'h01 , month = 8'h01 ; //2000:01:01:6:00:00:00reg[2:0] week = 3'b110 , weekback = 3'b110; reg[15:0] year = 16'h2000 , yearback = 16'h2000 ;reg[7:0] hback = 8'h00 , mback = 8'h00 , monthback = 8'h01 , dayback = 8'h01 ;reg[7:0] dclk1 = 8'b0000000 , dclk2 = 8'b0000000 , dclk3 = 8'b0000000 ,dclk4 = 8'b0000000 ;reg[7:0] count = 8'h00 ;reg[3:0] settime=4'h0;reg[2:0] circle = 000 ;reg[3:0] reset = 0;reg[3:0] circs = 0;//------------------------------------clock frequency division , get cls ,clm ,clh ,cld , clw ,clm ,cly----------------always @(posedge clk) //get one minute touch off singal -----clsbegin cls = 0 ; if(dclk1==59) begin cls=1; dclk1=0; end else dclk1 = dclk1 + 1;end always @(posedge clk) //get one hour touch off singal ------clmbeginclm = 0 ;if(cls==1)begin if(dclk2==59) begin clm=1; dclk2=0; end else dclk2 = dclk2 + 1;end endalways @(posedge clk) //get one touch off singal -------clhbeginclh = 0 ;if(clm==1)begin if(dclk3==23) begin clh = 1; dclk3 = 1; end else dclk3 = dclk3 + 1;end end//----------------------------------------------------------------------------------------------------------
always @(posedge clk)
begin
if(mode == 1 & settime == 0)
modestate = modestate + 1;
end//-------------------------------60 minite reset ,and other circs-------------------------------------------always @(posedge clk)beginreset =0; begin if(adj==0 & cf==0 & set==0 ) begin if(count == 59) begin reset =1; end else count = count + 1; end else if( adj==1 ) count = 0; else if( cf==1 ) count = 0; else if( set==1 ) count = 0; endend//-------------------------hour ,minute ,year ,month ,day set----------------------------------------------always @(posedge clk)begin if(reset == 1) settime = 0;else begin if( set==1 ) begin settime = settime + 1 ; if(settime==1) begin hback = showh; mback = showm ; yearback = year; monthback = month; dayback = day ; weekback = week; end end else if(modestate==2'b00 & settime>0) circs = 0 ; begin case(settime)4'h1: //hour set begin if(mode == 1) settime = 0; else begin if(adj==1 & cf==0) begin if(hback[7:4]==4'h2) begin if(hback[3:0] >= 4'h3) hback = 0; else hback[3:0] = hback[3:0]+1; end else begin if(hback[3:0] == 4'h9) begin hback[3:0] =0; hback[7:4] = hback[7:4]+1; end else hback[3:0]=hback[3:0]+1; end circs = 4'h1; end else if(adj==0 & cf==1) begin if(hback[7:4]==4'h0) begin if(hback[3:0]== 4'h0) begin hback[7:4] = 2; hback[3:0] = 3; end else hback[3:0]=hback[3:0] - 1; end else begin if(hback[3:0] == 4'h0) begin hback[3:0] =4'h9; hback[7:4] = hback[7:4] - 1; end else hback[3:0]=hback[3:0] - 1; end circs = 4'h1; end end end 4'h2 : //minute set begin if(mode == 1) settime = 0; else begin if(adj==1 & cf==0) begin if(mback[7:4]==4'h5) begin if(mback[3:0]== 4'h9) begin mback = 0; end else mback[3:0]=mback[3:0]+1; end else begin if(mback[3:0] == 4'h9) begin mback[3:0] =0; mback[7:4] = mback[7:4]+1; end else mback[3:0]=mback[3:0]+1; end circs = 4'h2; end else if(adj==0 & cf==1) begin if(mback[7:4]==4'h0) begin if(mback[3:0]== 4'h0) begin mback[7:4] = 4'h5; mback[3:0] = 4'h9; end else mback[3:0]=mback[3:0] - 1; end else begin if(mback[3:0] == 0) begin mback[3:0] = 4'h9; mback[7:4] = mback[7:4] - 1; end else mback[3:0] = mback[3:0] - 1; end circs = 4'h2; end end end 4'h3: //year set begin if(mode == 1) settime = 0; else begin if(adj==1 & cf==0) begin if(yearback[7:4]==4'h9) begin if(yearback[3:0]== 4'h9) begin yearback[15:0] = 16'h2000; end else yearback[3:0] = yearback[3:0]+1; end else begin if(yearback[3:0] == 4'h9) begin yearback[3:0] = 4'h0; yearback[7:4] = yearback[7:4]+1; end else yearback[3:0] = yearback[3:0]+1; end circs = 4'h3; end else if(adj==0 & cf==1) begin if(yearback[7:4]==4'h0) begin if(yearback[3:0]== 4'h0) begin yearback[7:4] = 4'h9; yearback[3:0] = 4'h9; end else yearback[3:0] = yearback[3:0] - 1; end else begin if(yearback[3:0] == 0) begin yearback[3:0] = 4'h9; yearback[7:4] = yearback[7:4] - 1; end else yearback[3:0] = yearback[3:0] - 1; end circs = 4'h3; end end end 4'h4: //month set begin if(mode == 1) settime = 0; else begin if(adj==1 & cf==0) begin if(monthback[7:4]==4'h1) begin if(monthback[3:0] == 4'h2) begin monthback = 8'h01; end else monthback[3:0] = monthback[3:0]+1; end else begin if(monthback[3:0] == 4'h9) begin monthback[3:0] = 0; monthback[7:4] = monthback[7:4]+1; end else monthback[3:0] = monthback[3:0]+1; end circs = 4'h4; end else if(adj==0 & cf==1) begin if(monthback[7:4]==4'h0) begin if(monthback[3:0]== 4'h1) begin monthback[7:4] = 4'h1; monthback[3:0] = 4'h2; end else monthback[3:0] = monthback[3:0] - 1; end else begin if(monthback[3:0] == 0) begin monthback[3:0] = 4'h9; monthback[7:4] = monthback[7:4] - 1; end else monthback[3:0]= monthback[3:0] - 1; end circs = 4'h4; end end end 4'h5: //day set begin if(mode == 1) settime = 0; else begin if(adj==1 & cf==0) begin weekback = weekback + 1; begin if(dayback[7:4]==4'h3) begin if(dayback[3:0] >= 4'h1) begin dayback[7:0] = 8'h01; end else dayback[3:0]=day[3:0]+1; end else begin if(dayback[3:0] == 4'h9) begin dayback[3:0] =4'h1; dayback[7:4] = dayback[7:4]+1; end else dayback[3:0]= dayback[3:0]+1; end end circs = 4'h5; end else if(adj==0 & cf==1) begin weekback = weekback - 1; begin if(dayback[7:4]==4'h0) begin if(dayback[3:0]== 4'h1) begin dayback[7:4] = 4'h3; dayback[3:0] = 4'h1; end else dayback[3:0]= dayback[3:0] - 1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -