2.1. Definitii g7i15iq
Circuitele logice combinationale, CLC, sunt un caz particular al sistemelor
secventiale finite sau al automatelor finite, numite automate de grad 0.
Circuitele logice combinationale se caracterizeaza prin faptul ca variabilele
de iesire sunt independente de timp si de starea interna, fiind determinate
numai de variabilele de intrare (starea variabilelor de intrare la momentul
considerat).
Legatura dintre starea iesirii si starea intrarii unui CLC este realizata de
functia de transfer. x1 y1 x2 y2
CLC
xn ym
Oricare functie de iesire y (y1, y2,…, ym) este functie de toate variabilele
de intrare (x1, x2,…, xn). Un CLC se poate descrie astfel: y1 = f1(x1, x2,…, xn) y2 = f2(x1, x2,…, xn)
ym = fm(x1, x2,…, xn)
Functiile se vor exprima in forma canonica disjunctiva FCD sau in
forma canonica conjunctiva FCC.
Independenta fata de timp presupune ca o data cu modificarea variabilelor de
intrare se modifica simultan si variabilele de iesire. Din punct de vedere practic,
datorita intarzierilor produse de circuitele logice si de conexiuni,
modificarea simultana nu este posibila. Ca urmare, pe durata procesului tranzitoriu
de stabilire a variabilelor de iesire, vectorul iesirilor poate lua valori intermediare
diferite de valoarea finala, ceea ce conduce la fenomenul de hazard combinational,
de care trebuie sa se tina cont la proiectarea unui sistem numeric.
In general, la circuitele logice combinationale, vom face abstractie de
proprietatile fizice ale portilor logice, de faptul ca un impuls teoretic difera
de unul real. Vom analiza aceste fenomene doar in cazul hazardului combinational.
2.2. Analiza circuitelor logice combinationale
In cadrul analizei CLC se pleaca de la cunoasterea schemei logice a circuitului
si se urmareste stabilirea functionarii acestuia. Stabilirea expresiei variabilei
de iesire se face de la intrare la iesire, urmarind transformarile variabilelor
de intrare.
Definim ca numar de nivele al unui CLC numarul maxim de porti dintre intrari
si iesiri. Numerotarea nivelelor se face de la iesire inspre intrare. x5 x1 x2 y1 x3 x4 y2 x6 x7
4 3 2 1
Circuitul logic combinational din exemplu are 4 nivele.
Exista si urmatoarea situatie de legaturi intre porti: x1 y x2
x3
Acest circuit are si legaturi inverse. Ultimele porti nu pot fi numerotate,
deci circuitul nu este un CLC.
In CLC sunt admise legaturile inverse (iesirea unei porti dintr-un nivel
inferior sa fie dusa la intrarea unei porti dintr-un nivel superior) cu conditia
ca definitia CLC sa fie respectata.
Algoritm de determinare a legaturilor inverse in CLC a. Se numeroteaza toate portile logice care au ca intrari un subset din multimea
variabilelor de intrare ale circuitului logic (de la 1 la k); b. Se numeroteaza de la k+1 portile care au ca intrari fie intrari ale circuitului,
fie iesiri ale portilor numerotate la punctul a. Daca am reusit sa numerotam
toate portile circuitului logic, acesta este fara legaturi inverse si este circuit
combinational. Daca nu am reusit numerotarea tuturor portilor logice, circuitul
este de tip secvential.
2.3. Sinteza circuitelor logice combinationale
In cadrul sintezei circuitelor logice combinationale se cunoaste functia
pe care trebuie sa o indeplineasca circuitul si se cauta sa se gaseasca
structura acestuia.
Etapele sintezei circuitelor logice combinationale sunt:
1. Enuntul problemei;
2. Alcatuirea tabelului de adevar, definirea functiei sau functiilor;
3. Minimizarea functiei sau functiilor;
4. Desenarea schemei circuitului
Exista mai multe metode de implementare a CLC, diferentiate dupa nivelul de
complexitate al circuitelor integrate folosite.
2.3.1. Sinteza CLC cu circuite integrate SSI
Circuitele integrate de tip SSI -; small scale integration -; au pana
la 50 de tranzistoare integrate pe capsula. Dintre aceste circuite fac parte
portile logice fundamentale: SI-NU (NAND), SAU-NU (NOR), NU (NOT), SI (AND),
SAU (OR), SAU-EXCLUSIV (XOR).
Dupa parcurgerea etapelor de sinteza se face implementarea functiei sau functiilor
logice cu ajutorul circuitelor integrate existente. CLC de tip SSI se folosesc
mai mult pentru adaptarea la aplicatie a circuitelor de tip MSI si LSI standardizate,
care nu satisfac cu exactitate cerintele de proiectare. Ele vor fi utilizate
acolo unde circuitele cu grad inalt de integrare nu pot fi folosite.
2.3.2. Sinteza CLC cu circuite integrate MSI
Circuitele integrate de tip MSI -; medium scale integration -; au
pana la 500 de tranzistoare integrate. Ele ofera structuri mai complexe,
disponibile ca si structuri standard.
Forma functiilor logice pe care dorim sa le implementam cu circuite de tip MSI
trebuie sa fie corelata cu circuitele disponibile. De obicei nu mai este necesara
minimizarea functiilor.
Circuite combinationale uzuale (specializate)
1. Convertoare de cod
Convertoarele de cod sunt CLC care permit trecerea dintr-un cod binar in
altul. La intrarea circuitului se aplica cuvintele unui cod si la iesire se
obtine alt cod. Convertoarele de cod fac compatibila functionarea a 2 sisteme
in care informatia este codificata in mod diferit.
Exemplu: Conversiile din cod Gray in cod binar-zecimal (BCD) si invers
1) Cod Gray ® BCD
Cuvintele de cod in cele doua coduri sunt:
Gray: gn, gn-1,…, g0
BCD: bn, bn-1,…, b0
Reguli: bn = gn g3 g2 g1 g0 b3 b2 b1 b0
0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 1
0 0 1 1 0 0 1 0
0 0 1 0 0 0 1 1
0 1 1 0 0 1 0 0
0 1 1 1 0 1 0 1
0 1 0 1 0 1 1 0
0 1 0 0 0 1 1 1
1 1 0 0 1 0 0 0
1 1 0 1 1 0 0 1
1 1 1 1 1 0 1 0
1 1 1 0 1 0 1 1
1 0 1 0 1 1 0 0
1 0 1 1 1 1 0 1
1 0 0 1 1 1 1 0
1 0 0 0 1 1 1 1
Se construiesc diagrame Karnaugh pentru determinarea functiilor minimizate pentru
b3, b2, b1, b0.
Diagrama Karnaugh pentru b3: g3g2 g1g0 00 01 11 10
00
01
11 1 1 1 1
10 1 1 1 1
Obtinem: b3 = g3
Diagrama Karnaugh pentru b2: g3g2 g1g0 00 01 11 10
00
01 1 1 1 1
11
10 1 1 1 1
Obtinem b2 = g2g3 + g2g3 = g2 + g3
Diagrama Karnaugh pentru b1: g3g2 g1g0 00 01 11 10
00 1 1
01 1 1
11 1 1
10 1 1
Obtinem b1 = g1g2g3 + g1g2g3 + g1g2g3 + g1g2g3 = g1(g2 + g3) + g1(g2 + g3) =
g1 + g2 + g3
Diagrama Karnaugh pentru b0: g3g2 g1g0 00 01 11 10
00 1 1
01 1 1
11 1 1
10 1 1
Obtinem b0 = g0g1g2g3 + g0g1g2g3 + g0g1g2g3 + g0g1g2g3 + g0g1g2g3 + g0g1g2g3
+ g0g1g2g3 + g0g1g2g3 = g2g3(g0 + g1) + … = g0 + g1 + g2 + g3
In general: bn = gn i bi = 1 daca + S gj = 1 j=n-1
0 daca nu
2) Conversia din BCD in Gray: gn = bn gi = bi + bi+1
2. Codificatoare
Codificatoarele sunt CLC la care activarea unei intrari conduce la aparitia
unui cuvant de cod la iesire.
Exemplu: Codificator din zecimal in BCD (binar codificat zecimal)
Zecimal BCD
0 1 2 3 4 5 6 7 8 9 23 22 21 20
0 1 1 1 1 1 1 1 1 1 0 0 0 0
1 0 1 1 1 1 1 1 1 1 0 0 0 1
1 1 0 1 1 1 1 1 1 1 0 0 1 0
1 1 1 0 1 1 1 1 1 1 0 0 1 1
1 1 1 1 0 1 1 1 1 1 0 1 0 0
1 1 1 1 1 0 1 1 1 1 0 1 0 1
1 1 1 1 1 1 0 1 1 1 0 1 1 0
1 1 1 1 1 1 1 0 1 1 0 1 1 1
1 1 1 1 1 1 1 1 0 1 1 0 0 0
1 1 1 1 1 1 1 1 1 0 1 0 0 1
Intrarile sunt active pe 0 logic. De exemplu, daca este activa (adica 0) intrarea
5, pe iesire se va obtine codul in BCD pentru 5, adica 0101.
Functiile pentru iesiri sunt:
23 = 8 × 9
22 = 4 × 5 × 6 × 7
21 = 2 × 3 × 6 × 7
20 = 1 × 3 × 5 × 7 × 9
Codificatorul prioritar este un codificator care are mai multe intrari active
simultan si la iesire se obtine cuvantul de cod care corespunde intrarii
care este cea mai prioritara. Prioritatea creste de la cifra 0 inspre
cifra 9.
3. Decodificatoare
Decodificatoarele sunt CLC la care se activeaza doar una dintre iesiri, pentru
combinatia (codul) corespunzatoare a variabilelor de intrare. Ele au functie
inversa codificatoarelor. Iesirile decodificatoarelor sunt active pe 0 logic
(functioneaza in logica negativa).
I1 y1
Circuite SI-NU
In ym
Numarul iesirilor distincte este m £ 2n.
Exemplu: Decodificator pentru 3 cifre binare.
I2 I1 I0 O7 O6 O5 O4 O3 O2 O1 O0
0 0 0 1 1 1 1 1 1 1 0
0 0 1 1 1 1 1 1 1 0 1
0 1 0 1 1 1 1 1 0 1 1
0 1 1 1 1 1 1 0 1 1 1
1 0 0 1 1 1 0 1 1 1 1
1 0 1 1 1 0 1 1 1 1 1
1 1 0 1 0 1 1 1 1 1 1
1 1 1 0 1 1 1 1 1 1 1
Functiile pentru iesiri sunt: O7 = I2I1I0; O6 = I2I1I0; O5 = I2I1I0; O4 = I2I1I0;
O3 = I2I1I0; O2 = I2I1I0; O1 = I2I1I0; O0 = I2I1I0.
4. Multiplexoare
Multiplexoarele sunt CLC care permit trecerea datelor de pe una din intrari
la o iesire unica. Selectia intrarii se face printr-un cuvant de cod de
selectie numit si adresa.
I0
MUX y
In-1
sm-1 s0
Cu m linii de selectie se pot selecta 2m intrari. Functia realizata de iesire
este: y = Ik unde k este numarul de combinatii k = sm-1 × 2m-1 + … + s0 × 20
Aplicatiile cele mai importante ale MUX sunt la selectia secventiala a datelor,
conversia paralel-serie a datelor, sisteme de transmisie a datelor pe un singur
canal, implementarea circuitelor logice combinationale cu o singura iesire.
Exemple
1) I0
MUX y
I1 2 : 1
s
Multiplexorul de tip 2:1 are 2 semnale de intrare, I0 si I1, un semnal de selectie
s si o iesire y. In functie de semnalul de selectie avem pentru iesire:
y = I0 × s + I1 × s. s = 0 ® y = I0 s = 1 ® y = I1
Deci multiplexorul lasa sa treaca spre iesire semnalul de pe acea linie de intrare
corespunzatoare lui s.
2) I0
I1 MUX
I2 4 : 1 y
I3
s0 s1
Multiplexorul de tip 4:1 are 4 semnale de intrare, 2 semnale de selectie si
un semnal de iesire. Iesirea va fi: y = I0 × s0 × s1 + I1 × s0 × s1 + I2 × s0 ×
s1 + I3 × s0 × s1
Exista multiplexoare de tip 8 : 1, 16: 1, 32 : 1. Multiplexoarele integrate
au disponibile atat iesirea adevarata cat si cea negata. Ele au
si o intrare de “Enable” pentru validare, care permite o functie
SI suplimentara.
5. Demultiplexoare
Demultiplexoarele sunt CLC care permit transmiterea datelor de pe o intrare
de date comuna pe una din iesirile selectate. Selectarea iesirii se face cu
ajutorul unui cuvant de cod de selectie numit si adresa. y0
I DEMUX yn-1
sm-1 s0
Cu m linii de selectie se pot selecta 2m iesiri. Functiile de iesire sunt:
y0 = sm-1 × … × s0 × I y1 = sm-1 × … × s0 × I
y2m = sm-1 × … × s0 × I
6. Comparatoare numerice
Comparatoarele numerice sunt CLC care permit determinarea valorii relative a
doua numere binare. Comparatoarele pot fi de 1 bit sau de mai multi biti.
Exemplu: Comparator pe 1 bit
Ai y1 y2
Bi y3
Functiile de iesire sunt: y1 = Ai × Bi pentru Ai < Bi, y2 = Ai + Bi pentru Ai = Bi y3 = Ai × Bi pentru Ai > Bi
Acest circuit constituie celula de baza pentru compararea numerelor cu mai multi
biti.
7. Detectoare-generatoare de paritate
Detectoarele-generatoare de paritate sunt CLC cu rol de a determina si genera
paritatea sau imparitatea numarului de variabile de intrare egale cu 1. Bitul
de paritate este utilizat ca metoda de verificare a transferului de date. Sunt
posibile 2 situatii: a. numarul bitilor de 1 + bitul de paritate = numar par b. numarul bitilor de 1 + bitul de paritate = numar impar
Realizarea detectoarelor de paritate se bazeaza pe functia logica SAU-EXCLUSIV
(0 pentru par si 1 pentru impar).
8. Sumatoare-scazatoare
Sumatoarele si scazatoarele sunt CLC care realizeaza adunarea, respectiv scaderea
cifrelor binare.
Semisumatorul este un CLC care efectueaza suma a 2 numere binare de cate
1 bit, fara a tine cont de transportul de la bitul de semnificatie imediat inferioara.
Semisumatorul este:
A0 S0
1/2 S
B0 C0
Valorile pentru suma S0 si transportul spre rangul superior C0 sunt:
S0 = A0 × B0 + A0 × B0 = A0 + B0
C0 = A0 × B0
Sumatorul pentru bitul de rang n este:
An Sn
Cn-1 S
Bn Cn
Valorile pentru suma Sn si transportul Cn pentru rangul superior sunt:
Sn = An × Bn × Cn-1 + An × Bn × Cn-1 + An × Bn
× Cn-1 + An × Bn × Cn-1 =
= (An + Bn) × Cn-1 + (An + Bn) × Cn-1 = An + Bn + Cn-1
Cn = An × Cn-1 + Bn × Cn-1 + An × Bn
Sumatoarele pentru cuvinte binare cu mai multi biti se realizeaza prin interconectarea
sumatoarelor pentru 1 bit. Adunarea se efectueaza in paralel, iar propagarea
transportului in serie.
Semiscazatorul de 1 bit are iesirile:
D0 = A0 × B0 + A0 × B0 = A0 + B0
I0 = A0 × B0
Scazatorul complet de rangul n are iesirile:
Dn = An × Bn × In-1 + An × Bn × In-1 + An × Bn
× In-1 + An × Bn × In-1 = =(An + Bn) × In-1 + (An +
Bn) × In-1 = An + Bn + In-1
In = An × In-1 + Bn × In-1 + An × Bn
Scazatoarele pentru cuvinte binare cu mai multi biti se realizeaza prin interconectarea
scazatoarelor pentru 1 bit.
9. Unitati aritmetico-logice
Unitatile aritmetico-logice sunt CLC care realizeaza operatii de tip aritmetic
si operatii de tip logic.
Curs 5
2.3.2.1. Implementarea functiilor booleene cu circuite MSI
Circuitele integrate de tip MSI cum sunt decodificatorul DCD, demultiplexorul
DEMUX si multiplexorul MUX pot fi considerate circuite universale deoarece genereaza
in interior toti termenii canonici.
Implementarea cu DCD a unei functii booleene nu necesita operatii de minimizare.
La iesirea DCD se obtin toti termenii canonici negati ai formei canonice disjunctive
FCD ai functiei. Realizarea functiei se face cu o poarta logica de tip SI-NU,
cu un numar de intrari egal cu numarul de termeni ai functiei.
Implementarea cu MUX a unei functii booleene se bazeaza pe relatia care defineste
functionarea sa. De exemplu, pentru un MUX de tip 4:1 avem ecuatia iesirii: y = I0 × x1 × x2 + I1 × x1 × x2 + I2 × x1 ×
x2 + I3 × x1 × x2
in care se observa ca exista intrari separate pentru fiecare din cele
4 combinatii ale variabilelor de selectie x1, x2.
Daca avem o functie booleana de n variabile de intrare se pot da factor variabilele
x1 si x2 si se obtin 4 functii de n-2 variabile de intrare, care se vor conecta
la intrarile I0 -; I3 ale unui MUX de tip 4:1. Similar, cu un MUX 8:1 se
pot elimina 3 variabile de intrare, iar cu un MUX 16:1 se pot elimina 4 variabile
de intrare.
Daca avem o functie de 4 variabile se pot elimina 3 variabile prin aplicarea
lor pe intrarile de selectie ale unui MUX 8:1. La cele 8 intrari ale MUX se
vor conecta cele 8 functii de o variabila. Singurele functii posibile de o variabila
sunt: xi, xi, 0, 1. Deci putem implementa orice functie cu 4 variabile de intrare
folosind un singur MUX de 8 cai si fara porti aditionale.
Exemplu
Consideram functia: f = (0, 1, 3, 5, 9, 10, 13, 15) = x3x2x1x0 + x3x2x1x0 +
x3x2x1x0 + x3x2x1x0 + x3x2x1x0 + x3x2x1x0 + x3x2x1x0 + x3x2x1x0
Folosim un MUX 8:1 si aplicam variabilele x2x1x0 pe intrarile de selectie. Pentru
a determina intrarile multiplexorului, I0 -; I7, vom face un tabel:
I0 x3 x2x1x0
I1 1 (x3 + x3) × x2x1x0
I2 x3 x2x1x0
I3 x3 x2x1x0
I4 0 x2x1x0
I5 1 (x3 + x3) × x2x1x0
I6 0 x2x1x0
I7 x3 x2x1x0
Implementarea functiei cu MUX este:
En x3
1 x3 x3 f
0 f
1
0 x3 s2 s1 s0
x2 x1 x0
Avantajele implementarii cu MUX:
- se poate implementa functia cu un sigur circuit de tip MUX;
- intrarea de Enable poate fi folosita ca un SI final cu intreaga functie;
- doar o singura variabila trebuie sa fie disponibila si adevarata si negata.
Dezavantajele implementarii cu MUX:
- nu se pot folosi termeni in comun in cazul minimizarii sistemelor
de functii (sisteme cu mai multe iesiri);
- nu se poate face implementarea functiilor la care numarul de termeni este
mai mare decat numarul intrarilor MUX;
- exista multe functii care pot fi implementate comod prin utilizarea de porti
logice ® MUX utilizat doar pentru functii dificile.
Procedura de implementare cu MUX se poate face plecand de la diagrama
Karnaugh. Se construieste o diagrama Karnaugh in care se defineste domeniul
intrarilor I. x3x2 x1x0 00 01 11 10
00 I0 I1 I3 I2
01 I4 I5 I7 I6
11 I4 I5 I7 I6
10 I0 I1 I3 I2
x3x2 x1x0 00 01 11 10
00 1 1 1
01 1
11 1 1
10 1 1
Variabila care variaza este x3. Configuratiile de 1 din diagrama Karnaugh indica
modul de conectare a intrarilor MUX, la x3, x3, 1 sau 0.
I0 = x3; I1 = 1; I2 = x3; I3 = x3; I4 = 0; I5 = 1; I6 = 0; I7 = x3
2.3.3. Sinteza CLC cu circuite integrate LSI
Circuitele integrate de tip LSI -; Large Scale Integration -; au peste
500 de tranzistoare integrate pe capsula. Pentru exemplificarea sintezei CLC
se descriu doua tipuri de circuite din aceasta categorie: ROM (Read Only Memory)
si PLA (Programmable Logic Array), cu varianta FPLA.
2.3.3.1. Sinteza CLC cu memorii de tip ROM
Memoria de tip ROM este numita si memorie fixa sau permanenta. Ea este nevolatila,
continutul ei nu se modifica in timpul functionarii. Structura ei este
stabilita in procesul de fabricatie sau este stabilita de utilizator prin
programare.
I0 O0
DCD Matrice
In-1 Om-1
Memoria ROM este formata din doua niveluri de porti logice: SI (un decodificator)
si SAU-NU (matricea de memorie). DCD din primul nivel primeste codurile de intrare
in binar (n este numarul intrarilor) si activeaza pentru fiecare cod o
iesire din cele 2n. Iesirile DCD se conecteaza sau nu se conecteaza la circuitele
de tip SAU-NU si astfel se memoreaza un 0 sau un 1 logic.
Vectorii de intrare in ROM se numesc adrese si reprezinta codurile in
binar ale numerelor asociate fiecarui cuvant de memorie. Iesirile sunt
de obicei “three-state” sau “open colector” pentru a
permite legarea in paralel cu iesirile altor memorii.
Avem notatiile: n = numarul de biti ai vectorului de intrare (adresa) c = numarul de cuvinte memorate in ROM ® c = 2n b = numarul de biti din fiecare cuvant
Numarul de cuvinte trebuie sa fie putere a lui 2. Modul de organizare a ROM
este specificat prin produsul c x b. Capacitatea memoriei se exprima prin numarul
total de biti memorati: C = 2n x b. Unitatea de masura pentru capacitatea memoriei
este kilobitul (1 Kb = 1024 biti).
Memoriile au o intrare de “Enable” care permite (E = 0) sau inhiba
(E = 1) functionarea ROM. Daca memoria este dezactivata, indiferent de adresare,
iesirile sunt pe semnal logic 1.
Aplicatiile mai importante ale memoriilor de tip ROM sunt:
- memorarea instructiunilor si datelor in sisteme de calcul si automate
secventiale;
- transformari de adresa si inmagazinarea instructiunilor in microprogramare;
- conversii de cod;
- generatoare de caractere;
- generare de secvente de impulsuri;
- implementarea CLC cu un numar mare de variabile de intrare si iesire.
Implementarea CLC cu un numar mare de variabile de intrare si iesire se bazeaza
pe structura interna a memoriei ROM. Pe nivelul de DCD se decodifica toti termenii
canonici. Fiecare cuvant de la intrarea matricei reprezinta de fapt un
termen canonic format din variabilele de intrare. La nivelul urmator se aduna
toti termenii din expresia oricarei functii si rezulta functia de iesire. Lista
de cuvinte din ROM este chiar tabelul de adevar al CLC. La implementarea cu
ROM nu este necesara minimizarea, deoarece sunt memorati toti termenii canonici
si sunt incluse toate posibilitatile de aparitie a acestora in functia
de iesire.
Pentru folosirea eficienta a memoriei ROM in sinteza functiilor booleene,
variabilele de intrare si iesire trebuie codate, astfel incat sa
contina cat mai multa informatie. Se poate codifica orice grup de variabile
care sunt mutual exclusive, adica doar una dintre ele poate fi activa la un
moment dat.
Pentru reducerea numarului de intrari in ROM se utilizeaza des si multiplexoarele.
Exemplu: Sa se implementeze cu ROM functiile: f0(x3,x2,x1,x0) = x3 × x2 × x1 × x0 f1(x3,x2,x1,x0) = x2 × x1 f2(x3,x2,x1,x0) = x3 × x2 × x1 × x0 + x3 × x2 ×
x0 + x3 × x2 × x0 + x2 × x1
Memoria folosita este de tipul:
x3 A3 x2 A2 16 x 4 biti x1 A1 x0 A0 CS
D3D2D1D0
f2 f1 f0
Cu A s-au notat intrarile de adrese, cu D datele si cu CS (chip select), intrarea
de Enable a circuitului.
Continutul inscris in memorie este dat in tabelul urmator:
A3 A2 A1 A0 D3 f2 f1 f0
0 0 0 0 0 0 0 0
0 0 0 1 0 1 0 0
0 0 1 0 0 0 0 0
0 0 1 1 0 0 0 0
0 1 0 0 0 0 1 0
0 1 0 1 0 0 1 0
0 1 1 0 0 1 0 0
0 1 1 1 0 1 0 0
1 0 0 0 0 1 0 0
1 0 0 1 0 0 0 0
1 0 1 0 0 1 0 1
1 0 1 1 0 0 0 0
1 1 0 0 0 0 1 0
1 1 0 1 0 1 1 0
1 1 1 0 0 1 0 0
1 1 1 1 0 1 0 0
Scopurile urmarite la implementarea cu ROM sunt:
- utilizarea unui numar minim de circuite integrate;
- folosirea integrala a capacitatii memoriei.
Pentru implementarea CLC cu memorii ROM trebuie urmarite urmatoarele etape:
- stabilirea dimensiunii memoriei necesare pentru aplicatia respectiva;
- alegerea tipurilor de circuite de tip ROM cu dimensiuni identice sau cat
mai apropiate de cele stabilite anterior;
- daca nu exista memorii cu dimensiuni identice sau apropiate de cele dorite
se fac transformari de dimensiuni (modificarea numarului de cuvinte sau numarului
de biti pe cuvant);
- stabilirea tabelului de adevar al ROM;
- reducerea dimensiunii ROM atunci cand este posibil prin utilizarea codificarii
intrarilor sau iesirilor si a multiplexarii intrarilor.
2.3.3.2. Sinteza CLC cu PLA
PLA (Programmable Logic Array) este un CLC cu doua nivele de logica programabila,
o matrice de porti SI si o matrice de porti SAU. PLA este de fapt o structura
universala, extinsa, de implementare cu 2 nivele de porti logice. Ambele matrici
sunt programabile, in procesul de fabricatie sau de catre utilizator,
conform aplicatiei concrete. PLA este o structura mobila si se utilizeaza eficient
pentru sisteme cu mai mult de 8 variabile de intrare.
Deoarece la PLA sunt programabile ambele nivele, implementarea se face pornind
de la termenii elementari ai functiei, obtinuti prin minimizarea ei.
Reprezentarea schematica a PLA cu n intrari, m iesiri si p termeni elementari
realizabili este: x1 conexiune programabila
x2
xn
Matrice
SI
1 p
1 f1 conexiune Matrice programabila SAU fm m conexiune programabila
CS
Avantajele implementarii cu PLA fata de implementarea cu ROM se refera la posibilitatea
programarii matricei SI si a complementarii variabilelor de iesire (variabilele
de iesire pot fi programate individual ca active pe 0 sau pe 1).
Aplicatii ale PLA sunt la:
- microprogramare;
- conversii de cod;
- generare de caractere;
- realizare de tabele de functii;
- implementarea automatelor secventiale.
Observatie. Exista circuite integrate cu grad si mai mare de integrare (VLSI)
utilizate in implementare. Amintim dintre acestea FPGA (Field Programmable
Gate Array).
2.4. Hazardul combinational
Datorita intarzierilor produse de circuitele logice si de firele
de legatura ale unui CLC se poate ca starea iesirii circuitului in momentul
modificarii starii variabilelor sa nu coincida cu valoarea functiei corespunzatoare
valorii intrarilor in momentul considerat. Pentru timp scurt circuitul
are o comportare gresita, numita hazard.
Exemplu f(x1,x2,x3) = x1 × x3 + x2 × x3 x1 D1 f’ x3 g D3 f x2 D2 x3 h
Diagrama Karnaugh pentru functie este: x1 x2x3 00 01 11 10
0 1 1 1
1 1
In practica intarzierile D1, D2, D3 ale portilor SI-NU nu
sunt egale, de aceea poate sa apara hazardul combinational si cand se
pune conditia ca doar o singura variabila de intrare sa se modifice la un moment
dat.
Hazardul apare atunci cand starea intrarilor x1x2x3 se modifica de la
010 la 011 sau invers.
x1
x2
x3
D1 g
D2 h
f’
f
D3 tr
D2 > D1 desi starea ar trebui sa fie nemodificata.
Dupa timpul de reactie tr = D1 + D2 va apare la iesire un impuls negativ de
durata Dt = D2 - D1 si in aceasta durata iesirea ia o valoare incorecta.
Eliminarea hazardului static se poate face in cazul in care se impune
ca la un moment dat sa se modifice starea unei singure variabile de intrare.
Pentru realizarea functiei se considera si unii termeni redundanti din diagrama
Karnaugh, astfel incat oricare doi de 1 aflati in casute adiacente
in diagrama sa fie inclusi cel putin intr-un contur luat in
considerare la sinteza schemei.
Pentru exemplul dat se va introduce in expresia functiei termenul x1x2. f = x2 × x1 + x3 × x1 + x3 × x2
x1 g D1 x3 f’ x2 h D2 D3 f x3
x1 i Dt x2
x1
x2
x3
D1 g
D2 h i
f’
f
Observatii
1. Hazardul static poate sa apara si cand D1 > D2, la schimbarea 011
in 000.
2. Proiectarea unui CLC cand se schimba mai mult decat o singura
variabila de intrare la un moment dat, fara sa apara hazard, este mai dificila
sau chiar imposibil de realizat (hazard de functie).
3. Eliminarea sigura a hazardului se poate face luand in considerare
iesirea circuitului dupa un interval de timp mai mare decat intarzierea
maxima din circuit.