Menu
Coddy logo textTech

Bit counter

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

challenge icon

チャレンジ

この章では、UART transmitterを段階的に作成します。UARTUniversal Asynchronous Receiver-Transmitterを意味します。これは、2つのデバイスが1本のワイヤ(送信用)ともう1本のワイヤ(受信用)だけを使って通信できる、シンプルなハードウェアプロトコルです。

2人が電話で話しているようなものだと考えてください。一方が話し(送信し)、もう一方が聞きます(受信します)。UARTは一度に1 bitずつデータを送信し、各バイトの開始と終了を示すためにstart bitとstop bitを使用します。

UART transmitterは10 bitsを送信します:start bit (1)、data bits (8)、stop bit (1)。どのbitを送信しているかを追跡するために、0から10まで数えるbit counterが必要です。
Bit Counterの仕組み

  • 0から開始する
  • クロックサイクルごとに1をAddする
  • 10に達したら、0に戻る
  • 永遠に繰り返す

この課題では、まだリセットは行いません。増加させるだけです。

行うこと:

  1. uart_txという名前のmoduleをCreateします。内容は次のとおりです:
    • 1つのinput:clk
    • 1つのoutput:cnt(4 bits、型はreg
  2. moduleのinside:
    • initial blockのinsideの開始時にcntを0に設定する
    • always @(posedge clk) blockをAddする
    • 各クロックエッジでcntが1ずつ増加するようにMakeする

自分で試してみよう

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

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

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

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

基礎のすべてのレッスン

自分で練習してみよう: Verilogオンラインコンパイラ