モジュール構造
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つのモジュールが一般的な慣例です
- モジュール名はその機能を表すものにします
- ポートは名前の後のかっこ内に列挙します
- 入力は常に
inputです(内部に記述できません) - 出力は
outputです(regまたはwireにできます) endmoduleでモジュールを閉じる必要があります
チャレンジ
不足している部分を埋めて、このモジュールを完成させましょう。
やること:
- モジュール名
my_andを追加する xのinputを追加するyのinputを追加するzのoutputを追加するassignを使って内部ロジックを追加する
自分で試してみよう
module ______ ( // モジュール名を追加
input x, // 入力を追加
input y, // 入力を追加
output z // 出力を追加
);
// ここにassign文を追加 (z = x & y)
endmoduleこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Verilogオンラインコンパイラ