Menu
Coddy logo textTech

상태 정의하기

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

challenge icon

챌린지

신호등 컨트롤러는 특정 시간 간격에 따라 서로 다른 조명 상태(빨간색, 노란색, 초록색)를 순환하는 유한 상태 머신입니다. 유한 상태 머신(FSM)은 제한된 수의 상태 중 하나에 있을 수 있는 회로입니다. 입력이나 타이밍에 따라 한 상태에서 다른 상태로 변경됩니다.

이 프로젝트에서는 간단한 교차로를 위한 신호등 컨트롤러를 제작합니다. 신호등에는 세 가지 출력이 있습니다:

조명출력의미
빨간색red = 1정지
노란색yellow = 1주의
초록색green = 1진행

조명은 다음 순서로 순환합니다:

Green → Yellow → Red → Green → …

타이밍 시퀀스

상태지속 시간다음 상태
초록색30초노란색
노란색10초빨간색
빨간색40초초록색

이 레슨에서는 신호등 컨트롤러의 상태를 정의합니다.

신호등에는 세 가지 가능한 상태가 있습니다:

상태조명코드
초록색초록불 켜짐2'b00
노란색노란불 켜짐2'b01
빨간색빨간불 켜짐2'b10

누락된 부분을 추가하여 모듈을 완성하세요.

수행할 작업:

상태 인코딩 정의: 0=Green, 1=Yellow, 2=Red

  1. state라는 이름의 2비트 레지스터를 선언하세요.
  2. counter라는 이름의 6비트 레지스터를 선언하세요. (최대 40초까지 타이밍 측정용)
  3. 출력 할당을 추가하세요:
    • 상태가 0일 때: green = 1, yellow = 0, red = 0
    • 상태가 1일 때: green = 0, yellow = 1, red = 0
    • 상태가 2일 때: green = 0, yellow = 0, red = 1

직접 해보기

module traffic_light (
  input clk,
  input reset,
  output reg red,
  output reg yellow,
  output reg green
);
  // TODO: 작업 1 - 상태 레지스터 선언 (2비트)
  
  // TODO: 작업 2 - 카운터 레지스터 선언 (6비트)
  

  // TODO: 작업 3 - case (state)를 사용한 출력 할당
  // 상태 0: green=1, yellow=0, red=0
  // 상태 1: green=0, yellow=1, red=0
  // 상태 2: green=0, yellow=0, red=1

endmodule

기초의 모든 레슨