Итак, я новичок в Verilog и пытаюсь написать простой FSM.
Ввод a
— это кнопка, нажатие на которую запускает машину. Но любое другое следующее состояние после первоначального нажатия a
приводит к возврату к начальному/начальному состоянию.
input clk, reset;
input a,b,c;
reg [1:0] state;
reg [1:0] nextstate;
parameter = START=2b'0,
STATE1=2b'1,
STATE2=2b'11;
always @(posedge clk)
if(reset) state <= START;
else state<=nextstate;
always @(state, a)
case (state)
START: begin if(a) nextstate<=STATE1; else nextstate<=START; end
STATE1: begin if(a) nextstate<=START; else if(b) nextstate<=STATE2; else nextstate<=STATE1; end
STATE2: begin if(a) nextstate<=START; else if(c) nextstate<=STATE1; else nextstate<=STATE2; end
endcase
Удержание пальца на a
теперь означает, что мое состояние чередуется между STATE1
и START
при каждом положительном фронте clk
. Как это исправить?
2'b11
тика до b, а не после. - person Morgan   schedule 01.01.2016