使用花括号设置特定位的Quartus 2 verilog

问题描述 投票:0回答:1

嗨,我是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

从[0]到[5]的位应为1,但只有[0]变为1

set verilog bits quartus
1个回答
1
投票

在你的代码b = 32'b1产生{31{1'b0},1'b1},所以只有b[0]等于一。

在SystemVerilog(check:IEEE1800-2012, 5.7.1 Integer literal constants)中,您可以使用单位值自动左边填充常数字数,即b = '1b的所有位设置为1。

使用Verilog,只需为b(即b = 32'b11111)指定另一个值或将代码更改为以下:

a[4:0] = {5{b[0]}}
© www.soinside.com 2019 - 2024. All rights reserved.