dポイントプレゼントキャンペーン実施中!

ハーフアダー(半加算器)の設計について質問です。
(1)以下の指針に従ってハーフアダーのverilogHDL記述を行いなさい。
・ モジュール名をhalfadder とする。
・ ポートリストは(A, B, Y, CO) とする。
・A, B は単一ビットの入力ポートY, CO は単一ビットの出力ポートである。
・画像の論理回路に示したゲートの接続に従って記述する。

ハーフアダーのHDL記述
module halfadder(A,B,Y,CO);

input A,B;
output Y,CO;

assign Y=A^B;
assign CO=A&B;

endmodule

(2)以下の指針に従ってハーフアダーのテストベンチを作成せよ。
・モジュール名をtest_halfadder とする。
・テスト入力のreg信号名をa, b とする。
・テスト出力のwire信号名をsum, carry とする。
・タイムステップを#50とし,タイムステップごとにa, b の値を変えてシミュレーションを行う。a, bの値の組み合わせは画像の真理値表のケースi~ケースivに従うこと。
・システムタスクの$monitorを使って,シミュレーション結果を「時刻,a, b, sum, carry 」の並びでシミュレータのTranscriptウィンドウに表示できるようにする。

テストベンチ
module test_halfadder;
reg a,b;
wire sum,carry;

halfadder ha (.A(a), .B(b), .Y(sum), .CO(carry));

initial begin
a=0; b=0;
#50 a=1; b=0;
#50 a=1; b=0;
#50 a=0; b=1;
#50 $finish;
end

initial begin
$monitor($stime, "a=%b b=%b sum=%h carry=%h",a,b,sum,carry);
end
endmodule

実際にmodelsimで動かしてみたんですけど、波形がおかしく合ってる気がしません。
(1)は合ってると思うんですけど、(2)が不安です。
(2)でおかしい箇所があれば教えていただきたいです。

「半加算器について」の質問画像

A 回答 (1件)

テストベンチの a,b に真理値表の Y, COの値を入れてる。

    • good
    • 0
この回答へのお礼

あ、解決しました。
ありがとうございます。

お礼日時:2021/10/13 17:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!