Menu
Coddy logo textTech

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の順序が明確で、変更される可能性が低い
  • 簡単なテストベンチを作成している

ほとんどの設計では、より明確でエラーが発生しにくいため、名前によるポートマッピングが推奨されます

challenge icon

チャレンジ

正しい順序で信号を一覧表示し、順序によるポートマッピングを使用してインスタンス化を完了してください。

行うこと:

モジュールポート(この順序):

  1. input en(イネーブル)
  2. input [7:0] d(data input)
  3. output [7:0] q(data output)

接続する信号:

  • enable_signalenに接続
  • data_inputdに接続
  • data_outputqに接続

自分で試してみよう

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
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン

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