【问题标题】:Verilog not outputting expected value in simple assignmentVerilog在简单赋值中没有输出期望值
【发布时间】:2020-04-17 18:40:33
【问题描述】:

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

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

我得到1010 的输出。但是,我希望得到0010 的输出。任何帮助表示赞赏!

【问题讨论】:

  • 你得到了正确的值:10(十进制)或者你写的 0010 十进制。
  • 我希望 %b 在监视器中返回二进制值。还有为什么它会打印两个 10?
  • 不,它以二进制形式打印出 10(十进制),即 0b1010,因为您给它十进制:0010

标签: verilog


【解决方案1】:

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

     x=0010;

到:

     x='b0010;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多