Определите, имеет ли двоичное число степень двойки в коде verilog - PullRequest
0 голосов
/ 30 сентября 2019

Я пытаюсь определить, имеет ли двоичное число степень двойки (другими словами, является ли оно однократным кодированием).

Я нашел метод , чтобы сделать это, но это для целого числа.

Может ли кто-нибудь помочь преобразовать метод для использования с двоичным числом в verilog?

enter image description here

1 Ответ

1 голос
/ 01 октября 2019

В вашем коде нет ничего плохого - это ограничения используемого вами инструмента.
Verilator требуется код с входами и выходами, чтобы его можно было стимулировать и отображать результаты.
Также не нравится выполнение логических операторов над многобитовыми операндами.

module is_power_of_two(output reg f);

reg [7:0];
initial begin
   #1 v = 8'b11110000;
   #1;
end

always @(*) f = v != 0 && !((v & v - 1) != 0);

endmodule
...