アフィリエイト広告
アフィリエイト広告

VerilogHDL 組み合わせ回路のシミュレーション

VerilogHDL と GTKWave の環境が整いましたので、いくつか例題を試してみようと思います。以下のサイトの問題を、例題にさせていただきました。

【問題1】 Verilog HDLをマスターしよう!!
「完全マスター! 電子回路ドリル」の3学期がスタート! “ハードウェア記述言語”をテーマにさまざまな問題を毎週お届けします。

組み合わせ回路をシミュレーションする

図 1 組み合わせ回路

組み合わせ回路です。

まぁ、簡単ですね、みればわかる (^_^;)
A または B のどちらか、もしくは両方が 1 のときに、C が出力される回路です。
これをシミュレーションしてみましょう。

基本は、準備編でやった AND 回路とおなじです、入力が 3 つになっただけ。

回路記述

まずは、回路をつくります。

  1. module combinational_circuit(A, B, C, X);
  2.   input A, B, C;
  3.   output X;
  4.   wire A, B, C, X;
  5.   assign X = ( A | B ) & ~C;
  6. endmodule

AND 回路のときと同じなので、説明は省略 m(__)m

テストベンチ

つぎに、テストベンチファイル。

  1. module combinational_circuit_test;
  2.   reg A, B, C;
  3.   wire X;
  4.   combinational_circuit comb_ckt0(A, B, C, X);
  5.   initial begin
  6.         A=0; B=0; C=0;
  7.     #10 C=1;
  8.     #10 B=1; C=0;
  9.     #10 C=1;
  10.     #10 A=1; B=0; C=0;
  11.     #10 C=1;
  12.     #10 B=1; C=0;
  13.     #10 C=1;
  14.     #10 $finish;
  15.   end
  16.   initial begin
  17.     $monitor("A=%d, B=%d, C=%d, X=%d", A, B, C, X);
  18.     $dumpfile("comb_ckt_test.vcd");
  19.     $dumpvars(0, combinational_circuit_test);
  20.   end
  21. endmodule

信号の入力は、変化するところだけ記述すればいいですね。コンソール出力が不要なら、21 行の $monitor は不要です。が、波形ファイルを生成するために、vvp は実行しないといけません。

シミュレーション結果

図 2 組み合わせ回路のシミュレーション波形

図 2 がシミュレーション波形です。

うーん、説明するまでもない (;´Д`)
最初に書いたように、A または B のどちらか、もしくは両方が 1 のときに、C が出力される、ってことが、シミュレーションで確認できました。ってことね。

タイトルとURLをコピーしました