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ç 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çıkBoyutsuz sayılar yalnızca biçim ve değeri kullanır: [format][value]
<strong>format</strong>: sayının tabanı: ikili içinb, ondalık içind, onaltılık içinhveya sekizlik içino<strong>value</strong>: gerçek sayı (örneğin,1010)
Apostrofun ', biçim ile değer arasında hâlâ gereklidir, ancak öncesinde bit sayısı yoktur.
'b1010: 32 bitlik ikili 1010'd255: 32 bitlik ondalık 255'hFF: 32 bitlik onaltılık FF'b1: 32 bitlik ikili 1 (başa eklenmiş 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
endBoyutlandırılmamış ve 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ça belirtilmiş (belirtildiği şekilde) |
| Apostrof | Biçimle birlikte gerekli | Gerekli |
| Ne zaman kullanılır | Basit testbench kodu | Donanı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.
Boyutu Belirtilmemiş Sayılar Ne Zaman Kullanılır?
Boyutu belirtilmemiş sayılar şu durumlarda kullanışlıdır:
- 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 amacıyla boyutlandırılmış sayılar kullanın.
Görev
Aşağıdaki kodda bazı sayılar boyutsuzdur. Uyarıları önlemek için bunları boyutlu sayılara (8 bit) dönüştürün.
Yapılacaklar:
adeğerini 1010 için 8 bitlik ikili sayıya dönüştürünbdeğerini 255 için 8 bitlik ondalık sayıya dönüştürüncdeğerini 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; // 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
endmoduleBu 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
4Operatörler Bölüm 1
Aritmetik OperatörlerMod Alma OperatörüKarşılaştırma OperatörleriTekrar - Basit MatematikBit Düzeyi Operatörleri7Atama ve Kapılar
Sürekli AtamaOperatörlerle AtamaYerleşik Kapı PrimitifleriAND, OR ve NOT KapılarıXOR ve XNOR KapılarıÖzet - Mantık Kapısı Devresi10Karar Verme
If İfadesiIf - ElseTekrar - Basit KarşılaştırıcıCase İfadesiCasex ve CasezTekrar - ALU Tasarımı2Veri Türleri
Wire TürüReg TürüTamsayı ve GerçelVektörlerDizilerParametrelerÖzet - Sinyalleri Tanımlama5Operatörler Bölüm 2
Mantıksal Operatörlerİndirgeme OperatörleriKaydırma OperatörleriBirleştirme OperatörüKoşullu OperatörTekrar - Operatör Meydan Okuması11Döngüler
For DöngüsüWhile DöngüsüTekrar DöngüsüSonsuz DöngüDevre Dışı Bırakma İfadesiTekrar - Döngü Kalıpları3Sayı Sistemi
İkili GösterimBoyutlu SayılarBoyutsuz SayılarNegatif SayılarÖzel X ve Z DeğerleriTekrar - Sayı Biçimleri6Modüller
Modül YapısıGiriş ve Çıkış PortlarıÇift Yönlü PortlarModül ÖrneklendirmeAda Göre Port EşlemeSıraya Göre Port EşlemeTekrar - Bir Modül Oluşturma9Prosedürel Bloklar
Always BloğuInitial BloğuDuyarlılık ListesiBloklayıcı AtamaBloklamayan AtamaTekrar - Always ve Initial Karşılaştırması15Trafik Işığı Denetleyicisi
Durumları TanımlamaDurum Makinesi MantığıKendi başına pratik yap: Online Verilog derleyicisi