time_state_machine.v
来自「基于verilog的时钟定时器的硬件实现」· Verilog 代码 · 共 46 行
V
46 行
module TIME_STATE_MACHINE(CLK, HRS, MINS, SET_TIME, HRS_OUT, MINS_OUT, SECS_OUT);
input wire CLK, HRS, MINS, SET_TIME;
output reg SECS_OUT, HRS_OUT, MINS_OUT;
reg [1:0] STATE, NEXTSTATE;
parameter COUNT_TIME= 2'b00,
SET_MINUTES= 2'b01,
SET_HOURS= 2'b10;
always@ (posedge CLK)
case (STATE)
COUNT_TIME:
begin
SECS_OUT<= 1; MINS_OUT<= 0; HRS_OUT<= 0;
if(SET_TIME==1 & HRS==0 & MINS==1)
NEXTSTATE <= SET_MINUTES;
else if(SET_TIME==1 & HRS==1 & MINS==0)
NEXTSTATE <= SET_HOURS;
else NEXTSTATE <= STATE;
end
SET_MINUTES:
begin
SECS_OUT<= 0; MINS_OUT<= 1; HRS_OUT<= 0;
if(SET_TIME==1 & HRS==0 & MINS==1)
NEXTSTATE <= STATE;
else
NEXTSTATE <= COUNT_TIME;
end
SET_HOURS:
begin
SECS_OUT<= 0; MINS_OUT<= 0; HRS_OUT<= 1;
if(SET_TIME==1 & HRS==1 & MINS==0)
NEXTSTATE <= STATE;
else
NEXTSTATE <= COUNT_TIME;
end
default:
begin
SECS_OUT<= 1; MINS_OUT<= 0; HRS_OUT<= 0;
NEXTSTATE <= COUNT_TIME;
end
endcase
always@(posedge CLK)
STATE<= NEXTSTATE;
endmodule
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?