Menu
Coddy logo textTech

ステートマシン

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

challenge icon

チャレンジ

ステートマシンは、いくつかの状態のいずれかを取ることができる回路です。UARTの場合、各ビットに対して異なる状態があります: idle、start、データビット 0〜7、そして stop です。ビットカウンタ (cnt) は、現在どの状態にいるかを示します。cnt に基づいて、tx line に送信する値を決定します。

前のレッスンで作成したビットカウンタがあります。これをUART送信機として機能するように修正する必要があります。

送信するビット値(文字 'A' の場合)

cnttx value
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. カウンターの 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

基礎のすべてのレッスン