Menu
Coddy logo textTech

ステートマシン

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

challenge icon

チャレンジ

状態マシンは、複数の状態のいずれかを取ることができる回路です。UARTの場合、各ビットに対して異なる状態があります:アイドル、スタート、データビット0-7、およびストップです。ビットカウンタ(cnt)は、現在どの状態にいるかを示します。cntに基づいて、txラインに送信する値を決定します。

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

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

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

やること

  1. startという名前の入力を追加する
  2. txという名前の出力regを追加する
  3. initialブロック内で、tx = 1(アイドル時はハイ)に設定する
  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

基礎のすべてのレッスン