Ardışıl Devreler — Dersler
Ardışıl Devreler ünitesindeki 7 ders. Her ders kısa bir anlatım ve adım adım bir yürüyüştür; çoğu nandbench'te açıp denemek için bir şablonla gelir.
4.1 SR mandalı
En basit bellek hücresi — iki çapraz bağlı NOR kapısı.
- Birbirine geri besleme yapan iki NOR kapısı SR mandalını oluşturur. Girişler S (set) ve R (reset); çıkışlar Q ve ¬Q.
- S=1, R=0 → Q 1'e kilitlenir. S=0, R=1 → Q 0'a kilitlenir. S=0, R=0 → Q önceki değerini korur. İşte bellek.
- S=R=1 yasak durumdur — her iki çıkış da 0'a iner, Q/¬Q değişmezliği bozulur. Gerçek tasarımlar bundan kaçınır.
- SR mandalı temeldir: bir çipteki her flip-flop ve yazmaç sonunda buna benzer geri besleme döngülerine indirgenir.
- SR-mandalı şablonunu aç. S=1 darbele → Q=1. R=1 darbele → Q=0. Girişler 0'a döndüğünde değerin nasıl korunduğunu gözle.
4.2 D mandalı
D'yi etkinken kopyalayan saatli SR mandalı.
- C clock girişi ekle ve S=D·C, R=¬D·C'yi SR mandalına bağla. C=1 iken mandal D'yi takip eder; C=0 iken tutar.
- Bu, SR'nin yasak durumunu ortadan kaldırır — bir anda yalnız S veya R'den birini sürmüş olursun.
- D mandalı "seviyeye duyarlıdır": C yüksek olduğu süre boyunca D'yi kopyalar, sadece saat kenarında değil.
- Çoğu tasarım kenar tetiklemeli D flip-flop tercih eder — saat çevriminde bir kez yakalama zamanlama analizini kolaylaştırır.
4.3 D flip-flop
Kenar-tetiklemeli depolama — senkron tasarımın iş gören parçası.
- D flip-flop, D'yi saatin yükselen kenarında örnekler ve sonraki yükselen kenara kadar tutar.
- İç yapı: birbiri ardına iki D mandalı (master-slave), biri C=0'da şeffaf, biri C=1'de. Sonuç "kenar-tetiklemeli"dir.
- Setup süresi: D, kenardan önce stabil olmalı. Hold süresi: D kenardan sonra biraz daha stabil kalmalı. İhlalleri metastabil çıkış verir.
- W bit genişliğinde bir yazmaç, ortak saatli W D flip-floptan ibarettir.
- Bir D-flip-flop yerleştir, D'yi bir girişe, CLK'yı Clock ilkeline, Q'yu bir LED'e bağla. Q'nun yalnız saat kenarlarında değiştiğini gör.
4.4 JK flip-flop
SR gibi ama yasak durum yerine toggle.
- J, S gibi; K, R gibi davranır. Bonus: J=K=1 her saat kenarında çıkışı toggle eder (yasak durum yok).
- Saat kenarında doğruluk tablosu: J=0 K=0 tut; J=0 K=1 sıfırla; J=1 K=0 bir yap; J=1 K=1 toggle.
- JK sayıcılar için elverişlidir — J=K=1 bağla, her saatte ücretsiz toggle alırsın.
- Modern FPGA kütüphaneleri çoğunlukla yalnız D flip-flop sunar; JK'yı bir D + küçük bir MUX'tan kolayca kurarsın.
4.5 T flip-flop
T=1 iken her saat kenarında toggle, T=0 iken tut.
- Tek giriş T artı bir saat. T=1 → Q kenarda dönüyor; T=0 → Q tutuyor.
- T flip-flop ripple sayıcı için en doğal yapı taşıdır: her Q sonraki saatı besler şekilde zincirle.
- Eşdeğer devre: D flip-flop'a D = Q XOR T, veya JK'ya J=K=T.
- İki T flip-flop ile 2-bit ripple sayıcı kur: ikisi de T=1, ilkinin saatı sistem saati, ikincisi ilkinin Q'su.
5. Saat ve yazmaç — belleği eklemek
Saat, kombinasyonel mantığı durum makinesine çevirir.
- Yazmaç değer saklar. Her saat kenarında, enable yüksekse, veri girişini saklı değere kilitler.
- Saat ilkelesi her tick'te 0/1 arasında değişir. Yazmaca takınca bir-bit yanıp sönen yapı oluşur.
- Saat yanıp sönmesi şablonunu aç, Play'e bas, LED'in her tick'te değiştiğini izle. Hz kaydırıcısını yavaşlat.
- D flip-flop'lu yazmaç + saat, her senkron tasarımın temelidir. Buradan sonra her şey bunun üstüne kurulur.
4.7 Zamanlama — setup, hold ve saat periyodu
Flip-floplar ile kombinasyonel mantık arasındaki sayısal sözleşme.
- Setup (t_su): D, saat kenarından t_su önce stabil olmalı. Hold (t_h): D kenardan sonra t_h boyunca stabil kalmalı.
- Clock-to-Q (t_cq): kenardan sonra Q'nun yeni değeri yansıtması ne kadar sürer.
- İki flop arası kombinasyonel yol (T_clock − t_cq − t_su)'dan kısa bitmeli. İhlal ederse tasarım hızda çalışmaz.
- Gerçek çiplerde STA (static timing analysis) aracı her yolu yürür ve slack'i raporlar. Sıfır altı slack = saat çok hızlı.
- nandbench'ın motoru olay tabanlıdır, gecikme doğru değil — yani gerçek zamanlama ihlalleri görmezsin. Ama kavramsal model hâlâ geçerli.
nandbench