logo

Operatory Verilog

Operatory wykonują operację na jednym lub większej liczbie operandów w wyrażeniu. Wyrażenie łączy operandy z odpowiednimi operatorami w celu utworzenia pożądanego wyrażenia funkcjonalnego.

1. Operatory arytmetyczne

W przypadku FPGA dzielenie i mnożenie są bardzo kosztowne i czasami nie możemy zsyntetyzować podziału. Jeśli jako wartości użyjemy Z lub X, wynik jest nieznany. Operacje traktują wartości jako bez znaku.

Postać Operacja wykonana Przykład
+ Dodać b + do = 11
- Odejmij b - c = 9, -b=-10
/ Dzielić b/a = 2
* Zwielokrotniać a * b = 50
% Moduł b% a = 0

2. Operatory bitowe

Każdy bit jest operowany, wynikiem jest rozmiar największego operandu, a mniejszy operand jest rozszerzany o zera do rozmiaru większego operandu.

Postać Operacja wykonana Przykład
~ Odwróć każdy bit ~a = 3'b010
& I każdy kawałek b i c = 3'b010
| Lub każdy kawałek | b = 3'b111
^ Xor każdy bit a ^ b = 3'b011
^~ lub ~^ Xnor w każdym calu a ^~ b = 3'b100

3. Operatory redukcji

Operatory te redukują wektory tylko do jednego bitu. Jeśli występują znaki z i x, wynikiem może być znana wartość.

Postać Operacja wykonana Przykład
& I wszystkie kawałki &a = 1'b0, &d = 1'b0
~& I wszystkie bity ~&a = 1'b1
| Albo wszystkie kawałki |a = 1'b1, |c = 1'bX
~| Ani wszystkie kawałki ~|a= 1'b0
^ Xor wszystkie bity ^a = 1'b1
^~ lub ~^ Xnor wszystkie bity ~^a = 1'b0

4. Operatory relacyjne

Operatory te porównują operandy i dają w wyniku 1-bitową skalarną wartość logiczną. Operatorów równości i nierówności można używać dla nieznanych lub wysokich wartości impedancji (z lub x), a jeśli oba operandy są nieznane, wynikiem jest 1.

Postać Operacja wykonana Przykład
> Lepszy niż a > b = 1'b0
< Mniejszy niż A
>= Większe lub równe a >= d = 1'bX
<=< td> Mniejszy lub równy A<= e='1'bX</td'>
== Równość a == b = 1'b0
!= Nierówność a != b = 1'b1
=== Równość przypadków e === e = 1'b1
!=== Nierówność przypadków i !== d = 1'b1

5. Operatory logiczne

Operatory te porównują operandy i dają w wyniku 1-bitową skalarną wartość logiczną.

Postać Operacja wykonana Przykład
! Nie prawda !(a && b) = 1'b1
&& Obydwa wyrażenia są prawdziwe a && b = 1'b0
|| Jedno lub oba wyrażenia są prawdziwe i || b = 1'b1

6. Operatorzy zmian

Operatory te przesuwają operandy w prawo lub w lewo, rozmiar pozostaje stały, przesunięte bity są tracone, a wektor jest wypełniany zerami.

rok wynalezienia komputera
Postać Operacja wykonana Przykład
>> Przesuń w prawo b >> 1 wyniki 4?b010X
<< Przesuń w lewo a << 2 wyniki 4?b1000

7. Operatory przypisania

Istnieją trzy operatory przypisania, z których każdy wykonuje inne zadania i jest używany z różnymi typami danych:

  • przypisać (przypisanie ciągłe)
  • <= (non-blocking assignment)< li>
  • = (przypisanie blokujące)

8. Inni Operatorzy

Są to operatory używane do testowania warunków i tworzenia wektorów.

Postać Operacja wykonana Przykład
?: Testowanie warunków stan testowy ? jeśli to prawda, zrób to, a jeśli nie, zrób to
{} Powiązać do = {a, b} = 8'101010x0
{{}} Replika {3{2'b10}}= 6'b101010

9. Pierwszeństwo operatorów

Kolejność tabeli określa, która operacja zostanie wykonana jako pierwsza. Pierwszy z nich ma najwyższy priorytet. Znaku () można użyć do zastąpienia wartości domyślnej.

Pierwszeństwo operatorów
+, -, !, ~ (jednoargumentowy)
+,- (binarny)
<>
,=
==, !=
&
^, ^~ lub ~^
|
&&
||
?: