Menu
Coddy logo textTech

Boyutlandırılmamış Sayılar

Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası — ders 15 / 90.

Bir unsized sayı, kaç bit olduğu belirtilmeden yazılan bir sayıdır. Boyut öneki olmadan bir sayı yazdığınızda, Verilog varsayılan olarak bunun 32 bits olduğunu varsayar.

a = 'b1010;        // Unsized: Verilog treats this as 32 bits
a = 32'b1010;    // Yukarıdaki ile aynı, ama açık

Unsized sayılar yalnızca biçimi ve değeri kullanır: [format][value]

  • <strong>format</strong> — sayının tabanı: binary için b, decimal için d, hexadecimal için h veya sekizli (octal) için o
  • <strong>value</strong> — gerçek sayı (örneğin, 1010)

Format ve değer arasında kesme işareti ' kullanılması yine gereklidir, ancak önünde bir bit sayısı bulunmaz.

  • 'b1010 — 32-bit binary 1010
  • 'd255 — 32-bit decimal 255
  • 'hFF — 32-bit hex FF
  • 'b1 — 32-bit binary 1 (başında 31 sıfır ile)

Kod Örneği:

reg [7:0] data;

initial begin
  data = 1010;      // Boyutsuz: 32-bit değer (uyarıya neden olabilir)
  data = 'd255;     // Unsized: 32-bit decimal 255
  data = 'hFF;      // Boyutsuz: 32-bit hex FF
end

Unsized vs Sized

 UnsizedSized
Örnek1010 or 'd2558'b1010 or 8'd255
Bit genişliği32 bits (varsayılan)Explicit (belirtildiği gibi)
ApostrofFormat ile gerekliGerekli
Kullanım zamanıBasit testbench koduDonanım atamaları

Potansiyel Problem

Unsized sayılar, daha küçük yazmaçlara atandığında beklenmeyen davranışlara cause olabilir:

reg [3:0] small;
small = 'b1111;      // 32-bit value, but fits in 4 bits (fine)
small = 'b10000;     // 32-bit değer, ama çok büyük! (uyarı)

İkinci örnek, 32-bitlik bir 10000 değerini 4-bitlik bir yazmaca atar. Yalnızca alt 4 bit saklanır (0000), bu da beklediğiniz şey olmayabilir (may not be what you expect).

Boyutlandırılmamış Sayılar Ne Zaman Kullanılır?

Boyutlandırılmamış sayılar şunlar için kullanışlıdır:

  • Testbench'lerdeki basit sayılar
  • Döngü sayaçları
  • $display ifadeleri

Gerçek donanım atamaları için, açık olmak ve uyarıları önlemek adına sized sayılar kullanın.

challenge icon

Görev

Aşağıdaki kodda bazı sayılar boyutlandırılmamıştır (unsized). Uyarıları önlemek için bunları boyutlandırılmış sayılara (8 bits) dönüştürün.

Yapılacaklar:

  1. a değişkenini 1010 için 8-bitlik bir binary sayı yapın
  2. b değişkenini 255 için 8-bitlik bir decimal sayı yapın
  3. c değişkenini FF için 8-bitlik bir hex sayı yapın

Kendin dene

module unsized_challenge;
  reg [7:0] a, b, c;
  
  initial begin
    a = 'b1010;      // Change to sized (8-bit binary)
    b = 'd255;     // Boyutlu hale getir (8-bit ondalık)
    c = 'hFF;      // Change to sized (8-bit hex)
    
    $display("a = %b", a);
    $display("b = %b", b);
    $display("c = %b", c);
    $finish;
  end
endmodule
quiz iconKendini test et

Bu 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