Bu özel sözdizimi dizinli kısım olarak adlandırılır.. Çok bitli bir kayıttaki değişken bir ofsetden sabit sayıda bit seçmeniz gerektiğinde çok kullanışlıdır.
reg [31:0] dword;
reg [7:0] byte0;
reg [7:0] byte1;
reg [7:0] byte2;
reg [7:0] byte3;
assign byte0 = dword[0 +: 8]; // Same as dword[7:0]
assign byte1 = dword[8 +: 8]; // Same as dword[15:8]
assign byte2 = dword[16 +: 8]; // Same as dword[23:16]
assign byte3 = dword[24 +: 8]; // Same as dword[31:24]
bu sözdizimi ile büyük avantajı index için bir değişken kullanabilirsiniz olmasıdır:
İşte sözdizimi bir örnek. Verilog'da normal kısım seçimleri sabitler gerektirir. Yani, yukarıda dword[i+7:i]
gibi bir şeyle giriş yapmaya izin verilmiyor.
Belirli bir bayt seçmek için bir değişken kullanarak seçmek istiyorsanız, endeksli parça seçimini kullanabilirsiniz.
Örnek kullanarak değişken: Bir otobüsün bir dilim erişmeniz gerektiğinde
reg [31:0] dword;
reg [7:0] byte;
reg [1:0] i;
// This is illegal due to the variable i, even though the width is always 8 bits
assign byte = dword[(i*8)+7 : i*8]; // ** Not allowed!
// Use the indexed part select
assign byte = dword[i*8 +: 8];
İkinci örneğinizde '' 'ile 'i' i değiştirmek istediğinizi düşünüyorum. – nguthrie