Verilog で最近、ほへーと思ったこと。次の結果はどうなるでしょう。Webでの日本語情報は皆無っぽいんだけど。意識してかいてるのかなー? そもそもbitをあわせろってはなしでしょうか。Verilogを知らない人にもテケトーなコメントを入れてます。Cではどう扱われるのか調べてみるかな。
module TEST;
reg [7:0] a; // 8bitの変数
reg [1:0] b, c; // 2bitの変数
initial begin
b = 2'h2; // 2bit の幅で 16進数表記の値 2 を代入
c = 2'h3; // 2bit の幅で 16進数表記の値 3 を代入
// 1.
// $display は C の printf と同等 改行が入る
// %b は 2進数表記で表示
$display("%b", b + c);
// 2.
a = b + c;
$display("%b", a);
// 3.
// {} は連接演算子
// {2'b10, 2'b11} のように書くと 4'b1011 となる
// (2'b00 は 2bit 2進数表記で 10 の値)
a = {b + c};
$display("%b", a);
// 4.
a = 8'h01 << (b + c);
$display("%b", a);
// 5.
a = 8'h01 << (2 + 3);
$display("%b", a);
end
end