Menu
CoddyTech

Boyutsuz Sayılar

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

Boyutu belirtilmemiş sayı, kaç bit olduğunu belirtmeden 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;        // Unsized: Verilog treats this as 32 bits
a = 32'b1010;    // Yukarıdakiyle aynı, ancak açıkça belirtilmiş

Boyutu belirtilmemiş sayılarda yalnızca biçim ve değer kullanılır: [format][value]

  • format: sayının tabanı: ikilik için b, onluk için d, onaltılık için h veya sekizlik için o
  • value: gerçek sayı (örneğin, 1010)

Biçim harfinden önce kesme işareti ' hâlâ gereklidir, ancak önünde bit sayısı yoktur.

  • 'b1010: 32 bitlik ikilik 1010
  • 'd255: 32 bitlik onluk 255
  • 'hFF: 32 bitlik onaltılık FF
  • 'b1: 32 bitlik ikilik 1 (başında 31 sıfırla)

Kod Örneği:

reg [7:0] data;

initial begin
  data = 1010;      // Boyutu belirtilmemiş: 32-bit değer (uyarıya neden olabilir)
  data = 'd255;     // Unsized: 32-bit decimal 255
  data = 'hFF;      // Boyutu belirtilmemiş: 32-bit onaltılık FF
end

Boyutu Belirtilmeyen ve Boyutlandırılmış

 Boyutu belirtilmeyenBoyutlandırılmış
Örnek1010 veya 'd2558'b1010 veya 8'd255
Bit genişliği32 bit (varsayılan)Açıkça belirtilmiş (belirtildiği gibi)
ApostrofBiçimle birlikte gereklidirGereklidir
Ne zaman kullanılırBasit testbench koduDonanım atamaları

Olası Sorun

Boyutu belirtilmemiş sayılar, daha küçük yazmaçlara atandıklarında beklenmedik davranışlara neden olabilir:

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

İkinci örnek, 32 bitlik 10000 değerini 4 bitlik bir yazmaca atar. Yalnızca alt 4 bit korunur (0000); bu, beklediğin sonuç olmayabilir.

Genişliği belirtilmemiş sayılar ne zaman kullanılır?

Genişliği belirtilmemiş sayılar şunlar için kullanışlıdır:

  • Test ortamlarındaki 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 boyut belirtilmiş sayılar kullanın.

challenge icon

Görev

Aşağıdaki kodda bazı sayılar boyutsuzdur. Uyarılardan kaçınmak için bunları boyutlandırılmış sayılara (8 bit) dönüştürün.

Yapılacaklar:

  1. a değişkenini 1010 için 8 bitlik ikili sayıya dönüştürün
  2. b değişkenini 255 için 8 bitlik ondalık sayıya dönüştürün
  3. c değişkenini FF için 8 bitlik onaltılık sayıya dönüştürün

Kendin dene

module unsized_challenge;
  reg [7:0] a, b, c;
  
  initial begin
    a = 'b1010;      // Change to sized (8-bit binary)
    b = 'd255;     // Boyutu belirtilmiş hâle 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.

Temel Bilgiler bölümündeki tüm dersler

Kendi başına pratik yap: Online Verilog derleyicisi

Bir dönüşümü kontrol et: Sayı Tabanı Dönüştürücü