Bit counter
CoddyのVerilogジャーニー「基礎」セクションの一部。レッスン 87/90。
チャレンジ
この章では、UART transmitterを段階的に作成します。UARTはUniversal 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に戻る
- 永遠に繰り返す
この課題では、まだリセットは行いません。増加させるだけです。
行うこと:
uart_txという名前のmoduleをCreateします。内容は次のとおりです:- 1つのinput:
clk - 1つのoutput:
cnt(4 bits、型はreg)
- 1つのinput:
- moduleのinside:
- initial blockのinsideの開始時に
cntを0に設定する always @(posedge clk)blockをAddする- 各クロックエッジで
cntが1ずつ増加するようにMakeする
- initial blockのinsideの開始時に
自分で試してみよう
// TODO: モジュール uart_tx を作成し、入力 clk と出力 cnt (4ビット) を持たせる
// TODO: initial ブロック内で開始時に cnt を 0 に設定する
// TODO: always @(posedge clk) ブロックを追加する
// TODO: cnt をインクリメントする基礎のすべてのレッスン
4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine Logic自分で練習してみよう: Verilogオンラインコンパイラ