0

私は今日の時点で Verilog HDL を教えており、理解しようとしています。論理図の例を通過する変数の反対/否定をビット形式で表示しようとしています。

module My_Implementation();
reg A,B,C,D;
wire F;

assign F = ((A&&(!B))||((!A)&&B))&&(C||(!D));

initial begin
    $monitor("A=%b A'=%b B=%b B'=%b C'=%b D=%b OUTPUT=%b",A,!A,B,!B,!C,D,F);
    #10     A=0; B=0; C=0; D=0;
    #10     A=1;
    #10     B=1;
    #10     C=1;
    #10     D=1;
    #10     A=0;
    #10     B=0;
    #10     C=0;
    #10     D=0;
    #10     $finish;
end

endmodule 

否定された変数を表示するためにさまざまな組み合わせを試しましたが、「X」の出力しか得られません。

4

1 に答える 1

3

私はあなたの例をコピーして貼り付け、シミュレーターで実行して出力しました:

A=x A'=x B=x B'=x C'=x D=x OUTPUT=x
A=0 A'=1 B=0 B'=1 C'=1 D=0 OUTPUT=0
A=1 A'=0 B=0 B'=1 C'=1 D=0 OUTPUT=1
A=1 A'=0 B=1 B'=0 C'=1 D=0 OUTPUT=0
A=1 A'=0 B=1 B'=0 C'=0 D=0 OUTPUT=0
A=1 A'=0 B=1 B'=0 C'=0 D=1 OUTPUT=0
A=0 A'=1 B=1 B'=0 C'=0 D=1 OUTPUT=1
A=0 A'=1 B=0 B'=1 C'=0 D=1 OUTPUT=0
A=0 A'=1 B=0 B'=1 C'=1 D=1 OUTPUT=0
A=0 A'=1 B=0 B'=1 C'=1 D=0 OUTPUT=0

レポートに時間を追加すると、x何かが宣言される前の時間 0 で発生することがわかります。私はこれを期待し、すべての入力が定義されるとすぐに解決します。xVerilog を初めて使用する場合、不明な値を意味することに注意してください。

$monitor("%2t : A=%b A'=%b B=%b B'=%b C'=%b D=%b OUTPUT=%b",$realtime, A,!A,B,!B,!C,D,F);

新しい出力:

 0 : A=x A'=x B=x B'=x C'=x D=x OUTPUT=x
10 : A=0 A'=1 B=0 B'=1 C'=1 D=0 OUTPUT=0
20 : A=1 A'=0 B=0 B'=1 C'=1 D=0 OUTPUT=1
30 : A=1 A'=0 B=1 B'=0 C'=1 D=0 OUTPUT=0
40 : A=1 A'=0 B=1 B'=0 C'=0 D=0 OUTPUT=0
50 : A=1 A'=0 B=1 B'=0 C'=0 D=1 OUTPUT=0
60 : A=0 A'=1 B=1 B'=0 C'=0 D=1 OUTPUT=1
70 : A=0 A'=1 B=0 B'=1 C'=0 D=1 OUTPUT=0
80 : A=0 A'=1 B=0 B'=1 C'=1 D=1 OUTPUT=0
90 : A=0 A'=1 B=0 B'=1 C'=1 D=0 OUTPUT=0
于 2012-12-04T08:49:34.433 に答える