SEN2201 · 3. hafta · Digital Logic Structures (logic gates, combinational logic circuits)

Kombinasyonel devreler: decoder, mux, full adder, PLA

Decoder, multiplexer, full adder ve ripple-carry toplayıcı, PLA ile her fonksiyonu kurmak. Kısa cevap ve izleme soruları için gereken her şey.

combinational logicdecodermultiplexer (mux)select linehalf adderfull addercarry incarry outripple-carry adderprogrammable logic array (PLA)AND arrayOR array

Geçen sayfada kapıları gördün. Bu sayfada onlardan kurulan, her işlemcide bulunan dört yapı taşını öğreneceksin: decoder, multiplexer, full adder ve PLA. Hepsi kombinasyonel (combinational) devredir: çıkış sadece şu anki girişlere bağlıdır, hiçbir şey hatırlamaz. Hatırlayan devreler (latch, register) 4. haftanın konusu.

Vizede bu yapılardan kısa cevap gelir: “giriş 101 ise hangi çıkış 1?”, “32-to-1 mux kaç select ister?”, “full adder’ın 1+1+0 çıkışı?”, “4-bit toplayıcının carry’lerini yaz”. LC-3’te de hepsini göreceksin: register seçimi decoder ile, ALU girişi mux ile, toplama toplayıcı ile yapılır.

Decoder

nn girişli bir decoder’ın 2n2^n çıkışı vardır. Girişi ikilik bir sayı olarak okur ve o numaralı çıkışı 1, geri kalan hepsini 0 yapar.

2-to-4 decoder
A1 A0 | D0 D1 D2 D3
 0  0 |  1  0  0  0
 0  1 |  0  1  0  0
 1  0 |  0  0  1  0
 1  1 |  0  0  0  1

D0 = A1'A0'   D1 = A1'A0   D2 = A1A0'   D3 = A1A0

Her çıkış bir AND kapısıdır ve tam olarak bir minterm’i üretir. Bu yüzden:

İPUCU · Decoder + OR = her fonksiyon. Bir fonksiyonun minterm listesi Σm(1,2,4,7)\Sigma m(1, 2, 4, 7) ise 3-to-8 decoder’ın D1, D2, D4, D7 çıkışlarını bir OR kapısına bağla. Bitti.

Nerede kullanılır? Komutun opcode’unu çözmek (hangi komut?), bellekte adres çözmek (hangi satır?), register dosyasında hangi register’a yazılacağını seçmek.

Multiplexer (mux)

Mux, 2n2^n veri girişinden birini seçip çıkışa geçirir. Hangisinin geçeceğine nn tane select hattı karar verir.

MuxVeri girişiSelect hattı
2-to-121
4-to-142
8-to-183
32-to-1325

2-to-1 mux’un denklemi:

Y=S′A+SBY = S'A + SB

4-to-1 mux bir 2-to-4 decoder ile dört AND kapısı ve bir OR kapısıdır: decoder select’i çözer, seçilen AND kapısı kendi veri girişini geçirir.

4-to-1 mux, I0..I3 = 1, 0, 0, 1
S1 S0 = 11 → I3 → çıkış 1
S1 S0 = 01 → I1 → çıkış 0

Mux ile fonksiyon kurmak

n+1n+1 değişkenli bir fonksiyonu 2n2^n-to-1 mux ile kurabilirsin. İlk nn değişkeni select’e bağla. Tabloyu bu değişkenlere göre ikişer satırlık gruplara böl. Her grupta F, son değişkenin (C) cinsinden şu dört şeyden biridir: 0, 1, C, C’.

Örnek: F(A,B,C)=Σm(0,3,4,5)F(A,B,C) = \Sigma m(0, 3, 4, 5), select = AB.

ABsatırlarFgirişe
00m0 = 1, m1 = 0C = 0 iken 1I0=C′I_0 = C'
01m2 = 0, m3 = 1C = 1 iken 1I1=CI_1 = C
10m4 = 1, m5 = 1hep 1I2=1I_2 = 1
11m6 = 0, m7 = 0hep 0I3=0I_3 = 0

Toplayıcılar

Half adder

İki biti toplar: S=A⊕BS = A \oplus B, C=ABC = AB. Gelen carry’yi alamaz, bu yüzden sadece en sağ bitte işe yarar.

Full adder

Üç biti toplar: A, B ve sağdan gelen CinC_{in}. İki çıkışı var: toplamın sağ biti S ve sola giden CoutC_{out}.

ABCinCoutS
00000
00101
01001
01110
10001
10110
11010
11111

Tabloyu ezberleme, üç biti topla: 1+1+1 = 3 = 11 → Cout = 1, S = 1. Denklemler:

S=A⊕B⊕CinCout=AB+ACin+BCinS = A \oplus B \oplus C_{in} \qquad C_{out} = AB + AC_{in} + BC_{in}

S, tek sayıda 1 olduğunda 1’dir (odd parity). Cout, en az iki giriş 1 olduğunda 1’dir (majority).

Ripple-carry adder

nn bitlik iki sayıyı toplamak için nn full adder yan yana konur. Her birinin CoutC_{out}‘u solundakinin CinC_{in}‘ine bağlanır. En sağdakinin CinC_{in}‘i 0’dır. Carry sağdan sola “dalgalanarak” (ripple) ilerler.

Çözümlü örnek: 0111 + 0101

carry in:   1 1 1 0
            0 1 1 1    (7)
          + 0 1 0 1    (5)
          ---------
            1 1 0 0    (12), Cout = 0

bit0: 1+1+0 = 10 → S=0, c=1
bit1: 1+0+1 = 10 → S=0, c=1
bit2: 1+1+1 = 11 → S=1, c=1
bit3: 0+0+1 = 01 → S=1, c=0

Bu toplayıcı unsigned ve 2’s complement için aynı devredir. 2’s complement’te 0111 + 0101 = 1100 olduğu için (iki pozitif → negatif) overflow vardır; bu, 2. haftadaki kuralın donanımdaki karşılığı. Çıkarma için B’nin her biti NOT’lanır ve en sağ CinC_{in} = 1 yapılır: A+B′+1=A−BA + B' + 1 = A - B.

PLA (programmable logic array)

PLA, “her fonksiyonu SOP olarak kur” fikrinin hazır bir donanımıdır. İki katmanı var:

  1. AND dizisi (AND array): girişlerden ve tersinden çarpım terimleri üretir.
  2. OR dizisi (OR array): istenen terimleri her çıkışın OR kapısına bağlar.

Bağlantılar “programlanır”: hangi AND kapısının hangi OR’a gideceği seçilir. Bir terim birden fazla çıkış tarafından paylaşılabilir.

Örnek: F1=Σm(0,3)F_1 = \Sigma m(0, 3), F2=Σm(3,5,6)F_2 = \Sigma m(3, 5, 6). Gereken farklı minterm’ler 0, 3, 5, 6. AND dizisinde 4 kapı yeter; m3’ün kapısı iki OR kapısına da bağlanır.

3 girişli tam bir PLA en fazla 8 farklı minterm üretir. nn girişte 2n2^n.

Combinational ve sequential farkı

CombinationalSequential
Çıkış neye bağlı?sadece şu anki girişegirişe ve geçmişe (state)
Hafızayokvar
Örneklerdecoder, mux, adder, PLAlatch, flip-flop, register, FSM
Hafta34

Sık yapılan hatalar

Yanlış düşünceDoğrusu
Decoder’da birden fazla çıkış 1 olabilirHer zaman tam bir çıkış 1
3-to-8 decoder 3 çıkışlı3 giriş, 8 çıkış
32-to-1 mux 32 select ister25=322^5 = 32, yani 5 select
Mux select’i ile veri girişi aynı şeySelect seçer, veri geçer
Full adder 1+1+1: S=0, Cout=13 = 11 → S=1, Cout=1
Cout = A⊕B⊕CinO S’nin formülü; Cout majority
2’s complement için ayrı toplayıcı gerekirAynı devre, sadece overflow yorumu farklı
PLA’da her çıkış kendi terimlerini üretirTerimler paylaşılır

Kendini test et

Sınavdaki gibi İngilizce sorular. Önce kâğıt kalemle çöz, sonra cevabı aç.

Soru 1kolay

A 3-to-8 decoder has input A2A1A0 = 110. Which output is 1?

Cevabı göster
D6

Decoder girişi ikilik bir sayı olarak okur ve o numaralı çıkışı 1 yapar. 110 = 6 → D6 = 1, diğer yedi çıkış 0.

Soru 2kolay

How many outputs does a decoder with 5 inputs have, and how many of them are 1 at the same time?

Cevabı göster
32 outputs, exactly one is 1

nn girişli decoder 2n2^n çıkışlıdır: 25=322^5 = 32. Her giriş kombinasyonu tam olarak bir çıkışı seçer.

Soru 3orta

Write the Boolean expression of output D2 of a 2-to-4 decoder with inputs A1 (MSB) and A0.

Cevabı göster
A1 A0'

D2, girişler 10 iken 1 olur. Bu tek satırın minterm'i: A1 = 1 → A1, A0 = 0 → A0'. Yani D2 = A1·A0'. Her decoder çıkışı bir minterm'dir.

Soru 4kolay

How many select lines does an 8-to-1 multiplexer need?

Cevabı göster
3

2n2^n veri girişinden birini seçmek için nn select hattı gerekir. 8=238 = 2^3 → 3.

Soru 5kolay

An 8-to-1 mux has data inputs I0..I7 = 0, 1, 1, 0, 1, 0, 0, 1 and select S2S1S0 = 101. What is the output?

Cevabı göster
0

101 = 5 → çıkış I5. Listede sıfırdan say: I0=0, I1=1, I2=1, I3=0, I4=1, I5=0. Çıkış 0.

Soru 6orta

Write the output equation of a 2-to-1 multiplexer with data inputs A, B and select S (S = 0 selects A).

Cevabı göster
Y = S'A + SB

S = 0 iken S'A terimi A'yı geçirir, SB terimi 0 olur. S = 1 iken tersi. Bu ifadeyi devre okuma sorusunda görürsen 'bu bir mux' de.

Soru 7kolay

Give S and Cout of a full adder for A = 1, B = 0, Cin = 1.

Cevabı göster
S = 0, Cout = 1

1 + 0 + 1 = 2 = 10 (ikilik). Sağdaki bit S = 0, soldaki bit Cout = 1. Formülle: S = 1⊕0⊕1 = 0, Cout = AB + ACin + BCin = 0 + 1 + 0 = 1.

Soru 8orta

Write the sum S and carry-out of a full adder as Boolean expressions of A, B and Cin.

Cevabı göster
S = A⊕B⊕Cin, Cout = AB + ACin + BCin

S, girişlerden tek sayıda 1 olduğunda 1: Σm(1,2,4,7) = A⊕B⊕Cin. Cout, en az iki giriş 1 olduğunda 1: Σm(3,5,6,7) = AB + ACin + BCin (majority).

Soru 9orta

A 4-bit ripple-carry adder computes 1011 + 0110 with C0 = 0. Give the 4-bit sum, the final carry-out, and the carry into each bit (bit 3 to bit 0).

Cevabı göster
Sum 0001, Cout = 1, carries 1100

Sağdan: bit0: 1+0+0 = 1, c=0. bit1: 1+1+0 = 10 → 0, c=1. bit2: 0+1+1 = 10 → 0, c=1. bit3: 1+0+1 = 10 → 0, c=1.
Toplam 0001, dışarı 1. Bitlere giren carry'ler (bit3..bit0) 1 1 0 0. Kontrol: 11 + 6 = 17 = 1 0001.

Soru 10orta

Using a 3-to-8 decoder and one OR gate, which decoder outputs must be ORed to implement F(A,B,C) = A ⊕ B ⊕ C?

Cevabı göster
D1, D2, D4, D7

A⊕B⊕C, tek sayıda 1 olan satırlarda 1: 001, 010, 100, 111 → m1, m2, m4, m7. Decoder her minterm'i ayrı bir çıkışta üretir; bu dört çıkışı OR'lamak yeter.

Soru 11zor

Implement F(A,B,C) = Σm(1, 2, 6, 7) with a 4-to-1 mux whose select lines are A (MSB) and B. What goes on inputs I0, I1, I2, I3?

Cevabı göster
I0 = C, I1 = C', I2 = 0, I3 = 1

Tabloyu AB çiftlerine böl, her çiftte F'yi C cinsinden yaz.
AB = 00: m0 = 0, m1 = 1 → F = C. AB = 01: m2 = 1, m3 = 0 → F = C'. AB = 10: m4 = 0, m5 = 0 → F = 0. AB = 11: m6 = 1, m7 = 1 → F = 1.

Soru 12zor

A PLA implements F1 = Σm(0, 3) and F2 = Σm(3, 5, 6) of inputs A, B, C using minterms. How many AND gates are needed in the AND array?

Cevabı göster
4

PLA'da AND dizisi terimleri üretir, OR dizisi bunları çıkışlara bağlar. Bir terim birden fazla çıkışta paylaşılabilir. Gereken farklı minterm'ler: {0, 3, 5, 6}, yani 4 AND kapısı. m3 hem F1'e hem F2'ye bağlanır.

Doğrulama: Decoder, mux, full adder ve ripple-carry toplayıcı node ile simüle edildi; mux ve decoder ile kurulan fonksiyonlar tüm giriş kombinasyonlarında hedef tabloyla karşılaştırıldı (verify/SEN2201/03.mjs).

Deftere not kartı

Combinational: çıkış SADECE şu anki girişe bağlı, hafıza yok Decoder: n giriş -> 2^n çıkış, tam BİR çıkış 1 (giriş 101 -> D5). Her çıkış bir minterm Decoder + OR = her fonksiyon (F'nin minterm çıkışlarını OR'la) MUX: 2^n veri, n select, 1 çıkış = seçilen giriş | 2-to-1: Y = S'A + SB MUX ile F: select'e n değişken, girişlere kalan değişkenin 0/1/C/C' hali Half adder: S = A⊕B, C = AB Full adder: S = A⊕B⊕Cin (tek sayıda 1) | Cout = AB+ACin+BCin (majority) FA tablosu: S = Σm(1,2,4,7), Cout = Σm(3,5,6,7) n-bit ripple-carry = n full adder, en sağ Cin = 0, carry sola akar PLA: AND dizisi (terimler) + OR dizisi (çıkışlar), terimler paylaşılır