Verilog test senaryosundan geçiyorum ve bir ifade buldum
assign XYZ = PQR_AR[44*8 +: 64];
"+:" Operatörü olarak bilinir. Bunu Google'da bulmaya çalıştım, ancak alakalı bir cevap alamadım.
Verilog test senaryosundan geçiyorum ve bir ifade buldum
assign XYZ = PQR_AR[44*8 +: 64];
"+:" Operatörü olarak bilinir. Bunu Google'da bulmaya çalıştım, ancak alakalı bir cevap alamadım.
Yanıtlar:
Bu sözdizimine dizinli parça seçimi denir . İlk terim bit uzaklığı ve ikinci terim genişliktir. Ofset için bir değişken belirlemenize izin verir, ancak genişlik sabit olmalıdır.
SystemVerilog 2012 LRM'den örnek:
logic [31: 0] a_vect;
logic [0 :31] b_vect;
logic [63: 0] dword;
integer sel;
a_vect[ 0 +: 8] // == a_vect[ 7 : 0]
a_vect[15 -: 8] // == a_vect[15 : 8]
b_vect[ 0 +: 8] // == b_vect[0 : 7]
b_vect[15 -: 8] // == b_vect[8 :15]
dword[8*sel +: 8] // variable part-select with fixed width
Son olarak bunun için kaynak sayfayı aldım, buna Dizinlenmiş Vektör bölüm Seçimi ("+:") denir .
Biraz daha açıklamak gerekirse
PQR_AR[44*8 +: 64];
Verilog 2000'e eklenen Dizinlenmiş vektör parça seçimi ile, veri yolunun tamamını seçmek yerine veri yolunun bir bölümünü seçebilirsiniz.
44 * 8 parça, parça seçme değişkeninin başlangıç noktasıdır ve 64, parça seçimi ve sabittir. Sabittir.
input [415:0] PQR;
kullanarak PQR'nin belirli bir bölümünü seçiyoruz
PQR_AR[44*8 +: 64];
yani PQR_AR [352+: 64] veya 35 ila 415 arasında 0 ila 415 arasında yer aldığımız anlamına gelir.