Verilog не выводит ожидаемое значение в простом назначении - PullRequest
1 голос
/ 17 апреля 2020

Моя проблема: Когда я назначаю какое-то значение переменной с четырьмя битами, я получаю неожиданный результат, когда просто выводю значение. Я никогда раньше этого не видел, и мне было интересно, если я делаю что-то неправильно синтаксически.

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

Я получаю вывод 1010. Однако я ожидал получить результат 0010. Любая помощь приветствуется!

1 Ответ

2 голосов
/ 17 апреля 2020

Verilog интерпретирует ваше число как десятичное, поскольку вы не указали основание. Число 0010 в вашем коде Verilog представляет собой десятичное число десять (10), что составляет 1010 в двоичном формате. x=0010 совпадает с x=10. Вам нужно добавить двоичный базовый спецификатор. Изменить:

     x=0010;

на:

     x='b0010;
...