data[0:3]与data[3:0]之间的传递关系
module test_bit_tb(
);
reg clk;
reg [0:3] data;
wire [3:0] dout;
wire [0:3] dout_ver;
test_bit test_bit_u(
.data(data),
.clk(clk),
.dout(dout),
.dout_ver(dout_ver)
);
initial begin
clk = 1;
end
always # 5 clk = ~clk;
initial begin
data = 4'd0;
#100;
data = {1'b1,1'b1,1'b0,1'b0};
#100;
$finish;
end
endmodule
在原模块中,使用[0:3]的方式定义data,然后通过非阻塞赋值的方式分别赋给[3:0]定义的tmep,和[0:3] 定义的temp_ver。通过阻塞赋值的方式分别赋给[3:0]定义的dout,和[0:3]定义的dout_ver.
module test_bit_tb(
);
reg clk;
reg [0:3] data;
wire [3:0] dout;
wire [0:3] dout_ver;
test_bit test_bit_u(
.data(data),
.clk(clk),
.dout(dout),
.dout_ver(dout_ver)
);
initial begin
clk = 1;
end
always # 5 clk = ~clk;
initial begin
data = 4'd0;
#100;
data = {1'b1,1'b1,1'b0,1'b0};
#100;
$finish;
end
endmodule
从波形何以看出,对于[0:3]形式定义的data,data[0]表示最高位。而将data赋值给使用[3:0]形式定义的temp或者dout时,data[0]都被传递给了temp[3]和dout[3],也就是高位自动对应了。而将data传递给temp_ver或dout_ver的时候,data[0] 都被传递给了temp_ver[0] 和dout_ver[0],也遵循高位自动对应的原则。