Menu
Coddy logo textTech

상태 머신

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

challenge icon

챌린지

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

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

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

cnttx value
01
10
21
30
40
50
60
70
80
91
101

수행할 작업

  1. start라는 입력을 추가하세요.
  2. tx라는 output reg를 추가하세요.
  3. initial 블록에서 tx = 1로 설정하세요 (유휴 상태는 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

기초의 모든 레슨