Quartus 2 verilog 使用大括号设置特定位
Quartus 2 verliog using curly craces to set particular bits
您好,我是 verilog 的新手,我尝试将一些特定位从一个 reg 变量设置到另一个 reg,但它对我不起作用。我究竟做错了什么?
reg [31:0] a;
reg [31:0] b;
initial begin
a =32'b0;
b =32'b1;
$display("current value of a = %32b ",a);
a ={b[5:0]};
$display("value of a %32b ",a);
#10 $finish;
end
从a[0]到a[5]的a位应该是1但是只有a[0]变成了1
在你的代码中 b = 32'b1
产生 {31{1'b0},1'b1}
,所以只有 b[0]
等于一。
在 SystemVerilog(检查:IEEE1800-2012, 5.7.1 Integer literal constants)中,您可以使用单位值使用常量文字数字的自动左填充,即 b = '1
将 b
的所有位设置为一.
使用 Verilog,只需将另一个值分配给 b
(即 b = 32'b11111
)或将您的代码更改为以下内容:
a[4:0] = {5{b[0]}}
您好,我是 verilog 的新手,我尝试将一些特定位从一个 reg 变量设置到另一个 reg,但它对我不起作用。我究竟做错了什么?
reg [31:0] a;
reg [31:0] b;
initial begin
a =32'b0;
b =32'b1;
$display("current value of a = %32b ",a);
a ={b[5:0]};
$display("value of a %32b ",a);
#10 $finish;
end
从a[0]到a[5]的a位应该是1但是只有a[0]变成了1
在你的代码中 b = 32'b1
产生 {31{1'b0},1'b1}
,所以只有 b[0]
等于一。
在 SystemVerilog(检查:IEEE1800-2012, 5.7.1 Integer literal constants)中,您可以使用单位值使用常量文字数字的自动左填充,即 b = '1
将 b
的所有位设置为一.
使用 Verilog,只需将另一个值分配给 b
(即 b = 32'b11111
)或将您的代码更改为以下内容:
a[4:0] = {5{b[0]}}