본문 바로가기

Verilog/HDLbits

[HDLBits] Exams/2012 q2fsm

1.    문제 및 설명

     A.   아래 주어진 상태 머신은 하나의 입력 w와 하나의 출력 z를 가진다.

     B.   다음 상태 머신을 구현하시오.

2.    요구사항

     A.   순차회로와 조합회로를 분리하여 구현하시오

  • 조합회로: 상태 전이 테이블을 위한 always block
  • 순차회로: 상태 플립플롭을 위한 always block 

     B.   FSM의 출력인 z는 다음 두 방법 중 하나를 사용하여 기술하시오.

  • assign 구문
  • always block 

 

3.    문제 풀이

     A.     State 

  • A: 000
  • B: 001
  • C: 010
  • D: 011
  • E: 100
  • F: 101

 

4. 모듈 정의

mmodule top_module (
    input clk,
    input reset,   // Synchronous active-high reset
    input w,
    output z
);

 

 

5. 답

module top_module (
    input clk,
    input reset,   // Synchronous active-high reset
    input w,
    output z
);
    parameter A = 3'b000, B = 3'b001, C = 3'b010, D = 3'b011, E = 3'b100, F = 3'b101;
    reg [3:1] state, next_state;
    
    assign z = (state==F)|(state==E);
    
    always@(*)
        begin
            case(state)
                A: next_state = w?B:A;
                B: next_state = w?C:D;
                C: next_state = w?E:D;
                D: next_state = w?F:A;
                E: next_state = w?E:D;
                F: next_state = w?C:D;
                default next_state = state;
            endcase          
        end
    
    always@(posedge clk)
        begin
            if(reset)
                state <= A;
            else
                begin
                	state <= next_state;
                end
        end
    
endmodule
 



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

[HDLBits] Exams/2013 q2afsm  (0) 2026.05.17
[HDLBits] Exams/2012 q2b  (0) 2026.05.17
[HDLBits] Exams/m2014 q6  (0) 2026.05.17
[HDLBits] Exams/m2014 q6c  (0) 2026.05.17
[HDLBits] Exams/m2014 q6b  (0) 2026.05.17