2. Circuite logice 2.4. Decodoare. Multiplexoare Copyright Paul GASNER
Definiţii Un decodor pe n bits are n intrări şi 2 n ieşiri; cele n intrări reprezintă un număr binar care determină în mod unic care dintre cele 2 n ieşiri este adevărată Un decodor pe 2 bits operează după tabela de adevăr: S1 S0 Q0 Q1 Q2 Q3 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 1 1 0 0 0 1 Copyright Paul GASNER 2
Proiectare decodorului pe 2 bits Pornind de la tabela de adevăr, simplificarea constă în patru ecuaţii iar circuitul decurge direct S1 S0 Q0 Q1 Q2 Q3 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 1 1 0 0 0 1 Q0 = S1 S0 Q1 = S1 S0 Q2 = S1 S0 Q3 = S1 S0 Copyright Paul GASNER 3
Activarea decodorului Multe dispozitive au o intrare de activare, care permit sau nu funcţionarea adecvată a dispozitivului Pentru decodor: EN=1 activează decodorul, acesta funcţionând în maniera prezentată mai sus, adică doar o singură ieşire ia valoarea 1 EN=0 dezactivează decodorul; prin convenţie, toate ieşirile au valoarea 0 EN S1 S0 Q0 Q1 Q2 Q3 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 1 0 0 1 1 0 0 0 1 0 1 1 1 0 0 0 1 sau EN S1 S0 Q0 Q1 Q2 Q3 0 x x 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 1 0 0 1 1 0 0 0 1 0 1 1 1 0 0 0 1 Copyright Paul GASNER 4
Notaţii Decodoarele sunt notate prin blocuri funcţionale Diagrama pentru decodorul pe 2 bits este Q0 = S1 S0 Q1 = S1 S0 Q2 = S1 S0 Q3 = S1 S0 Nu contează ordinea intrărilor sau ieşirilor, ci notaţiile acestora Nu este necesară cunoaşterea structurii interne, ci tabela de adevăr sau ecuaţiile Schema circuitelor hardware se simplifică Copyright Paul GASNER 5
Decodor pe 3 bits Q0 = S2 S1 S0 Q1 = S2 S1 S0 Q2 = S2 S1 S0 Q3 = S2 S1 S0 Q4 = S2 S1 S0 Q5 = S2 S1 S0 Q6 = S2 S1 S0 Q7 = S2 S1 S0 S2 S1 S0 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 1 Copyright Paul GASNER 6
Aplicaţii ale decodoarelor Decodoarele sunt numite şi generatoare de mintermeni pentru fiecare combinaţie de intrări, doar o singură ieşire este adevărată fiecare ecuaţie la ieşire prezintă toate variabilele S1 S0 Q0 Q1 Q2 Q3 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 1 1 0 0 0 1 Q0 = S1 S0 Q1 = S1 S0 Q2 = S1 S0 Q3 = S1 S0 Orice funcţie poate fi implementată cu decodoare (dacă funcţia este deja scrisă ca sumă de mintermeni, implementarea cu decodoare este imediată) Copyright Paul GASNER 7
Exemplu: adunarea Să se proiecteze un circuit care să efectueze adunarea a trei numere de 1 bit Sunt necesari 2 bits pentru a reprezenta suma: C şi S ( carry şi sum ) C şi S vor fi două funcţii diferite cu variabilele X,Y şi Z 0 + 1 + 1 = 10 X Y Z C S 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 C(X,Y,Z) = Σm(3,5,6,7) 0 1 1 1 0 1 0 0 0 1 S(X,Y,Z) = Σm(1,2,4,7) 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 1 + 1 + 1 = 11 Copyright Paul GASNER 8
Sumator cu două decodoare... +5V semnifică activarea decodorului C(X,Y,Z) = Σm(3,5,6,7) S(X,Y,Z) = Σm(1,2,4,7) Copyright Paul GASNER 9
...sau cu un decodor C(X,Y,Z) = Σm(3,5,6,7) S(X,Y,Z) = Σm(1,2,4,7) Copyright Paul GASNER 10
Construcţia decodorului pe 3 bits Un decodor pe 3 bits se poate realiza pe baza tabelei de adevăr din decodoare pe 2 bits Din tabelă se poate observa că când S2=0, ieşirile Q0-Q3 arată ca la un decodor pe 2 bits când S2=1, ieşirile Q4-Q7 arată ca la un decodor pe 2 bits S2 S1 S0 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 1 Q0 = S2 S1 S0 = m 0 Q1 = S2 S1 S0 = m 1 Q2 = S2 S1 S0 = m 2 Q3 = S2 S1 S0 = m 3 Q4 = S2 S1 S0 = m 4 Q5 = S2 S1 S0 = m 5 Q6 = S2 S1 S0 = m 6 Q7 = S2 S1 S0 = m 7 Copyright Paul GASNER 11
Construcţie modulară S2 S1 S0 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 1 Copyright Paul GASNER 12
Tipuri de decodoare Decodor activ-sus (active-high) EN S1 S0 Q0 Q1 Q2 Q3 0 x x 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 1 0 0 1 1 0 0 0 1 0 1 1 1 0 0 0 1 Decodor activ-jos (active-low) este un decodor activsus la care portul de activare şi ieşirile sunt inversate EN S1 S0 Q0 Q1 Q2 Q3 0 0 0 0 1 1 1 0 0 1 1 0 1 1 0 1 0 1 1 0 1 0 1 1 1 1 1 0 1 x x 1 1 1 1 Copyright Paul GASNER 13
Tipuri de decodoare. Utilizări Decodorul activ-sus generează mintermeni Q3 = S1 S0 Q2 = S1 S0 Q1 = S1 S0 Q0 = S1 S0 Decodorul activ-jos generează maxtermeni Q3 = (S1 S0) = S1 + S0 Q2 = (S1 S0 ) = S1 + S0 Q1 = (S1 S0) = S1 + S0 Q0 = (S1 S0 ) = S1 + S0 Copyright Paul GASNER 14
Decodorul activ-jos Orice funcţie poate fi implementată cu ajutorul decodoarelor active-jos ca produs de maxtermeni Copyright Paul GASNER 15
Decodorul. Concluzii Decodorul pe n bits generează mintermenii (sau maxtermenii) unei fucţii cu n variabile Una dintre utilizările decodorului este implementarea oricărei funcţii Decodoarele cu număr mare de intrări se pot obţine din decodoare mai mici Copyright Paul GASNER 16
Multiplexoare Multiplexoarele (mux) permit unei intrări să ajungă la ieşire conform unor semnale de control Un multiplexor pe 2 n -to-1 (2 n x1) transmite una dintre cele 2 n intrări la unica ieşire: inputs: 2 n intrări de date n intrări de comandă (select) o singură ieşire de 1 bit Q = S D0 + S D1 Bitul de control S selectează care dintre cele două intrări D0 şi D1 ajunge la ieşire dacă S=0 atunci Q=D0 dacă S=1 atunci Q=D1 Copyright Paul GASNER 17
Tabele de adevăr Tabela de adevăr a unui multiplexor are dimensiuni foarte mari, de aceea se impun anumite simplificări S D1 D0 Q 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 1 1 0 0 0 1 0 1 0 1 1 0 1 1 1 1 1 Q = S D0 + S D1 Variabilele apar în coloana de ieşire S Q 0 D0 1 D1 Copyright Paul GASNER 18
Multiplexor 4-to-1 (4x1) EN S1 S0 Q 0 0 0 D0 0 0 1 D1 0 1 0 D2 0 1 1 D3 1 x x 1 Q = S1 S0 D0 + S1 S0 D1 + S1 S0 D2 + S1 S0 D3 Multiplexoarele au un port enable asemănător decodoarelor De obicei, portul de activare este active-low şi pentru EN'=1, toate ieşirile multiplexorului sunt 1 Copyright Paul GASNER 19
Implementarea funcţiilor cu mux... O funcţie cu n variabile poate fi implementată cu ajutorul unui multiplexor nx1: pentru mintermenul m i, intrarea Di este conectată la 1; fiecărei date de intrare îi corespunde o linie în tabela de adevăr variabilele funcţiei se conectează la intrările de selecţie ale multiplexorului x y z f 0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 1 1 1 1 1 f(x,y,z) = Σm(1,2,6,7) Copyright Paul GASNER 20
...sau, mai eficient Funcţia f(x,y,z) = Σm(1,2,6,7) poate fi implementată cu un mux 4x1 în locul unui mux 8x1: 1. se construieşte tabela e adevăr şi se grupează liniile în perechi x şi y sunt aceeaşi şi funcţia va depinde doar de z pentu xy=00, f=z pentru xy=01, f=z pentru xy=10, f=0 pentru xy=11, f=1 2. primele două variabile se conectează la intrările de selecţie 3. seconectează intrările multiplexorului conform relaţiilor de mai sus pentru f(z) x y z f 0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 1 1 1 1 1 Copyright Paul GASNER 21
Exemplu: sumator Se implementează pentru început funcţia carry de la adunare C(X,Y,Z) cu multiplexoare Este necesar un mux 4x1 (trei variabile) De obicei primele două variabile se conectează la intrările select X Y Z C 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 1 1 1 1 1 pentru S1=X şi S0=Y se obţine Q=X Y D0 + X YD1 + XY D2 + XYD3 Copyright Paul GASNER 22
Funcţia carry Fixând X şi Z, funcţia C(X,Y,Z) va depinde doar de Z X Y Z C 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 1 1 1 1 1 pentru XY=00, C=0 pentru XY=01, C=Z pentru XY=10, C=Z pentru XY=11, C=1 C = X Y D0 + X Y D1 + X Y D2 + X Y D3 = X Y 0 + X Y Z + X Y Z + X Y 1 = X Y Z + X Y Z + XY = Σm(3,5,6,7) Copyright Paul GASNER 23
Sumator cu multiplexor dual Funcţia sumă trebuie privită în acest caz ca având o singură ieşire pe 2 bits şi nu ca două funcţii separate Un mux dual 4-to-1 se notează mux 4x2 Copyright Paul GASNER 24
Multiplexorul dual 4x2 Ca şi la mux 4x1, S1-S0 sunt utilizate pentru formarea perechilor intrărilor: 2D3 1D3, când S1 S0 = 11 2D2 1D2, când S1 S0 = 10 2D1 1D1, când S1 S0 = 01 2D0 1D0, când S1 S0 = 00 Copyright Paul GASNER 25
Multiplexorul. Concluzii Multiplexorul trimite la ieşire intrarea selectată Ca şi decodorul serveşte la implementarea funcţiilor booleene Multiplexoarele pot fi combinate pentru a obţine multiplexoare de dimensiuni mai mari Copyright Paul GASNER 26