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.

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çin b, onlu için d, onaltılı için h veya sekizli için o
  • <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
end

Boyutlandırılmamış vs Boyutlandırılmış

 BoyutlandırılmamışBoyutlandırılmış
Örnek1010 veya 'd2558'b1010 veya 8'd255
Bit genişliği32 bit (varsayılan)Açık (belirtildiği gibi)
Kesme işaretiFormat ile birlikte zorunluZorunlu
Ne zaman kullanılırBasit testbench koduDonanı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ı
  • $display ifadeleri

Gerçek donanım atamaları için, açık olmak ve uyarılardan kaçınmak için 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.

Ne yapmalı:

  1. a değişkenini 1010 için 8 bitlik bir ikili (binary) sayıya değiştirin
  2. b değişkenini 255 için 8 bitlik bir onluk (decimal) sayıya değiştirin
  3. c değ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ık

Boyutlandı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ık

Boyutlandı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
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