Menu
Coddy logo textTech

ビットカウンタ

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

challenge icon

チャレンジ

この章では、UART送信機をステップ・バイ・ステップで構築していきます。UARTUniversal Asynchronous Receiver-Transmitter(汎用非同期受信機・送信機)の略です。これは、一方の線(送信)ともう一方の線(受信)という2本の線だけで、2つのデバイスが通信できるようにするシンプルなハードウェアプロトコルです。

電話で話している2人の人間をイメージしてください。一方が話し(送信し)、もう一方が聞きます(受信します)。UARTはデータを1ビットずつ送信し、各バイトの始まりと終わりを示すスタートビットとストップビットを付加します。

UART送信機は合計10ビットを送信します:スタートビット(1ビット)、データビット(8ビット)、ストップビット(1ビット)。現在どのビットを送信しているかを追跡するには、0から10までカウントするビットカウンターが必要です。
ビットカウンターの仕組み

  • 0から開始
  • クロックサイクルごとに1を加算
  • 10に達したら0に戻る
  • これを永久に繰り返す

このタスクでは、まだリセット処理は行わず、増加させる処理のみを行います。

手順:

  1. 以下を持つ uart_tx というモジュールを作成します:
    • 1つの入力: clk
    • 1つの出力: cnt (4ビット, reg 型)
  2. モジュールの内部で:
    • initial ブロック内で開始時に cnt を 0 に設定します
    • always @(posedge clk) ブロックを追加します
    • 各クロックエッジで cnt が 1 ずつ増加するようにします

自分で試してみよう

// TODO: モジュール uart_tx を作成し、入力 clk と出力 cnt(4ビット)を持つ

// TODO: initial ブロック内で開始時に cnt を 0 に設定する

// TODO: always @(posedge clk) ブロックを追加する

// TODO: cnt をインクリメントする

基礎のすべてのレッスン