はじめてのモジュール
CoddyのVerilogジャーニー「基礎」セクションの一部 — レッスン 4/90。
module は Verilog における基本的なビルディングブロックです。Verilog のコードはすべて module の inside に記述されます。
モジュールは、以下の要素を持つコンポーネントとして考えてください。
- Inputs(入力される信号)
- Outputs(出力される信号)
- Behavior(その働き)
Module Syntax
module module_name ( inputs, outputs );
// ここにあるすべて
endmoduleすべてのモジュールは module で始まり、endmodule で終わります。
Inputs and Outputs
module and_gate(
input a, // a はモジュールに入ってくる
input b, // b はモジュールに入ってくる
output c // c はモジュールから出ていく
);
// 振る舞いはここに書く
endmodule- input = 信号がモジュールに入ります
- output = 信号がモジュールから出力されます
Behavior の追加
次に、module に処理を行わせます:
module and_gate(
input a,
input b,
output c
);
assign c = a & b; // c は a AND b が 1 のときのみ 1 です
endmoduleassignは右辺と左辺を継続的に接続します&は Verilog で AND を意味します
チャレンジ
このチャレンジでは、OR演算を実行するシンプルなモジュールを作成する必要があります。
作業手順:
- モジュール名は
or_gateとしてください xという名前のinputを含めてくださいyという名前のinputを含めてくださいzという名前のoutputを含めてください- モジュール
insideで、assignを使用してzをx OR yと等しくしてください
モジュールの header とその3つの ports は、すでにエディタ内に用意されています。追加する必要がある行は、モジュール inside の assign ステートメントです。
補足: Verilog では、ORはパイプ記号 | を使って記述されます。inputs のうち少なくとも1つが1 (true) であれば、1 (true) を outputs します。
自分で試してみよう
// モジュールヘッダーとそのポートはすでに記述されています
module or_gate(
input x,
input y,
output z
);
// あなたの番です: assign を使って z を x OR y に設定してください
// Verilog では、OR は | と書きます
endmodule
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。