Verilog, сравнение с неравным битом переменной

#binary #comparison #verilog

#двоичный #сравнение #verilog

Вопрос:

Интересно, есть ли возможный способ сравнения нижеприведенных переменных.

 reg [7:0] var1;
reg [3:0] var2;
  

Здесь я хочу проверить, var2 равно ли оно последним 4 битам var1 . Могу ли я это сделать?
Если да, то каким образом?

Ответ №1:

Вот так:

 if (var1[3:0] == var2)
    ...
  

Ответ №2:

Имейте в виду, что reg тип предназначен для переменных с 4 состояниями (01xz).

Любой из них подходит для синтезируемого RTL:

 if (var1[3:0] == var2[3:0])
if (var1[3:0] == var2)
  

В тестовом модуле лучше использовать «тройное равенство»:

 if (var1[3:0] === var2[3:0])
  

Ответ №3:

Вы можете сделать {if ~((var[3:0] ^ var2) | 4b'0000)}

Компилятору должно быть проще синтезировать.