Menu
Coddy logo textTech

Module Structure

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

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

module は以下を備えたハードウェアコンポーネントです。

  • 名前
  • Input(入力される signals)
  • Output(出力される signals)
  • Internal logic(module が行う処理)

module は、ピンと内部回路を備えたチップだと考えてください。

基本的なモジュール構造

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

module module_name (
  input  signals,
  output signals
);
  
  // 内部宣言 (wires, regs など)
  // ロジック (assign statements, always blocks など)
  
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 statement を含みます

モジュール構造のルール

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

チャレンジ

このモジュールを完成させるために、欠けている部分を埋めてください。

行うこと:

  1. モジュール名 my_and を追加する
  2. xinput を追加する
  3. yinput を追加する
  4. zoutput を追加する
  5. assign を使用して内部ロジックを追加する

自分で試してみよう

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

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

基礎のすべてのレッスン

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