PROIECTAREA LOGICĂ A CIRCUITELOR COMBINAŢIONALE. APLICAŢII.
III. Sumator pe 8 biţi
III.1. Scopul lucrării
Să se prezinte, implementeze şi simuleze un circuit
sumator care adună doi vectori de câte 8 biţi fiecare.
III.2. Descriere teoretică a lucrării
Însumarea cifrelor binare este cea mai frecventă
operaţie de prelucrare a datelor. Respectând algoritmul
general de însumare a oricăror două numere (în binar sau în
altă bază), operaţia se execută în mod repetat pentru fiecare
pereche de cifre, pornind de la poziţia cea mai puţin
semnificativă înspre cea mai semnificativă (altfel spus de la
dreapta spre stânga, considerând sistemul de numeraţie
arab), ţinând cont de transportul generat pe fiecare poziţie.
Pe baza acestei funcţionări, putem defini
semisumatorul elementar ca fiind un circuit logic combinaţional
care adună două numere de un bit A şi B, generând suma lor
S şi transportul T către rangul următor.
Obţinem astfel următorul tabel de adevăr:
A B S T
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
Din tabelul anterior, putem scrie ecuaţiile logice pentru
semisumator:
S = AB + AB = A �B
T = AB
33
ERICA MANG, IOAN MANG, CONSTANTIN POPESCU
Schema pentru semisumatorul elementar arată în
modul următor:
Fig. 3.1. Schema logică a semisumatorului elementar
Se poate observa că semisumatorul prezintă un
dezavantaj critic: nu putem efectua însumarea ţinând cont de
transportul de pe rangul anterior, chiar dacă el a fost generat.
Astfel, este necesară construirea unei logici în care să ţinem
cont şi de transportul anterior, rezultând circuitul sumator
pentru un rang. Acesta adună două numere binare pe un bit
împreună cu un bit transport de intrare generează suma şi
transportul spre rangul următor.
Având 3 biţi de intrare, vom avea 23=8 linii în tabelul de
adevăr, cuprinzând toate posibilităţile. Notăm cu A şi B cei doi
biţi de însumat, cu Tin transportul de pe rangul anterior (de
intrare) şi cu Tout transportul generat pentru rangul următor (de
ieşire).
A B Tin S Tout
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
34
PROIECTAREA LOGICĂ A CIRCUITELOR COMBINAŢIONALE. APLICAŢII.
Din tabelul de adevăr rezultă forma canonică ale expresiei
sumei:
S = ABTin + ABTin + ABTin + ABTin
Această ecuaţie se poate aduce prin factorizare la o
formă mai simplă, realizabilă cu mai puţine elemente de
circuit. Menţinerea unui număr minim de niveluri logice este
foarte importantă deoarece timpul efectuării operaţiei sumă
trebuie să fie cât mai mic. Astfel, timpul de efectuare a
operaţiei are prioritate asupra numărului de porţi utilizate,
preferându-se implementarea cu întârzierea cea mai mică. În
urma factorizării, obţinem o formă foarte des utilizată:
S = A �( B �Tin ) = ( A �B ) �Tin
Implementarea ecuaţiei de mai sus are următoarea schemă:
Fig. 3.2. Schema logică a sumei folosind porţi SAU-EXCLUSIV
Timpul de întârziere pentru o poartă SAU-EXCLUSIV
este de 18 ns, astfel timpul de răspuns al circuitului va fi de 36
ns. Dacă realizăm circuitul cu porţi ŞI-NU, atunci timpul de
răspuns va fi de 24 ns, deci implementarea folosind porţi ŞI-
NU este mai avantajoasă ca timp de răspuns. Într-adevăr,
poarta ŞI-NU este considerată „poartă universală”, orice altă
poartă putând fi construită din astfel de elemente. În cazul
porţii SAU-EXCLUSIV, avem următoarea schemă echivalentă:
35
ERICA MANG, IOAN MANG, CONSTANTIN POPESCU
Fig. 3.3. Schema logică a sumei folosind porţi ŞI-NU
Pentru implementarea cu porţi ŞI-NU se porneşte de la
forma canonică disjunctivă a expresiei sumei şi se neagă de
două ori, calculând o negaţie cu teoremele lui De Morgan.
Obţinem astfel:
S = ( ABTin ) �
( ABTin ) �( ABTin ) �( ABTin )
Observăm că pentru a păstra 2 nivele logice sunt
necesare atât variabilele de intrare directe, cât şi cele negate.
Dacă am folosi inversoare pentru a nega variabilele, acestea
ar introduce la rândul lor întârzieri diminuând sau anulând
avantajul construirii circuitului numai pe logică ŞI-NU. Astfel,
obţinem o schemă de complexitate mai mare dar care prezintă
un timp de răspuns mai mic:
Fig. 3.4. Schema logică a sumei cut timp de răspuns minim
36
PROIECTAREA LOGICĂ A CIRCUITELOR COMBINAŢIONALE. APLICAŢII.
Propagarea transportului are o importanţă majoră, de
asemenea. Transportul pe un rang are expresia:
Tout = ABTin + ABTin + ABTin + ABTin
Putem aduce expresia transportului la o formă mai
simplă fie prin factorizare, fie utilizând diagrame Veitch –
Karnaugh:
Se observă imediat grupările care se pot realiza pe
diagramă cu scopul minimizării funcţiei:
În urma minimizării obţinem expresia:
Tout = AB + ATin + BTin
Ecuaţia de mai sus de poate implementa cu porţi ŞI
respectiv SAU după cum urmează:
37
ERICA MANG, IOAN MANG, CONSTANTIN POPESCU
Fig. 3.5. Schema logică a transportului
Pentru sinteza cu porţi ŞI-NU, vom utiliza ecuaţia:
Tout = ( AB ) �
( ATin ) �
( BTin )
Schema pentru ecuaţia de mai sus este următoarea:
Fig. 3.6. Schema logică a transportului folosind porţi SI-NU
În cazul unui sumator de 8 biţi, cea mai simplă
abordare a problemei o reprezintă punerea în serie a 8
sumatoare pe 1 bit. Astfel, vom executa operaţia de sumă
asupra fiecărei perechi de biţi, iar transportul se propagă în
cascadă sau în serie.
Schema constă în amplasarea de 8 ori a sumatorului
descris mai sus, numit sumator complet pentru un rang.
Transportul generat pe fiecare rang devine transport de intrare
pentru rangul următor. Din acest motiv, însumarea într-un rang
superior se poate face doar după primirea transportului din
38
PROIECTAREA LOGICĂ A CIRCUITELOR COMBINAŢIONALE. APLICAŢII.
rangul inferior. Cazul cel mai dezavantajos este acela când
transportul se propagă de la un capăt la celălalt al sumatorului.
Timpul de efectuare al adunării tad şi timpul de propagare al
transportului tpT sunt date de relaţiile:
tad = ( n - 1) tT + tS
t pT = n �
tT
Am notat cu tS timpul de efectuare al adunării şi t T
timpul necesar obţinerii transportului într-un rang, n fiind rangul
maxim (8 în cazul nostru). Schema-bloc pentru sumatorul
serie este:
Fig. 3.7. Schema bloc a sumatorului serie
O altă modalitate de a implementa un sumator pe mai
multe ranguri o reprezintă sumatorul paralel. Acesta este un
circuit logic combinaţional care însumează doi operanzi binari
aplicaţi în paralel la intrările Ai şi Bi (i=1..8 în cazul de faţă) şi
un bit de transport Ti, generând la ieşire suma Si şi transportul
T0. Circuitul este compus din sumatoare elementare pentru
însumarea biţilor Ai şi Bi. Fiecare sumator elementar primeşte
de la rangul inferior transportul Ti şi generează spre blocul de
rang următor Ti-1.
Funcţiile transport trebuie realizate pentru acelaşi rang
practic în acelaşi timp şi pentru toate valorile variabilei de
intrare de rang inferior.
Ti -1 = Ai Bi + AT
i i + BiTi � Ti -1 = f ( Ai , Bi , Ti )
Pentru transportul simultan trebuie să avem:
39
ERICA MANG, IOAN MANG, CONSTANTIN POPESCU
Ti -1 = f ( Ai , Bi , Ai +1 , Bi +1 ,K , A8 , B8 , T8 )
O schemă ca rezultat al unei astfel de funcţii devine
foarte laborioasă. Crescând numărul de poziţii binare devine
imposibil de realizat pe 2 niveluri logice, astfel propagarea nu
mai este simultană pentru toate rangurile.
Cunoscând T4, pentru patru ranguri binare câteva din
expresiile transportului sunt:
T3 = A4 B4 + A4T4 + B4T4
T2 = A3 B3 + A3 A4 B4 + A3 A4T4 + A3 B4T4 + B3 A4 B4 + B3 A4T4 + B3 B4T4
Continuând în acest fel, expresiile devin foarte
complicate. Pentru simplificare, obţinând totodată şi o
propagare mai rapidă decât la propagarea serie şi mai
economică decât la cea simultană, în practică este folosit
principiul anticipării transportului pentru toate poziţiile binare
ale sumatorului sau pentru anumite părţi ale acestuia.
Anticiparea este realizată utilizând mai multe niveluri
de circuite logice ale transportului simultan. În vederea
realizării schemei considerăm formele factorizate ale
transportului pentru un rang, din cazul sumatorului cu
propagarea în serie a transportului. Forma canonică este:
Ti -1 = Ai BiTi + Ai BiTi + Ai BiTi + Ai BiTi
Forma minimă disjunctivă este:
Ti -1 = Ai Bi + AT
i i + Bi Ti
Relaţia mai poate fi scrisă astfel:
Ti -1 = Ai Bi + Ti ( Ai Bi + Ai Bi )
Relaţia se mai poate scrie:
40
PROIECTAREA LOGICĂ A CIRCUITELOR COMBINAŢIONALE. APLICAŢII.
Ti -1 = Ai Bi + Ti ( Bi + Ai )
Se poate constata că transportul pentru rangul superior are
două componente: prima Gi = Ai Bi ce reprezintă condiţia de
producere a transportului în rangul i şi a doua Pi = Ai Bi + Ai Bi
*
respectiv Pi = Bi + Ai care reprezintă condiţia de propagare
pentru rangul i. Poate fi folosită oricare din cele două expresii
pentru condiţia de propagare.
Dacă în expresiile şi înlocuim succesiv transportul Ti,
se ajunge la forma generală a transportului anticipat. Notăm
cu Pi funcţia de propagare.
Ti -1 = Gi + Gi +1 Pi + Gi + 2 Pi +1 Pi + Gi +3 Pi + 2 Pi +1 Pi + K + Tn Pn -1Pn -2 K Pi + 2 Pi +1Pi
Se poate observa că şi această expresie devine
complicată atunci când numărul de poziţii binare este mai
mare. În practică se aplică principiul anticipării transportului
pentru patru sau mai multe poziţii binare.
Pentru 4 poziţii binare notate 1, 2, 3, 4 expresiile vor
avea următoarea formă:
T4 cunoscut
T3 = G4 + T4 P4
T2 = G3 + G4 P3 + T4 P4 P3
T1 = G2 + G3 P2 + G4 P3 P2 + T4 P4 P3 P2
T0 = G1 + G2 P1 + G3 P2 P1 + G4 P3 P2 P1 + T4 P4 P3 P2 P1
Cu această formă realizăm un circuit integrat pentru
anticiparea transportului.
Schema-bloc pentru un sumator paralel cu 4 ranguri
construit după acest principiu arată ca în schema următoare:
41
ERICA MANG, IOAN MANG, CONSTANTIN POPESCU
Fig. 3.8. Schema bloc pentru un sumator paralel cu 4 ranguri
La nivel de porţi logice, schema pentru un rang arată în
felul următor:
Fig. 3.9. Schema logică pentru un sumator paralel cu 4 ranguri
42
PROIECTAREA LOGICĂ A CIRCUITELOR COMBINAŢIONALE. APLICAŢII.
Pentru a elimina timpul de inversare se realizează în
paralel atât funcţiile directe cât şi cele negate. În cazul cel mai
avantajos am putea obţine un timp de întârziere echivalent cu
*
cel pentru 6 niveluri logice. Trebuie să remarcăm că funcţia Pi
este mai avantajoasă deoarece poate fi realizată pe un singur
nivel logic. Dacă se foloseşte condiţia de propagare a
*
transportului sub forma Pi = Bi + Ai , expresia sumei trebuie
scrisă folosind ecuaţia Si = Ai BiTi + Ai BiTi + Ai BiTi + Ai BiTi .
Dorim să scriem Si în funcţie de Gi = Ai �
Bi şi Pi * = Bi + Ai .
Avem:
Gi = Ai + Bi �
� *
*
�� Pi = Pi �Gi
Pi = Ai �Bi �
Deci:
Si = PT *
( *
) *
(*
i i + Ti Pi = Pi GiTi + Pi Gi Ti = Pi GiTi + Pi + Gi Ti)
Atunci când numărul de poziţii binare este mai mare ca 4, se
pune problema transportului între grupe. Există 2 alternative:
a) se consideră transportul obţinut în grupa inferioară, ca
transport iniţial pentru grupa de rang imediat superior.
În acest caz sumatorul deveni un sumator paralel cu
propagarea transportului în serie între grupe. Timpul de
adunare va fi determinat de timpul de propagare a
transportului până la ultima grupă ( m - 1) tTG plus
timpul de efectuare al sumei pe grupă t SG , m fiind
numărul de grupe:
tad = ( m - 1) tTG + t SG
b) cu anticiparea transporturilor între grupe. În acest caz
transportul iniţial pentru fiecare grupă, cu excepţia celei
43
ERICA MANG, IOAN MANG, CONSTANTIN POPESCU
dintâi, se obţine printr-o schemă de anticipare a
transportului, similară cu cea din cadrul grupei.
III.3. Implementarea practică a sumatorului serie pe 8 biţi
Pentru implementare vom considera 8 sumatoare de 1
bit conectate în serie. Executăm implementarea în Xilinx ISE
8.1i, utilizând editorul de schemă. În vederea eficientizării
lucrului, vom proiecta iniţial sumatorul pe un rang, urmând
apoi a-l defini ca simbol în Xilinx pentru a putea fi utilizat pe
scară largă, astfel putând utiliza 8 simboluri conectate mai
departe la nivel de schemă-bloc între ele.
Pasul 1: Ca un prim pas, trasăm segmente mici de fire,
neconectate, la capetele cărora plasăm pinii de intrare şi de
ieşire, redenumindu-i apoi corespunzător:
44
PROIECTAREA LOGICĂ A CIRCUITELOR COMBINAŢIONALE. APLICAŢII.
Pasul 2: Implementăm sumatorul cu porţi ŞI, SAU respectiv
SAU-EXCLUSIV. Plasăm porţile pe cele 2 nivele logice, ca în
imagine:
Pasul 3: Conectăm porţile la intrări şi ieşiri conform ecuaţiilor
logice, astfel obţinând sumatorul pe un rang:
45
ERICA MANG, IOAN MANG, CONSTANTIN POPESCU
Pasul 4: Utilizăm comanda „Implement Top Module” pentru a
implementa proiectul nostru. În urma efectuării unor operaţii,
Xilinx ISE ne va genera următorul raport:
Pasul 5: Bazându-ne pe schema sumatorului pe un rang, vom
crea un simbol-bloc pe care îl vom înseria ulterior:
46
PROIECTAREA LOGICĂ A CIRCUITELOR COMBINAŢIONALE. APLICAŢII.
Pasul 6: Simbolul-bloc creat, denumit sumator arată astfel:
Pasul 7: Odată creat simbolul, aşezăm cele 8 sumatoare câte
4 pe două coloane, ca în imaginea de mai jos:
47
ERICA MANG, IOAN MANG, CONSTANTIN POPESCU
Pasul 8: Legăm cu fire cele 8 sumatoare, astfel încât
transportul de ieşire Cout al unui sumator să fie transport de
intrare Cin pentru sumatorul de pe rangul următor. De
asemenea, trasăm firele la care vom conecta în final pinii de
intrare şi de ieşire ale schemei:
Pasul 9: În final plasăm pinii, aranjându-i (opţional) într-un
mod sugestiv:
48
PROIECTAREA LOGICĂ A CIRCUITELOR COMBINAŢIONALE. APLICAŢII.
Pasul 10: Implementăm schema de ansamblu utilizând
comanda „Implement Top Module” din meniul Process. Xilinx
ISE ne furnizează următorul raport:
Pasul 11: Pentru simulare am folosit simulatorul ModelSim de
la Xilinx, încorporat în Xilinx ISE. Simularea s-a efectuat pe
schema sumatorului pe 8 biţi şi schema sumatorului pe un
rang. În cazul sumatorului pe un rang, introducem valorile de
intrare conform tabelului de adevăr. La schema de ansamblu
introducem aleator valori logice pentru cele 8 perechi de
intrări, deoarece un tabel de adevăr exhaustiv pentru toate
cazurile generate de numărul intrărilor ar presupune o
cantitate mare de muncă ce nu ne demonstrează acurateţea
dispozitivului într-o măsură mai mare.
Rezultatele simulărilor sunt după cum urmează:
49
ERICA MANG, IOAN MANG, CONSTANTIN POPESCU
Sumator pe un rang
Sumator pe 8 biţi
III.4. Teme propuse
a) Să se implementeze şi apoi simuleze cicuitul
sumator serie pe 16 biţi.
b) Să se implementeze şi apoi simuleze cicuitul
sumator paralel pe 8 biţi.
50