Sunteți pe pagina 1din 12

3.

EXEMPLE DE PROIECTARE
ca efect, prin cantitatea funqiilor AND generate, cre~terea timpilor de compilare
~i eventual va rezulta 0 implementare eronata. A CIRCUITELOR LOGICE
Daca se scrie expresia eu ajutorul unui semnal intern:
declarations
COMBINATIONALE
,
code 1 found node;
equations - -
code_1_found = (input code 1);
IF code 1 found ..
3.1. Obiective
Eeuatia semnaJului intern este utilizabila ori de cate ori, ea nu va genera
logica excesiva inutila in implementare. In acest capitol vom revizui proiectarea circuitelor combinationale vazuta
o alternativa in crearea semnalelor,,)nterne este utilizarea directivei din diferite aspecte prin exemple de proiectare. in exemplele folosite yom utiliza
@CARRY. Aceasta directiva I~i manifesta efectul asupra comparatoarelor ~i mediul de program are ABEL versiunea 4, XABEL versiunea 6, iar pentru
sumatoarelor prin generarea semnalelor interne pentru bitii de transport (carry), simularea exemplelor vom folosi mediul Foundation V1.3 sau mediul
astfel ca rezulta 0 implementare eficienta ~i ierarhica. easyABEL.
in general recomandam, pe cat este posibil, proiectarea ierarhica, prin Majoritatea circuitelor combinationale se poate grupa in cinci grupe
utilizarea semnalelor interne. Un fitter FPGA este capabil sa transforme un man:
proiect PLD de doua nivele Intr-un proiect FPGA cu niyele multiple. Dar timpul codificatoare ~i decodificatoare;
necesar implemenHirii este mare ~i uneori poate fi eronat. Transcrierea proiectului
multiplexoare;
PLD prin considerarea nivelelor multiple inproiectul FPGA de multe ori reduce
timpul de implementare ~i simplifica descrierea proiectului. comparatoare;
sumatoare ~i circuite logice aritmetice;
latch-uri asincrone.

Vom insista nu numai asupra metodologiei de proiectare dar yom


considera ~i unele functii specifice circuitelor logice programabile (PLD).

3.2. Codificatoare!?i decodificatocue


Codificarea ~i decodificarea sunt doua functii foarte importante In
realizarea proiectelor digitale. Codificarea ~i decodificarea datelor sunt utilizate
intensiv mai ales in comunicatiile digitale ~i in trahsferul de date la.circuitele
periferice. Ambele aplicatii amintite utilizeaza diferite tehnici de codificare ~i
decodificare. Majoritatea tehnicilor utilizate sunt extensii ale codificarii/
decodifidirii simple. Pentru a lntelege tehnica scrierii programelor ABEL ne
vom concentra asupra unor exemple simple.

3.2.1. Codificatoare

Un cod binar de n biti poate fi utilizat pentru reprezentarea a2n


informatii de date distincte. Codificatorul este un circuit combinational simplu,

118 119
!aheM de adeVM a-I deoodi5calmU!ui din figma 3_1 me:
care genereaza la ie~irea sa n biti de date obtinuti pe baza a 2" informatii de date truth_table ([][),C,B,A] -> [C1,CIOI])
unice de intrare. Aceasta codificare a informatilor este controlata de semnale [1OI,IOI,~,l] -> [101, 101];

independente de control rntr-un circuit digital. [101,101,1,101] -> [101, 1];


[101,1,101,101] -> [1. 101];
Un exemplu tipic de codificator este ilustrat rn tigura 3.1. Metodologia [1,101.101,101] -> [1. 1];

de proiectare este efeetuata pe baza tabelului de adevar tabel 3.1, pe baza caruia
" stmile redundanle soot sreIiIlle co mvd logic iO
vorn scrie primul program ABEL tara minimizarea ecuatii10r logiee a carol' @Dcset
forma se poate deduce direct din tabelul de adevar.
"vectorii dell:St penlm rontmluJ. fundioori
A
test_vectors ([D.C.B,A] -> [C1.CIOI])
[101.0.0.11 -> [D. OJ
CO [101,101.1.101] -> [D. 1]
Intrari B - Codificator lesiri [101.1.0,1011 -> [1. 1011
C CI [1,0,101.101] -> [1. 1]
o [1,0.1.,101] -> [101. 101]

end CoOor
FigUnl3.1. Schema bloc a codilicatorului
Rezultatul simularii programului esle dat in ngma 32. Prio analiza arenrn.
a simularii rezulta funcponarea corecrn. coofonn tabeluJui de adem.
TabeI 3.1. Tabelul de adevar al codifieatorului din figura 3.1
Icsiri
n I
X'
CO
0000C
011 1l X' 1
0A

Eeuatiile tabelului de ad evaI' pot fi sintetizate rn forma de mai jos, eu


observatia ea starile X* reprezinta orice aha combinatie care poate apare la
intrare ~i care din punet de vedere al codifieatorului nu este valida. In aeeste
eazuri ie~irea decodifieatorului va fi (0, 0).
Programul XABEL scris pe baza tabelului de adevar este:
module codar
Title 'codificator l'
" program simplu care ralizeaza un decodificator
" programuJ este hardware independent
3.2.2. Codificator de prioritate
" (nu contine declaratia device)
Privit dintr~un alt punct de vedere exemplul dat in tabelul 3_1
Declarations
" cleclaratia pinilor/semnalelor de intrare presupunem cii doar 0 intrare poore loa valoarea logicii 1_Exemplul anterior nn
A PIN; trateazli cazul in care mai mnIte intmi VOT avea simultm valoarea logicii I.Deci
B PIN;
C PIN;
dadi in exemplul precedent apace aceasti situape a1Imci va apare un conflict ill
D PIN; evaluarea semnalelor de iq;ire. Progpmml ABEL trat:eaza acest conflict prill
" declaratia pinilorlsemnalelor de iesire for(:area semnalelor de iq;ire in (0" 0), ceea ce inse3mni intrare actin A -
co PIN istype 'com'; rezultatfuJs. Pentru a rezolva areasm situaPe vom defini prioritarea semnaleloT-
Cl PIN istype 'com';
Astfel dacii la intrlirile codificatoroiui va apare simultan se:moaIul 1 logic,. afimci

121
120
" SCIl1l1alede iesire
conform prioriUitilor, semnalele de ie~ire vor ILIa valorile logice cores- C1 PIN istype 'com';
punzatoare. CO PIN istype 'com';
Codificatoarele de prioritate sunt utilizate pentru controlullntreruperilor X=.X.;
" X Ilotatie illtrodusa pentm simplificarea codificarii "
la sisteme cu microprocesoare. " starilor redundante
Modelul codificatorului de prioritate este aratat In figura 3.2. Ordinea de
prioritate a semnalelor: equations
" tabelul de adevar al decodificatorului
D este semnalLlI CLIprioritatea superioara; " din figura 3.2 este:
truth_table ([D,e,B,A] -> lC1,eO])
A este semnalul cu prioritatea inferioara. [0,0,0,1] -> [0, 0];
[O,O,l,OJ -> [0, 1];
Tabelul de adevar conform acestor modificari este dat In tabelLlI3.2. [0,1,0,0] -> [1, OJ;
[1, 0, 0, OJ -> [1, 1];
[O,O,l,X] -> [0, 1];
A [O,I,X,X] -> [1, 0];
co [l,X,X,X] -> [1, 1];
B Codifieator
C de priori tate CI "vectorii de test pentm controlul functiollarii sunt:
test_vectors ([D.e,B,A] -> [el,CO])
D [0,0,0,1] -> [0, 0]
[0,0,1,0] -> [0. 1]
[0,1,0,0] -> [1, 0]
Figura 3.3. Codilicator de priOlitate cu patm iutrliri [1,0,0,0] -> [1, 1]
[O,O,l,X] -> [0, 1]
[O,l,X,X] -> [1, 0]
[l,X,X,X] -> [1, 1]
TabeI3.2. Tabelul de adevar al codificatorului de prioritate [1,0,1,0] -> [1,1]
nII
A
C HL
HI
1-1* H
L
00X11H*
CO
L*
H* H
L*
C I
1-1* Ie il"i end code2

unde * sLlntprioritatile asignate conform intrarilor ~i X stari redLlndante.

ProgramLlI ABEL conform tabelulLli de adevar este:


module code2
Title 'codificator de prioritate'

coprogram pentrll realizarea codificatorului prioritar


I
" programll este hardware independent
" (nu contine declaratia device) Figura 3.4. Rezultatul simullirii conform tabelului 3.2

declarations
" declaratia pinilorlsemnalelor deiesire/intrare
D PIN;
e PIN;
B PIN;
A PIN;

]22 123
3.2.3. Decodificatoare @alternate
"ecuatile logice conform tabelului de adevar 3.3
100 = IC * IB * IA;
101 = IC * IB * A;
Decodificatorul executa functia inversa a nnni codificator. Converte~te 102 = IC * B * IA;
un code de n bi~i in corespondentul san unic 2'" Circuitul va avea dite 0 ie~ire 103 = IC * B * A;
104 = C * IB * IA;
activa pc 0 corespunzitor codului de intrare (selecpa linilor de ie~ire).
105 = C * IB * A;
106 = C * B * IA;
TabeI3.3. Tabel de adevar al decodorului 3 din 8 linii cu ie~iri active pe 0 107 = C * B * A;
Inkiri 1,
1,
1]
0,
1];
-> [1,
0,
0]
0,; 1];
1,
1,1,1,
1]
1]
->
test_vectors 1,
0, 0];
1,; 1,
[1,
-> 0,[0,
1,1, 1];1,B, A]1,->1, [07,
([C, 0, 06, 05, 04, 03, 02, 01]
A B [1, [1,
[0,
end decodor 0, 0,
1, 0] 1] [1, [1,
-> [1,
-> [0, 1,0, 1,0]
QSIQ6IQ7
I) I)
I I I
I) I)
I I I I
I)
I I I I I
1 I t
I o I I I
I (J
I) I I
1 I
I I I
I
0
I
I
0

Numarul ie~irilor corespunde combinaplor binare la intrarea circuitului.


Corespunzator tabelului de adevar din tabelul33 ecnapile logice sunt:
= Ie IB .~ IA
IrQiIl
IQ1 = Ie .IB .A
IQ2 = Ie . B .IA
IrQ3 = Ie . B .A
IQ4 = e"
IB .IA
IQ5 = C '" IB '" A
IQIl = e . B " IA
lQ1 = C '" B " A

Programul ABEL scris pc baza acestor ecuatii este:


Uodul.e decodor
title "decOOificaitor ] - i@'

Decl.aratioDS
~ declOlrutia scmnalelor de inlI1lre
C, lEi, A pm; Figura 3.5. RczuJtatul simuliirii decodificatorului conform tabelului 3.3
- Semnale de iesire
Oill pm ist:ype COlD.' ;
01 pm ist:ype 'COIR'; Conform simulatiei acest decodificator va lucra coreet.
02 pm ist:ype 'CClIIII.'; Probabil decodificatoarele cel mai des utilizate in sistemele digitale sunt
03 pm ist:ype 'caa'; decodificatoarele de adrese, utilizate in majoritatea sistemelor eu micropro~
04 pm ist:ype com.';
05 pm istype COIII.' ; cesoare. Aceste decodificatoare constituie aplica1iile cele mai frecvente ale
06 pm ist:ype 'com.'; circuitelor PLD.
01 pm ist:ype com.';
o altemativa in defmirea decodificatoarelor este de a Ie privi ca
Equations demultiplexoare, adica conform adresei de selectare vor transmite intrarea de
~ utilizarea directivei alternate:
date la 0 ie~ire selectata prin codul binar dat de semnalele de selectare. Functia
~ oomula setul de opecalori logici standard
~ la 5et1d de operntori altematM: *' 5i, "" or inversa a acestei operatii este multiplexarea. Acesta va fiexemplul urmator.

124 125
3.3. Multiplexoare Programul scris conform tabelului de adevar 3.4 este:
module busmux
Multiplexorul uneori numit selector de date este un circuit combinational Title 'multiplexor 3-1'
" programul realizeaza multiplexarea intrarilor A[3 ..0],
special utilizat pe 0 scara larga. " 8[3 ..0], C[3 ..0);
In mod traditional multiplexoarele se utilizeaza in comunieatii de date " selectarea de adrese se face prin Intrarile II, 10;
pentru multiplexarea in timp a datelor. .
Declarations
Metodologia de proiectare utilizata ~i aid porne~te de la tabelul de " declaratia pinilor de intrare odata cu definirea
adevar reprezentat in tabelul 3.4. Exemplul prezentat in eele ee urmeaza i~i "multimilor A=[A3, A2, AI, AO], B=[B3, B2, B1, BO],
propune sa realizeze un multiplexor de bus cu trei intrari de date: A, B, C, unde "C=[C3, C2, Cl, CO]
A3 AO PIN;
intrarile A, B, C au dimensiunea de 4 biti, iar selectarea intrarilor se face prin A = [A3 . AO);
liniile de selectare Il ~i 12. B3 ..BO PIN;
B = [B3 ..BO];
Ecuatia logica a unui multiplexor eu trei intrari este: C3 ..CO PIN;
y = IB * IA * 10 + IB * A * II + B * IA * 11 C = [C3 ..CO];
" detinirea semnale]or de selectie
11, 10 PIN;
Tabel 3.4. Tabelul de adevar al multiplexorului de bus cu trei intrari de date 1= [11, 10];
" detinirea semnalelor de iesire multiplexor
Adresa de selectie Y3 ..YO PIN istype 'com';
11 I 10 Y = [Y3 ..YO];
o 0 X=.X. ;
o 0
Equations
o 1
" pentru selectia adreselor se utilizeaza intstructiunea
o 1 " when then else
1 0
when 1==[0,0] then Y=A;
1 0 when 1==[0,1] then Y=B;
I 1 when 1==[1,0] then Y=C;
" traterea cazului in 1=3 pentru 0 detinire completa a fUllctiei
when 1==[1,1] then Y=C;
AO " detlnirea vectorilor de test ajuta difierentierea dintre
A1 i
" star Ie se lectate
A2
A3 test_vectors ([II, 10, A, B, Cl -> [Y])
[0, 0, "bOOOO, X, X] -> ["bOOOO]
BO YO [0, 0, "bllll, X, X] -> ["bllll]
B1 Y1 [0, 1, X, "bOOl1, X] -> ["bOOll]
Intrari [0, 1, X, "b1100, X] -> ["b1100]
B2 Multiplexor lesiri
[1, 0, X, X, "bOlOl] -> ["bOlOl]
B3 Y2 [1, 0, X, X, "blOlO] -> ["blOlO]
CO Y3
end busmux
C1
C2
C3

10 11
Selector

Figura 3.6. Modelul Multiplexorului de bus 3-1

126
127
" programul in continuarc este identic conform programullli
" ABEL anterior.
when 1==[O,OJ then Y=A;
when 1==[0,1] then Y=B;
when 1==[1,0] then Y=C;
end busmux

Figura 3.7. Simularca multiplexorului de bus 3-1

Daca analizam programul ABEL scris ne dam seama ca ecua!ia


multiplexorului dat mai sus este realizata mult mai simp1u dedit daca am fi scris
o ecua!ie logica. Pentru ca simularea sa fie cat mai expresiva am ales pentm
intdirile A, B, C semnale cu perioada diferita, astfel ca ie~irea Y va lua valorile
Figura 3.8. Simularea multiplexorului de bus CII 3-1 cu inhibarc pc 1=11,11
semnalelor de intrare corespunzatoare 1a selectarea intrarii respective cu ajutorul
semnalelor de selectare 11, 10. Pentru realizarea multiplexoarelor avem nevoie
de mai multe intrari decat ie~iri, astfe1 vom alege pentru implementarea Din simularea pro gramulu i ABEL astfel intregit putem observa di
multiplexoare1or circuite ai caror pini de intrarefie~ire se pot configura in mod multiplexoru1 va avea starea corespunzatoare - impedanta ridicata - in cazul in
care niei 0 intrare nu este selectata.
corespunzator. La a1egere trebuie sa consideram ~i numarul termenilor produs
care realizeaza multiplexoruL
In exemp1ul dat in cazul in care la selectarea de adrese 1=[1,1] ie~irile vor 3.4. Comparatoare
avea valoarea bus-u1ui C, pentru a evita acest fapt ~i ca multiplexorul sa luereze
in mod coreet, adica pentru 1=[1,1] ie~irea multiplexorului sa fie in starea de Un comparator este un circuit combinational destinat compararii a doua
impedanta ridicata vom pune eondi!iaea inhibarea ie~irii Y sa fie f(ll * 10). numere binare. Tabelul 3.5 arata tabelul de adevar corespunzator unui
Programul ABEL trebuie modifieat astfel: comparator care compara doua numere binare cu dimensiunea de doi Mi, la
Eguaticms ie~irea comparatorului vom obtine rela!ia dintre cele doua numere (mai mic,
@ALTERNATE
egal, mai mare).
"inhibarea iesirilor YdacaIl=1 s110=1
Y OE = / (11 * 10) ;

128 129
II
010
A<B
AO
001
01 BO
001
TabeI3.5. BI100
1BI
000100
0001
1001
10
01 01 LES
A=B
A>B
01GTR
001
00
EQL Tabelul de adevarle$iri
al comparatorului MODULE compara
Title 'comparator';
Intrari
DECLARATIONS
compara device 'p16v8';
AI, AO PIN;
B1, BO PIN;
EQL, LES, GTR PIN;

EQUATIONS
@alternate
EQL = /A1*/AO*/B1*/BO + /A1*AO*/B1*BO + A1*/AO*B1*/BO +
+ A1*AO*B1*BO;
LES = /A1*/AO*/B1*BO + /A1*/AO*B1*/BO + /A1*/AO*B1*BO +
+ /A1*AO*B1*/BO + /A1*AO*B1*BO + A1*/AO*B1*BO;
GTR = /A1*AO*/B1*/BO + A1*/AO*/B1*/BO + A1*/AO*/B1*BO +
+ A1*/AO*/B1*/BO + A1*AO*/B1*/BO+A1*AO*/Bl'*BO+A1*AO*B1*fBO;

TEST_VECTORS ([AI, AO, B1, BO] -> [LES, EQL, GTR])


[0, 0, 0, 0] -> [0, 1, 0];
[0, 0, 0, 1] -> [1, 0, 0];
[0. 0, 1, 0] -> [1. 0, 0];
[0. O. 1, 1] -> [1, 0, 0];
[0, 1. 0, 0] -> [0, 0, 1J;
[0, 1, 0, 1] -> [0. 1, 0];
[0, 1. 1, 0] -> [1. 0, 0];
Comparatorul de baza compara doar egalitatea celor doua numere iar [0, 1, 1, 1] -> [1, 0, 0];
[I, 0, 0, OJ -> [0, 0, 1];
extensia (tabelul de adevar 3.5) acestui comparator de baza numit comparator [1, 0, 0, 1] -> [0, 0, 1];
de magnitudine genereaza la ie~iri toate cele trei semnale: [1. 0, 1, 0] -> [0, I, 0];
[1, 0, I, 1] -> [I, 0, 0];
egal (EQL) - A=B; [I, 1, 0, 0] -> [0, 0, 1];
mai mic [1, 1, 0, 1J -> [0, O. 1];
(LES) - A<B; [I, 1, 1, 0] -> [0, 0, 1];
maimare (GTR)-A>B. [I, 1, I, 1] -> [0, 1, 0];
END compara
Pe baza tabelului de adevar ecuatiile logice se pot deduce uor.
Ecuatiile logice sunt:
@alternate
3.4.1. Minimizarea ecuatiilor
,
EQL = /A1*/AO*/B1*/BO + /A1*AO*/B1*BO + A1*/AO*B1*/BO +
+ A1*AO*B1*BO
Ecuatiile logice scrise In programul ABEL pot fi minimizate prin
LES = fA1*/AO*/Bl*BO + /A1*/AO*B1*/BO + fA1*/AO*B1*BO +
+ fA1*A*B1*/BO + /Al*AO*B1*BO + A1*/AO*B1*BO; comanda Reduce din meniul Optimize. Conditii1e de optimizare pot fi fixate
"minimizat:
prin comanda Options a aceluiai meniu. Conditiile de optimizare sunt
LES = /A1*fAO*BO + /A1*B1 + fAO*B1*BO; "(3.1)
GTR = fA1*AO*/B1*/BO + A1*/AO*/B1*fBO + A1*/AO*/B1*BO +
optimizare pe pin, grup, bistabil sau metoda Quin McCluskey. Am ales optiunea
+ A1*AO*fB1*/BO + A1*AO*/B1*BO + A1*AO*B1*BO implicita. Ecuatii1e logice minimizate din programul sursa sunt:
+ A1*AO*/B1*BO + A1*AO*Bl*/BO
"minimizat: Product Term Usage:
Terms Signal
GTR = A1*AO*/BO + A1*/B1+ A1*AO*/BO; "(3.2)
4 EQL
In acest caz vom omite simularea grafica a programului ABEL realizat, 3 LES
3 GTR
dar vom prezenta foqa programului in minimizarea ecuatiilor. Astfel programul Total: 10 {Total assumes no product term sharing}
ABEL care realizeaza comparatorul este implementat cu ecuatiile ne-
minimizate, tocmai ca minimizarea sa 0 execute programul de compilare. Equations:
EQL = (AI & AO & B1 & BO
# !A1 & AO & lBl & BO
# Al & !AO & B1 & !BO

130 131
!A1 & lAO & !B1 &
if !BO); a
1110
110
1
Oil
o
010
100
o S
L
loa
010
H
110 H
I,
1L
E0 L
RT
aH
1
Q0 LEG
LES = (!A1 & Bl vaoos
VOOO9
VOO03
VOO04
VOO16
VOOIS
VOO14
VOOl3
VOOIO
VOO11
VOO07
VOO08
VOO02
VOO06
VOO12 A1 A0 B
1 Ba
!Al & !AO & BO VOO01
16 out of 16 vectors
poate passed.In PALl6V8
implementa
if
Observam ca toti vectoriisall
decircuitul echivalellt
test au dat rezultat GAL16VS.
corect deci circuitlll se
if !AO & Bl & BO);
GTR = (AI & !Bl
# Al & AO & !BO
# AO & !Bl & !BO);

Se poate observa din lista de program 'minimizat' ca numarul termenilor


prodlls alocati semnalelor EQL, LES, GTR este 4, 3 respectiv 3 termeni produs.
Deci minimizarea s-a desfa~urat conform a~teptariJor noastre.

3.4.2. Alegerea automata a circuitului PLD

Dupa verificarea ~j compilarea programuJui se poate trece la


implementarea circllituJui. Pentru alegerea circuitului In care se va implementa
proiectul digital, putem Jansa programul de alegere a eircuitului, menilll
Database Search din meniul SmartPart, rezultatul aeestei eomenzi se poate
efectua ell ajutorul eomenzii Device Candidates din meniul View. Astfel putem
alege din lista de cireuite PLD:
Eono chip # 3
#
Chiptypes
chip 1
S
types9
11
20
41available
29
2'
types
# 174 1
5
available
available
#(manualchipfitting
types available
only) already counted
18GS
9808
253
18V10G
lSCVS
12P6
204
16VS
14P4
16RP4
173
9S00 P16VPS
5016A
0320
16PS
3.4.3. Generarea documentatiei de implementare

Documentarea implementarii
cireuitului se poate realiza prin comanda
Fitfl'Ol1i List din meniul SmartPart. Documentarea implementarii programului
este (pentru 0 mai buna Intelegere a listei am exclus paginatia):
comparator
---------------------------------------------------------

Module : 'camparal

------------------------------------------------------------

Input files:

ABEL PLA file compara.tt3


Device library P16VSAS.dev
Output files:
Observatie: Report file compara.rep
Programer load file compara.jed
Pentru a obtine lista de circlIite nu am pus nici 0 conditie de constrangere
pentru generarea Iistei.

Daca dorim listarea simlltarii atunci in acest caz 0 yom realiza sub forma comparator
de tabel de adevar: Pl6VSAS Programmed Logic:
----------------------------------------------------------
Simulate Xilinx-ABEL 5.12 Date: Mon Mar 30 23:09:20 1998
Fuse file: 'compara.tt1' Vector file: 'compara.tmv' Part: EQL = !(!Al & B1
'PLA' if Al & lBl
comparator # !AO & BO

132 133
#AO&lBO); Buried Nodes:

LES = (lAl & B 1 Input Reg:


# !Al & !AO & BO pin Reg:
# !AO & BI & BO ); Buried Reg:

GTR = ( Al & lBl


# Al & AO & lBO comparator
# AO & lBI & !BO ); P16V8AS Product Terms Distribution:

comparator
P16V8AS Chip Diagram: --------------------- 55
-------
Signal Unused
-------
-----"--
8 Max3
4Terms4Used
----------
15
19
16
Pin
Assigned
GTR EQL
LES---------------------
Name

P16V8AS

+---------\ /---------+
\ !
==== List of Inputs/Feedbacks
Al 1 20 Vcc Signal Name
-----------------------------
I pin pin Type
-----------------------------
AO 2 19 !EQL Al 1 INPUT
AO 2 INPUT
Bl 3 18 Bl 3 INPUT
BO 4 INPUT
BO 4 17
comparator
5 16 !GTR P16v8AS Unused Resources:

6 15 lLES
pin pin Product Flip-flop
7 14 Number Type Terms Type

8 13 5 INPUT
6 INPUT
9 12 7 INPUT
8 INPUT
GND 10 11 9 INPUT
11 INPUT
12 BIDIR NORMAL 8
13 BIDIR NORMAL 8
SIGNATURE: N/A 14 BIDIR NORMAL 8
17 BIDIR NORMAL 8
comparator 18 BIDIR NORMAL 8

P16V8AS Resource Allocations:


Din fi~ierul rapOli creat putem deduce distributia functiilor logice,
alocarea pinilor pentru semnalele de intrare respectiv ie~ire, cat la suta din
Device Resource Design resursele circuitului au fost consumate etc.
Resources Available Requirement Unused

2o 4 ( 2
I 6I pins:
oInput
%) 3.4.4. Fiierul JEDEC
(5I10
1
60 I %)
6(I %)
83
Input:
In/Out:
Pentru generarea fi~ierului JEDEC, care poate fi transmis
programatorului se lanseaza comanda Simulate JEDEC din meniu\ PartMap.
Fi~ierul JEDEC creat este:
EZ-ABEL 4.32 Data I/O Corp. JEDEC file for: P16V8AS V9.0
Created on: Tue Mar 31 21:22:11 1998

135
comparator
x Conditie de test implicita
*
V En1lll1erarea vectorilor de test Cll valorile aferente acestora
QP20* QF2194* QV16* FO*
XO* (VOOOI OOOOXXXXXNXXXXLLXXHN*)
NOTE Table of pin names and numbers*
NOTE PINS A1:1 AO:2 B1:3 BO:4 EQL:19 LES:15 GTR:16* PINS Secvenla pinitor in circllitul PLD conform nllmaruilli de pini
LOOOO 11100111111111111111111111111111* (PINS Al:l AO:2 B1:3 BO:4 EQL:19 LES:15 GTR:16*)
L0032 11011011111111111111111111111111* *
L0064 10101111011111111111111111111111* Dispozitivul de prograll1aJ-e trebllie sa recunoasca aceste valori
L0096 10110111011111111111111111111111*
L0128 01011111101111111111111111111111*
L0160 01111011101111111111111111111111* Nota:
L0768 11011011111111111111111111111111*
L0800 01011111101111111111111111111111* In cele din urma putem conclude ca la realizarea comparatoarelor
L0832 01111011101111111111111111111111* numarul termenilor produs cre~te in funqie de numarul bitilor care
L1024 11100111111111111111111111111111*
L1056 10101111011111111111111111111111* trebuiesc comparati. Numarul total al termenilor produs necesar pentru
L1088 10110111011111111111111111111111* compararea a doua numere de n-biti este 2" -I. Pentm realizarea
L2048 00011000*
L2128
eficienta a comparatoarelor avem nevoie deci de circuite PLD care ofera
1111111111111111111111111111111111111111111111111111111111111 resurse abundente de termeni produs cu un numar mare de intrari.
111*
L2192 1*
Ecuatii1e rezultante pot fi u~or implementate in circuite PAL, pomind de
V0001 OOOOXXXXXNXXXXLLXXHN* la forma ecuatiilor, care sunt sume de prod use care favorizeaza aceasta
V0002 0001XXXXXNXXXXHLXXLN* imp lementare.
V0003 0010XXXXXNXXXXHLXXLN*
V0004 0011XXXXXNXXXXHLXXLN*
V0005 0100XXXXXNXXXXLHXXLN*
V0006 0101XXXXXNXXXXLLXXHN* 3.5. Sumatoare ~i circuite aritmetice
V0007 o 110XXXXXNXXXXHLXXLN*
V0008 0111XXXXXNXXXXHLXXLN*
V0009 1000XXXXXNXXXXLHXXLN* Sistemele digitale sunt destinate sa realizeze 0 gama larga de functii
V0010 1001XXXXXNXXXXLHXXLN* aritmetice ~i logice_ Prelucrarea informatilor binare necesita ~i circuite
V0011 1010XXXXXNXXXXLLXXHN*
V0012 1011XXXXXNXXXXHLXXLN* aritmetice. Un exemplu elocvent este unitatea aritmetica logica numita $i ALU
V0013 1100XXXXXNXXXXLHXXLN* (Arithmetic Logic Unit) utilizata larg in sistemele cu microprocesor. 0 functie
V0014 1101XXXXXNXXXXLHXXLN* de baza a circuitului ALU este de a executa operatia de adunare intre doua
V0015 1110XXXXXNXXXXLHXXLN*
V0016 1111XXXXXNXXXXLLXXHN* numere binare. Sumatorul binar poseda doua semnale de intrare ~i executa
C36D9* insumarea celor doua numere binare. Sumatorul complet este un circuit de
22B6
insumare a doua numere de 1 bit ~ia unui bit de transport inferior, iar rezultatul
Pentru intelegerea fi~ierului JEDEC, trebuie sa dam unele explicatii. este suma celor trei biti ~i transportul de bit superior. Tabelul de adevar 3.6
Formatul fi~ierului este eel dat anterior cu notatiile: arata un astfel de sumator complet.
TabeI3.6. Tabelul de adevar al sumatorului complet
QF N1lll1aruJ fllzibiJelor (siguranlelor) programabile In circuitul PLD (QF
2194) Intl'ari le i1-i

QP Numarul pinilor In vectorul de test (QP 20) A B CIN V Com


000 o 0
QV N1Ill1arui vectorilor de test (QV 16) o 0 l ] 0
F o l 0 1 0
Starea implicita a sigurantei (FO)
o 1 I o l
L Lista fuzibilelor programabile cu stilrile aterente ~i adresa de la care se va 100 I 0
etectua programarea. (LOOO,L0032, L0064, etc.) I 0 I o I
C Suma de control a tiJzibilelor programabile (C36D9*) 1 I 0 o I
III I 1

137
136
transport a unui sumator complet de 4 biti avem nevoie de 36 de termeni produs
Tabelul de adevar 3.6 este utilizat pentru a forma ecuatiile Boole pentru
iar pentru eel mai semnificativ bit suma Y3 numarul terrnenilor este de 28.
suma Y ~i transportul de bit superior Caul"
Pentru a demonstra corectitudinea functiilor logice realizate yom
@alternate
Y = A*/B*/cin + /A*/B*Cin + A*B*Cin + /A*B*/Cin; "(3.3)
implementa un surnator de 3 biti. Programul realizat va folosi ecuatiile
Cant = A * Cin + A * B + B * Cin; "(3.4) prezentate anterior (3.5-3.7) respeetiv (3.9-3.11):
module ADDER
Prin conectarea In cascada a unui astfel de sumator putem realiza Title 'ADDER'
sumatoare eare realizeaza Insumarea a unor numere fomie mari. Acest fapt se
Declarations
realizeazaprin conectarea ie~irii de transpOli superior la urmatoarea intrare de
"intrare bit transport interior
transport inferioara. A vantajul aeestor sumatoare este ca pot fi conectate oricate eIN PIN;
In eascada, dar aeesta este ~i clezavantajul deoareee uneori bitul de transpOli A2 ..AO PIN;
B2 ..BO PIN;
provenind de la bitul eel mai putin semnifieativ "eaIatore~te"de-a lungul Y2 ..YO PIN istype com' ;
sumatorului astfel ca rezultatul va apare Intarziat cu timpul de propagare neeesar "sllma eelor dOlla numere A+B este Y
aeestei "dilatorii" de transport Cum cireuitele FPGA favorizeaza propagarea Y = [Yl. .YO];
"transport de bit superior
rapida a bitilor de transport este util sa prezenHim un sumator cu propagare eOUT PIN istype 'com';
rapida al bitului de transport. "variabile intermediare
Transcriind ecuatia (3.3) respectiv (3.4) yom avea: e2 .. eo NODE;

@alternate Equations
YO = AO:+:BO:+:Cin;
CO = AO*BO+(AO+BO)*Cin; @ALTERNATE
CO = AO*BO + (AO+BO) *CIN, "(3.9)
Prin extinderea eeuatiilor YOm obtine direct ecuatiile unui sumator Cl = Al*B1 + (A1+Bl) * (AO*BO) + (A1+Bl) * (AO+BO) *CIN; "(3.10)
C2 = A2*B2 + (A2+B2)*(A1*Bl)+ (A2+B2)*(Al+Bl)*(AO*BO)+
general de n-biti: (A2+B2) * (Al+Bl) * (AO+BO) *CIN; "(3.11)
YO = AO:+:BO:+:Cin, "(3.5) "Suma eelar dOlla numere Y=A+B
Yl = Al:+:Bl:+:CO; "(3.6) YO = AO:+:BO:+:CIN; "(3.5)
Y2 = A2:+:B2:+:Cl; "(3.7) Yl = Al:+:Bl:+:CO, "(3.6)
Y3 = A3:+: B3 :+: C2; "(3.8) Y2 = A2:+:B2:+:cl; "(3.7)
COUT = C2,
uncle:
end ADDER
CO = AO*BO + (AO+BO)*Cin; "(3.9)
Cl = Al*Bl + (Al+Bl)*(AO*BO) + (Al+Bl) *(AO+BO) *Cin, "(3.10)
C2 = A2*B2 + (A2+B2)*(A1*B1) + (A2+B2) *(A1+B1)* (AO*BO) +
Simularea programului anterior se poate verifiea prin analiza atenta a
+ (A2+B2)*(Al+B1) * (AO+BO) *Cin; "(3.11) simularii programului ABEL (vezi figura 3.9).

In general eeuatiiJe sumatorului sunt:


Yn = An:+:Bn:+:Cn-1
Cn-I= An-I*Bn-1 + (An-I+Bn-l)* (An-2*Bn-2) + ... +
+ '" + (An-I+Bn-l) * ... * (AO+BO)*Cin

Jar In final bitul de transport superior este:


Cn = An*Bn + (An+Bn) * (An-I * Bn-I) +
+ (An+Bn) * (An-I+Bn-l) * (An-2*Bn-2) + ...+
+ ... + (An+Bn)* ... *(AO+BO)*Cin

Aeeste eeuatii sunt In esenta eellatiile logiee ale llnei unitati aritmetiee
logiee. Numarul termenilor produs neeesar pentru implementarea unui astfel de
sumator "carry-look-ahead" este enorm. Numai pentru realizarea bitului de

]39
138
TabeI3.7. Tabel de adevar allatch-ului
In ut EN
110 01Q Output
X10 D

Ecuatia logica ce realizeaza aceasH't functie se poate deduce din tabelul


de adevar 3.7:
@alternate
Q = D~EN + Q~!EN

Implementarea logica pentru acest circuit este data in figura 3.10.

D
EN
Q

Figura 3.9. Rezultatele simullirii sumatorului de 3 hiti

3.6. Latch-uri
Circuitele PLD sunt deseori utilizate pentru implementarea latch-urilor.
Unul din motivele uti Iizarii latch-urilor este faptul ca realizeaza stocarea Figura 3.10. Latch trausparent
temporara a informatilor sau a adreselor. Latch-urile implementate in PLD sunt
adeseori utilizate in decodificatoare de adrese, pentru a pastra stare a semnalului
decodificat pe 0 perioada mai tunga. Latch-urile sunt la fel de utile ~i in
circuitele asincrone pentru control sau in functii de arbitraj.
In esenta un latch este un circuit combinational a carui ie~ire realizeaza 0
bucla de reactie la intrarea circuitului. Latch-ul cel mai utilizat este de tip D, a
carui functionare este aratata in tabeluI3.7.
Functionarea este relativ simpUi:

Cand semnalul de inhibare (EN) ia valoarea HIGH, latch-ul lucreaza In


"mod transparent", iar propagarea semnalului de intrare D este permisa.
In momentul in care semnalul de inhibare va lua valoarea logica LOW
semnalul de intrare este inhibat, ~i propagarea sa este retinuta pan a cand
EN va lua din nou valoarea HIGH.

Un exemplu tipic de utilizare ar fi decodificatorul de adrese: semnalul de


intrare va fi combinatia semnalelor de intrare (adrese ~i semnale de control).
Din tabelul de adevar 3.7 putem deduce in mod direct descrierea
functionala a latch-ului.

140 141