Display ve Monitor
Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası — ders 75 / 90.
$display ve $monitor, simülasyonunuzdan bilgi yazdırmak için kullanılan sistem görevleridir. Tasarımınızın içinde neler olup bittiğini görmenize yardımcı olurlar.
$display
$display, yürütüldüğü anda bir mesajı bir kez yazdırır.
Sözdizimi:
$display("message", variables);Örnek:
initial begin
$display("Simulation started");
#10;
$display("Time 10");
#10;
$display("Time 20");
endÇıktı:
Simulation started
Time 10
Time 20$monitor
$monitor, değişkenlerinden herhangi biri değiştiğinde otomatik olarak bir mesaj yazdırır.
Sözdizimi:
$monitor("message", variables);Örnek:
initial begin
a = 0; b = 0;
$monitor("Time %0t: a=%b, b=%b", $time, a, b);
#10 a = 1;
#10 b = 1;
#10 a = 0;
endÇıktı:
Time 0: a=0, b=0
Time 10: a=1, b=0
Time 20: a=1, b=1
Time 30: a=0, b=1$display vs $monitor
| $display | $monitor | |
|---|---|---|
| Ne zaman yazdırır | Yürütüldüğünde bir kez | Bir değişken her değiştiğinde |
| Kaç kez | Çağırdığınız sayı kadar | Sürekli olarak (değiştirilene kadar) |
| Kullanım amacı | Başlıklar, test mesajları | Değişen sinyalleri izleme |
Yaygın Format Belirleyicileri
| Belirleyici | Anlam | Örnek |
|---|---|---|
%b | İkili | $display("%b", a); |
%d | Ondalık | $display("%d", count); |
%h | Onaltılık | $display("%h", data); |
%t | Zaman | $display("%t", $time); |
%0t | Zaman (boşluksuz) | $display("%0t", $time); |
%s | Dizgi | $display("%s", "Hello"); |
Önemli Kurallar
| Kural | Açıklama |
|---|---|
$display bir kez yazdırır | Başlıklar ve nihai sonuçlar için iyidir |
$monitor değişimde yazdırır | Sinyalleri izlemek için iyidir |
Yalnızca bir $monitor etkindir | Sonuncusu bir öncekini geçersiz kılar |
Durdurmak için $finish kullanın | Aksi takdirde simülasyon sonsuza kadar çalışabilir |
Görev
Bu testbench'e eksik olan $display ve $monitor ifadelerini ekleyin.
Neler yapmalı:
- Bir başlık yazdırmak için
$displayekleyin: "Testing OR Gate" - Herhangi bir sinyal değiştiğinde zamanı, x, y ve z değerlerini yazdırmak için
$monitorekleyin. Format: "Time %0t: x=%b, y=%b, z=%b" - Sonuna "Test complete" yazdırmak için
$displayekleyin
Kopya kağıdı
$display yürütüldüğünde bir kez yazdırır; $monitor ise değişkenlerinden herhangi biri değiştiğinde otomatik olarak yazdırır.
$display("message", variables);
$monitor("message", variables);Örnek:
initial begin
$display("Simulation started");
$monitor("Time %0t: a=%b, b=%b", $time, a, b);
#10 a = 1;
#10 b = 1;
endYaygın format belirleyiciler:
%b— İkili (Binary)%d— Onluk (Decimal)%h— Onaltılık (Hexadecimal)%t/%0t— Zaman (dolgulu/dolgusuz)%s— Metin (String)
Temel kurallar:
- Aynı anda yalnızca bir
$monitoretkindir — sonuncusu öncekilerin üzerine yazar. - Simülasyonu durdurmak için
$finishkullanın.
Kendin dene
module or_gate (
input x,
input y,
output z
);
assign z = x | y;
endmodule
module testbench;
reg x, y;
wire z;
or_gate dut (
.x(x),
.y(y),
.z(z)
);
initial begin
// YAPILACAK: "Testing OR Gate" başlığını $display ile ekleyin
// YAPILACAK: Zamanı, x, y ve z'yi izlemek için $monitor ekleyin
// Format: "Time %0t: x=%b, y=%b, z=%b"
// Uyarıcıyı uygula
x = 0; y = 0; #10;
x = 0; y = 1; #10;
x = 1; y = 0; #10;
x = 1; y = 1; #10;
// YAPILACAK: "Test complete" mesajını $display ile ekleyin
$finish;
end
endmoduleBu 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
4Operatörler Bölüm 1
Aritmetik OperatörlerModül OperatörüKarşılaştırma OperatörleriÖzet - Basit MatematikBitsel Operatörler7Atama ve Kapılar
Sürekli AtamaOperatörlerle AtamaYerleşik Kapı PrimitifleriAND OR NOT KapılarıXOR XNOR KapılarıÖzet - Mantık Kapısı Devresi10Karar Yapıları
If İfadesiIf - ElseÖzet - Basit KarşılaştırıcıCase İfadesiCasex ve CasezÖzet - ALU Tasarımı5Operatörler Bölüm 2
Mantıksal Operatörlerİndirgeme OperatörleriKaydırma OperatörleriBirleştirme OperatörüKoşullu OperatörÖzet - Operatör Meydan Okuması11Döngüler
For DöngüsüWhile DöngüsüRepeat DöngüsüSonsuz DöngüDevre Dışı Bırakma İfadesiÖzet - Döngü Kalıpları14Testbench Temelleri
Testbench Nedir?Stimulus OluşturmaDisplay ve MonitorDumpfile ve DumpvarsSistem Görevlerini KullanmaÖzet - Tam Testbench3Sayı Sistemleri
İkilik GösterimBoyutlandırılmış SayılarBoyutlandırılmamış SayılarNegatif SayılarÖzel Değerler X ve ZÖzet - Sayı Formatları6Modüller
Modül YapısıGiriş ve Çıkış PortlarıInout PortlarıModül Örneklendirmeİsme Göre Port EşlemeSıraya Göre Port EşlemeÖzet - Bir Modül Oluşturun9Prosedürel Bloklar
Always BloğuInitial BloğuDuyarlılık ListesiEngelleyici AtamaEngelleyici Olmayan AtamaÖzet - Always vs Initial15Trafik Işığı Kontrolcüsü
Durumları TanımlamaDurum Makinesi Mantığı