logo

Operátoři Verilog

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 ~^
|
&&
||
?: