En el primer bloque del siguiente código recibo un error extraño cada vez que uso una asignación no bloqueante / El estado_SENDSYNC dura dos ciclos, aunque se supone que solo dura un ciclo. Cambiar a la asignación de bloqueo soluciona el problema, pero estoy desconcertado en cuanto a por qué. ¿No debería inferirse un mux de cualquier manera?
always @(posedge clk, posedge rst) begin
if( rst ) begin
currentState <= State_IDLE;
nextState <= State_IDLE;
end else begin
currentState <= nextState;
end
end
always @(posedge clk) begin
nextState = currentState;
case( currentState )
State_IDLE: begin
if( laneOpen ) begin
nextState = State_SENDSYNC;
end
end
State_SENDSYNC: begin
nextState = State_SENDDATA;
end
State_SENDDATA: begin
if( !laneOpen ) begin
nextState = State_IDLE;
end
end
default: begin
nextState = State_IDLE;
end
endcase
end