Verilog未在简单赋值中输出预期值

Verilog未在简单赋值中输出预期值,verilog,Verilog,我的问题:当我给一个四位变量赋值时,当我简单地输出值时,会得到一个意外的结果。我以前从未见过这种情况,我想知道我是否在语法上做错了什么 module main; reg [3:0] x; initial begin $monitor("%b",x); x=0010; end endmodule 我得到的输出是1010。但是,我希望得到0010的输出。感谢您的帮助 Verilog将您的数字解释为十进制,因

我的问题:当我给一个四位变量赋值时,当我简单地输出值时,会得到一个意外的结果。我以前从未见过这种情况,我想知道我是否在语法上做错了什么

module main;   
     reg [3:0] x;   
     initial 
     begin
         $monitor("%b",x);
         x=0010;
     end 
endmodule

我得到的输出是
1010
。但是,我希望得到
0010
的输出。感谢您的帮助

Verilog将您的数字解释为十进制,因为您没有指定基数。Verilog代码中的数字
0010
是十进制十(10),即二进制格式的
1010
x=0010
x=10
相同。您需要添加一个二进制基说明符。更改:

     x=0010;
致:


您得到了正确的值:10(十进制)或您编写的0010 decimal。但我希望%b在监视器中返回二进制值。还有,为什么它会打印两个10?不,它会打印出二进制的10(十进制),也就是你给它的十进制:0010
     x='b0010;