Как сравнить два числа (сети, переменные, константы) в Verilog

10

Я новичок в Verilog, и хотел бы узнать, как сравнить два числа. Например, давайте сравним параметр или reg (скажем, a) с числом 2 (2'b10). Как это будет написано в Verilog?

Sherby
источник

Ответы:

11

Операторы равенства и отношения (возвращают X, если у операнда есть X или Z)

m == n  // is m equal to n? (1-bit True/False result)

m != n  // is m not equal to n? (1-bit True/False result)

m < n   // is m less than n? (1-bit True/False result)

m > n   // is m greater than n? (1-bit True/False result)

m <= n  // is m less than or equal to n? (1-bit True/False result)

m >= n  // is m greater than or equal to n? (1-bit True/False result)

Операторы идентификации (сравните логические значения 0, 1, X и Z)

m === n // is m identical to n? (1-bit True/False results)

m !== n // is m not identical to n? (1-bit True/False result)

пример

Если reg a меньше 2'b10, сохраните 2'b11 в a.

if (a < 2'b10) begin
   a = 2'b11;
end

Предостережения

  1. Для большинства операций операндами могут быть сети, переменные, константы или вызовы функций. Некоторые операции недопустимы для реальных (с плавающей запятой) значений.
  2. Операторы, которые возвращают результат true / false, будут возвращать 1-битное значение, где 1 представляет истину, 0 представляет ложь, а X представляет неопределенный
  3. Операторы === и! == не поддерживаются для синтеза, потому что Z и X не имеют одинакового значения в симуляции и аппаратном обеспечении.
  4. Если вы сравните два числа неравной ширины, меньшее будет расширено. Беззнаковые операнды расширяются с помощью расширения влево с нуля. Подписанные операнды расширяются расширением влево значением самого значимого бита (знакового бита).

Источник: «Краткое руководство Verilog HDL на основе стандарта Verilog-2001 (IEEE Std 1364-2001)» Стюарта Сазерленда

travisbartley
источник
1

Операторы сравнения чисел Verilog аналогичны операторам в C: ==,! =, <,>, <=,> =.

Дэйв Твид
источник