Menu
Coddy logo textTech

State Machine

CoddyのVerilogジャーニー「基礎」セクションの一部。レッスン 88/90。

challenge icon

チャレンジ

ステートマシンは、複数の state のいずれかになれる回路です。UART では、各 bit に対して異なる state があります:idle、start、data bits 0-7、stop です。bit カウンター(cnt)によって、現在どの state にいるかがわかります。cnt に基づいて、tx line に送信する値を決定します。

前のレッスンで使用した 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オンラインコンパイラ