해결된 질문
작성
·
445
·
수정됨
2
module FSM(
input clk,
input rst_n,
input i_run,
output reg o_done
);
reg[1:0] state; //00:IDLE, 01:RUN, 10:DONE, 11:None
wire is_done;
always@(posedge clk or negedge rst_n) begin
case(state)
2'b00 : // IDLE
begin if (rst_n == 1 && i_run == 1)
state <= 01;
else
state <= 00;
end
2'b01 : // Run
begin if (!rst_n)
state <= 00;
else if (rst_n == 1 && is_done == 1)
state <= 10;
else
state <= 01;
end
2'b10 : // Done
begin
state <= 00;
end
dafault : //Deafalt
begin
state <=00;
end
endcase
end
endmodule
보이는 그대로 FSM을 state를 case로 나눠서 기술해봤는데, 혹시 위와 같은 방식으로 설계하면 문제 없을까요?
답변 1
0
안녕하세요 :)
(개인코드는 양해 부탁드립니다. https://www.inflearn.com/news/312949)
개인의 차이일 수 있습니다. 올려주신 코딩 스타일이 제 생각에는 가독성이 좋아보이지는 않네요.
돌려보시고 Function 에 문제가 없다면, 그렇게 하셔도 됩니다.
즐공하세요 :)