Menu
Coddy logo textTech

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ırYürütüldüğünde bir kezBir değişken her değiştiğinde
Kaç kezÇağırdığınız sayı kadarSürekli olarak (değiştirilene kadar)
Kullanım amacıBaşlıklar, test mesajlarıDeğişen sinyalleri izleme

Yaygın Format Belirleyicileri

BelirleyiciAnlamÖrnek
%bİkili$display("%b", a);
%dOndalık$display("%d", count);
%hOnaltılık$display("%h", data);
%tZaman$display("%t", $time);
%0tZaman (boşluksuz)$display("%0t", $time);
%sDizgi$display("%s", "Hello");

Önemli Kurallar

KuralAçıklama
$display bir kez yazdırırBaşlıklar ve nihai sonuçlar için iyidir
$monitor değişimde yazdırırSinyalleri izlemek için iyidir
Yalnızca bir $monitor etkindirSonuncusu bir öncekini geçersiz kılar
Durdurmak için $finish kullanınAksi takdirde simülasyon sonsuza kadar çalışabilir
challenge icon

Görev

Bu testbench'e eksik olan $display ve $monitor ifadelerini ekleyin.

Neler yapmalı:

  1. Bir başlık yazdırmak için $display ekleyin: "Testing OR Gate"
  2. Herhangi bir sinyal değiştiğinde zamanı, x, y ve z değerlerini yazdırmak için $monitor ekleyin. Format: "Time %0t: x=%b, y=%b, z=%b"
  3. Sonuna "Test complete" yazdırmak için $display ekleyin

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;
end

Yaygı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 $monitor etkindir — sonuncusu öncekilerin üzerine yazar.
  • Simülasyonu durdurmak için $finish kullanı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
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