nandbench logosunandbench

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ı.

  1. A ve B bitlerini topladığında toplam (S) ve elde (C) bitleri çıkar. S = A XOR B; C = A VE B.
  2. Yarım toplayıcı şablonunu aç. A ve B'nin hem XOR'a hem AND'e dağıldığını gör.
  3. 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.
  4. 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.

  1. Tam toplayıcı bir carry-in (Cin) kabul eder; üst üste koyup çok-bit sayıları toplayabilirsin.
  2. Tam toplayıcı şablonunu aç. Aslında iki yarım toplayıcının elde bitlerini birleştiren bir VEYA olduğunu fark et.
  3. A=1, B=1, Cin=1 yap. Sum 1 olmalı (1+1+1 = 11 binary, alt bit 1). Carry-out 1.
  4. 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.

  1. 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.
  2. 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).
  3. 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.
  4. nandbench'ta 4-bit ripple'ı 4 tam-toplayıcı yerleştirerek veya genişlik=4 Adder ilkelini kullanarak kurabilirsin.
  5. 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.

  1. A − B = A + (−B) = A + (¬B + 1). "+1" en alt bite Cin=1 enjekte edilerek sağlanır.
  2. Her B-girişine bir XOR yerleştir ve "sub" kontrol hattını ekle: sub=0 → toplayıcı, sub=1 → çıkarıcı.
  3. Carry-out yorumu farklı: çıkarma modunda Cout=0 "ödünç oldu" demektir ve sonuç negatiftir.
  4. 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.

  1. Eşitlik: bit-bit XNOR, sonra tüm XNOR çıkışlarını AND'le. Tek bir bit farklıysa AND 0'a düşer.
  2. 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.
  3. 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.
  4. 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.

  1. 2-to-4 çözücüsü 2 girişe ve 4 çıkışa sahiptir. 0..3 giriş için tam bir çıkış 1 olur.
  2. İçeride: her giriş bitinin doğrudan ve olumsuzlanmış halini AND'le. Her çıkış benzersiz bir minterm seçer.
  3. Enable hattı (E) her çıkışı kapatır — E=0 olduğunda tüm çıkışlar 0'dır.
  4. Çözücüler her yerde: CPU'da komut çözümü, bellekte adres çözümü, FSM'de one-hot kodlama.
  5. 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.

  1. 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.
  2. Birden fazla giriş 1 olabiliyorsa öncelikli kodlayıcı gerekir: en yüksek önceliğe sahip aktif girişin indeksini döner.
  3. Genelde "valid" çıkışı eklenir — yoksa "hiç giriş 1 değil" ile "giriş 0 yüksek" durumu ikisi de 00 görünür.
  4. Ö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.

  1. 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.
  2. Denklem: out = ¬S·A + S·B. Bir NOT, iki AND, bir OR ile veya MUX ilkeliyle kurarsın.
  3. 4-to-1 MUX 2 seçim bitiyle 4 veri hattından birini seçer. Seçim genişliği log₂(N)'dir.
  4. Geniş MUX'lar yazmaç dosyasında hangi yazmacın okunacağını ve ALU'nun add/sub/and/or sonucundan hangisini seçeceğini belirler.
  5. 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.

  1. DEMUX bir veri girişi alır ve seçim bitlerine göre N çıkıştan birine yönlendirir.
  2. 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.
  3. Kullanım yerleri: birden çok yazmaçtan birine yazma, seri bir akışı paralel kanallara yönlendirme.
  4. 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.

  1. Üç-durumlu tamponun veri, enable ve çıkış pini vardır. enable=1 iken veri geçer; enable=0 iken çıkış Z (yüksek empedans) olur.
  2. Z "sürmemek"tir — tel elektriksel olarak boş. Başka bir sürücü çakışmasız devreye girebilir.
  3. 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.
  4. Üç-durumlu tamponlar CPU veri yolu paylaşımıdır: okumada bellek, yazımda CPU sürer, diğer zamanlarda yol Z'dedir.

← Tüm üniteler

nandbench'i ücretsiz aç →