源代码:
module main();
wire [31:0] a = 32'b0;
wire [25:0] a_man = {1'b1, a[24:0]};
initial begin
$display("%b\n%b\n%b", {1'b1,a[24:0]}, a_man[25:0], a_man);
end
endmodule
Run Code Online (Sandbox Code Playgroud)
实际产量:
% iverilog dings.v && vvp a.out
10000000000000000000000000
1xxxxxxxxxxxxxxxxxxxxxxxxx
1xxxxxxxxxxxxxxxxxxxxxxxxx
Run Code Online (Sandbox Code Playgroud)
我不明白为什么a_man没有分配所有的比特.我不明白在串联内联和在线索声明中进行连接之间的区别.
根据经验,您将学会在时间0不信任任何Verilog模拟器.始终允许模拟器的最小时间步长分配您的初始值.
module test;
wire [7:0] a = 7'b0;
wire [7:0] a_man = {1'b1, a[6:0]};
initial begin
$display("%b %b %b", {1'b1,a[6:0]}, a_man[7:0], a_man);
#1fs;
$display("%b %b %b", {1'b1,a[6:0]}, a_man[7:0], a_man);
#1ns;
$display("%b %b %b", {1'b1,a[6:0]}, a_man[7:0], a_man);
end
endmodule
Run Code Online (Sandbox Code Playgroud)
给(ncsim):
1xxxxxxx xxxxxxxx xxxxxxxx
10000000 1xxxxxxx 1xxxxxxx
10000000 10000000 10000000
Run Code Online (Sandbox Code Playgroud)