📄 autodate.v
字号:
module autodate(EN1,EN2,month1,month0,day1,day0,EO1);
output [3:0] month1,month0,day1,day0;
output EO1; //自动模式时为高,其他为低
input EN1,EN2;
reg EO1;
reg [3:0] month1,month0,day1,day0;
always @(posedge EN1)
begin
if(EN2 == 1'b0) //手动设置没有使能,则自动按照正常时间递增日期
begin
EO1 <= 1'b1;
//1,3,5,7,8,10,12等大月的天数是31
if(((month0 <= 4'b0001)&&(month1 < 4'b0001))|| //1
((month0 == 4'b0011)&&(month1 < 4'b0001))|| //3
((month0 == 4'b0101)&&(month1 < 4'b0001))|| //5
((month0 == 4'b0111)&&(month1 < 4'b0001))|| //7
((month0 == 4'b1000)&&(month1 < 4'b0001))|| //8
((month0 == 4'b0000)&&(month1 == 4'b0001))|| //10
((month0 == 4'b0010)&&(month1 == 4'b0001)) //12
)
begin
if((day0 < 4'b1001)&&(day1 < 4'b0011))
day0 <= day0 + 4'b1;
else if((day0 < 4'b0001)&&(day1 == 4'b0011))
day0 <= day0 + 4'b1;
else
begin
day0 <= 4'b0;
if(day1 < 4'b0011)
day1 <= day1 + 4'b1;
else
begin
day1 <= 4'b0;
if((month0 < 4'b1001)&&(month1 < 4'b0001))
month0 <= month0 + 4'b1;
else if((month0 < 4'b0010)&&(month1 == 4'b0001))
month0 <= month0 + 4'b1;
else
begin
month0 <= 4'b0;
if(month1 < 4'b0001)
month1 <= month1 + 4'b1;
else
month1 <= 4'b0;
end
end
end
end
//4,6,9,11等大月的天数是30
else if(
((month0 == 4'b0100)&&(month1 < 4'b0001))|| //4月
((month0 == 4'b0110)&&(month1 < 4'b0001))|| //6月
((month0 == 4'b1001)&&(month1 < 4'b0001))|| //9月
((month0 == 4'b0001)&&(month1 == 4'b0001)) //11月
)
begin
if((day0 < 4'b1001)&&(day1 < 4'b0011))
day0 <= day0 + 4'b1;
else
begin
day0 <= 4'b0;
if(day1 < 4'b0011)
day1 <= day1 + 4'b1;
else
begin
day1 <= 4'b0;
if((month0 < 4'b1001)&&(month1 < 4'b0001))
month0 <= month0 + 4'b1;
else if((month0 < 4'b0010)&&(month1 == 4'b0001))
month0 <= month0 + 4'b1;
else
begin
month0 <= 4'b0;
if(month1 < 4'b0001)
month1 <= month1 + 4'b1;
else
month1 <= 4'b0;
end
end
end
end
//2月
else if(((month0 == 4'b0010)&&(month1 < 4'b0001))) //2月
begin
if(((day0 < 4'b1001)&&(day1 < 4'b0010))||((day0 < 4'b1000)&&(day1 < 4'b0011)))
day0 <= day0 + 4'b1;
else
begin
day0 <= 4'b0;
if(day1 < 4'b0010)
day1 <= day1 + 4'b1;
else
begin
day1 <= 4'b0;
month0 <= month0 + 4'b1;
end
end
end
end
else
EO1 <= 1'b0;
end
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -