Menu
Coddy logo textTech

組み込みゲートプリミティブ

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

Verilogには組み込みのプリミティブゲート(gate primitives)が用意されており、実際のゲートシンボルを使用して論理回路を記述できます。これは構造モデリング(structural modeling)と呼ばれ、回路図を描くようにゲートを接続して回路を構築します。

ゲート プリミティブ(gate primitive)は、基本論理ゲートをモデル化する定義済みのキーワードです。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 Primitiveの仕組み

and(out, a, b) と記述すると、Verilogは a & bresultoutcontinuous に駆動するAND gate を生成します。a または b が変化すると、実際の gate のように out が即座に更新されます。

ゲートプリミティブ vs 連続代入 (Continuous Assignment)

どちらの方法も同じハードウェアを生成します:

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

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

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

challenge icon

チャレンジ

作業内容:

  1. この回路を正しく動作させるために、適切な gate primitive を追加してください。この module は input である ab の AND を output する必要があります。output ポートは既に c という名前で定義されています。

自分で試してみよう

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

endmodule
quiz icon腕試し

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

基礎のすべてのレッスン