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çinb, onluk içind, onaltılık içinhveya sekizlik içinovalue: 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
endBoyutu Belirtilmeyen ve Boyutlandırılmış
| Boyutu belirtilmeyen | 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 gibi) |
| Apostrof | Biçimle birlikte gereklidir | Gereklidir |
| Ne zaman kullanılır | Basit testbench kodu | Donanı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ı
$displayifadeleri
Gerçek donanım atamaları için açık olmak ve uyarılardan kaçınmak amacıyla boyut belirtilmiş sayılar kullanın.
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:
adeğişkenini 1010 için 8 bitlik ikili sayıya dönüştürünbdeğişkenini 255 için 8 bitlik ondalık sayıya dönüştürüncdeğ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
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
Bir dönüşümü kontrol et: Sayı Tabanı Dönüştürücü