Menu
Coddy logo textTech

Unsized Numbers

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

Boyutu belirtilmemiş sayı, kaç bite sahip olduğu belirtilmeden yazılan sayıdır. Bir sayıyı boyut ön eki olmadan yazdığınızda Verilog, varsayılan olarak bunun 32 bit olduğunu varsayar.

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

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

  • <strong>format</strong>: sayının tabanı: binary için b, decimal için d, onaltılık için h veya sekizlik için o
  • <strong>value</strong>: gerçek sayı (örneğin, 1010)

Apostrof ', biçim ile değer arasında hâlâ gereklidir, ancak öncesinde bit sayısı yoktur.

  • 'b1010: 32 bitlik binary 1010
  • 'd255: 32 bitlik decimal 255
  • 'hFF: 32 bitlik hex FF
  • 'b1: 32 bitlik 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 ve Sized

 UnsizedSized
Örnek1010 veya 'd2558'b1010 veya 8'd255
Bit genişliği32 bits (varsayılan)Explicit (belirtildiği şekilde)
ApostrofBiçim ile birlikte gereklidirGereklidir
Ne zaman kullanılırBasit testbench koduDonanım atamaları

Olası Sorun

Boyutlandırılmamış sayılar, daha küçük yazmaçlara atandığında beklenmedik davranışlara neden 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 yazmaçla eşler. Yalnızca alt 4 bit korunur (0000); bu, beklediğiniz şey olmayabilir.

Unsized Sayılar Ne Zaman Kullanılır

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

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

Gerçek donanım atamaları için açık olmak ve uyarılardan kaçınmak amacıyla boyutlandırılmış sayılar kullanın.

challenge icon

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.

Yapılacaklar:

  1. a değerini 1010 için 8 bitlik bir binary sayıya Change edin
  2. b değerini 255 için 8 bitlik bir decimal sayıya Change edin
  3. c değerini FF için 8 bitlik bir hex sayıya Change edin

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

Kendi başına pratik yap: Online Verilog derleyicisi