Menu
CoddyTech

モジュール構造

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つあります(a、b)
  • 出力は1つあります(c)
  • 論理を定義する assign 文が1つ含まれています

モジュール構造のルール

  1. 1つのファイルにつき1つのモジュールが一般的な慣例です
  2. モジュール名はその機能を表すものにします
  3. ポートは名前の後のかっこ内に列挙します
  1. 入力は常にinputです(内部に記述できません)
  2. 出力はoutputです(regまたはwireにできます)
  3. endmoduleでモジュールを閉じる必要があります
challenge icon

チャレンジ

不足している部分を埋めて、このモジュールを完成させましょう。

やること:

  1. モジュール名 my_and を追加する
  2. x の input を追加する
  3. y の input を追加する
  4. z の output を追加する
  5. assign を使って内部ロジックを追加する

自分で試してみよう

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

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

基礎のすべてのレッスン

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