Built In Gate Primitives
CoddyのVerilogジャーニー「基礎」セクションの一部。レッスン 39/90。
Verilogには、実際のゲート記号を使って論理回路を記述できる組み込みの gate primitives があります。これは structural modeling と呼ばれます。回路図を描くのと同じように、ゲートを接続して回路を構築します。
ゲートプリミティブは、基本的な論理ゲートをモデル化する、あらかじめ定義されたキーワードです。assign out = a & bのような式を書く代わりに、ゲートをインスタンス化します。
and(out, a, b); // 出力 out、入力 a と b の AND ゲート一般的な構文
gate_type (output, input1, input2, ...);- 最初の引数は常にoutputです
- 後続の引数はinputsです(gateに応じて1つ以上)
利用可能なゲートプリミティブ
| ゲートの種類 | キーワード | 入力数 |
|---|---|---|
| AND | and | 2 以上 |
| OR | or | 2 以上 |
| NOT | not | 1 |
| NAND | nand | 2 以上 |
| NOR | nor | 2 以上 |
| XOR | xor | 2 以上 |
| XNOR | xnor | 2 以上 |
Gate プリミティブの動作
and(out, a, b) と記述すると、Verilog は a & b の result で out を継続的に駆動する AND ゲートを作成します。a または b が変更されるたびに、実際のゲートと同じように out が直ちに更新されます。
Gate Primitives と Continuous assignment
どちらの方法も same ハードウェアを生成します。
// ゲートプリミティブ
and(out, a, b);
// 連続代入(同じ結果)
assign out = a & b;Gate プリミティブは、回路をゲートの集合(structural スタイル)として記述したい場合に便利です。Continuous assignment はbehavioral スタイル(式)に適しています。
チャレンジ
行うこと:
- この回路が動作するように、correct gate primitive を Add してください。module は inputs
aとbの AND を output する必要があります。output port の名前はすでにcになっています。
自分で試してみよう
module gate_challenge (
input a,
input b,
output c
);
// TODO: 正しいゲートプリミティブを追加する
// 出力 c は a AND b であるべきです
endmoduleこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
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オンラインコンパイラ