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