My32bits = `bz; <=> My32bits = 32'bz...z
My32bits = `bx; <=> My32bits = 32'bx...x
My32bits = `b0; <=> My32bits = 32'b0...0
My32bits = `b1; <=> My32bits = 32'b0...01
My32bits = 1`bz; <=> My32bits = 32'b0...0z
My32bits = 1`bx; <=> My32bits = 32'b0...0x
My32bits = 1`b0; <=> My32bits = 32'b0...00
My32bits = 1`b1; <=> My32bits = 32'b0...01
由上面的式子可以看到,verilog语法中,在赋值过程中,如果没有定义位宽,“x”,“z”,“0”则会向前扩展。如第一行所示,“z”向前扩展到32位的“z”,第二三行“x”与“0”也是如此,但第四行赋值“1”则不会扩展,会在前面填充“0”。
本文引用自:https://blog.csdn.net/llxxyy507/article/details/82782584
由5--8行所示,给32位的变量赋值:My32bits= 1'bz;则前面的都只会填充零,不会扩展。
不建议用上面的赋值方式,良好的coding style 建议赋值:My32bits = 32`b0000_0000_0000_0000_0000_0000_0000_0001;但作为一名数字前端设计者,应该清楚文章开头赋值与位扩展表示的意思。