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öntem | Açıklama |
|---|---|
# gecikmesi ile always | En 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;time0'daclk = 0- Her 5
timebiriminde birclktoggleolur
- 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
endalways 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
endTam olarak 10 saat kenarı (5 tam döngü) üretir, ardından durur.
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:
- Bir
initialbloğu kullanarak zaman 0'daclkdeğerini 0 olarak ilklendirin clkdeğerini her 4 zaman biriminde bir değiştirmek (toggle) için bir gecikme ilealwaysbloğ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
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ı13Zamanlama ve Gecikmeler
Gecikmeler NedirKapı GecikmeleriAtama GecikmeleriTimescale DirektifiClock ÜretimiÖzet - Zamanlama Kontrolü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ı3Sayı 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ığı