Menu
Coddy logo textTech

モジュール構造

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

Verilogにおいて、モジュールは基本的な構成要素です。すべての設計は、互いに接続してより大きなシステムを形成するモジュールから構築されます。

モジュールは、以下のものを持つハードウェアコンポーネントです:

  • 名前
  • 入力(入ってくる信号)
  • 出力(出ていく信号)
  • 内部ロジック(モジュールが行うこと)

モジュールを、ピンと内部回路を備えたチップのようなものだと考えてください。

基本的なモジュールの構造

すべてのモジュールは以下の構造に従います:

module module_name (
  input  signals,
  output signals
);
  
  // 内部宣言 (wires, regs など)
  // ロジック (assign 文、always ブロックなど)
  
endmodule

モジュールの構成要素

構成要素役割
module キーワードモジュール定義の開始
module_nameモジュールの名前
( )入力および出力ポートのリスト
input / outputポートの方向の宣言
モジュール本体内部ロジックと接続
endmoduleモジュール定義の終了

シンプルなモジュールの例

module and_gate (
  input a,
  input b,
  output c
);
  assign c = a & b;
endmodule

このモジュールは:

  • and_gate という名前です
  • 2つの入力(ab)を持ちます
  • 1つの出力(c)を持ちます
  • ロジックを定義する1つの assign 文を含んでいます

モジュール構造のルール

  1. 1ファイルにつき1モジュールが一般的な慣習です
  2. モジュール名はその機能を説明するものであるべきです
  3. ポートは名前の後の括弧内にリストされます
  1. 入力は常に input です(内部で書き込むことはできません)
  2. 出力output です(reg または wire にすることができます)
  3. <strong>endmodule</strong> でモジュールを閉じる必要があります
challenge icon

チャレンジ

不足している部分を記入して、このモジュールを完成させてください。

やるべきこと:

  1. モジュール名 my_and を追加してください
  2. x に対して input を追加してください
  3. y に対して input を追加してください
  4. z に対して output を追加してください
  5. assign を使用して内部ロジックを追加してください

チートシート

モジュールはVerilogにおける基本的な構成要素であり、入力、出力、および内部ロジックを持つハードウェアコンポーネントです。

module module_name (
  input  a,
  input  b,
  output c
);
  // 内部ロジック
  assign c = a & b;

endmodule
  • module / endmodule — 定義の開始と終了
  • input — 入力信号(モジュール内では読み取り専用)
  • output — 出力信号(regまたはwireが可能)
  • assign — 組合せ回路を定義

自分で試してみよう

module ______ (   // モジュール名を追加
  ______ x,       // 入力を追加
  ______ y,       // 入力を追加
  ______ z        // 出力を追加
);
  // ここに代入文を追加 (z = x & y)
  
endmodule
quiz icon腕試し

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

基礎のすべてのレッスン