Menu
Coddy logo textTech

State Machine Logic

Coddy Verilog 여정의 기초 섹션에 포함된 레슨. 90개 중 80번째.

challenge icon

챌린지

이 레슨에서는 교통 신호등 컨트롤러에 state 전이 로직을 추가합니다. state machine은 한 state에서 다음 state로 언제 이동할지 결정합니다.

state machine 로직은 교통 신호등이 언제, 어떻게 state를 변경할지 제어합니다.

State Sequence

Green → Yellow → Red → Green → …

여러분의 과제는 state machine 로직을 module에 추가하는 것입니다.

수행할 작업:

  1. always @(posedge clk or posedge reset) 블록을 Add합니다
  2. reset 시 state를 Red (2)로 설정합니다
  3. next가 1이면 다음 state로 이동합니다:
    • state가 Green (0)이면 Yellow로 change합니다
    • state가 Yellow (1)이면 Red로 change합니다
    • state가 Red (2)이면 Green으로 change합니다

직접 해보기

module traffic_light (
  input clk,
  input reset,
  input next,           // 상태를 변경하는 트리거
  output reg red,
  output reg yellow,
  output reg green
);

  reg [1:0] state;

  // 출력 할당
  always @(*) begin
    case (state)
      0: begin green = 1; yellow = 0; red = 0; end
      1: begin green = 0; yellow = 1; red = 0; end
      2: begin green = 0; yellow = 0; red = 1; end
      default: begin green = 0; yellow = 0; red = 1; end
    endcase
  end

  // TODO: 상태 머신 로직 추가 (타이밍 없이)
  // always @(posedge clk or posedge reset) begin
  //   if (reset) begin
  //     state <= 2;
  //   end else if (next) begin
  //     case (state)
  //       0: state <= 1;
  //       1: state <= 2;
  //       2: state <= 0;
  //     endcase
  //   end
  // end

endmodule

기초의 모든 레슨

직접 연습해 보세요: 온라인 Verilog 컴파일러