Operátory provádějí operaci na jednom nebo více operandech ve výrazu. Výraz kombinuje operandy s vhodnými operátory, aby vytvořil požadovaný funkční výraz.
1. Aritmetické operátory
Pro FPGA je dělení a násobení velmi drahé a někdy nemůžeme dělení syntetizovat. Pokud pro hodnoty použijeme Z nebo X, výsledek je neznámý. Operace považují hodnoty za nepodepsané.
Charakter | Operace provedena | Příklad |
+ | Přidat | b + c = 11 |
- | Subtrac | b - c = 9, -b = -10 |
/ | Rozdělit | b/a = 2 |
* | Násobit | a * b = 50 |
% | Modul | b % a = 0 |
2. Bitové operátory
Každý bit je provozován, výsledkem je velikost největšího operandu a menší operand je ponechán rozšířen o nuly na velikost většího operandu.
Charakter | Operace provedena | Příklad |
~ | Invertujte každý bit | ~a = 3'b010 |
& | A každý kousek | b & c = 3'b010 |
| | Nebo každý kousek | a | b = 3'b111 |
^ | Xor každý bit | a ^ b = 3'b011 |
^~ nebo ~^ | Xnor každý bit | a ^~ b = 3'b100 |
3. Operátoři redukce
Tyto operátory redukují vektory pouze na jeden bit. Pokud existují znaky z a x, výsledkem může být známá hodnota.
Charakter | Operace provedena | Příklad |
& | A všechny kousky | &a = 1'b0, &d = 1'b0 |
~& | Nand všechny kousky | ~&a = 1'b1 |
| | Nebo všechny kousky | |a = 1'b1, |c = 1'bX |
~| | Ani všechny kousky | ~|a= 1'b0 |
^ | Xor všechny bity | ^a = 1'b1 |
^~ nebo ~^ | Xnor všechny bity | ~^a = 1'b0 |
4. Relační operátoři
Tyto operátory porovnávají operandy a výsledkem je 1bitová skalární booleovská hodnota. Operátory rovnosti a nerovnosti případu lze použít pro neznámé nebo vysoké hodnoty impedance (z nebo x), a pokud jsou tyto dva operandy neznámé, výsledkem je 1.
Charakter | Operace provedena | Příklad |
> | Větší než | a > b = 1'b0 |
< | Menší než | A |
>= | Větší nebo rovno | a >= d = 1'bX |
<=< td> | Menší nebo rovno | A<= e='1'bX</td'> => | =<>
== | Rovnost | a == b = 1'b0 |
!= | Nerovnost | a != b = 1'b1 |
=== | Rovnost případů | e === e = 1'b1 |
!=== | Případová nerovnost | a !== d = 1'b1 |
5. Logické operátory
Tyto operátory porovnávají operandy a výsledkem je 1bitová skalární booleovská hodnota.
Charakter | Operace provedena | Příklad |
! | Není pravda | !(a && b) = 1'b1 |
&& | Oba výrazy jsou pravdivé | a && b = 1'b0 |
|| | Jeden nebo oba výrazy jsou pravdivé | a || b = 1'b1 |
6. Operátoři směn
Tyto operátory posouvají operandy doprava nebo doleva, velikost je udržována konstantní, posunuté bity jsou ztraceny a vektor je vyplněn nulami.
boolean na řetězec java
Charakter | Operace provedena | Příklad |
>> | Shift vpravo | b >> 1 výsledek 4?b010X |
<< | Shift doleva | a << 2 výsledky 4?b1000 |
7. Operátoři přiřazení
Existují tři operátory přiřazení, z nichž každý provádí různé úkoly a používá se s různými datovými typy:
- přiřadit (průběžné přidělování)
- <= (non-blocking assignment)< li>
- = (blokování přiřazení) =>
8. Ostatní operátoři
Jedná se o operátory používané pro testování podmínek a pro vytváření vektorů.
Charakter | Operace provedena | Příklad |
?: | Testování podmínek | zkušební podm. ? pokud je to pravda, udělejte toto nebo pokud ne |
{} | Zřetězit | c = {a,b} = 8'101010x0 |
{{}} | Replikovat | {3{2'b10}}= 6'b101010 |
9. Přednost operátorů
Pořadí v tabulce říká, která operace je provedena jako první. První z nich má nejvyšší prioritu. Znak () lze použít k přepsání výchozího nastavení.
Přednost operátorů |
---|
+, -, !, ~ (Unární) |
+,- (binární) |
<> |
,= |
==, != |
& |
^, ^~ nebo ~^ |
| |
&& |
|| |
?: |