的表达式,如
wire matched2 = (a == '0);
wire matched1 = (a == 'b0);
'0‘和'b0’有不同的类型吗?
发布于 2020-12-08 02:27:23
'b0 --是一个不大小的文字,它的宽度是32位(32'b0)。所以,有32位的零。
'0 --是一个1位的非大小常量,是一种系统verilog语法,用于确保表达式上下文中有尽可能多的零。
出于实际原因,这两个人的行为是一样的,仅仅因为他们是无符号的零。
然而,'b1
和'1
之间将有很大的区别;前者最终将是32位'1‘(32'b1),后者是否会用1(111111.)填充all it位。
发布于 2020-12-08 20:42:50
'b0
等同于编写32'b0
,但有一个例外--使用隐式大小的文字作为连接内的操作数是非法的,比如{1,'b0}
。这是因为人们错误地认为他们在写2'b10。
但是,您可以使用{'1,'0}
,因为在一个自行决定的上下文中,'0
总是一个位。在表达式上下文中,'0
和'1
将填充0或1的上下文大小。
在您的示例中,'0
位于由相等的==
运算符确定的上下文中,较小的宽度操作数宽度将被调整为较大的操作数。
https://stackoverflow.com/questions/65192116
复制相似问题