Menu
Coddy logo textTech

State Machine

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

challenge icon

챌린지

상태 머신은 여러 상태 중 하나에 있을 수 있는 회로입니다. UART에서는 각 bit에 대해 서로 다른 상태를 사용합니다: idle, start, data bits 0-7, 그리고 stop입니다. bit 카운터(cnt)는 현재 어떤 state에 있는지 알려 줍니다. cnt를 기반으로 tx line에 보낼 값을 결정합니다.

이전 lesson에서 bit 카운터를 사용했습니다. 이를 UART transmitter로 작동하도록 수정해야 합니다.

보낼 Bit 값 ('A'의 경우)

cnttx 값
01
10
21
30
40
50
60
70
81
90
101

해야 할 일

  1. 이름이 start인 input 추가
  2. tx라는 output reg 추가
  3. initial block에서 tx = 1로 설정 (idle high)
  4. 카운터 logic 변경:
    • cnt == 0이고 start == 1일 때 cnt <= 1로 설정 (transmitting 시작)
    • cnt가 1에서 9 사이일 때 증가: cnt <= cnt + 1
    • cnt == 10일 때 0으로 reset

직접 해보기

module uart_tx (
  input clk,
  output reg [3:0] cnt
);

  initial begin
    cnt = 0;
  end

  always @(posedge clk) begin
      cnt <= cnt + 1;
  end

endmodule

기초의 모든 레슨

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