Menu
Coddy logo textTech

Clock Üretimi

Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası — ders 71 / 90.

Bir saat sinyali, düzenli aralıklarla sürekli olarak 0 ile 1 arasında durum değiştirir. Saat sinyalleri, flip-flop'lar ve sayaçlar gibi ardışık mantık için elzemdir.

Neden Bir Clock Üretilir

Testbench'lerde, ardışıl devreleri (sequential circuits) test etmek için bir clock'a ihtiyacınız vardır. Clock; flip-flop'ların, saklayıcıların (registers) ve durum makinelerinin (state machines) davranışını yönlendirir.

Clock Oluşturma Yöntemleri

YöntemAçıklama
# gecikmesi ile alwaysEn yaygın yöntem
forever döngüsüAlternatif yöntem
repeat döngüsüSabit sayıda cycles için

Yöntem 1: Gecikmeli Always Bloğu

reg clk;

initial begin
  clk = 0;
end

always #5 clk = ~clk;
  • time 0'da clk = 0
  • Her 5 time biriminde bir clk toggle olur
  • Periyot = 10 zaman birimi
  • Frekans = 1/10 = zaman birimi başına 0.1

Yöntem 2: Forever Döngüsü

reg clk;

initial begin
  clk = 0;
  forever begin
    #5 clk = ~clk;
  end
end

always yöntemi ile aynı sonuç.

Yöntem 3: Sabit Döngüler için Yineleme (Repeat)

reg clk;

initial begin
  clk = 0;
  repeat (10) begin
    #5 clk = ~clk;
  end
end

Tam olarak 10 saat kenarı (5 tam döngü) üretir, ardından durur.

challenge icon

Görev

Her 4 zaman biriminde bir durum değiştiren (periyot = 8 zaman birimi) bir saat (clock) üretmek için eksik kodları ekleyin.

Yapılacaklar:

  1. Bir initial bloğu kullanarak zaman 0'da clk değerini 0 olarak ilklendirin
  2. clk değerini her 4 zaman biriminde bir değiştirmek (toggle) için bir gecikme ile always bloğu kullanın

Kendin dene

module clock_challenge;
  reg clk;
  
  // TODO: Adım 1 - clk = 0 ayarlamak için initial bloğu ekle
  
  
  // TODO: Adım 2 - clk'yi her 4 zaman biriminde toggle etmek için always bloğu ekle
  

  initial begin
    $monitor("Time %0t: clk = %b", $time, clk);
    #20;
    $display("Clock generated for 20 time units");
    $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