본문 바로가기

Verilog/HDLbits

[HDLBits] Exams/2014 q3fsm

1.    문제 및 설명

     A.   입력 s와 w을 가지는 FSM을 설계하시오

  • FSM은 리셋 상태인 A에서 시작한다.
  • 상태 A에서는 s를 감시한다.
    • s=0이면 상태 A를 유지한다.
    • s=1이면 상태 B로 전이한다.

     B.   상태 B에 진입한 이후 FSM은 입력 w를 3개의 클록 동안 검사한다.

  • 검사한 3개의 클록 중 정학히 2번 w=1이 나타나면 다음 클록 사이클에서 출력 z=1을 출력 한다.
  • 그 외의 경우에는 z=0을 출력한다.

     C.   FSM은 한 번의 판별이 끝난 뒤에도 계속해서 다음 클록 구간에 대해 동일한 동작을 반복 수행한다.

     D.   입력 s는 상태 A에서만 사용된다      

 

2.    요구사항

     A.   입력 w를 3클록 단위로 검사하는 FSM을 설계하시오

  • 각 클록 동안 입력된 w 값 중 2개의 1이 존재하면 다음 클록에서 출력 z=1, 그렇지 않으면 z=0
  • 그 외의 경우에는 z=0을 출력한다.

     B.   상태 수는 가능한 최소 개수로 설계해야한다.

 

 

3.    문제 풀이

     A.     State 

  • C, D: 첫 번째 w input state
  • E, F, G: 두 번째 w input state
  • H, I: 세 번째 w input state

4. 모듈 정의

module top_module (
    input clk,
    input reset,   // Synchronous reset
    input s,
    input w,
    output z
);

 

 

5. 답

module top_module (
    input clk,module top_module (
    input clk,
    input reset,   // Synchronous reset
    input s,
    input w,
    output z
);
    
    parameter A = 0, B = 1, C = 2, D = 3, E = 4, F = 5, G = 6, H = 7, I = 8;
    reg [3:0] state, next_state;
    
    assign z = (state == H);
    
    always@(*)
        begin
            case(state)
                A: next_state = s?B:A;
                B: next_state = w?C:D;
                C: next_state = w?E:F;
                D: next_state = w?F:G;
                E: next_state = w?I:H;
                F: next_state = w?H:I;
                G: next_state = I;
                H: next_state = w?C:D;
                I: next_state = w?C:D;
            endcase
        end
    
    always@(posedge clk)
        begin
            if(reset)
                begin
                    state <= A;
                end
            else
                begin
                    state <= next_state;
                end
        end
                    
    

endmodule
 



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

[HDLBits] Exams/2014 q3c  (0) 2026.05.17
[HDLBits] Exams/2014 q3bfsm  (0) 2026.05.17
[HDLBits] Exams/ece241 2014 q5b  (0) 2026.05.10
[HDLBits] Exams/ece241 2014 q5a  (0) 2026.05.10
[HDLBits] Exams/ece241 2013 q8  (0) 2026.05.10