본문 바로가기

Verilog/HDLbits

[HDLBits] Exams/2013 q2bfsm

1.    문제 및 설명

     A.   모터를 제어하기 위한 FSM이다.

  • 입력
    • x
    • y
    • clk
    • resetn
  • 출력
    • f
    • g

     B.   FSM 초기 동작

  • resetn = 0 인 동안 FSM은 초기 상태인 상태 A를 유지한다.
  • resetn이 비활성화 되면, 다음 클록에 f=1을, 한 클럭 동안 출력한다.

     C.   입력 x 패턴 검출

  • 연속된 3개의 클록 동안 x가 1-> 0-> 1 패턴이 입력 되면, 다음 클럭 사이클에서 g=1을 출력해야 한다.

     D.   입력 y 감시

  • g=1인 상태가 된 이후 FSM은 y를 감시한다.
    • 최대 2클록 이내에 y=1이 입력되면, g=1을 계속 유지한다. 
    • 2클록 이내에 y=1이 입력되지 않으면 g=0을 계속 유지한다.
    • reset 전까지 위 상태를 유지한다.

 

2.    요구사항

     A.   FSM을 Verilog로 구현하시오.

 

     B.   FSM은 다음 기능을 포함해야 한다.

  • Active-low reset 처리
  • f의 1클록 pulse 출력
  • 입력 x의 101 패턴 검출
  • g 출력 제어
  • y 입력 시간 제한 검사

 

 

3.    문제 풀이

     A.   state

 

상태 의미
A Reset/Idle 상태
B f=1 출력 상태
C x=1 검출
D x=10 검출
E x=101 검출 완료 (g=1)
F y 검사 1클록째
G y 검사 2클록째
H g=1 영구 유지 상태
I g=0 영구 유지 상태

 

 

 

4. 모듈 정의

module top_module (
    input clk,
    input resetn,    // active-low synchronous reset
    input x,
    input y,
    output f,
    output g
); 

 

 

5. 답

module top_module (
    input clk,
    input resetn,    // active-low synchronous reset
    input x,
    input y,
    output f,
    output g
); 
    
    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 f = (state == B);
    assign g = (state == F)|(state == G)|(state == H);
    
        
    
    always@(*)
        begin
            case(state)
                A: next_state = B;
                B: next_state = C;
                C: next_state = x?D:C;
                D: next_state = x?D:E;
                E: next_state = x?F:C;
                F: next_state = y?G:H;
                G: next_state = G;
                H: next_state = y?G:I;
                I: next_state = I;
            endcase
        end
    
    always@(posedge clk)
        begin
            if(!resetn)
                state <= A;
            else
                state <= next_state;
        end
    
endmodule
 

 

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

[HDLBits] Exams/review2015 shiftcount  (0) 2026.05.31
[HDLBits] Exams/review2015 count1k  (0) 2026.05.31
[HDLBits] Exams/2013 q2afsm  (0) 2026.05.17
[HDLBits] Exams/2012 q2b  (0) 2026.05.17
[HDLBits] Exams/2012 q2fsm  (0) 2026.05.17