最初のページ 戻る 次へ 最後のページ

ブロッキング代入(=)

module TestBench;

reg a1,a2;

reg b1,b2;

initial begin

$dumpfile("tmp.vcd");

$dumpvars(0,TestBench);

$display("a1 b1 | a2 b2");

$monitor(" %b %b | %b %b",a1,b1,a2,b2);

#0 a1=1'b0; b1=1'b1; a2=1'b0; b2=1'b1;

#1 a1=b1; b1=a1; a2<=b2; b2<=a2;

#1 a1=b1; b1=a1; a2<=b2; b2<=a2;

#1 a1=1'b0; b1=1'b0; a2=1'b0; b2=1'b0;

#1 a1=1'b1; b1=1'b0; a2=1'b1; b2=1'b0;

#1 a1=b1; b1=a1; a2<=b2; b2<=a2;

#1 a1=b1; b1=a1; a2<=b2; b2<=a2;

#1 $finish;

end

endmodule

a1とb1だけ考えてみよう

a1,b1はレジスタ宣言(値を保持)

a1=1'b0 b1=1'b1

a1=1'b1 b1=1'b1

a1=1'b1 b1=1'b1

a1=b1; b1=a1;は左から順に実行している

a1はb1で上書き

    b1はa1で上書き