Menu
Coddy logo textTech

Built In Gate Primitives

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

Verilogには、実際のゲート記号を使って論理回路を記述できる組み込みの gate primitives があります。これは structural modeling と呼ばれます。回路図を描くのと同じように、ゲートを接続して回路を構築します。

ゲートプリミティブは、基本的な論理ゲートをモデル化する、あらかじめ定義されたキーワードです。assign out = a & bのような式を書く代わりに、ゲートをインスタンス化します。

and(out, a, b);   // 出力 out、入力 a と b の AND ゲート

一般的な構文

gate_type (output, input1, input2, ...);
  • 最初の引数は常にoutputです
  • 後続の引数はinputsです(gateに応じて1つ以上)

利用可能なゲートプリミティブ

ゲートの種類キーワード入力数
ANDand2 以上
ORor2 以上
NOTnot1
NANDnand2 以上
NORnor2 以上
XORxor2 以上
XNORxnor2 以上

Gate プリミティブの動作

and(out, a, b) と記述すると、Verilog は a & b の result で out を継続的に駆動する AND ゲートを作成します。a または b が変更されるたびに、実際のゲートと同じように out が直ちに更新されます。

Gate Primitives と Continuous assignment

どちらの方法も same ハードウェアを生成します。

// ゲートプリミティブ
and(out, a, b);

// 連続代入(同じ結果)
assign out = a & b;

Gate プリミティブは、回路をゲートの集合(structural スタイル)として記述したい場合に便利です。Continuous assignment はbehavioral スタイル(式)に適しています。

challenge icon

チャレンジ

行うこと:

  1. この回路が動作するように、correct gate primitive を Add してください。module は inputs ab の AND を output する必要があります。output port の名前はすでに c になっています。

自分で試してみよう

module gate_challenge (
  input a,
  input b,
  output c
);
  
  // TODO: 正しいゲートプリミティブを追加する
  // 出力 c は a AND b であるべきです

endmodule
quiz icon腕試し

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

基礎のすべてのレッスン

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