logo

Оператори Verilog

Оператори виконують операцію над одним або кількома операндами у виразі. Вираз об’єднує операнди з відповідними операторами, щоб створити бажаний функціональний вираз.

1. Арифметичні оператори

Для FPGA поділ і множення дуже дорогі, і іноді ми не можемо синтезувати поділ. Якщо ми використовуємо Z або X для значень, результат невідомий. Операції розглядають значення як беззнакові.

характер Проведена операція приклад
+ додати b + c = 11
- Відняти b - c = 9, -b = -10
/ Розділити b/a = 2
* Помножити a * b = 50
% Модуль b % a = 0

2. Порозрядні оператори

Кожен біт обробляється, результатом є розмір найбільшого операнда, а менший операнд розширюється нулями до розміру більшого операнда.

характер Проведена операція приклад
~ Інвертуйте кожен біт ~a = 3'b010
& І кожен біт b & c = 3'b010
| Або кожен біт a | b = 3'b111
^ Xor кожен біт a ^ b = 3'b011
^~ або ~^ Xnor кожен біт a ^~ b = 3'b100

3. Оператори редукції

Ці оператори зводять вектори лише до одного біта. Якщо є символи z і x, результатом може бути відоме значення.

характер Проведена операція приклад
& І всі шматочки &a = 1'b0, &d = 1'b0
~& Nand усі біти ~&a = 1'b1
| Або всі біти |a = 1'b1, |c = 1'bX
~| Ні всі біти ~|a= 1'b0
^ Xor усі біти ^a = 1'b1
^~ або ~^ Xnor усі біти ~^а = 1'b0

4. Оператори відношення

Ці оператори порівнюють операнди та отримують 1-бітне скалярне логічне значення. Оператори рівності та нерівності можна використовувати для невідомих або високих значень імпедансу (z або x), і якщо два операнди невідомі, результатом буде 1.

характер Проведена операція приклад
> Більш чим a > b = 1'b0
< Менше a
>= Більше або дорівнює a >= d = 1'bX
<=< td> Менше або дорівнює a<= e='1'bX</td'>
== Рівність a == b = 1'b0
!= Нерівність a != b = 1'b1
=== Рівність регістрів e === e = 1'b1
!=== Нерівність регістрів і !== d = 1'b1

5. Логічні оператори

Ці оператори порівнюють операнди та отримують 1-бітне скалярне логічне значення.

характер Проведена операція приклад
! Неправда !(a && b) = 1'b1
&& Обидва вирази вірні a && b = 1'b0
|| Один або обидва вирази вірні та || b = 1'b1

6. Оператори зсуву

Ці оператори зсувають операнди вправо або вліво, розмір залишається постійним, зміщені біти втрачаються, а вектор заповнюється нулями.

: на java
характер Проведена операція приклад
>> Зсув праворуч b >> 1 результати 4?b010X
<< Зсув ліворуч a << 2 результати 4?b1000

7. Оператори присвоєння

Є три оператори присвоювання, кожен з яких виконує різні завдання та використовується з різними типами даних:

  • призначити (постійне призначення)
  • <= (non-blocking assignment)< li>
  • = (присвоєння блокування)

8. Інші оператори

Це оператори, які використовуються для перевірки умов і створення векторів.

характер Проведена операція приклад
?: Тестування умов умова випробування ? якщо правда, зробіть це, якщо ні, зробіть це
{} Конкатенація c = {a,b} = 8'101010x0
{{}} Тиражувати {3{2'b10}}= 6'b101010

9. Пріоритет операторів

Порядок таблиці показує, яка операція виконується першою. Перший має найвищий пріоритет. () можна використовувати для заміни типового значення.

Пріоритет операторів
+, -, !, ~ (унарний)
+,- (двійковий)
<>
,=
==, !=
&
^, ^~ або ~^
|
&&
||
?: