Sunteți pe pagina 1din 8

Curs 12

CAPITOLUL IV
PROIECTAREA SISTEMELOR NUMERICE CU
DISPOZITIVE PROGRAMABILE
4.1. Metodologii generale de proiectare a sistemelor
numerice
4.1.1. Proiectarea clasic
S recapitulm etapele fluxului de proiectare n varianta clasic.
- se ncepe cu o specificaie;
- se construiete o diagram bloc;
- se separ seciunile organigramei, dup care se detaliaz fiecare
pn cnd se atinge nivelul corect al designului logic;
- se integreaz piesele; n caz c exist un produs software
dezvoltat anume pentru gestionarea sistemului, acesta este
momentul cnd se va utiliza;
- se creeaz prototipul, care este depanat i corectat cu ajutorul
softului; adeseori, prototipul nu funcioneaz la viteza proiectat
i trebuie reexaminat pentru diverse corecii (de exemplu gtuiri
- bottlenecks);
- se realizeaz fizic sistemul pe plac (PCB - Printed Circuit
Board); i aici apar de multe ori corecii care trebuie efectuate,
aspecte impuse de condiiile fizice de realizare a PCB-ului.
Deci revenirile multiple n procesul de proiectare clasic constituie
regula, nu excepia. Procesul de proiectare este astfel costisitor din punct
de vedere al timpului (circa 6-12 luni pentru sisteme de 500-1000 de
circuite integrate (capsule)).
4.1.2. Proiectarea cu dispozitive programabile
Noul scenariu de proiectare, cu dispozitive programabile, este
urmtorul:
- se pornete i aici tot de la specificaie;
- sistemul este apoi partiionat n blocuri mari (memorii,
microprocesoare, dispozitive logice programabile, FPGA-uri
sau CPLD-uri i logic de interfaare);
- se formuleaz o descriere de nivel nalt a sistemului, folosinduse un editor schematic sau un limbaj de descriere hardware
abstract (de exemplu, VHDL sau ABEL);

- ntregul sistem este simulat - nlocuindu-se astfel vechea faz


de prototip;
- se creeaz lista de componente (netlist) a sistemului;
- netlista este folosit la realizarea PCB-ului; n timpul realizrii
fizice a PCB-ului, simularea mai este rafinat.
n acest tip de proiectare cele mai multe modificri, dac nu chiar
toate, apar n software, n PLD-uri sau n FPGA, nu n interconexiuni sau
n componente secundare.
Dac designul a fost bine conceput, el poate fi reproiectat cu
matrici de pori, pentru a maximiza profitul la producia de serie mare.
Folosirea intensiv a circuitelor FPGA este o modalitate foarte
eficient de proiectare a sistemelor numerice. FPGA-urile permit
proceduri de realizare fizic foarte rapide i modificri chiar mai rapide
ale designului, cu condiia s fie corect folosite. Cheia succesului lor este
time-to-market-ul (timpul de la conceperea abstract a unui proiect pn
la realizarea sa efectiv) foarte rapid.

4.2. Definiia i structura unui circuit FPGA


4.2.1. Completitudine funcional
Un concept de baz n nelegerea FPGA-urilor este
completitudinea funcional. Se tie c orice funcie poate fi realizat
pornind de la o sum de produse. Dac un singur tip de poart logic este
capabil de a forma o sum de produse, atunci spunem c are proprietatea
de completitudine funcional. Asta nseamn c orice funcie boolean
poate fi realizat folosindu-se numai acel tip de poart logic. n
consecin este avantajos s avem multe pori de tipul respectiv.
Calitile eseniale pentru completitudinea funcional sunt:
- cu ajutorul porii respective s poat fi construit funcia logic I;
- cu ajutorul porii respective s poat fi construit funcia logic NU
sau:
- cu ajutorul porii respective s poat fi construit funcia logic SAU;
- cu ajutorul porii respective s poat fi construit funcia logic NU.
Nu este nevoie s impunem realizarea simultan a funciilor I i
SAU, deoarece, dac se poate realiza funcia NU, atunci, folosind
teoremele lui De Morgan, se poate obine i funcia care lipsete.
4.2.2. Funcii universale
Funciile universale sau generatoarele de funcii sunt blocuri
logice care pot fi configurate astfel nct s realizeze orice funcie logic
de intrrile blocului. Exist mai multe tipuri de astfel de blocuri logice.
Cele mai cunoscute sunt memoriile (ROM, RAM, PROM, EPROM i
EEPROM) i multiplexoarele. Toate aceste blocuri pot realiza funcii,
2

formnd tabelele lor de adevr. FPGA-urile sunt adeseori construite pe


baza unor blocuri constructive care sunt funcii universale.
S lum exemplul unui multiplexor 4:1. Ecuaia ieirii este
urmtoarea:
DATAOUT = S1S0D0 + S1S0D1 + S1S0D2 + S1S0D3
D3
D2
D1
D0

S1
0
0
1
1

DATAOUT

S1 S0

S0
0
1
0
1

DATAOUT
D0
D1
D2
D3

Examinnd fie tabelul de adevr al multiplexorului, fie ecuaia


ieirii, obinem:
- dac D0 = D1 = D2 = 0 i D3 = 1, atunci funcia DATAOUT va fi
S1 S0, adic I logic;
- dac D0 = 0 i D1 = D2 = D3 = 1, obinem DATAOUT = S1+S0,
adic SAU logic;
- dac D0 = D2 = 1 i D1 = D3 = 0, obinem DATAOUT = S0, adic
NU logic.
Aceste observaii arat c multiplexorul este complet funcional. El
este i universal pentru c poate forma orice funcie de cele dou variabile
de intrare S0 i S1 (seleciile) prin setarea valorilor lui D din tabelul de
adevr la 0 sau la 1 logic.
Analog, un multiplexor 8:1 poate realiza orice funcie de 3
variabile de intrare, iar un multiplexor 16:1 poate realiza orice funcie de
4 variabile etc.
O celul care are proprietatea de completitudine funcional poate
realiza orice funcie logic combinaional folosind una sau mai multe
copii ale sale.
O funcie logic universal poate face acelai lucru, dar s-ar putea
s necesite mai puine celule. Aici presupunem c celula universal are
suficiente intrri pentru a fi eficient, ceea ce poate s nu fie ntotdeauna
adevrat. Unele FPGA-uri folosesc ca blocuri constructive celule
universale, altele folosesc celule funcional complete.
4.2.3. Definiia circuitului FPGA
Un FPGA este o colecie de elemente logice cu completitudine
funcional sau universale plasate ntr-o reea de interconectare.
Unele FPGA-uri arat ca nite matrici de celule bidimensionale, cu
canale de interconectare orizontale i verticale ntre celule. Altele arat ca
3

nite pori logice mpreun cu matrici programabile, cu reacie invers,


similare PLD-urilor obinuite. Pentru a face distincia ntre ele, primele
au fost numite FPGA-uri, iar celelalte - CPLD-uri (Complex
Programmable Logic Device); sau arhitecturi cu canale de rutare i
respectiv arhitecturi foldback.
Celula

Canal de rutare
Conexiuni
programabile

Matrice de pori SAU

Buffer

OE

PIN(I/O)

Calea de reacie

Matrice de pori SI

Arhitecturi FPGA i CPLD (foldback)


S lum un exemplu de arhitectur FPGA pe care s o construim pe
baz de multiplexoare. Pornim de la un multiplexor de tip 8:1.
D7
D6
D5
D4
D3
D2
D1
D0

MUX
8:1

DATAOUT

S2 S1 S0

Dac FPGA-ul ar fi construit numai pe baz de multiplexoare 8:1,


bistabilele ar fi greu de implementat i preul realizrii lor ar fi mult prea
mare. O practic uzual const n a face celula universal (sau funcional
complet) s aib ieirea legat direct la intrarea unui bistabil D, care
basculeaz pe front, obinndu-se astfel o celul hibrid, care conine i
un bistabil. Aici apare n continuare o problem: toate funciile
combinaionale sunt obligate s foloseasc i bistabile D.
D7
D6
D5
D4
D3
D2
D1
D0

MUX
8:1

DATA

CP QN

S2 S1 S0

Multiplexor cu ieire prin registru


Soluia cea mai folosit const n a aduga nc un multiplexor n
celul, permind multiplexorului s conduc direct intrarea D a
bistabilului sau s-l ocoleasc pentru a "iei" n exterior. Acum, structura
blocului constructiv este rezonabil din multe puncte de vedere. El poate
forma orice funcie combinaional de trei variabile i poate, de
asemenea, forma funcii secveniale realizate cu bistabile D. n figur se
prezint celula final, mpreun cu simbolul ei. De notat c intrrile de
date nu sunt scoase n afara celulei. Numai ceasul i 4 intrri de selecie
sunt intrri pentru formarea funciilor logice, ceea ce reduce considerabil
numrul de conexiuni externe necesare implementrii de funcii logice.
D7
D6
D5
D4
D3
D2
D1
D0

D0
01
MUX
8:1

DATA

D1
D

CP QN

S2 S1 S0

S2
S1
S0
CLOCK
SELECT

Celula logic constructiv de baz

D7
D6
D5
D4
D3
D2
D1
D0
S2
S1
S0
CLK
SEL

OUT

S2
S1
OUT
S0
CLK
SEL

Simbolul celulei de baz

Celula de baz a unui FPGA cu blocuri logice universale


S vedem acum cum pot fi interconectate aceste celule. Potrivit
celor expuse anterior exist dou moduri fundamentale de a realiza
interconectarea: prin canale de rutare sau prin matrice programabil de
tip foldback, cu reacie invers.

S2
S1
S0

S2
S1
S0

S2
S1
S0

S2
S1
S0

S2
S1
S0

Sel

Sel

S2
S1
S0

S2

S2

S2

S2

S1
S0

S1
S0

S1
S0

S1
S0

S0

Sel

Sel

S2
S1

Sel

Sel

S2
O

S1
S0

Sel

Sel

S2
S1
S0

S1
S0

Sel

Sel

S2
S1
S0

S0
Sel

S0
Sel

S0

Sel

Sel

Sel

S2
S1
S0

S1
S0

S0
Sel

S2
S1
S0

Sel

Sel

Arhitectur FPGA cu canale de rutare a semnalelor inter-celulare


6

S2

Sel

S2
S1

Sel

Sel

Sel

S2

S2

S2
S1

S2
S1

S1
S0

S1
S0

S2
S1

S2
S1
S0

S2

S2

Sel

Sel

S1
S0

S1
S0

Sel

Sel

S2

S2

S1
S0

S1
S0

Sel

S2

Sel

Sel

S2
S1
S0
Sel

Semnalele intr n structura din figur prin buffere de intrare,


ajungnd la liniile verticale i orizontale. n toate punctele de intersecie a
unei linii orizontale cu una vertical se poate realiza o conexiune. Valorile
logice de pe liniile de intrare (de date) ale multiplexoarelor sunt setate
prin intermediul unor circuite de programare a FPGA-ului. Funcia
fiecrei celule este deci programat intern, iar ieirea este rutat nspre
mai multe linii verticale i orizontale. Semnalele de la ieirea unei celule
pot fi rutate la intrrile altor celule sau la ieirile circuitului FPGA, ieiri
care sunt realizate prin buffere de ieire.
S2
S1
S0

Sel

S2
S1
S0

Sel

S2
S1
S0

Sel

S2
S1
S0

Sel

S2
S1
S0

Sel

S2
S1
S0

Sel

Arhitectur CPLD de tip foldback, cu reacie invers

n cazul arhitecturii CPLD, ieirile tuturor celulelor sunt rerutate n


interiorul matricii (reacie invers) ctre intrrile tuturor celorlalte celule.
i aici se presupune c circuitele de programare (configurare) a celulelor
nu apar n figur. Funciile simple sunt realizate n celule, iar pentru cele
mai complexe se folosesc cile de reacie invers. n figur apar puine
celule n structura foldback-ului, dar n realitate, cu tehnologia de azi,
numrul acestor celule poate atinge cteva sute.
Arhitecturile prezentate sunt relativ simple i totui exist un
anumit numr de probleme care apar:
- Ci pini de intrare, ieire i bidirecionali sunt necesari?
- Este oare bine s avem pini de clock (tact) dedicai?
- Care este numrul corect de linii de interconectare verticale i
orizontale necesare pentru a evita congestia?
- Este bine oare s se divizeze liniile de interconectare n mai
multe sub-segmente, n vederea evitrii blocrii unei ci?
La toate aceste probleme trebuie s se rspund n funcie de
arhitectura specific folosit (firma productoare, tehnologia de realizare
a FPGA-ului, structura celulei etc.).