Boyutlandırılmamış Sayılar
Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası — ders 15 / 90.
Boyutlandırılmamış bir sayı, kaç bite sahip olduğu belirtilmeden yazılan bir sayıdır. Bir sayıyı boyut öneki olmadan yazdığınızda, Verilog varsayılan olarak bunun 32 bit olduğunu varsayar.
a = 'b1010; // Boyutlandırılmamış: Verilog bunu 32 bit olarak ele alır
a = 32'b1010; // Yukarıdakiyle aynı, ancak açıkça belirtilmişBoyutlandırılmamış sayılar yalnızca formatı ve değeri kullanır: [format][value]
<strong>format</strong>— sayının tabanı: ikili içinb, onlu içind, onaltılı içinhveya sekizli içino<strong>value</strong>— gerçek sayı (örneğin,1010)
Kesme işareti ' format ve değer arasında hala gereklidir, ancak önünde bit sayısı yoktur.
'b1010— 32-bit ikili 1010'd255— 32-bit onluk 255'hFF— 32-bit onaltılık FF'b1— 32-bit ikili 1 (başında 31 sıfır ile)
Kod Örneği:
reg [7:0] data;
initial begin
data = 1010; // Boyutlandırılmamış: 32-bit değer (uyarıya neden olabilir)
data = 'd255; // Boyutlandırılmamış: 32-bit ondalık 255
data = 'hFF; // Boyutlandırılmamış: 32-bit onaltılık FF
endBoyutlandırılmamış vs Boyutlandırılmış
| Boyutlandırılmamış | Boyutlandırılmış | |
|---|---|---|
| Örnek | 1010 veya 'd255 | 8'b1010 veya 8'd255 |
| Bit genişliği | 32 bit (varsayılan) | Açık (belirtildiği gibi) |
| Kesme işareti | Format ile birlikte zorunlu | Zorunlu |
| Ne zaman kullanılır | Basit testbench kodu | Donanım atamaları |
Potansiyel Sorun
Boyutlandırılmamış sayılar, daha küçük kaydedicilere atandığında beklenmedik davranışlara neden olabilir:
reg [3:0] small;
small = 'b1111; // 32-bit değer, ancak 4 bite sığıyor (sorun yok)
small = 'b10000; // 32-bit değer, ancak çok büyük! (uyarı)İkinci örnek, 32 bitlik bir 10000 değerini 4 bitlik bir kaydediciye atar. Yalnızca alt 4 bit tutulur (0000), bu da beklediğiniz şey olmayabilir.
Boyutlandırılmamış Sayılar Ne Zaman Kullanılır?
Boyutlandırılmamış sayılar şunlar için uygundur:
- Testbench'lerdeki basit sayılar
- Döngü sayaçları
$displayifadeleri
Gerçek donanım atamaları için, açık olmak ve uyarılardan kaçınmak için boyutlandırılmış sayılar kullanın.
Görev
Aşağıdaki kodda bazı sayılar boyutlandırılmamıştır. Uyarıları önlemek için bunları boyutlandırılmış sayılara (8 bit) dönüştürün.
Ne yapmalı:
adeğişkenini 1010 için 8 bitlik bir ikili (binary) sayıya değiştirinbdeğişkenini 255 için 8 bitlik bir onluk (decimal) sayıya değiştirincdeğişkenini FF için 8 bitlik bir onaltılık (hex) sayıya değiştirin
Kopya kağıdı
Verilog'daki boyutlandırılmamış sayılar varsayılan olarak 32 bit'tir. Sözdizimi: '[format][value]
'b1010 // 32-bit ikili
'd255 // 32-bit onluk
'hFF // 32-bit onaltılıkBoyutlandırılmış sayılar [bits]'[format][value] yapısını kullanır:
8'b1010 // 8-bit ikili
8'd255 // 8-bit onluk
8'hFF // 8-bit onaltılıkBoyutlandırılmamış bir sayıyı daha küçük bir kaydediciye (register) atamak yalnızca alt bitleri korur — uyarıları ve beklenmedik kırpılmaları önlemek için donanım atamalarında boyutlandırılmış sayılar kullanın.
Kendin dene
module unsized_challenge;
reg [7:0] a, b, c;
initial begin
a = 'b1010; // Change to sized (8-bit binary)
b = 'd255; // Boyutlandırılmış (8-bit ondalık) olarak değiştirin
c = 'hFF; // Change to sized (8-bit hex)
$display("a = %b", a);
$display("b = %b", b);
$display("c = %b", c);
$finish;
end
endmoduleBu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Temeller bölümündeki tüm dersler
4Operatörler Bölüm 1
Aritmetik OperatörlerModül OperatörüKarşılaştırma OperatörleriÖzet - Basit MatematikBitsel Operatörler7Atama ve Kapılar
Sürekli AtamaOperatörlerle AtamaYerleşik Kapı PrimitifleriAND OR NOT KapılarıXOR XNOR KapılarıÖzet - Mantık Kapısı Devresi10Karar Yapıları
If İfadesiIf - ElseÖzet - Basit KarşılaştırıcıCase İfadesiCasex ve CasezÖzet - ALU Tasarımı5Operatörler Bölüm 2
Mantıksal Operatörlerİndirgeme OperatörleriKaydırma OperatörleriBirleştirme OperatörüKoşullu OperatörÖzet - Operatör Meydan Okuması11Döngüler
For DöngüsüWhile DöngüsüRepeat DöngüsüSonsuz DöngüDevre Dışı Bırakma İfadesiÖzet - Döngü Kalıpları3Sayı Sistemleri
İkilik GösterimBoyutlandırılmış SayılarBoyutlandırılmamış SayılarNegatif SayılarÖzel Değerler X ve ZÖzet - Sayı Formatları6Modüller
Modül YapısıGiriş ve Çıkış PortlarıInout PortlarıModül Örneklendirmeİsme Göre Port EşlemeSıraya Göre Port EşlemeÖzet - Bir Modül Oluşturun9Prosedürel Bloklar
Always BloğuInitial BloğuDuyarlılık ListesiEngelleyici AtamaEngelleyici Olmayan AtamaÖzet - Always vs Initial15Trafik Işığı Kontrolcüsü
Durumları TanımlamaDurum Makinesi Mantığı