본문 바로가기

Verilog/HDLbits

[HDLBits] Fsm3

1. 문제 및 설명

  • 현재 상태를 기반으로 다음 상태와 출력을 계산하도록 상태머신을 구현하시오.
    • FSM의 상태 A로 초기화하는 비동기 리셋을 포함하라.
    • A=2'b00, B=2'b01, C=2'b10, D=2'b11

 

2. 모듈 정의

module top_module(
    input clk,
    input in,
    input areset,
    output out);

 

 

3. 답

module top_module(
    input clk,
    input in,
    input areset,
    output out); //

    parameter A=0, B=1, C=2, D=3;
    reg [1:0] state, next_state;
    // State transition logic: next_state = f(state, in)
    always@(*)
        begin
            case(state)
                A: next_state = (in==0)?A:B;
                B: next_state = (in==0)?C:B;
                C: next_state = (in==0)?A:D;
                D: next_state = (in==0)?C:B;
            endcase
        end
    
    always@(posedge clk, posedge areset)
        begin
            if(areset)
                state <= A;
            else
                state <= next_state;
        end
    
    assign out = (state == D);

endmodule

'Verilog > HDLbits' 카테고리의 다른 글

[HDLBits] Exams/ece241 2013 q4  (1) 2026.04.08
[HDLBits] Fsm3s  (0) 2026.03.17
[HDLBits] Fsm3onehot  (0) 2026.03.06
[HDLBits] Fsm3comb  (0) 2026.03.06
[HDLBits] Fsm2s  (0) 2026.02.01