Операторите извършват операция върху един или повече операнди в израз. Един израз комбинира операнди с подходящи оператори, за да произведе желания функционален израз.
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 всички битове | ~^a = 1'b0 |
4. Релационни оператори
Тези оператори сравняват операндите и водят до 1-битова скаларна булева стойност. Операторите за равенство и неравенство могат да се използват за неизвестни или високи стойности на импеданс (z или x), а ако двата операнда са неизвестни, резултатът е 1.
| Характер | Извършена операция | Пример |
| > | По-велик от | a > b = 1'b0 |
| < | По-малък от | а |
| >= | По-голямо или равно | a >= d = 1'bX |
| <=< td> | По-малък или равен | а<= 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. Оператори на смяна
Тези оператори изместват операндите надясно или наляво, размерът се поддържа постоянен, изместените битове се губят и векторът се запълва с нули.
char към низ в java
| Характер | Извършена операция | Пример |
| >> | Shift надясно | 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. Приоритет на операторите
Редът в таблицата показва коя операция се извършва първа. Първият е с най-висок приоритет. () може да се използва за отмяна на стойността по подразбиране.
| Приоритет на операторите |
|---|
| +, -, !, ~ (унарни) |
| +,- (двоичен) |
| <> |
| ,= |
| ==, != |
| и |
| ^, ^~ или ~^ |
| | |
| && |
| || |
| ?: |