Menu
Coddy logo textTech

상태 머신

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

challenge icon

챌린지

상태 머신은 여러 상태 중 하나에 있을 수 있는 회로입니다. UART의 경우 각 비트에 대해 서로 다른 상태(idle, start, 데이터 비트 0-7, stop)가 있습니다. 비트 카운터(cnt)는 현재 어느 상태에 있는지 알려줍니다. cnt를 기반으로 tx 라인에 어떤 값을 보낼지 결정합니다.

이전 레슨에서 작성한 비트 카운터가 있습니다. 이를 UART 송신기로 동작하도록 수정해야 합니다.

전송할 비트 값 (문자 'A'의 경우)

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

수행할 작업

  1. start라는 이름의 input 추가
  2. tx라는 이름의 output reg 추가
  3. initial 블록에서 tx = 1로 설정 (idle 상태는 HIGH)
  4. 카운터 로직 변경:
    • cnt == 0이고 start == 1일 때, cnt <= 1로 설정 (전송 시작)
    • cnt가 1과 9 사이일 때 증가: cnt <= cnt + 1
    • cnt == 10일 때, 0으로 리셋

직접 해보기

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

  initial begin
    cnt = 0;
  end

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

endmodule

기초의 모든 레슨