Kombinasyonel Devreler — Dersler
Kombinasyonel Devreler ünitesindeki 10 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.
3. Yarım toplayıcı
XOR + VE = en basit bir-bit toplayıcı.
- A ve B bitlerini topladığında toplam (S) ve elde (C) bitleri çıkar. S = A XOR B; C = A VE B.
- Yarım toplayıcı şablonunu aç. A ve B'nin hem XOR'a hem AND'e dağıldığını gör.
- A ve B'yi dört kombinasyonla değiştir. Doğruluk tablosunu doğrula: 0+0=0c0, 0+1=1c0, 1+0=1c0, 1+1=0c1.
- Sağdaki Örnek sekmesinde standart yarım toplayıcıyı incele, ardından Çalışma sekmesine geçip kendi kopyanı kur.
4. Tam toplayıcı
İki yarım toplayıcı + VEYA = uzun toplamanın bir sütunu.
- Tam toplayıcı bir carry-in (Cin) kabul eder; üst üste koyup çok-bit sayıları toplayabilirsin.
- Tam toplayıcı şablonunu aç. Aslında iki yarım toplayıcının elde bitlerini birleştiren bir VEYA olduğunu fark et.
- A=1, B=1, Cin=1 yap. Sum 1 olmalı (1+1+1 = 11 binary, alt bit 1). Carry-out 1.
- Artık herhangi bir genişlik için yapı taşın var — N tanesini zincirle, N-bit ripple toplayıcı olur (sonraki ünite).
3.3 Ripple-carry toplayıcı
N tam-toplayıcıyı zincirleyince N-bit sayıları toplarsın.
- 4-bit toplayıcı dört tam-toplayıcı arasında i'nin carry-out'unu i+1'in carry-in'ine bağlamaktan ibarettir.
- En alttaki tam-toplayıcının Cin'i genelde 0'dır (ikiye tümleyen çıkarmada +1 katmak için 1 yapılır).
- En kötü gecikme N × t(tam-toplayıcı)'dır — elde her aşamada yayılır. Carry-lookahead toplayıcı bu yüzden var.
- nandbench'ta 4-bit ripple'ı 4 tam-toplayıcı yerleştirerek veya genişlik=4 Adder ilkelini kullanarak kurabilirsin.
- A=0011 ve B=0001 ver (3+1), simüle et; toplamın 0100 (4) ve carry-out'un 0 olduğunu gör.
3.4 Çıkarıcı
Toplayıcıyı tekrar kullan: B'yi tersle ve Cin=1 yap.
- A − B = A + (−B) = A + (¬B + 1). "+1" en alt bite Cin=1 enjekte edilerek sağlanır.
- Her B-girişine bir XOR yerleştir ve "sub" kontrol hattını ekle: sub=0 → toplayıcı, sub=1 → çıkarıcı.
- Carry-out yorumu farklı: çıkarma modunda Cout=0 "ödünç oldu" demektir ve sonuç negatiftir.
- Kur: 4-bit toplayıcı, dört XOR B girişinde, sub kontrolü tüm XOR'lara ve Cin'e. A=0100, B=0001, sub=1 → sonuç 0011 (3).
3.5 Karşılaştırıcı
İki sayı arasında eşit / küçük / büyük tespit et.
- Eşitlik: bit-bit XNOR, sonra tüm XNOR çıkışlarını AND'le. Tek bir bit farklıysa AND 0'a düşer.
- Büyüklük: A−B yap (veya özel hücre kullan). Sonucun işareti A<B (negatif) ya da A≥B (non-negatif) söyler.
- Aşamalama: küçük N-bit karşılaştırıcılar eşit/büyük/küçük sinyallerini geçirerek büyüklere zincirlenir.
- Comparator ilkelini kullan: A=0110 (6) ve B=1001 (9) ver, lt/eq/gt çıkışlarını gözle.
3.6 Çözücü
N-bit adresi 2^N'lik 1-of-N seçim hattına çevirir.
- 2-to-4 çözücüsü 2 girişe ve 4 çıkışa sahiptir. 0..3 giriş için tam bir çıkış 1 olur.
- İçeride: her giriş bitinin doğrudan ve olumsuzlanmış halini AND'le. Her çıkış benzersiz bir minterm seçer.
- Enable hattı (E) her çıkışı kapatır — E=0 olduğunda tüm çıkışlar 0'dır.
- Çözücüler her yerde: CPU'da komut çözümü, bellekte adres çözümü, FSM'de one-hot kodlama.
- Bir Decoder yerleştir, N=2 yap, girişleri 00→01→10→11 dolaş ve tek bir çıkış bitinin giriş değerini izlediğini gör.
3.7 Kodlayıcı & öncelikli kodlayıcı
Çözücünün tersi — one-hot'ı ikilik indekse indirger.
- 4-to-2 kodlayıcı 4 giriş hattı alır (one-hot varsayılır) ve hangi hattın yüksek olduğunu söyleyen 2-bit sayı verir.
- Birden fazla giriş 1 olabiliyorsa öncelikli kodlayıcı gerekir: en yüksek önceliğe sahip aktif girişin indeksini döner.
- Genelde "valid" çıkışı eklenir — yoksa "hiç giriş 1 değil" ile "giriş 0 yüksek" durumu ikisi de 00 görünür.
- Öncelikli kodlayıcılar kesme denetleyicilerinin kalbidir: bekleyen kesmelerden en yüksek öncelikliyi seçer.
3.8 Çoklayıcı (MUX)
N-to-1 veri seçici — devrenin if/else'i.
- 2-to-1 MUX'un veri girişleri A, B ve seçim biti S vardır. S=0 iken çıkış A; S=1 iken çıkış B.
- Denklem: out = ¬S·A + S·B. Bir NOT, iki AND, bir OR ile veya MUX ilkeliyle kurarsın.
- 4-to-1 MUX 2 seçim bitiyle 4 veri hattından birini seçer. Seçim genişliği log₂(N)'dir.
- Geniş MUX'lar yazmaç dosyasında hangi yazmacın okunacağını ve ALU'nun add/sub/and/or sonucundan hangisini seçeceğini belirler.
- MUX 2-to-1 şablonunu aç, S'yi değiştirerek çıkışta A ile B arasında geçiş yap.
3.9 Çoğullamayı çözücü (DEMUX)
1-to-N veri yönlendirici — devrenin switch'i.
- DEMUX bir veri girişi alır ve seçim bitlerine göre N çıkıştan birine yönlendirir.
- Seçilmeyen çıkışlar 0'dır. Bu yüzden DEMUX, veri hattının her çıkışla AND'lendiği bir çözücüye çok benzer.
- Kullanım yerleri: birden çok yazmaçtan birine yazma, seri bir akışı paralel kanallara yönlendirme.
- Bir çözücü + bir 1-bit veri girişi + N AND = bir DEMUX. Ya da DEMUX ilkelini doğrudan kullan.
3.10 Üç-durumlu tamponlar
Üçüncü değer — Z — birden çok sürücünün tek teli paylaşmasını sağlar.
- Üç-durumlu tamponun veri, enable ve çıkış pini vardır. enable=1 iken veri geçer; enable=0 iken çıkış Z (yüksek empedans) olur.
- Z "sürmemek"tir — tel elektriksel olarak boş. Başka bir sürücü çakışmasız devreye girebilir.
- Aynı nette iki non-Z sürücüsü X (bilinmeyen / çakışma) üretir — asistanın işaretlediği multi-driver tanısı tam budur.
- Üç-durumlu tamponlar CPU veri yolu paylaşımıdır: okumada bellek, yazımda CPU sürer, diğer zamanlarda yol Z'dedir.
nandbench