Circuite integrate digitale
Circuite decodificatoare
Sorin Hintea
Departamentul de Bazele Electronicii
Circuite integrate digitale – Circuite decodificatoare 2
Decodificatorul – definiții, funcționare
Decodificarea codurilor binare este necesara pentru a semnaliza aparitia unui anumit
cod binar pe un bus de N biti
Pentru a semnaliza cu ‘1’ aparitia codului 1101, este nevoie de o poarta SI care
realizeaza functia
Semnalizarea cu ‘0’ a aparitiei codului 1101 este realizata cu o poarta SI-NU:
Semnalizarea aparitiei fie a unui cod (1101) fie a unui al doilea (0101) este realizata
astfel:
� � �13 � � · � · ̅ · �
� � �13 � � · � · ̅ · �
� � �13 � �5 � � · � · ̅ · � � �� · � · ̅ · � � � · ̅ · �
Circuite integrate digitale – Circuite decodificatoare 3
Decodificatorul – definiții, funcționare
Pentru a semnaliza toate codurile care se pot scrie pe n biti este nevoie de un DCD cu
n adrese
Decodificatorul este un circuit de selecție → activează o singură ieșire din 2n în
funcție de o adresă pe n biți → de exemplu DCD 3:8 cu ieșiri active pe 1 (satisfacand
conditia G=validare)
Exemplu. Daca avem codul de adresa CBA=‘101’ iesirea Y5=‘1’ iar restul sunt ‘0’
C B A Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
1
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
Y0
Y1
A
Y2
Y3B
C
Y6
Y5
Y7
Y4
DCD 3:8
‘1’
‘1’
‘0’
P5=1
P4=0
P7=0
P6=0
P1=0
P0=0
P3=0P2=0
Y0
Y1
Y2
An-1
DCD n:2n
An-2
An-3
A1
A0
n a
ddr
esse
s
P0
P1
P2
2n o
utp
uts
Y2 -3n
Y2 -2n
Y2 -1n
P2 -3n
P2 -2n
P2 -1n
(a) (b)
Circuite integrate digitale – Circuite decodificatoare 4
Decodificatorul – definiții, funcționare
Cele 8 ieșiri sunt funcții de cele 3 adrese (cod binar)
de la intrare
Conform tabelului de adevar, ieșirile sunt chiar
termenii canonici
Rezulta un circuit cu 8 porți SI, fiecare din acestea
generand un produs termen canonic
0 0
1 1
2 2
7 7
Y C B A P
Y C B A P
Y C B A P
Y C B A P
M
Yi = Pi
Circuite integrate digitale – Circuite decodificatoare 5
Decodificatorul cu iesiri active pe 0
Decodificatorul cu iesiri active pe 0 → activează o singură ieșire din 2n în
funcție de o adresă pe n biți conectand-o la masa, toate celelalte ramanand
inactive (1 logic)
Tabelul de adevar reflecta aceasta functionare
C B A Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
0
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
0
Circuite integrate digitale – Circuite decodificatoare 6
Decodificatorul cu iesiri active pe 0
Cele 8 ieșiri sunt funcții de cele 3 adrese (cod
binar) de la intrare
Conform tabelului de adevar, ieșirile sunt chiar
termenii canonici negati
Rezulta un circuit cu 8 porți SI-NU, fiecare din
acestea generand un produs termen canonic negat
0 0 0
1 1 1
2 2 2
7 7 7
Y C B A P S
Y C B A P S
Y C B A P S
Y C B A P S
M
�� � ���
Circuite integrate digitale – Circuite decodificatoare 7
Implementarea funcțiilor logice cu decodificatoare
Implementarea funcțiilor date sub formă canonică se bazeaza pe faptul ca la iesirile
decodificatorului se obtin termenii canonici care contin ca variabile intrarile de adresa
Cu un DCD cu N adrese se poate obtine orice functie de N variabile
Aceasta functie trebuie data sub forma canonica
Variabilele se aplica pe adrese iar validarea trebuie facuta corespunzator (aici G=0)
Exemplu: funcția
x y z f
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
1
0
0
1
1
0
0
0
f (x,y,z)= P0+P3+P4
Y0
Y1
A
Y2
Y3B
C
Y6
Y5
Y7
Y4
DCD 3:8
fx
y
z
Circuite integrate digitale – Circuite decodificatoare 8
Implementarea funcțiilor logice cu decodificatoare
Cu un DCD avand N adrese se pot obține mai multe funcții de N variabile
Pentru fiecare funcție suplimentara se mai adauga o poarta SAU care aduna termenii
canonici corespunzatori
fie funcțiile date sub formă canonică:
x y z f1 f2
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
0
1
1
0
0
0
0
0
0
0
1
0
1
0
1
0
f 1(x,y,z)= P1+P2; f 1(x,y,z)= P2+P4+P6
Y0
Y1
A
Y2
Y3B
C
Y6
Y5
Y7
Y4
DCD 3:8
f1
x
y
z f2
Circuite integrate digitale – Circuite decodificatoare 9
Implementarea funcțiilor logice cu decodificatoare
Fie funcția dată sub formă canonică:
Decodificator cu ieșiri active pe 0 → generează termeni canonici negati
Suma termenilor se transforma in produs de termeni negati, folosind relatiile lui De
Morgan
x y z f
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
1
0
0
0
1
1
0
0
f (x,y,z)= P0+P4+P5
f(x,y,z)= P0+P4+P5 � P0� · P4
� · P5�
fx
y
z
Y0
Y1
A
Y2
Y3B
C
Y6
Y5
Y7
Y4
DCD 3:8
Circuite integrate digitale – Circuite decodificatoare 10
Decodificatorul BCD-zecimal
Decodificatorul BCD – zecimal accepta la intrare coduri BCD ( adrese
binare de la 0 la 9)
Codul binar de adresa pe 4 biti activează o singură ieșire din cele 10
Tabelul de adevar defineste cele 10 functii de iesire
D C B A Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Y9
0 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
0 1 0 0
0 1 0 1
0 1 1 0
0 1 1 1
1 0 0 0
1 0 0 1
1
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
1
Circuite integrate digitale – Circuite decodificatoare 11
Decodificatorul BCD-zecimal
Cele 10 ieșiri sunt funcții de cele 4 adrese (cod binar) de la intrare
Conform tabelului de adevar, ieșirile sunt chiar termenii canonici
Rezulta un circuit cu 10 porți SI, fiecare din acestea generand un
produs termen canonic
Yi = Pi
Circuite integrate digitale – Circuite decodificatoare 12
Implementarea functiilor logice cu decodificator BCD-zecimal
Cu un DCD BCD zecimal cu iesiri active pe 1 se poate implementa orice functie de 3
variabile
Fie funcția dată sub formă canonică:
Pentru funcții de 4 variabile sunt necesare 2 DCD BCD zecimale conectate astfel
incat unul sa genereze primii 8 termeni canonici iar cel de al doilea ultimii 8 termeni
Din fiecare DCD se folosesc doar primele 8 ieșiri
x y z t f
0 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
0 1 0 0
0 1 0 1
0 1 1 0
0 1 1 1
1 0 0 0
1 0 0 1
0
1
0
0
0
0
1
1
0
0
f (x,y,z,t)= P1+P6+P7
Y0
Y1
A
Y2
Y3
B
C
Y6
Y5
Y7
Y4
D
Y8
Y9
f
x
y
zt
Circuite integrate digitale – Circuite decodificatoare 13
Implementarea functiilor logice cu decodificator BCD-zecimal
Cu un DCD BCD – zecimal cu iesiri active pe “0” se poate implementa orice
funcție de 3 variabile
Suma termenilor se transformă in produs de termeni negați Fie funcția dată
sub formă canonică:
x y z t f
0 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
0 1 0 0
0 1 0 1
0 1 1 0
0 1 1 1
1 0 0 0
1 0 0 1
1
0
0
1
0
0
1
0
0
0
f(x,y,z)= P0+P3+P6 � P0� · P3
� · P6�
Circuite integrate digitale – Circuite decodificatoare 14
Extinderea capacitatii de decodificare folosind decodificator BCD-zecimal
Pornind de la faptul ca un DCD BCD zecimal
genereaza 8 iesiri pentru cuvinte pe trei biti aplicate pe
intrarile C, B si A si avand bitul MSB D=0
Pentru a avea un DCD cu 16 iesiri cuvantul de
adresa este pe 4 biti (cuvantul xyzt)
Este nevoie de 2 DCD cu 8 iesiri fiecare
Cand x=0 ( codurile binare intre 0 si 7) se
activeaza una din cele 8 iesiri ale primului DCD
Cand x=1 ( codurile binare de la 8 la 15) se
activeaza una din cele 8 iesiri ale celui de al doilea
DCD
Astfel se obtine un DCD cu 16 canale
Circuite integrate digitale – Circuite decodificatoare 15
Extinderea capacitatii de decodificare folosind decodificator BCD-zecimal
Pornind de la faptul ca un DCD BCD zecimal genereaza 8 iesiri pentru cuvinte
aplicate be bitii CBA si avand bitul MSB D=0
x y z t f
0 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
0 1 0 0
0 1 0 1
0 1 1 0
0 1 1 1
1 0 0 0
1 0 0 1
1 0 1 0
1 0 1 1
1 1 0 0
1 1 0 1
1 1 1 0
1 1 1 1
P0
P1
P2
P3
P4
P5
P6
P7
P0 → P8
P1 → P9
P2 → P10
P3 → P11
P4 → P12
P5 → P13
P6 → P14
P7 → P15
0x
1x
Circuite integrate digitale – Circuite decodificatoare 16
Implementarea functiilor logice cu decodificator BCD-zecimal
Se dă funcția sub formă canonică:
x y z t f
0 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
0 1 0 0
0 1 0 1
0 1 1 0
0 1 1 1
1 0 0 0
1 0 0 1
1 0 1 0
1 0 1 1
1 1 0 0
1 1 0 1
1 1 1 0
1 1 1 1
0 → P0
0 → P1
0 → P2
0 → P3
1 → P4
0 → P5
1 → P6
0 → P7
0 → P0 → P8
0 → P1 → P9
1 → P2 → P10
0 → P3 → P11
0 → P4 → P12
0 → P5 → P13
0 → P6 → P14
1 → P7 → P15
0x
1x
f (x,y,z,t)= P4+P6+P10+P15
Circuite 17
Extinderea capacității de decodificare
Decodificator 1:16 implementat cu 2 DCD 1:8 cu
validare
- Pentru a avea un DCD cu 16 canale de iesire
este nevoie de 2 DCD cu 8 iesiri fiecare
- Cuvantul de adresa este DCBA
- Primul DCD activeaza cele 8 iesiri cand bitul
MSB de adresa este D =‘0’ ( primele 8 adrese)
- Al doilea DCD activeaza cele 8 iesiri cand
bitul MSB de adresa este D =‘1’ ( ultimele 8
adrese)
Y0
Y1
A
Y2
Y3
B
C
Y6
Y5
Y7
Y4
En
DCD 3:8
CBA
Y0
Y1
A
Y2
Y3
B
C
Y6
Y5
Y7
Y4
En
DCD 3:8
D
P0
P1
P2
P3
P4
P5
P6
P7
P0 → P8
P1 → P9
P2 → P10
P3 → P11
P4 → P12
P5 → P13
P6 → P14
P7 → P15
Y0
Y1
A
Y2
Y3
B
C
Y6
Y5
Y7
Y4
DCD 4:16
D
Y8
Y9
Y12
Y11
Y13
Y10
Y14
Y15
Circuite 18
Extinderea capacității de decodificare
Decodificator 1:64implementat cu 9 DCD 1:8 cu validare
- Pentru a avea un DCD cu 64 canale de iesire este nevoie de 8 DCD cu 8 iesiri fiecare
- Cuvantul de adresa este FEDCBA
- DCD Master activeaza una din cele 8 iesiri in functie de cuvantul FED ( cei mai
semnificativi biti din cuvantuld e adresa de 6 biti)
- Cele 8 DCD de rangul 2 activeaza cele 8 iesiri in functie de cuvantul CBA
Circuite integrate digitale – Circuite decodificatoare 19
Implementarea funcțiilor logice cu mai multe decodificatoare
x y z t f
0 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
0 1 0 0
0 1 0 1
0 1 1 0
0 1 1 1
1 0 0 0
1 0 0 1
1 0 1 0
1 0 1 1
1 1 0 0
1 1 0 1
1 1 1 0
1 1 1 1
0 → P0=f (y,z,t)
0 → P1
1 → P2
0 → P3
1 → P4
0 → P5
1 → P6
0 → P7
0 → P0 → P8
1 → P1 → P9
0 → P2 → P10
1 → P3 → P11
0 → P4 → P12
1 → P5 → P13
0 → P6 → P14
0 → P7 → P15
0x
1x
2P
4P
6P
9P
11P
13P
f = P2+P4+P6+P9+P11+P13
Exemplu. Implementarea funcției de 4 variabile folosind doua
DCD cu 8 iesiri si validare:
Circuite 20
Implementarea funcțiilor logice cu DMUX
Exemplu. Implementarea funcției de 4 variabile folosind doua
DCD cu 8 iesiri si validare:
� �, �, �, � � �2 � �4+ �6+ �9 � �11+ �13
Circuite 21
Implementarea funcțiilor logice cu DMUX
Exemplu 3. Implementarea funcției de 4 variabile folosind DCD
cu 4 iesiri active pe 0 si validare:
� �, �, �, � � �4 � �6 � �10+ �15
Circuite integrate digitale – Circuite decodificatoare 22
Probleme propuse
Probleme propuse:
1. Realizati un circuit care sa furnizeze valoarea logica 1 atunci cand la intrare apare fie codul 010 fie
011.
2. Aceeasi problema pentru cazul cand la intrare este sesizat fie codul 1010 fie 1110
3. Repetati problema precedenta pentru detectia aparitie codurilor 0011 sau 0111 sau 0010 sau 0110
4. Implementati functia data sub forma canonica folosind 1 DCD cu 8 iesiri active pe ‘1’: � �, �, �
�1 � �2+ �3 � �6
5. Implementati functia data sub forma canonica folosind 1 DCD cu 8 iesiri active pe ‘0’: � �, �, �
�0 � �4+�5
6. Implementati functia data sub forma canonica folosind 2 DCD cu 8 iesiri active pe ‘1’: � �, �, �
�0 � �2+ �6 � �7+�9 � �10+ �14
7. Implementati functia data sub forma canonica folosind 2 DCD cu 8 iesiri active pe ‘0’: � �, �, �
�0 � �4+ �5 � �8+�10 � �12+ �14 � �15
8. Realizati un DCD cu 64 iesiri folosind DCD binare cu validare cu 8 iesiri intr-o structura
arborescenta
9. Repetati problema folosind DCD BCD zecimal cu validare cu 10 iesiri intr-o structura
arborescenta