logo

Verilog Operatörleri

Operatörler, bir ifade içindeki bir veya daha fazla işlenen üzerinde işlem gerçekleştirir. Bir ifade, istenen işlevsel ifadeyi üretmek için işlenenleri uygun operatörlerle birleştirir.

1. Aritmetik Operatörler

FPGA için bölme ve çarpma çok pahalıdır ve bazen bölmeyi sentezleyemeyiz. Değerler için Z veya X kullanırsak sonuç bilinmiyor. İşlemler değerleri imzasız olarak ele alır.

Karakter İşlem gerçekleştirildi Örnek
+ Eklemek b + c = 11
- Çıkarma b - c = 9, -b=-10
/ Bölmek b/a = 2
* Çarpmak a * b = 50
% Modül b % a = 0

2. Bitsel Operatörler

Her bit çalıştırılır, sonuç en büyük işlenenin boyutu olur ve daha küçük işlenen, sıfırlarla daha büyük işlenenin boyutuna kadar genişletilir.

Karakter İşlem gerçekleştirildi Örnek
~ Her biti ters çevir ~a = 3'b010
& Ve her bir parça b ve c = 3'b010
| Veya her bir parça bir | b = 3'b111
^ Her bit için Xor a ^ b = 3'b011
^~ veya ~^ Her biti Xnor a ^~ b = 3'b100

3. İndirgeme Operatörleri

Bu operatörler vektörleri yalnızca bir bit'e indirir. Z ve x karakterleri varsa sonuç bilinen bir değer olabilir.

Karakter İşlem gerçekleştirildi Örnek
& Ve tüm parçalar &a = 1'b0, &d = 1'b0
~& ve tüm parçalar ~&a = 1'b1
| Veya tüm parçalar |a = 1'b1, |c = 1'bX
~| Ne de tüm parçalar ~|a= 1'b0
^ Xor tüm bitler ^a = 1'b1
^~ veya ~^ Tüm bitleri Xnor ~^a = 1'b0

4. İlişkisel Operatörler

Bu operatörler işlenenleri karşılaştırır ve 1 bitlik skaler bir Boole değeriyle sonuçlanır. Durum eşitliği ve eşitsizlik operatörleri, bilinmeyen veya yüksek empedans değerleri (z veya x) için kullanılabilir ve iki işlenen bilinmiyorsa sonuç 1 olur.

Karakter İşlem gerçekleştirildi Örnek
> Şundan büyük: a > b = 1'b0
< Daha küçük A
>= Büyük veya eşittir a >= d = 1'bX
<=< td> Küçük veya eşit A<= e='1'bX</td'>
== Eşitlik a == b = 1'b0
!= Eşitsizlik a != b = 1'b1
=== Vaka eşitliği e === e = 1'b1
!=== Vaka eşitsizliği ve !== d = 1'b1

5. Mantıksal Operatörler

Bu operatörler işlenenleri karşılaştırır ve 1 bitlik skaler bir Boole değeriyle sonuçlanır.

Karakter İşlem gerçekleştirildi Örnek
! Doğru değil !(a && b) = 1'b1
&& Her iki ifade de doğru a && b = 1'b0
|| Bir cevherin her iki ifadesi de doğru ve || b = 1'b1

6. Vardiya Operatörleri

Bu operatörler işlenenleri sağa veya sola kaydırır, boyut sabit tutulur, kaydırılan bitler kaybolur ve vektör sıfırlarla doldurulur.

Java'da a'nın ascii'si
Karakter İşlem gerçekleştirildi Örnek
>> Sağa kaydır b >> 1 sonuç 4?b010X
<< Sola kay a << 2 sonuç 4?b1000

7. Atama Operatörleri

Her biri farklı görevleri gerçekleştiren ve farklı veri türleriyle kullanılan üç atama operatörü vardır:

  • atama (sürekli atama)
  • <= (non-blocking assignment)< li>
  • = (atama engelleniyor)

8. Diğer Operatörler

Bunlar durum testi ve vektörler oluşturmak için kullanılan operatörlerdir.

Karakter İşlem gerçekleştirildi Örnek
?: Koşul testi test koşulu ? doğruysa bunu yap, değilse şunu yap
{} Birleştir c = {a,b} = 8'101010x0
{{}} Tekrarlamak {3{2'b10}}= 6'b101010

9. Operatör Önceliği

Tablonun sırası hangi işlemin önce yapılacağını gösterir. İlki en yüksek önceliğe sahiptir. () varsayılanı geçersiz kılmak için kullanılabilir.

Operatörlerin önceliği
+, -, !, ~ (Tekli)
+,- (İkili)
<>
,=
==, !=
&
^, ^~ veya ~^
|
&&
||
?: