Port Mapping By Order
CoddyのVerilogジャーニー「基礎」セクションの一部。レッスン 35/90。
前のレッスンでは、名前によるport mappingについて学びました。これは、.port(signal)を使って各接続に明示的にラベルを付ける方法です。ここでは、別の方法である順序によるport mappingについて説明します。
モジュール定義に現れるorderに基づいて、信号をモジュールのポートに接続します。単に信号を括弧内に一覧表示すると、Verilogがそれらを1つずつ対応付けます。
構文:
module_name instance_name (signal1, signal2, signal3);最初の signal は最初の port に接続され、2番目の signal は2番目の port に接続されます。以下同様です。
例
Module definition:
module or_gate (
input in1, // 最初のポート
input in2, // 2番目のポート
output result // 3番目のポート
);
assign result = in1 | in2;
endmodule順序によるポートマッピングを使用したインスタンス化:
or_gate or1 (input_a, input_b, output_y);次のように接続されます:
- First 信号
input_a→ 1 番目のポートin1 - Second 信号
input_b→ 2 番目のポートin2 - Third 信号
output_y→ 3 番目のポートresult
順序が重要
ポートを順序でマッピングする場合、順序が重要です:
// 正しい順序
or_gate or1 (input_a, input_b, output_y);
// 間違った順序 - 信号が間違ったポートに接続されています!
or_gate or1 (input_b, input_a, output_y);
or_gate or1 (output_y, input_a, input_b);順序を混同すると、接続が間違ったポートにつながります。コードは一見すると正しく見えるため、デバッグが難しくなることがあります。
名前によるポートマッピングと順序によるポートマッピング
| 機能 | 名前による | 順序による |
|---|---|---|
| syntax | .port(signal) | signal1, signal2 |
| 順序は重要ですか? | いいえ | はい |
| 自己文書化されていますか? | はい | いいえ |
| ミスのリスク | 低い | 高い |
| 推奨対象 | ほとんどの設計 | 単純なケースのみ |
ORDERによるportマッピングを使用する場合
ORDERによるportマッピングは、次の場合に使用できます:
- moduleのportが非常に少ない(2~3個)
- portの順序が明確で、変更される可能性が低い
- 簡単なテストベンチを作成している
ほとんどの設計では、より明確でエラーが発生しにくいため、名前によるポートマッピングが推奨されます。
チャレンジ
正しい順序で信号を一覧表示し、順序によるポートマッピングを使用してインスタンス化を完了してください。
行うこと:
モジュールポート(この順序):
input en(イネーブル)input [7:0] d(data input)output [7:0] q(data output)
接続する信号:
enable_signal→enに接続data_input→dに接続data_output→qに接続
自分で試してみよう
module register (
input en,
input [7:0] d,
output [7:0] q
);
assign q = en ? d : q;
endmodule
module top (
input enable_signal,
input [7:0] data_input,
output [7:0] data_output
);
// TODO: ORDERマッピングを使用して名前reg1でregisterをインスタンス化する
// 信号を正しい順序で列挙する: enable_signal, data_input, data_output
// .port(signal)構文を使用しない
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オンラインコンパイラ