0% au considerat acest document util (0 voturi)
14 vizualizări47 pagini

Programarea FPGA

Vby

Încărcat de

tciv
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
14 vizualizări47 pagini

Programarea FPGA

Vby

Încărcat de

tciv
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd

UNIVERSITATEA "POLITEHNICA" BUCURE TI

FACULTATEA DE ELECTRONIC I TELECOMUNICA II

Programarea FPGA-urilor folosind


limbajul Handel-C

referat de doctorat

Prep. drd. ing. R zvan Beuran

Coordonatori:
Prof. dr. ing. Vasile Buzuloiu
Prof. dr. ing. Jean-Marie Becker

- 2001 -
Con inut
1 Introducere................................................................................................................1
2 Circuite logice programabile...................................................................................3
2.1 Tehnologii de fabrica ie.....................................................................................3
2.1.1 Conexiuni fuzibile..................................................................................................4
2.1.2 Conexiuni anti-fuzibile...........................................................................................4
2.1.3 Celule EPROM i EEPROM..................................................................................4
2.1.4 Celule SRAM.........................................................................................................5
2.2 Clasificarea arhitecturilor.................................................................................6
2.2.1 Circuite logice programabile simple......................................................................6
2.2.2 Circuite logice programabile complexe.................................................................7
2.2.3 Matrici de por i programabile (FPGA-uri).............................................................9
2.2.4 Interconexiuni programabile................................................................................10
2.3 FPGA-urile.......................................................................................................10
2.3.1 Caracteristici de baz ............................................................................................10
2.3.2 Tipuri de arhitecturi..............................................................................................11
2.3.3 Tehnologii de fabrica ie........................................................................................12
2.3.4 Programarea FPGA-urilor....................................................................................13
3 Limbajul Handel-C................................................................................................15
3.1 Concepte de baz .............................................................................................16
3.1.1 Fluxul de execu ie.................................................................................................17
3.1.2 Comunica ia i accesul la variabile......................................................................18
3.1.3 Ciclul de proiectare...............................................................................................18
3.2 Sintaxa limbajului............................................................................................20
3.2.1 Structura unui program.........................................................................................20
3.2.2 Elemente de baz ..................................................................................................20
3.2.3 Un exemplu..........................................................................................................22
3.2.4 Eficien a programelor...........................................................................................22
3.2.5 Interfa area cu exteriorul......................................................................................24
4 Studiu de caz: testarea re elelor de calculatoare.................................................25
4.1 Arhitectura pl cii Enet32.................................................................................25
4.1.1 TxMan..................................................................................................................26
4.1.2 MAC.....................................................................................................................27
4.1.3 RxMan..................................................................................................................27
4.2 Emulatorul pentru ATLAS................................................................................27
4.3 Programarea pl cii Enet32..............................................................................28
4.4 Interfa a cu utilizatorul....................................................................................29
4.5 Rezultate experimentale...................................................................................31
5 FPGA-urile în prelucrarea i analiza imaginilor.................................................35
5.1 Calcul reconfigurabil.......................................................................................35
5.2 Recunoa terea formelor...................................................................................36
5.3 Urm rirea obiectelor.......................................................................................37
5.3.1 Prezentarea aplica iei............................................................................................38
5.3.2 Implementarea algoritmului.................................................................................39

-i-
5.3.3 Performan e..........................................................................................................39
6 Concluzii..................................................................................................................40
Bibliografie..................................................................................................................42

- ii -
Capitolul 1 Introducere

1 Introducere
Noua tehnologie de implementare logic digital , introdus la mijlocul anilor '80, i
anume matricea de por i programabil , FPGA (Field Programmable Gate Array), a cunoscut
o r spândire tot mai mare în ultimul timp. Avantajul principal pe care îl ofer FPGA-urile,
precum i celelalte componente ale familiei circuitelor logice programabile, cum ar fi PLA i
EEPROM, const tocmai în programabilitatea lor. Aceasta implic posibilitatea de a
configura un anumit circuit pentru o sarcin specific , i, în cele mai multe cazuri, chiar de a
reprograma acela i circuit pentru o utilizare ulterioar diferit .
La începutul anilor '90 a ap rut un nou tip de circuite logice programabile, numit
DPGA (Dynamically Programmable Gate Array) [Tau-95], a c ror func ionalitate poate
fi schimbat în intervale de ordinul milisecundelor, prin simplu control software. Aceste
componente deschid cu adev rat calea conceptului de hardware reconfigurabil, adic de
arhitecturi care se schimb în timpul oper rii, pentru a sluji aplica ia curent într-un mod cât
mai eficient cu putin .
La ora actual , pentru programarea circuitelor logice se folosesc, în mod curent,
limbaje de descriere a hardware-ului (Hardware Description Language, HDL), dintre care
cele mai r spândite sunt VHDL i Verilog. VHDL (VHSIC HDL — VHSIC însemnând Very
High Speed Integrated Circuits) a devenit standard IEEE în anul 1986 i se înrude te, din
punct de vedere al sintaxei, cu limbajul de programare Ada, din care este inspirat de altfel i
limbajul Pascal. Verilog a fost standardizat de IEEE în 1995, fiind asem n tor la nivel
general cu limbajul C, ceea ce poate fi considerat drept un argument privind u urin a înv rii
sale. Similaritatea este îns doar la nivel formal, portarea direct din C fiind rareori posibil .

Cum o cerin important la ora actual în industria hardware este scurtarea timpului
între elaborarea unui algoritm i implementarea sa, devine evident necesitatea utiliz rii unui
limbaj care s fie cât mai apropiat de un limbaj de programare frecvent întrebuin at, un
candidat perfect fiind limbajul C. În acest fel devine posibil realizarea sistemelor hardware
de c tre persoane care nu au urmat lungi cursuri speciale de limbaje de descriere a hardware-
ului. Un alt avantaj este facilitarea transform rii unui algoritm scris în C într-o implementare
hardware.
Un limbaj care r spunde acestor cerin e este Handel-C, furnizat de compania
Celoxica [Cel-**]. Acest limbaj este bazat pe limbajul Handel elaborat de Ian Page, profesor
la Imperial College din Londra i cofondator al Celoxica. La rândul s u limbajul Handel este
similar cu un subset al lui occam [Hoa-88], un limbaj folosit pentru descrierea sistemelor de

-1-
Capitolul 1 Introducere

aplica ii concurente. Utilizând limbajul Handel-C este a adar posibil programarea FPGA-
urilor într-un mod firesc, natural, cu rezultate satisf c toare din punctul de vedere al
eficien ei implement rii.

Aplica iile care pot beneficia de aportul sistemelor hardware reconfigurabile sunt
numeroase, de la cele de tipul recunoa terea formelor, comunica ia video,
criptarea/decriptarea, pân la sisteme de testare a re elelor de calculatoare .a.m.d. În general
vorbind, pentru orice domeniu în care sunt necesare opera ii în timp real, iar prelucr rile
software nu sunt suficient de rapide, o solu ie practic extrem de eficient este folosirea unor
sisteme pe baz de FPGA-uri (sau DPGA-uri), programate cu un limbaj de nivel înalt, cum ar
fi Handel-C. Aceasta paradigm a migr rii dinspre software spre hardware este foarte bine
sintetizat de A. S. Tannenbaum în urm toarea declara ie:

"Designers with different goals may, and often do, make different decisions [...] the
boundary between hardware and software is arbitrary and constantly changing. Today's
software is tomorrows's hardware and viceversa."*

Prezenta lucrare este structurat dup cum urmeaz . În Capitolul 2 se vor prezenta
tipurile de circuite logice programabile existente, cu accent pe FPGA-uri, precum i
modalit ile uzuale de programare a acestora. Capitolul 3 va detalia structura limbajului
Handel-C, iar în Capitolul 4 se va prezenta o aplica ie care utilizeaz în mod intensiv acest
limbaj. În Capitolul 5 se trec în revist o serie de posibile aplica ii ale conceptului de
hardware reprogramabil în prelucrarea i analiza imaginilor. Lucrarea se încheie cu o serie de
considera ii finale i bibliografia folosit .

* Designeri cu scopuri diferite pot lua decizii diferite, i deseori o fac [...] frontiera între hardware i
software este arbitrar i în continu schimbare. Software-ul de ast zi este hardware-ul de mâine, i
viceversa.

-2-
Capitolul 2 Circuite logice programabile

2 Circuite logice programabile


Dup cum s-a men ionat i în introducere, circuitele logice programabile (în lb.
englez FPD — Field Programmable Devices), au c p tat o r spândire tot mai mare la ora
actual . Denumirea este folosit în prezent pentru toate circuitele integrate a c ror
func ionalitate poate fi modificat ulterior fabrica iei [Sea-97].
La începutul anilor 1995, termenul FPD se folosea doar pentru circuitele digitale, îns
ulterior au fost incluse deasemenea circuitele analogice programabile (în lb. englez FPAD
— Field Programmable Analog Devices), precum i circuitele cu semnal mixt (în lb. englez
FPMSD — Field Programmable Mixed-Signal Devices).
Datorit evolu iei caracteristicilor acestui tip de circuite, o tendin foarte puternic în
prezent este aceea de a exploata la maxim caracterul de reprogramabilitate al acestor circuite,
i în special a FPGA-urilor, prin includerea lor în sisteme reprogramabile [Hau-98].
În cele ce urmeaz se va face o trecere în revist a tehnologiilor folosite, a
principalelor tipuri de astfel de circuite, iar apoi se vor prezenta în detaliu FPGA-urile i
posibilit ile care exist în prezent pentru a programa astfel de circuite [Max-96].

2.1 Tehnologii de fabrica ie


Tehnologiile de fabrica ie se refer la metodele folosite pentru a creea componente
programabile pentru FPD-uri. Cele mai utilizate tehnologii sunt:
conexiunile fuzibile;
conexiunile anti-fuzibile;
celulele EPROM i EEPROM;
celulele SRAM.

-3-
Capitolul 2 Circuite logice programabile

2.1.1 Conexiuni fuzibile


Conexiunile fuzibile sunt similare cu siguran ele casnice, în sensul c , prin aplicarea
unei cantit i de curent excesive, acestea î i schimb substan ial caracteristicile electrice.
Exist dou tipuri de astfel de conexiuni: cu leg tur lateral sau vertical .
Conexiunea lateral este compus dintr-un fir de aliaj tungsten-titanium în serie cu un
tranzistor cu jonc iune bipolar , care poate permite trecerea unui curent suficient de mare
pentru topirea firului. Acest tip de conexiune este ini ial în scurt-circuit i devine circuit
deschis dup programare.
Prin compara ie, dioda între baz i emitor a unui tranzistor cu jonc iune bipolar
formeaz o conexiune vertical . Acest tip de leg tur este ini ial în circuit deschis, deoarece
tranzistorul se comport ca dou diode cuplate spate în spate, împiedicând astfel trecerea
curentului. Dac îns se for eaz trecerea unui curent prin emitor, se produce un efect de
avalan , emitorul se tope te i se creaz un scurt-circuit.
Acest tip de conexiune este programabil o singur dat (în lb. englez OTP — One-
Time Programmable), îns conexiunile r mase neprogramate se pot bineîn eles modifica în
continuare.

2.1.2 Conexiuni anti-fuzibile


Ca o alternativ , unele FPD-uri (în special circuitele complexe), folosesc tehnologia
conexiunilor anti-fuzibile. Acestea sunt compuse dintr-un strat se siliciu amorf (necristalin)
între dou straturi metalice. În stare neprogramat , siliciul amorf este un izolator, cu
rezisten la tensiuni de peste 1 GV, dar conexiunea poate fi programat prin aplicarea unui
curent relativ mare (aproximativ 20 mA) la intr rile componentei. Acest semnal duce la
apari ia unei conexiuni prin transformarea siliciului amorf izolator în polisiliciu conductor.
i acest tip de conexiune este programabil o singur dat , datorit ireversibilit ii
procesului implicat.

2.1.3 Celule EPROM i EEPROM


Toate componentele con inute de memoriile PROM (Programmable Read Only
Memory), incluzând diodele, tranzistoarele i elementele fuzibile, sunt create pe un singur
substrat de siliciu. Conceptual, aceste elemente fuzibile, programabile o sigur dat , pot fi
înlocuite cu tranzistori EPROM (Electrically Programmable ROM) sau EEPROM
(Electrically-Erasable Programmable ROM), astfel încât circuitul ob inut devine
reprogramabil. Aceste circuite prezint anumite avantaje fa de circuitele cu conexiuni

-4-
Capitolul 2 Circuite logice programabile

fuzibile sau anti-fuzibile, de exemplu ele pot fi testate în mod mai riguros dup fabrica ie,
printr-o suit de program ri i tergeri. Circuitele ce se pot programa direct în cadrul
sistemului sunt de preferat, c ci nu necesit scoaterea lor de pe plac i folosirea unor tehnici
speciale pentru reprogramare, cum ar fi radia iia ultraviolet .

2.1.4 Celule SRAM


SRAM este acronimul pentru Static RAM, RAM semnificând Random Access
Memory. În aceast tehnologie, conexiunile programabile sunt constituite din tranzistori de
trecere, por i de transmisie sau multiplexoare care sunt controlate de celule SRAM. Avantajul
acestei arhitecturi este faptul c permite o reconfigurare rapid în sistem, de aceea proiectele
care implic o schimbare frecvent a func ionalit ii folosesc de preferin elemente SRAM.
Dezavantajul principal ar fi dimensiunile mai mari implicate de tehnologia SRAM, ceea ce
înseamn c vor fi mai pu ine puncte de configura ie decât în cazul celorlalte tehnologii.

-5-
Capitolul 2 Circuite logice programabile

2.2 Clasificarea arhitecturilor


În prezent sunt disponibile o serie de arhitecturi de logic programabil , fiecare clas
major prezentând variante specifice diver ilor produc tori. O posibilitate de clasificare este
urm toarea [Pro-**]:
circuite logice programabile simple;
circuite logice programabile complexe;
matrici de por i programabile (FPGA-uri);
interconexiuni programabile.

2.2.1 Circuite logice programabile simple


Circuitele logice programabile simple (în lb. englez SPLD — Simple
Programmable Logic Device) mai sunt cunoscute i sub urm toarele denumiri: PAL
(Programmable Array Logic), GAL (Generic Array Logic, de la compania Lattice), PLA
(Programmable Logic Array), PLD (Programmable Logic Device) .
Ele reprezint cea mai mic , i în consecin cea mai ieftin , form de logic
programabil . Un astfel de circuit con ine între 4 i 22 de macrocelule, complet interconectate
între ele. Majoritatea circuitelor utilizeaz memorii non-volatile, de tipul EPROM, EEPROM
sau Flash*, pentru definirea func ionalit ii.
În mod tradi ional, SPLD-urile sunt bazate pe un ir de por i AND ( I), ale c ror ie iri
sunt conectate la un ir de por i OR (SAU). Forma cea mai versatil o constituie PLA-urile, în
care utilizatorul controleaz ambele matrici de intrare ale por ilor. Num rul de por i AND
este independent de num rul de intr ri, iar num rul de por i OR ( i în consecin de ie iri)
este independent de num rul de intr ri i de num rul de por i AND.
Combina ia de por i AND i OR nu este singura solu ie posibil , unele circuite având
dou iruri de por i NAND ( I-NEGAT, NUMAI), sau dou iruri de por i NOR (SAU-
NEGAT, NICI), iar în unele cazuri un ir de por i NAND ca intrare a unui ir de por i NOR.
Exist chiar circuite bazate pe un singur ir de por i ale c rui ie iri se constituie în intr ri
(prin conexiune invers ), pentru a implementa expresii cu termeni de tipul "sume de
produse"*.
Multe aplica ii nu necesit ca ambele iruri de por i s fie programabile. De exemplu,
în circuitele PAL, matricea por ilor AND este programabil , iar cea a por ilor OR este

* O memorie de tip EEPROM, îns mai rapid decât cipurile EEPROM clasice, deoarece datele sunt
scrise în blocuri i nu la nivel de octe i.
* Termeni numi i i maxtermi, sau termen canonic produs din cadrul dezvolt rii în forma canonic
disjunctiv .

-6-
Capitolul 2 Circuite logice programabile

predefinit . PLA-urile sunt mai flexibile decât PAL-urile, îns acestea opereaz mai rapid,
deoarece conexiunile cablate (în lb. englez hard-wired) comut mai rapid decât
echivalentele lor programabile. Datorit faptului c sunt rapide i ieftine, PAL-urile sunt cel
mai folosit tip de circuite SPLD.
Tot o form de circuit simplu sunt PROM-urile, care pot fi v zute ca un ir predefinit
de por i AND la intrarea unui ir programabil de por i OR. (În realitate, arhitectura intern
PROM este mai asem n toare cu un decodor ce constituie intrarea unui ir programabil de
por i OR.) De i PROM-urile sunt privite în general ca i circuite de memorie, în care pentru o
adres drept intrare, la ie ire apare o valoare programat în circuit, ele pot fi interpretate ca i
circuite logice programabile clasice, fiind folosite pentru stocarea tabelelor de adev r, sau
implementarea func iilor cu un num r mare de maxtermi.
În plus fa de func ionalitatea de baz , SPLD-urile sunt disponibile i cu o serie de
op iuni programabile, cum ar fi ie iri cu trei st ri sau prin regi tri. În acest al doilea caz,
multe circuite permit utilizatorului alegerea tipului registrului, cum ar fi latch-uri D sau SR,
ori bistabile D, T sau J-K. Deasemenea circuitele permit în general programarea pinilor
externi drept intr ri, ie iri, sau conexiuni bidirec ionale.

2.2.2 Circuite logice programabile complexe


Circuitele logice programabile complexe (în lb. englez CPLD — Complex
Programmable Logic Device) mai poart i urm toarele denumiri: EPLD (Erasable
Programmable Logic Device), EEPLD (Electrically-Erasable Programmable Logic Device),
MAX (Multiple Array matriX, de la Altera).
Aceste circuite sunt similare cu cele precedente, dar au o capacitate semnificativ mai
mare, un circuit complex tipic fiind echivalent cu 2 pân la 64 de circuite simple. Un CPLD
con ine zeci sau sute de macrocelule, grupuri de 4 pân la 16 dintre acestea constituind un
bloc func ional. Macrocelulele din acela i bloc func ional sunt complet interconectate între
ele, iar dac un circuit con ine mai multe blocuri func ionale, acestea sunt la rândul lor
interconectate, îns nu neap rat complet, aceast chestiune depinzând de produc tor. O
consecin a acestui fapt este eventuala imposibilitate de rutare i probleme cu reparti ia
pinilor între versiuni diferite de proiectare.
CPLD-urile au o arhitectur asem n toare cu SPLD-urile, de aceea tranzi ia este
u oar pentru proiectan i. În plus majoritatea ciruitelor complexe suport limbajele de
dezvoltare ale circuitelor simple, cum ar fi ABEL, CuPL, PALASM etc. CPLD-urile sunt
cele mai potrivite pentru proiect ri orientate pe control, datorit vitezei mari de lucru, iar

-7-
Capitolul 2 Circuite logice programabile

interconectivitatea mare le face adaptate pentru automate (în lb. englez state machines) de
înalt performan .
Unele din varia iile majore între arhitecturile de CPLD-uri includ: num rul de termeni
produs per macrocelul , dac ace tia pot fi "împrumuta i" între macrocelule, dac matricea de
interconectare este complet sau doar par ial populat . "Împrumutarea" termenilor produs
men ionat mai sus, ce este posibil în unele arhitecturi, l rge te gama de aplica ii. De
remarcat faptul c , în anumite cazuri, macrocelule de la care s-a "împrumutat" devin
nefunc ionale, în timp ce în alte arhitecturi ele î i p streaz o func ionalitate de baz . Trebuie
îns subliniat c , prin astfel de "împrumuturi", timpul de propagare de obicei cre te.
O alt diferen între arhitecturi este dat de num rul de conexiuni în matricea de
comutare. Dac toate variantele sunt posibile, matricea este numit complet populat , în caz
contrar — par ial populat . Num rul de conexiuni determin u urin a cu care se face plasarea
componentelor (fitare/mapare — în lb. englez fitting/mapping) i crearea interconexiunilor
(rutare — în lb. englez routing). Astfel, în cazul unei matrici de interconectare populat
complet, plasarea se face cu u urin , chiar dac majoritatea resurselor sunt folosite, iar
întârzierile sunt fixe i predictibile.
Un circuit cu o matrice de interconectare par ial populat poate cauza dificult i de
rutare. Schimb rile de proiectare sunt mai dificile, i poate fi necesar modificarea reparti iei
pinilor, ceea ce constituie un inconvenient major, c ci este mult mai u or s se schimbe
structura intern a unui circuit programabil, decât s se reproiecteze întreaga plac .
Întârzierile pentru acest fel de matrice nu sunt fixe i mai greu de prezis. Folosirea unor astfel
de circuite, în ciuda limit rilor amintite, este bineîn eles dictat de costul lor mai mic.
CPLD-urile sunt circuite CMOS (Complementary Metal Oxide Semiconductor),
folosind una dintre tehnologiile EPROM, EEPROM sau Flash pentru definirea
func ionalit ii. Circuitele bazate pe EPROM sunt de obicei programabile o singur dat , cu
excep ia cazului când sunt incluse într-o capsul cu o fereastr pentru programarea prin
radia ie ultraviolet . Programarea se face de c tre produc tor sau distribuitor.
Multe din familiile de circuite recente folosesc îns tehnologiile EEPROM sau Flash
i au fost proiectate pentru a putea fi programate direct în circuit. Dintre produc tori, doar
Atmel i Philips mai produc doar CPLD-uri de primul tip, restul companiilor (Altera,
Cypress, Lattice, Vantis, Xilinx) producând circuite de ambele tipuri.
Unele CPLD-uri bazate pe conexiuni programabile de tip SRAM au o flexibilitate
mai mare prin faptul c permit folosirea blocurilor individuale de SRAM fie drept conexiuni
programabile, fie ca blocuri de memorie propriu-zise. Conexiunile programabile, ce pot

-8-
Capitolul 2 Circuite logice programabile

con ine mai mult de 100 de trasee, sunt interfa ate cu blocurile SPLD prin intermediul unui
multiplexor programabil.
Dup cum s-a amintit deja, unul din avantajele principale ale CPLD-urilor este acela
c structura lor regulat permite estimarea rezonabil a întârzierilor. Pia a acestor circuite a
crescut considerabil în ultimii ani, ele g sindu- i întrebuin ri în multe aplica ii comerciale,
încluzând regândirea unor proiecte bazate pe SPLD-uri, astfel încât implementarea s
necesite mai pu ine circuite.

2.2.3 Matrici de por i programabile (FPGA-uri)


FPGA-urile (Field Programmable Gate Array) mai sunt cunoscute sub urm toarele
denumiri: LCA (Logic Cell Array), pASIC (programmable ASIC), FLEX, APEX (de la
Altera), ACT (de la Actel), ORCA (de la Lucent), Virtex (de la Xilinx).
FPGA-urile difer de SPLD-uri i CPLD-uri i, în mod tipic, ofer cea mai mare
capacitate de logic . Un astfel de circuit const într-o matrice de blocuri logice, înconjurat
de blocuri de intrare/ie ire programabile i legate prin interconexiuni care sunt la rândul lor
programabile (vezi sec iunea 2.3 pentru o tratare mai detaliat ).

-9-
Capitolul 2 Circuite logice programabile

2.2.4 Interconexiuni programabile


Interconexiunile programabile (în lb. englez FPIC — Field Programmable
Interconnect Device) nu sunt propriu-zis circuite logice, ci mai degrab circuite programabile
de interconectare. Prin programare se stabile te o conexiune între un pin al circuitului i un
altul, deci se realizeaz respectiva interconectare.
FPIC-urile folosesc fie tehnologia SRAM, fie pe cea anti-fuzibil . Compania I-Cube
ofer astfel de circuite ca i componente de sine st t toare, în timp ce Aptix le
comercializeaz ca p r i ale sistemelor lor de emulare hardware.

2.3 FPGA-urile
Circuitele SPLD i CPLD sunt utile într-o varietate de scopuri, dar structura lor,
bazat pe iruri de por i programabile AND i OR este totu i o limitare. La cel lalt cap t al
spectrului se afl ASIC-urile (Application-Specific Integrated Circuit), care includ matrici de
por i, elemente standard i circuite adaptate cerin elor. Acestea sunt foarte generice, au o
arhitectur de granularitate fin (la nivel de por i de baz i regi tri) i au capacit i de
800.000 de por i sau chiar mai mult. Pe de alt parte, aceste circuite necesit costuri mari de
punere în produc ie i perioade lungi de proiectare. Deci între SPLD-uri/CPLD-uri, la un
cap t, i ASIC-uri, la cap tul cel lalt al sc rii, se g sea un gol.

2.3.1 Caracteristici de baz


Spre sfâr itul anilor '80, un nou tip de circuite i-a f cut apari ia pentru a umple acest
gol, i anume FPGA-urile (Field Programmable Gate Array). Aceste circuite combinau
multe din caracteristicile matricilor de por i, cum ar fi densitatea mare, cu cele ale circuitelor
programabile timpurii, în principal programabilitatea. Un factor diferen iator este acela c
majoritatea FPGA-urilor are o granularitate mare, ceea ce înseamn c acestea constau într-o
matrice de blocuri logice, înconjurat de blocuri de intrare/ie ire programabile i legate prin
interconexiuni care sunt la rândul lor programabile (vezi figura 1).
Un FPGA tipic con ine între 64 i zeci de mii de blocuri logice, i un num r mai mare
de circuite bistabile. Majoritatea FPGA-urilor nu asigur o interconectare complet între
blocurile logice, ceea ce ar fi prohibitiv din punctul de vedere al costurilor. În schimb,
pachete sofisticate de software sunt folosite pentru maparea elementelor logice pe blocurile
func ionale i crearea interconexiunilor înter acestea.

- 10 -
Capitolul 2 Circuite logice programabile

Figura 1: Structura de principiu a unui FPGA.

2.3.2 Tipuri de arhitecturi


Exist o serie de sub-arhitecturi care se încadreaz în modelul general prezentat
anterior. Secretul densit ii i performan elor înalte despre care s-a vorbit rezid în func iile
logice ale blocurilor logice prezente, precum i în eficien a arhitecturii de interconectare.
Tehnologia de baz o constituie în general conexiunile anti-fuzibile sau controlate de
celule SRAM, îns exist dou clase principale de arhitecturi FPGA, i anume :
arhitecturi cu granula ie mare;
arhitecturi cu granula ie fin .
Arhitecturile cu granula ie mare se bazeaz pe blocuri logice relativ mari, con inând adeseori
dou sau mai multe tabele de c utare i dou sau mai multe bistabile. Principalele dou abord ri
pentru circuitele cu granularitate mare sunt:
tabelele de c utare (în lb. englez look-up tables, LUT);
multiplexoarele.
Presupunându-se un tabel cu 3 intr ri, o tehnic implic folosirea unui decodor 3-la-8
pentru a selecta una din cele 8 celule SRAM care con ine valoarea de ie ire dorit din tabela
de adev r a func iei logice. Ca o alternativ se pot folosi celule SRAM pentru a controla o
structur piramidal de multiplexoare i a genera ie irea. În alte cazuri se folosesc arhitecturi
bazate aproape în întregime pe multiplexoare.
FPGA-urile cu granularitate mare prezint îns o serie de probleme. În primul rând,

- 11 -
Capitolul 2 Circuite logice programabile

întârzierile nu sunt la fel de predictibile ca în cazul SPLD-urilor i CPLD-urilor. În al doilea


rând, to i produc torii utilizeaz programe speciale pentru a plasa schemele de principiu în
circuitele lor, ceea ce face aproape imposibil migrarea de la un produc tor la altul i
men inerea acelora i întârzieri de propagare. În al treilea rând, majoritatea instrumentelor de
sintez este orientat spre arhitecturi ASIC cu granularitate fin . Acestea produc liste de
componente i conexiuni (în lb. englez netlist) la nivel de por i logice, iar programele
dedicate FPGA-urilor nu reu esc în general o mapare optim a acestora pe un circuit. Astfel,
în plus fa de utilizarea relativ slab a resurselor, devine dificil o estimare realist a
întârzierilor de propagare înainte de rutare, ceea ce înseamn ca uneori sunt necesare
interven ii pe nivelele de jos ale ciclului de proiectare pentru a face sistemul func ional.
Totu i unele tehnici sunt adaptate în particular arhitecturilor FPGA cu granularitate
mare, cum ar fi, de exemplu, biblioteca de module parametrizate EDIF (Electronic Design
Interoperability Format). Deasemenea se observ o tendin în cre tere c tre utilizarea
arhitecturilor FPGA cu granularitate fin , cum ar fi circuitele pASIC-2 ale companiei
QuickLogic, ale c ror celule se pot comporta în ambele moduri (cu granularitate mare sau
granularitate fin ), sau arhitectura CrossFire a Crosspoint Solutions, care folose te blocuri de
baz ultrafine "jum tate de poart logic ".
Cel lalt tip de arhitectur este a adar cel cu granula ie fin . Aceste circuite con in un num r
mare de blocuri logice relativ simple. Un astfel de bloc con ine, de obicei, fie o func ie logic de dou
variabile, fie un multiplexor 4-la-1 i un bistabil. Aceste circuite prezint avantaje clare pentru
proiectele create prin sintez logic , în care celulele de baz sunt foarte simple, uneori chiar la nivelul
por ilor logice.

2.3.3 Tehnologii de fabrica ie


O alt diferen o constituie tehnologia folosit pentru fabricarea circuitelor. La ora
actual , FPGA-urile cu cea mai mare densitate sunt produse folosind tehnologia SRAM
(Static Random Access Memory). Un al doilea proces tehnologic uzitat este cel numit anti-
fuzibil, care are avantajul unei interconectibilit i sporite.
Circuitele bazate pe SRAM sunt în mod inerent reprogramabile, chiar în cadrul
sistemului, dar necesit o surs extern de memorie de configura ie. Aceasta con ine
programul care define te modul în care func ioneaz blocurile logice, care blocuri I/E sunt
intr ri i care sunt ie iri, modul în care blocurile sunt interconectate. FPGA-ul respectiv, fie
î i auto-încarc configura ia dintr-o memorie, fie un procesor extern descarc configura ia în
el. Când se auto-încarc , FPGA-ul adreseaz o memorie PROM standard asemeni unui
procesor la ini ializare, sau folose te un tip special de PROM, cu acces secven ial. În a doua

- 12 -
Capitolul 2 Circuite logice programabile

variant FPGA-ul este oarecum echivalent cu un periferic de microprocesor standard.


Configura ia dureaz , în mod uzual, mai pu in de 200ms, depinzând de dimensiunea
circuitului i de metoda de configura ie.
În contrast cu circuitele descrise mai sus, în cazul celor anti-fuzibile programarea se
face o singur dat , i func ionalitatea nu mai poate fi modificat , r mânând valabil chiar i
dup întreruperea aliment rii. Aceste circuite sunt în consecin programate doar de c tre
fabricant sau distribuitor.
Unele FPGA-uri au integrate anumite caracteristici de nivel mai înalt, cum ar fi
magistrale, memorii pentru mici blocuri de regi tri sau cozi, suport pentru JTAG*, ceea ce
face ca ele s fie preferate pentru schemele mai complexe.

2.3.4 Programarea FPGA-urilor


Programarea conven ional a FPGA-urilor poate fi descris prin urm toarea
succesiune de pa i (vezi i figura 2):
1) etapa de proiectare;
2) etapa de mapare/rutare;
3) etapa de verificare/simulare;
4) eventual modificarea sau corectarea circuitului.

Proiectarea
circuitului

Maparea/ Modificarea/corectarea
rutarea circuitului

Verificarea/
simularea

Figura 2: Ciclul de proiectare conven ional pentru un FPGA.

În etapa de proiectare, schema digital este creat cu ajutor unui editor sau a unui
limbaj de descriere a hardware-ului. Un editor de scheme permite folosirea de simboluri

* Cadru pentru testarea componentelor logice electronice definit de Joint Test Action Group,
standardul IEEE 1149.1.

- 13 -
Capitolul 2 Circuite logice programabile

grafice pentru precizarea componentelor i a circuitelor. Limbajele de tip HDL folosesc un


limbaj descriptiv, cum ar fi Verilog, ABEL sau VHDL [Toa-96], în acela i scop. Orice
variant s-ar alege trebuie verificat c programul respectiv are încorporat biblioteca
specific FPGA-ului ce va fi folosit, deoarece ele trebuie s poat produce i mapa netlist-ul
asociat proiectului.
Etapa de mapare/rutare realizeaz convertirea netlist-ului produs în faza anterioar
într-un fi ier binar de configurare a FPGA-ului. Cei trei pa i inclu i în aceast etap sunt:
a) maparea schemei pe resursele circuitului;
b) asignarea blocurilor logice, create anterior prin mapare, unor loca ii specifice din
circuit;
c) interconectarea blocurilor logice.
În final se creaz o descriere exact a configura iei FPGA-ului (Logic Cell Array File,
LCA), care este convertit într-o reprezentare binar .

- 14 -
Capitolul 2 Circuite logice programabile

Aceast reprezentare binar este ulterior folosit în etapa de verificare, care are drept
scop testarea proiectului din punct de vedere logic i al sincroniz rii/temporiz rii. O serie
dintre aceste teste se poate efectua cu instrumentele de verificare/simulare, care permit o
caracterizare detaliat a proiectului, prin efectuarea de simul ri de func ionalitate i
sincronizare. Un alt mod de testare este chiar verificarea sub tensiune, prin crearea condi iilor
normale de operare.
Uneori, dup etapa de mai sus se pot constata inadecv ri între func ionalitatea
circuitului i cea dorit . În acest caz se impune reluarea ciclului de proiectare de la primul
pas.
Configurarea este procesul prin care fi ierul binar produs la pasul 2 este propriu-zis
înc rcat în FPGA. Circuitele pot fi configurate prin folosirea unui PROM, cel serial fiind cel
mai folosit, dar existând i variante paralele la nivel de octet. În acest caz FPGA-ul î i cite te
în mod activ configura ia din PROM-ul respectiv. O a doua posibilitate este ca datele s fie
înscrise în FPGA dintr-o surs exterioar (de obicei un PC), prin intermediul unei interfe e,
cum ar fi JTAG, ce se conecteaz la portul paralel al unui PC printr-un cably ByteBlaster.
Exist deasemenea i cazul în care circuitul este folosit pe o platform
reconfigurabil , pentru care configura ia este integrat într-o func ie a unui limbaj de nivel
înalt, de obicei C; astfel devine posibil configurarea din cadrul unei aplica ii.

De curând au devenit disponibile noi instrumente de proiectare a FPGA-urilor, care se


bazeaz pe limbaje derivate din C (a se vedea capitolul 3 pentru o exemplificare detaliat a
unui produs de acest tip, i anume limbajul Handel-C). Acestea ofer în principiu o u urin
mai mare în programare i permit de obicei efectuarea de simul ri înainte de mapare/rutare.

3 Limbajul Handel-C
Handel-C este un limbaj de programare ce a fost proiectat pentru a permite
transformarea programelor în implement ri hardware digitale. Totu i Handel-C nu este un
limbaj de descriere a hardware-ului, ci mai degrab un limbaj de programare ce transform ,
prin compilare, algoritmi de nivel înalt în proiecte hardware la nivel de por i logice.
În cele ce urmeaz se va discuta despre versiunea 2.0 a limbajului, care a fost folosit
pentru implementarea pl cii de test descris în capitolul 4. Ultima versiune, i anume 3.0,
adaug o serie de facilit i limbajului, u urând i mai mult portarea din C.

- 15 -
Capitolul 3 Limbajul Handel-C

3.1 Concepte de baz


Sintaxa limbajului Handel-C se bazeaz pe aceea a limbajului C conven ional
[Ker-88], deci programatorii familiariza i cu acesta recunosc cu u urin majoritatea
elementelor sintactice. Limbajul permite a adar exprimarea unui algoritm f r a ine prea
mult seama de modul în care se efectueaz calculele. Într-un anumit sens Handel-C este
pentru hardware ceea ce un limbaj de nivel înalt conven ional este pentru limbajul de
asamblare al microprocesorului.
Programe secven iale pot fi scrise în Handel-C la fel ca i în C, dar, pentru a beneficia
cât mai mult de implementarea hardware, trebuie exploatat paralelismul inerent al acestuia.
De aceea Handel-C con ine construc ii paralele, acesta fiind una din cele mai importante
diferen e fa de C-ul conven ional.

- 16 -
Capitolul 3 Limbajul Handel-C

3.1.1 Fluxul de execu ie


Limbajul Handel-C este a adar în principal secven ial, ordinea a dou instruc iuni
deteminând ordinea execu iei. Ca în oricare limbaj conven ional exist instruc iuni ce
controleaz cursul programului. De pild o por iune de cod poate fi executat în mod
condi ionat, în func ie de valoarea unei expresii, sau poate fi repetat de un num r de ori
folosind instruc iuni de ciclare. Trebuie precizat faptul c schema hardware produs de
Handel-C este aceea i cu cea specificat prin codul surs ; nu exist nici un nivel intermediar
de interpretare cum se întâmpl în cazul limbajelor de asamblare. Por ile logice constituie
"instruc iunile" de asamblare ale limbajului Handel-C.
Datorit faptului c prin compilare se produce un netlist, o cre tere important a
performan elor se poate ob ine prin utilizarea paralelismului. Este deci posibil în Handel-C ( i
esen ial, din punctul de vedere al eficien ei execu iei) a instrui compilatorul s genereze
hardware care execut instruc iuni în paralel.
Paralelismul în Handel-C este veritabil, nu ca cel simulat întâlnit în computerele de uz
general. Cu alte cuvinte, dou instruc iuni pentru care se dispune a fi executate în paralel vor
fi executate în exact acela i tact de ceas de c tre dou por iuni de hardware diferite.
Când se ajunge la un bloc paralel fluxul de execu ie se ramific la începutul blocului
i ramurile sunt executate simultan. Fluxul de execu ie este apoi reluat la sfâr itul blocului,
când toate ramurile au terminat execu ia. Ramurile care termin mai devreme sunt for ate s o
a tepte pe cea mai înceat dintre ele, înainte de continuarea execu iei.

- 17 -
Capitolul 3 Limbajul Handel-C

3.1.2 Comunica ia i accesul la variabile


Pentru comunica ia între dou ramuri ce se execut în paralel se folosesc canale
(acestea fiind principalul element provenind din occam). O ramur paralel trimite date
printr-un canal i cealalt ramur le recep ioneaz . Canalele servesc deasemenea la
sincronizarea între ramuri, c ci transferul nu poate avea loc decât atunci când ambele capete
ale canalului de comunica ie sunt disponibile. Dac transmi torul nu este preg tit pentru
comunica ie, atunci receptorul trebuie s a tepte i viceversa.
Vizibilitatea declara iilor de variabile este bazat pe blocuri de cod separate de
acolade, ca i în limbajul C. Deoarece construc iile paralele sunt i ele simple blocuri de cod,
o variabil ar putea fi utilizat în mod legal în dou ramuri ce se execut în paralel. Aceasta
poate duce îns la conflicte serioase dac accesul se face simultan. De aceea nu se recomand
accesul aceleia i variabile în dou ramuri paralele. În practic regula ce trebuie respectat
este de a nu asigna o valoare unei variabile, în dou ramuri paralele, în acela i tact de ceas;
exist îns posibilitatea de a citi valoarea unei variabile, ceea ce duce uneori la eficientizarea
unor por iuni de cod.

3.1.3 Ciclul de proiectare


În figura 3 se poate observa secven a opera iilor implicate de programarea în Handel-
C. Se observ c simul rile se efectueaz cu ajutorul instrumentelor Handel-C, iar
implementarea în hardware este ulterioar . Astfel accentul se pune pe efectuarea eventualelor
corec ii înc din faza "software" a proiectului, deci înainte de implementarea hardware.
Motivul principal este c opera iile asociate cu aceasta din urm (mapare, rutare) dureaz în
general mult mai mult timp decât simpla compilare.

- 18 -
Capitolul 3 Limbajul Handel-C

Portarea algoritmului
în Handel-C

Compilarea în Modificarea/corectarea
vederea simulării programului

Rularea simulării
propriu-zise

Adăugarea interfeţei
cu hardware-ul extern

Compilarea pentru
hardware

Fitarea şi rutarea
pentru FPGA

Programarea
FPGA-ului

Figura 3: Detalierea ciclului de proiectare în Handel-C.

Un alt avantaj const în faptul c în prima etap se poate pleca de la un algoritm care
este deja implementat în C i verificat, fiind necesar doar portarea sa, care este relativ facil .

- 19 -
Capitolul 3 Limbajul Handel-C

3.2 Sintaxa limbajului


Dup cum s-a amintit anterior, sintaxa limbajului Handel-C este foarte asem n toare
cu cea a limbajului C. În continuare se vor prezenta succint elementele de baz ale sintaxei,
cu sublinierea diferen elor care exist fa de limbajul C.

3.2.1 Structura unui program


Structura general a unui program este urm toarea:
Declara ii globale
void main(void)
{
Declara ii locale
Bloc de instruc iuni
}
Deasemenea se pot folosi în cadrul codului directive pentru preprocesor, precum i
comentarii în stilul C standard (/* ... */) sau în stilul C++ (//).
O diferen crucial între C i Handel-C este faptul c acesta din urm permite
manevrarea variabilelor de orice dimensiune. Bi ii din variabile pot fi extra i cu u urin i
al tura i pentru a forma valori de dimensiune mai mare. Tipul de baz este int, dar sunt
definite i o serie de alte tipuri (char, short, long), pentru a u ura portarea din C.

3.2.2 Elemente de baz


O diferen important în Handel-C, în compara ie cu limbajul C, este inexisten a
pointerilor, care se datoreaz bineîn eles lipsei unei memorii globale.
Tablourile de variabile pot fi declarate în acela i mod ca i în limbajul C. O restric ie
important în versiunea 2.0 este aceea c indicii trebuie s fie constante la compilare (aceast
restric ie dispare .

- 20 -
Capitolul 3 Limbajul Handel-C

În cadrul programului se mai pot defini structuri RAM sau ROM interne. Avantajele
fa de folosirea tablourilor este c indicii pot fi expresii variabile i ca necesit mai pu ine
resurse. Dezavantajul principal este c doar o singur loca ie poate fi accesat într-un tact de
ceas.
Pentru comunica ie se folosesc canale sau chiar tablouri de canale. Citirea dintr-un
canal se face printr-o instruc iune de forma:
Canal ? Variabil ;
iar scrierea prin:
Canal ! Expresie;
Pentru ca un bloc de instruc iuni s fie executat în paralel, acesta trebuie precedat de
cuvântul cheie par:
par
{
Bloc de instruc iuni
}
Instruc iunile de atribuire sunt singurele care sunt considerate ca având o durat
temporal în Handel-C, f când astfel calculul sincroniz rilor mai simplu. Se pot reg si în
limbaj i instruc iunile de execu ie condi ionat sau ciclare uzuale în C: if-else, switch,
while, do-while, for. Exist deasemenea i instruc iunea break.
O instruc iune nou este delay, care nu are nici un efect, ci doar cauzeaz o
întârziere de un tact de ceas. Ea se folose te pentru a preveni conflictele asupra resurselor sau
pentru a ajusta sincronizarea proceselor în timpul execu iei.
Este definit o serie întreag de operatori, de la cei de manipulare a bi ilor (dintre care
unii sunt specifici Handel-C, cum ar fi cei de selec ie a bi ilor), pân la operatori aritmetici,
rela ionali sau operatorul condi ional.
Ca i în limbajul C, Handel-C permite folosirea de macro-uri, fie ele expresii
constante sau parametrizate. Prin folosirea cuvântului cheie shared în locul celui de macro
se instruie te compilatorul s refoloseasc expresia în toate locurile unde apare, efectuând
astfel o economie de resurse. Prin folosirea combina iei macro proc se define te o
procedur , evitându-se în acest fel rescrierea de cod; în acest caz îns pentru fiecare "apel" al
procedurii se creaz un nou bloc hardware.
Sincronizarea i durata de execu ie a unui bloc de instruc iuni sunt elemente esen iale
pentru a asigura corectitudinea execu iei în cazul programelor ce con in multiple procese
paralele ce interac ioneaz între ele. Dup cum s-a amintit i anterior, atribuirea i
instruc iunea delay dureaz un tact de ceas, celelalte instruc iuni fiind considerate
instantanee. Ca o consecin , un ciclu care nu con ine nici o instruc iune cu "durat " este

- 21 -
Capitolul 3 Limbajul Handel-C

considerat incorect, c ci nu i se poate evalua timpul de execu ie, i poart denumirea de ciclu
combinatorial. Un mod de a corecta o astfel de eroare este introducerea unei instruc iuni de
întârziere.

3.2.3 Un exemplu
În continuare este prezentat un exemplu foarte simplu, al c rui rol este de a pune în
eviden sintaxa limbajului. Programul de mai jos preia valori diferite de '0' pe canalul de
intrare i le însumeaz . La introducerea valorii '0' ciclul se încheie i suma este transmis pe
canalul de ie ire:
void main(void)
{
unsigned int 16 sum;
unsigned int 8 data;
chanin input;
chanout output;

sum = 0;
do
{
input ? data;
sum = sum + (0 @ data);
} while (data!=0);

output ! sum;
}
Iat în continuare o prezentare succint a codului. Programul define te dou variabile:
sum pentru a stoca suma intr rilor i data pentru a stoca temporar fiecare intrare; ele sunt
întregi f r semn pe 16, respectiv 8 bi i. Se definesc apoi cele dou canale, unul de intrare
(input) i unul de ie ire (output), folosind cuvintele cheie chanin i chanout, care
realizez leg tura cu intrarea i ie irea standard a simulatorului.
Suma se ini ializeaz la 0. Se intr apoi într-un ciclu în care, la fiecare itera ie, se
cite te un întreg pe canalul de intrare care se adun la sum . A se observa operatorul '@' care
realizeaz prefixarea datelor cu 0, astfel încât ambii membri ai sumei s aib acela i num r de
bi i. De remarcat c lungimea prefixului 0, i anume 8 bi i, este calculat în mod automat de
compilator.
Ie irea din ciclu are loc când datele de la intrare au valoarea '0'. Suma este trimis pe
canalul de ie ire i apoi se încheie execu ia.

3.2.4 Eficien a programelor


Eficien a unui FPGA programat în Handel-C depinde de eficien a programului

- 22 -
Capitolul 3 Limbajul Handel-C

propriu-zis. Foarte important în acest context este frecven a/perioada ceasului folosit în
sistem; cu cât frecven a este mai mare (respectiv perioada este mai mic ), cu atât sistemul
este mai eficient. Perioada ceasului sistemului trebuie s fie mai mare decât durata c ii celei
mai lungi prin logica combina ional a programului. Dac perioada nu este suficient de mic
pentru a asigura func ionarea sistemului la frecven a dorit se impune efectuarea de
optimiz ri.
Desigur transformarea codului în Handel-C într-o configura ie hardware, care este un
proces automat nu asigur optimalitatea implement rii algoritmului. Se pare îns c acest
aspect este satisf c tor ( i oricum este în afara controlului utilizatoruil), a a c ne vom ocupa
doar de optimiz rile pe care acesta le poate întreprinde la nivelul codului.

- 23 -
Capitolul 3 Limbajul Handel-C

O prim cale de optimizare este reducerea adâncimii logicii. Iat câteva solu ii pentru
aceasta:
1) evitarea utiliz rii operatorului de înmul ire, care implic folosirea unei importante
cantit i de resurse logice; multe astfel de opera ii se pot efectua prin iftare, sau o
combina ie de ciclare, iftare i adunare;
2) reducerea circuitelor de adunare pe mai mul i bi i la mai multe circuite similare pe mai
pu ini bi i;
3) evitarea utiliz rii compara iilor de tipul ≤ sau ≥ prin înlocuirea lor cu operatorii == sau
!=, atunci când aceasta este posibil;
4) reducerea opera iilor complexe prin folosirea mai multor etape executate secven ial;
5) evitarea irurilor lungi de instruc iuni vide, ce apar de pild în secven e de if f r
else.
Cea de-a doua cale de optimizare este utilizarea principiului benzii de asamblare, prin
împ r irea opera iilor complexe în etape ce se execut în paralel. Un astfel de sistem, de i
calculeaz o valoare în mai mult de un tact, dup câteva tacte ini iale produce câte un rezultat
pe tact.

3.2.5 Interfa area cu exteriorul


Interfa area cu simulatorul se realizeaz prin intermediul canalelor, i poate fi
interactiv cu utilizatorul, dac se folosesc canalele standard de intrare/ie ire, sau poate fi
bazat pe fi iere în care utilizatorul stocheaz datele de intrare i în care simulatorul
stocheaz datele de ie ire.
Pentru interfa area codului, i deci a FPGA-ului, cu alte componente hardware,
acestea trebuie declarate prin definirea unor interfe e. Componentele cu care FPGA-ul poate
fi conectat prin intermediul Handel-C sunt diverse, cum ar fi module RAM externe i diverse
tipuri de magistrale. Definirea acestora se face prin folosirea cuvântului cheie interface.

- 24 -
Capitolul 4 Studiu de caz: testarea re elelor de calculatoare

4 Studiu de caz: testarea re elelor de calculatoare


ATLAS este unul dintre cele patru experimente ce sunt în curs de implementare la
CERN pentru noul accelerator de particule LHC (Large Hadron Collider). În cadrul acestui
experiment, ca i pentru scopuri generale de testare a re elelor, s-a construit aici o plac de
testare a re elelor de calulatoare, numit Enet32 [Bar-01]. Ea implementeaz 32 de porturi
Ethernet full-duplex a 100Mb/s folosind în principal FPGA-uri Altera Flex 10K, atât pentru
implementarea controlerelor de acess la mediu MAC (Media Access Controller) cât i pentru
restul componentelor care contribuie la realizarea func ionalit ii ce va fi descris în
continuare.
Din punctul de vedere al prezentei lucr ri acest sistem este edificator deoarece toate
FPGA-urile au fost programate integral în Handel-C. Aceasta a permis o mare flexibilitate
privind controlul asupra comportamentului pl cii, ea putând r spunde unei game foarte largi
de cerin e, de la testarea general re elelor i switch-urilor [Tan-97] sau modelarea acestora,
pân la generarea unui trafic de re ea identic cu cel ce se va întâlni în cadrul experimentului
ATLAS [Dob-01].

4.1 Arhitectura pl cii Enet32


Arhitectura pl cii este prezentat în figura 4. Conexiunea la PC-ul de control este
efectuat printr-un port paralell IEEE 1284. Controlul asupra conexiunii este de inut de un
FPGA, numit I/O Manager (IoMan), care trimite datele i comenzile dinspre PC spre celelalte
componente ale pl cii, ca i datele dinspre acestea spre PC.

- 25 -
Capitolul 4 Studiu de caz: testarea re elelor de calculatoare

Figura 4: Arhitectura pl cii de test Enet32

Cele 32 de MAC-uri, IoMan precum i alte dou FPGA-uri: managerul de transmisie


a pachetelor (TxMan) i mangerul de recep ie a pachetelor (RxMan), sunt conectate printr-o
magistral de tip inel, ceasul sistemului fiind de 25MHz*. Magistrala are o l rgime de 52 de
bi i, dintre care 32 sunt utiliza i pentru transmiterea datelor, iar ceilal i pentru transportul
comenzilor, semnalelor de stare precum i a ceasului global.

4.1.1 TxMan
În timpul oper rii, func ia magistralei este de a furniza descriptori de pachete
provenind de la TxMan tuturor MAC-urilor. Un descriptor const din 5 cuvinte de câte 32 bi i
i con ine suficient informa ie pentru generarea unui pachet Ethernet. TxMan poate accesa o
memorie SRAM privat de 1Mega-cuvânt (36 de bi i/cuvânt), ce este folosit pentru stocarea
descriptorilor de transmisie genera i de PC-ul de control. L rgimea de band a magistralei
este suficient pentru a permite generarea celui mai mic pachet Ethernet (64 octe i), la debit
maxim.
Descriptorii de transmisie sunt produ i de TxMan în modul urm tor. Ei sunt prelua i

* Aceasta permite generarea unui trafic de 100Mb/s prin emiterea unui grup de 4 bi i (în lb. englez
nybble) pe fiecare tact.

- 26 -
Capitolul 4 Studiu de caz: testarea re elelor de calculatoare

din memoria TxMan, unde au fost stoca i în prealabil, prin ciclare într-o manier secven ial
sau pseudo-aleatoare.

4.1.2 MAC
Descriptorii trimi i de TxMan ajung la MAC, unde sunt trata i de c tre un procesor
implementat în Handel-C. Acesta este controlat printr-un limbaj de asamblare specializat
definit de noi, deci schimb rile sunt deosebit de facile, implicând doar editarea programului
în asamblare i înc rcarea acestuia în MAC. Pachetele transmise con in o tampil temporal
privind timpul la care s-a emis pachetul; datorit faptului c ceasul opereaz la 25MHz
precizia este de 40ns.
Exist i o a doua posibilitate de a transmite, configurat tot prin intermediul unui
program în asamblare, ce folose te valori fixe pentru dimensiunea pachetelor, timpul înter
transmiterea a dou pachete i adresa destina iei.
Pachetele recep ionate sunt prelucrate de MAC-uri pentru a genera descriptorii de
recep ie (tot 5 cuvinte a 32 de bi i). Ace tia con in date esen iale ce pot fi extrase direct din
pachete, sau pot fi generate pe baza informa iei din acestea. Direct din pachete se pot extrage
adresa sursei, prioritatea pachetului (dac se folosesc câmpuri de tip VLAN, Virtual Local
Area Network) etc. Pe baza informa iei temporale privind transmiterea pachetului i a valorii
curente a ceasului se poate calcula laten a pachetului, iar folosind momentele de recep ie a
pachetelor consecutive se poate determina timpul între sosirea a dou pachete.

4.1.3 RxMan
Descriptorii de recep ie sunt transmi i prin magistral spre RxMan, care folose te
informa ia cuprins în descriptori pentru a realiza diverse statistici, cum ar fi totaluri ale
laten elor i num rului de octe i, sau histograme ale laten elor i timpilor între sosirea a dou
pachete succesive, în func ie de m sur torile ce se efectueaz . Histogramele sunt stocate în
memoria SRAM privat de 1 Mega-cuvânt (36 de bi i/cuvânt), într-un mod configurabil de
c tre utilizator prin intermediul unor regi tri de control. Schimbarea naturii informa iei
extrase din pachete necesit îns interven ia în cadrul programul scris în Handel-C i implic
recompilarea i refitarea acestuia. Histogramele pot fi trimise la cerere PC-ului de control
prin intermediul conexiuni IEEE 1824.

4.2 Emulatorul pentru ATLAS


Placa de test Enet32, datorit flexibilit ii i programabilit ii sale, a putut fi folosit

- 27 -
Capitolul 4 Studiu de caz: testarea re elelor de calculatoare

i pentru efectuarea unor simul ri în cadrul experimentului ATLAS. Este vorba de emularea
traficului de re ea generat de sistemele ROB (Read-Out Buffer) din cadrul nivelului 2 al
arhitecturii ATLAS. Aceste sisteme trebuie s r spund la cererile efectuate de sistemele de
control prin unul sau mai multe pachete con inând datele furnizate de detectorii asocia i.
Enet32 a fost programat pentru a prelua informa ia relevant din cereri i pentru a
produce r spunsurilor necesare. Acestea au propriet i conforme cu cererea, dar datele
con inute de pachete în timpul simul rii nu sunt valide. În pachetele-r spuns trimise se
insereaz momentul de timp la care s-a f cut cererea (provenind din pachetul-cerere), astfel
încât la recep ia în PC-ul de control se poate calcula direct laten a procesului cerere-r spuns.
Se insereaz deasemeni num rul pachetului-cerere pentru a permite detectarea pierderilor de
pachete de c tre PC-ul care face cererile.
Deocamdat s-au f cut teste doar cu 4 pl ci Enet32. Un sistem de test cu 8 pl ci
Enet32 (echivalent cu 256 ROB-uri) plus 64 de PC-uri cu rolul de supervisor i nodurile de
control, împreun cu o arhitectur de switch-uri, modeleaz aproximativ 15% din întregul
sistem ATLAS. Pe lâng informa ia privind pierderile de pachete i laten a re elei, se vor mai
putea oferi histograme privind ocuparea cozilor interne, ceea ce constituie o m sur
cantitativ privind elasticitatea i robuste ea sistemului.
Informa iile ob inute prin simul rile efectuate conform descrierii de mai sus vor fi
folosite pentru evaluarea diverselor strategii-candidat privind transmiterea mesajelor (cereri i
r spunsuri), precum i privind topologia re elei.

4.3 Programarea pl cii Enet32


Programarea pl cii Enet32 s-a f cut în mod integral folosind limbajul Handel-C,
versiunea 2.0. Din aceast cauz programarea este u oar chiar pentru cineva care are doar
cuno tin e de C. Este îns bineîn eles necesar în elegerea conceptului de paralelism i
execu ie sincron , precum i celelalte diferen e care exist fa de limbajul C standard (vezi
capitolul 3).
Producerea fi ierelor de configurare a FPGA-urilor are loc în dou etape. Mai întâi se
compileaz programul surs în Handel-C, ob inându-se un netlist. Acesta este preluat de
utilitarul de fitare Altera Max+PlusII [Alt-**] care produce fi ierele de configurare în
formatul RBF (Raw Bitstream File). Fi ierele binare sunt trimise la IoMan prin portul paralel,
iar acesta programeaz FPGA-urile respective, pe un canal JTAG. IoMan însu i, a c rui
comportare se schimb rareori, este programat prin JTAG pe un cablu ByteBlaster. Exist i

- 28 -
Capitolul 4 Studiu de caz: testarea re elelor de calculatoare

op iunea de a folosi un cip PROM, din care IoMan î i cite te singur programul la punerea în
func iune a pl cii; aceasta este modalitatea folosit în mod curent.

4.4 Interfa a cu utilizatorul


Interac iunea cu utilizatorul se realizeaz pe dou c i. În primul rând exist o suit de
scripturi scrise în Perl* prin intermediul c rora se pot trimite comenzi pl cii, stabilindu-se
porturile care particip la test, configurându-se aceste porturi, pornindu-se i oprindu-se
testul. De asemenea se pot citi rezultatele testelor: sume de laten e, num rul de pachete
transmise/recep ionate/pierdute, num rul de octe i recep iona i sau histograme ale laten ei sau
ale timpului între sosirea pachetelor. Scripturile men ionate comunic fizic cu placa printr-un
port paralel, folosind comunica ia prin pipe-uri i un program scris în C.
De i scripturile ofer o mare libertate în controlul pl cii, colegul meu C t lin Meiro u
a programat i o interfa grafic , al c rei scop principal este definirea mai intuitiv a testului
i afi area grupat , în mod dinamic, a unor parametri de baz , cum ar fi numarul de octe i i
de pachete transmise/recep ionate pe secund , laten a medie a pachetelor i debitul la
transmisie i recep ie. La cerere este posibil i afi area unei ferestre ce prezint i alte detalii
privind un anumit port, cum ar fi de pild num rul de pachete pierdute.
În figura 5 se prezint interfa a grafic la momentul în care era folosit pentru
controlul a dou pl ci de test situate pe calculatoare diferite (un total de 64 de porturi
FastEthernet). Pentru fiecare din aceste pl ci, pe calculatoarele gazd ruleaz un server care
comunic prin socket-uri cu interfa a grafic i trimite la rândul s u comenzi pl ci într-un
mod asem n tor cu cel descris mai sus, prin scripturi Perl.

* Perl este un limbaj de programare de nivel înalt, bazat pe C, sed, awk i alte instrumente din Unix ce
permite scrierea de scripturi.

- 29 -
Capitolul 4 Studiu de caz: testarea re elelor de calculatoare

Figura 5: Interfa a grafic cu utilizatorul.

- 30 -
Capitolul 4 Studiu de caz: testarea re elelor de calculatoare

4.5 Rezultate experimentale


Placa de test Enet32 se poate folosi pentru efectuarea unei game largi de m sur tori,
toate m rimile ce caracterizeaz traficul putând fi determinate. Singura problem ce nu a fost
înc rezolvat este sincronizarea înter dou pl ci astfel încât acestea s func ioneze ca un
sistem unitar i s permit efectuarea m sur torilor la distan i pentru sisteme mai
complexe. La momentul de fa se lucreaz la o solu ie privind acest inconvenient.
În continuare, pentru a pune în eviden caracteristicile pl cii, sunt prezentate câteva
rezultate ob inute pentru generarea de trafic cu propriet i controlate. Traficul generat este fie
cu o rat constant (CBR, Constant Bit Rate), fie de tip Poisson, adic cu o distribu ie
exponen ial negativ discret a timpilor între pachete. S-au folosit pachete de 64 i 1518
octe i (dimensiunile minim i maxim permise în standardul Ethernet), iar caracteristicile
traficului au fost astfel alese încât s determine o înc rcare de aproximativ 50% a re elei.
Pentru pachetele de 64 de octe i aceasta înseamn un trafic CBR cu 12µs între emiterea
pachetelor sau un trafic Poisson cu media de 12µs; pentru pachetele de 1518, valoarea medie
a timpului între emiterea pachetelor este de 250µs.
Propriet ile traficului sunt ilustrate prin intermediul histogramelor timpului între
sosirea pachetelor la receptor. Pentru traficul de tip CBR se prezint atât caracteristicile
traficului la emisie, prin conectarea direct între portul ce transmite i cel ce recep ioneaz ,
cât i caracteristicile traficului dup trecerea printr-un switch (s-a folosit echipamentul T5
Compact al companiei BATM). Histogramele au fost efectuate folosind rezolu ia maxim a
pl cii, deci intervalul de cuantizare este de 40ns. Pentru figura 6 s-au alc tuit grupuri de 25 de
astfel de intervale, deci rezolu ia graficului este de 1µs, în scopul sporirii vizibilit ii
caracteristicilor traficului.

5 4
x 10 x 10
2.5

2 7

6
Numarul de pachete
Numarul de pachete

1.5
5

4
1

2
0.5

1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24
4 4
Timpul intre sosirea a doua pachete [ns] x 10 Timpul intre sosirea a doua pachete [ns] x 10

(a) (b)

- 31 -
Capitolul 4 Studiu de caz: testarea re elelor de calculatoare

Figura 4: Timpul între sosirea a dou pachete — (a) f r switch, (b) prin switch;
tipul traficului=CBR, dimensiunea pachetelor=64 octe i,
timpul între emiterea a dou pachete=12µs.

Se observ din figurile 4 i 5 c propriet ile traficului la emitere sunt exact cele
programate. Dup trecerea prin switch se constat o u oar modificare a caracteristicilor,
timpul între sosirea a dou pachete îndep rtându-se cu pân la 120ns fa de valoarea la
emitere.

12000 5500

5000

10000 4500

4000

8000
Numarul de pachete
Numarul de pachete

3500

3000
6000
2500

2000
4000

1500

1000
2000

500

2.496 2.497 2.498 2.499 2.5 2.501 2.502 2.503 2.504 2.495 2.496 2.497 2.498 2.499 2.5 2.501 2.502 2.503 2.504 2.505
Timpul intre sosirea a doua pachete [ns] 5
x 10 Timpul intre sosirea a doua pachete [ns] 5
x 10

(a) (b)
Figura 5: Timpul între sosirea a dou pachete — (a) f r switch, (b) prin switch;
tipul traficului=CBR, dimensiunea pachetelor=1518 octe i,
timpul între emiterea a dou pachete=250µs.
Figura de mai jos permite aprecierea calit ii bune a propriet ilor traficului generat i
în cazul celui de tip Poisson. Imaginea (b) pare mai zgomotoas deoarece segmentul de timp
prezentat este mai lung, aceasta deoarece pentru pachetele mari varia ia laten ei este mult mai
mare.

- 32 -
Capitolul 4 Studiu de caz: testarea re elelor de calculatoare

4
x 10
100

90

2.5
80

70
2

Numarul de pachete
Numarul de pachete

60

1.5 50

40

1
30

20
0.5

10

0
0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5
4 5
Timpul intre sosirea a doua pachete [ns] x 10 Timpul intre sosirea a doua pachete [ns] x 10

Figura 6: Timpul între sosirea a dou pachete — (a) dimensiunea pachetelor=64 octe i, (b) dimensiunea
pachetelor=1518 octe i; tipul traficului=Poisson,
timpul mediu între emiterea a dou pachete=12µs, respectiv 250µs.

O alt m rime care se poate analiza cu ajutorul pl cii de test Enet32 este laten a
medie a pachetelor la trecerea printr-o re ea. În general aceasta este relativ constant la
nivelul unui switch pentru trafic de tip unicast (cu un emi tor i un receptor), atât timp cât nu
apar fenomene de congestie. Un aspect interesant este îns cazul broadcast-ului (un port este
emi tor i toate celelalte recep ioneaz ). Pe baza laten ei medii se pot deduce în acest caz
informa ii privind structura interna a switch-ului i modul de realizare a broadcast-ului de
c tre acesta.
25 350

300
Latenta medie per port a pachetelor [us]

20
Latenta medie per port a pachetelor [us]

250

15
200

150
10

100

50

0 0
1 5 9 13 17 21 25 29 1 5 9 13 17 21 25 29
Pozitia portului receptor Pozitia portului receptor

Figura 7: Laten a medie per port a pachetelor pentru broadcast —


(a) dimensiunea pachetelor=64 octe i, (b) dimensiunea pachetelor=1518 octe i.

În figura 7 se prezint laten a medie a pachetelor ce sosesc la fiecare port din switch,
singurul port emi tor fiind cel cu indexul 0, cu trafic de tip broadcast. Cele 32 de porturi ale
switch-ului care s-au folosit sunt grupate în module de câte 8 porturi. Se constat c pentru

- 33 -
Capitolul 4 Studiu de caz: testarea re elelor de calculatoare

porturile din primul modul, ce con ine i portul cu num rul 0, laten ele sunt mai mici decât
pentru celelalte module. Explica ia const în faptul c traficul intra-modul beneficiaz de
leg turile foarte rapide care exist în cadrul modulului.
Pentru celelalte module, ce con in porturile de la 9 la 32, laten a este cu aoproximativ
5µs mai mare. Se poate deduce a adar c pachetele au fost trimise per modul în mod
centralizat de c tre o unitate central . În cadrul unui modul distribuirea se face apoi
secven ial, într-o ordine fix , care nu coincide îns cu modul de numerotare a porturilor în
exterior. Efectul este mai evident pentru pachetele de dimensiuni mai mici, deoarece
întârzierile introduse sunt relativ constante i devin nesemnificative în raport cu timpul
efectiv de transmitere a unui pachet mare.

- 34 -
Capitolul 5 FPGA-urile în prelucrarea i analiza imaginilor

5 FPGA-urile în prelucrarea i analiza imaginilor


Sistemele bazate pe FPGA-uri tind s aib un rol tot mai important în aplica iile ce
necesit o putere de calcul mare, aceasta fiind de obicei o cerin de baz în sistemele de
opereaz în timp real. În capitolul de fa se vor prezenta conceptele de baz legate de
îmbinarea, ce devine tot mai strâns , între software i hardware, accentul fiind pus de
aplica iile din domeniul prelucr rii i analizei imaginilor. Motivul principal este c pentru
acest tip de aplica ii este întotdeauna nevoie de o putere de calcul relativ mare. În plus,
opera iile simple la nivel de pixeli care se reg sesc în multe dintre tehnicile de prelucrare i
analiz a imaginilor [Ver-00] — cum ar fi filtrarea, marcarea digital a imaginilor [Beu-00],
recunoa terea formelor, compresia imaginilor [Pae-91], [Wal-90] etc. — se preteaz foarte
bine la folosirea FPGA-urilor.

5.1 Calcul reconfigurabil


O chestiune de baz în proiectarea sistemelor de calcul actuale este raportul adecvat
între vitez i generalitate. Se pot produce cipuri versatile, care au o func ionalitate larg , dar
care execut relativ încet o sarcin , sau se pot crea cipuri specifice aplica iilor, care realizeaz
un num r limitat de sarcini, dar o fac foarte rapid. Microprocesoarele, cum ar fi Intel
Pentium, Athlon sau Motorola PowerPC, ce se g sesc în computere, sunt cipuri cu scop
general: instruc iuni codate în form binar pot conduce procesorul prin orice secven de
opera ii logice sau matematice posibil . Procesorul Pentium, de pild , nu a fost proiectat
pentru a executa Netscape Navigator sau Microsoft Word, dar le poate rula pe ambele.
Prin contrast, circuitele hardware specializate (ASIC-uri), ofer exact func ionalitatea
necesar într-un anumit context. Datorit acestui fapt este posibil producerea de cipuri mai
mici, mai ieftine i mai rapide, care consum mai pu in. Un cip grafic poate afi a pe ecran
forme geometrice sau imagini de 10 pân la 100 de ori mai rapid decât o unitate central de
uz general. Dezavantajul este c un ASIC nu poate în general rezolva o problem u or
modificat fa de cea pentru care a fost conceput. Chiar dac un ASIC modificat poate fi
reproiectat, este posibil ca dependen a circuitelor de problem s împiedice reutilizarea lor
pentru genera ii succesive de produse. Aceasta face ca efortul depus la proiectare s
trebuiasc amortizat printr-un num r relativ redus de unit i comercializate.
Dac îns se înlocuiesc ASIC-urile cu FPGA-uri, constrângerile de mai sus dispar
[Vil-97]. Este adev rat c se poate pierde în vitez , dar având în vedere c FPGA-urile
actuale opereaz i la frecven e de 200 de Mhz, aceast pierdere poate fi neglijat . Ceea ce a

- 35 -
Capitolul 5 FPGA-urile în prelucrarea i analiza imaginilor

deschis îns calea calculului configurabil este faptul c noile FPGA-uri pot fi reconfigurate
foarte rapid. Dac la început acest timp era de o secund i chiar mai mult (perfect îns pentru
testarea proiectelor), în prezent a coborât pân la nivelul milisecundelor i se a teapt ca în
curând ca acesta s ajung de ordinul a 100 de microsecunde. În acest fel sistemele de calcul
se pot adapta aproape în mod continuu la schimb rile în datele de intrare sau în mediul de
operare.
Paradigma de configurabilitate poate fi pus în practic în cadrul sistemele de calcul
în moduri diferite. Tehnica cea mai pu in preten ioas este alternarea la comand între diverse
func ionalit i; aceasta este echivalentul altern rii între diverse programe înntr-un computer.
Dac reconfigurarea se poate face rapid, atunci devine posibil trecerea printr-o succesiune
de etape, fiecare adaptat unei faze a rezolv rii problemei. Folosind aceast tehnic se poate
construi, de pild , un sistem de transmisie video într-un singur cip, care se reconfigureaz de
4 ori pentru fiecare cadru [Vil-97]. În prima faz FPGA-ul stocheaz datele video în
memorie, apoi se aplic dou transform ri de prelucrare a imaginilor i în final FPGA-ul
cap t func ionalitatea unui modem pentru a transmite datele mai departe. În acest fel sunt
necesare numai un sfert din resursele implicate de folosirea unui ASIC.
O modalitate mai spinoas , dar mai puternic , de a folosi conceptul de calcul
configurabil implic hardware care se auto-reconfigureaz pe m sur ce execut o sarcin ,
rafinându- i programarea pentru a cre te perfoman a. Un cip destinat recunoa terii formelor
s-ar putea adapta ca urmare a unei încerc ri de a identifica un obiect: dac acesta reprezint
un automobil, p r i ale circuitului care serveau la recunoa tere aeronavelor sau a persoanelor
pot fi reconfigurate pentru a se concentra pe vehicule terestre. O astfel de abordare poate avea
o influen important asupra performan elor globale ale sistemului. Dac la început
reconfigurarea men ionat se va face pe baza unor proceduri precalculate, nu este exclus
venirea unui moment când, în mod inteligent, programul ce ruleaz în FPGA se va optimiza
pe sine însu i.

5.2 Recunoa terea formelor


Una din aplica iile cele mai promi toare pentru calculul reconfigurabil o reprezint
recunoa terea formelor. Aceast tehnic este folosit în scopuri diverse, cum ar fi
recunoa terea scrisului de mân , identificarea persoanelor dup fotografii, ob inerea
imaginilor din baze de date, sau recunoa terea automat a intelor în domeniul militar. O
opera ie fundamental în majoritatea aplica iilor de recunoa tere a formelor o constituie
compararea unui set de bi i de intrare (reprezentând o imagine, un ir de caractere sau orice

- 36 -
Capitolul 5 FPGA-urile în prelucrarea i analiza imaginilor

alt tip de informa ie) cu un set de abloane corespunzând diverselor modele ce trebuie
recunoscute. Sistemul declar recunoa terea dac num rul de bi i de intrare care se potrivesc
cu bi ii unui ablon dep e te un anumit prag.
În cazul recunoa terii intelor, de exemplu, provocarea cea mai important este
compararea rapid a imaginii de intrare cu mii de modele. Un model poate reprezenta, de
pild , imaginea frontal sau lateral a unui anumit tip de vehicul. Fiecare imagine con ine în
mod obi nuit mii de pixeli, iar o int poate apare oriunde în imagine. Pentru a le recunoa te
suficient de rapid, conform cerin elor aplica iilor militare, un sistem trebuie s efectueze
compara ii la o rat de câteva trilioane de opera ii pe secund , deoarece to i pixelii imaginii
de intrare trebuie compara i cu cei ai abloanelor.
În [Vil-97] se raporteaz construirea, cu sprijin din partea DARPA (Defense
Advanced Research Projects Agency), a unui prototip de sistem de recunoa tere a formelor cu
hardware configurabil, care realizeaz economii de resurse adaptându-se la fiecare model în
parte. Mul i din pixelii unui ablon tipic nu contribuie la deciziile luate, astfel încât ei ar putea
fi omi i din calculele ulterioare. Un sistem conven ional nu ar putea face asta cu u urin ,
deoarece pozi iile pixelilor difer de la model la model. Se poate merge mai departe în
exploatarea flexibilit ii sistemelor reconfigurabile prin luarea în considera ie a similarit ilor
care exist între abloane. Astfel, un set de modele poate fi prelucrat în paralel, folosind o
singur unitate de compara ie pentru to i pixelii cu acea i valoare în abloanele respective.
Rezultatul se propag apoi pentru toate modelele din setul respectiv.
Un alt sistem prezentat în [Vil-97] este un prototip ce realizeaz encrip ia folosind
algoritmul DES (Data Encryption Standard). Acesta implic folosirea unei chei, ce r mâne
de obicei fix în timpul comunica iei, pentru criptarea mesajului în blocuri de bi i. Prin
folosirea unui sistem bazat pe FPGA este posibil adaptarea structurii interne la cheia
folosit , ob inându-se astfel atât o economie de resurse (de la 25000 de por i logice s-a ajuns
la folosirea a numai 13000), cât i o cre tere a eficien ei. Când se schimb cheia de criptare,
noua structura intern este desc rcat rapid în FPGA.
Din aceste exemple se deduce a adar poten ialul care exist pentru hardware-ul
configurabil, prin adaptarea la tipuri de date diverse i în continu schimbare. Alte aplica ii
care ar putea beneficia de aceste avantaje sunt comunica iile digitale, prelucr rile digitale în
diverse domenii, cum ar fi cele pentru sistemele radar, etc.

5.3 Urm rirea obiectelor


Grupul condus de Ian Page la Oxford University are o lung istorie privind implicarea

- 37 -
Capitolul 5 FPGA-urile în prelucrarea i analiza imaginilor

în proiectarea i realizarea de sisteme ce folosesc FPGA-uri. Ei au construit o platform de


calcul reconfigurabil numit HARP, ce const dintr-un procesor RISC pe 32 de bi i (un
transputer T805 sau T425) cu o memorie DRAM de 4 Mocte i, strâns cuplat cu un sistem
bazat pe un FPGA de la compania Xilinx (XC3195A), ce are o memorie local de 2 bancuri
SRAM a 32kbi i x 16 bi i. În [Pag-97] se prezint o aplica ie care folose te sistemul HARP,
aplica ie ce va fi descris succint în continuare.

5.3.1 Prezentarea aplica iei


Scopul aplica iei este extragerea dintr-o secven video, în timp real, pentru fiecare
cadru, a dreptunghiurilor înglobante pentru obiectele care se mi c în scena respectiv . Un
context posibil este un sistem automat de siguran , care se bazeaz pe o camer video cu un
câmp de vedere larg, dar care se poate mi ca i poate face zoom pe obiectele aflate în
mi care. Imaginile ce con in obiecte în mi care pot fi înregistrate, sau un operator poate fi
alertat în leg tur cu detec ia obiectului în mi care, care constituie un poten ial intrus.
Fluxul video este digitizat i sube antionat de c tre transputer, astfel încât se ob in
cadre pe nivele de gri de 128 x 128 x 8 bi i. Acestea sunt trimise FPGA-ului folosind un canal
de comunica ie de tip magistral . Transferul limiteaz dimensiunile imaginilor i ar fi de dorit
existen a unui sistem în care imaginile sunt accesibile direct FPGA-ului, totu i performan ele
ob inute prin utilizarea sistemului HARP sunt satisf c toare din punctul de vedere al
raportului pre /performan .
Aplica ia func ioneaz prin efectuarea diferen ei între imagini digitizate succesive i
apoi o pr guire a imaginii-diferen rezultate. Un algoritm de umplere a regiunilor e folosit
pentru identificarea frontierelor zonelor care s-au schimbat. Algoritmul este foarte simplu, de
aceea unele regiuni concave nu sunt umplute, îns s-a doveditt suficient de performant pentru
aplica ia în discu ie. Regiunile cu o arie aflat sub un anumit prag sunt ignorate.
În continuare se presupune c frontierele calculate mai sus corespund obiectelor în
mi care. Acestea sunt asociate dreptunghiurilor înglobante (ai c ror parametri au fost
calcula i tot la pasul precedent) i din nou se elimin acele obiecte a c ror arie se situeaz sub
un anumit prag.
Pentru a cre te robuste ea sistemului, în primul rând fa de zgomot, dreptunghiurile
înglobante sunt modelate i urm rite cu un filtru Kalman predictiv, multi-obiect. Acesta
modeleaz i prezice comportarea lor în timp, pe baza pozi iei, a dimensiunii i a derivatelor
de ordinul întâi ale acestor m rimi. Astfel se reu este chiar i urm rirea unui obiect care este
temporar ocultat de un obstacol. Pentru fiecare dreptunghi se men ine un nivel de încredere,
ce corespunde probabilit ii ca acesta s fie asociat unui obiect real în mi care; dac nivelul

- 38 -
Capitolul 5 FPGA-urile în prelucrarea i analiza imaginilor

de încredere scade sub un anumit prag, dreptunghiul este înl turat. Noi descrieri sunt create
de fiecare dat când un obiect în mi care este detectat.

5.3.2 Implementarea algoritmului


Algoritmul este implementat în a a fel încât opera iile la nivel de pixel ruleaz în
FPGA, iar filtrul Kalman i interfa a cu utilizatorul pe microprocesor. Aceasta deoarece
hardware-ul este potrivit pentru calculele rapide cu complexitate sc zut , iar software-ul
pentru calcule mai lente dar mai complexe. În consecin , diferen ierea între cadre, pr guirea,
umplerea regiunilor i calcularea dreptunghiurilor înglobante se fac toate într-un FPGA, care
se ocup deasemenea de comunica ia cu microprocesorul.
Fiecare cadru de 128 x 128 pixeli este transferat în FPGA printr-o instruc iune a
microprocesorului de mutare a unui bloc. FPGA-ul calculeaz i returneaz
microprocesorului o list , de lungime variabil , de dreptunghiuri înglobante.
Manipularea fluxului video, filtrul Kalman i interfa a pe baz de meniuri cu
utilizatorul sunt rulate de microprocesorul programat în occam. De i sistemul HARP este
situat într-un PC, acesta nu are nici un rol la rulare, ci doar la ini ializarea pl cii.

5.3.3 Performan e
Sistemul produce la ie ire un flux de imagini video ce sunt primite de la placa HARP
i afi ate pe un monitor. Unul din modurile de afi are este prin supraimpunerea pe imaginea
video a dreptunghiurilor înglobante. La utilizare se ob ine o rat de 12-23 de cadre pe
secund , în func ie de ceea ce se întâmpl în scen . Aceste rezultate sunt destul de bune,
având în vedere generalitatea sistemului folosit i faptul c programatorul nu a intervenit în
nici un fel în proiectarea de hardware, mai jos de nivelul programului propriu-zis.
Dac aceea i aplica ie ruleaz integral pe microprocesor, performan a scade de ase
ori. Acest factor ar fi fost i mai mare dac sistemul ini ial ar fi permis ca intrarea/ie irea
video s foloseasc o memorie direct accesibil FPGA-ului. Oricum, performan e similare ar
necesita utilizarea a cel pu in înc 5 microprocesoare asem n toare, ceea ce implic un efort
în plus pentru distribuirea algoritmului în vederea calcului în paralel.

- 39 -
Capitolul 6 Concluzii

6 Concluzii
Calculul configurabil este un domeniu înc nou. De i conceptul a fost propus pentru
prima oar de Gerald Estrin de la University of California, Los Angeles, la sfârsitul anilor
'60, primele demonstra ii nu au ap rut decât la mijlocul anilor '90, iar FPGA-urile utilizate în
mod curent cu un num r de por i de ordinul sutelor de mii, nu ofer înc suportul pentru
exploatarea complet a posibilit ilor acestei tehnici. FPGA-urile de ultim or au îns un
num r mai mare de por i (de pild cele din familia Virtex de la Xilinx au peste 1.000.000 de
por i, iar pentru circuitele APEX II de la Altera se ajunge pân la 4.000.000), ceea ce permite
implementarea unor aplica ii mai complexe.
Cercet torii i produc torii încearc dep irea limit rilor care au împiedicat adoptarea
pe o scar mai larg a FPGA-urilor. Acestea sunt potrivite pentru opera ii la nivel de bi i sau
cu valori întregi, dar nu efectueaz eficient opera ii numerice, cum ar fi înmul irea sau
calculul cu valori în virgul mobil . Circuitele de înmul ire dedicate pot fi optimizate pentru a
realiza aceste opera ii mai eficient decât echivalentele lor create cu resurse interne. În plus,
FPGA-urile ofer un spa iu intern relativ redus pentru stocarea rezultatelor intermediare ale
calculelor; de aceea, în multe aplica ii, este necesar folosirea de memorii externe mari.
Deasemenea, transferul de date dinspre i înspre FPGA cresc consumul i încetinesc
calculele.
Unele cercet ri sunt îndreptate spre dezvoltarea de FPGA-uri care con in memorie,
unit i aritmetice i alte blocuri speciale. André DeHon i Thomas Knight, de la
Massachusetts Institute of Technology au propus un FPGA care stocheaz configura ii
multiple într-o serie de bancuri de memorie. Într-un singur tact de ceas, ceea ce este de
ordinul zecilor sau sutelor de nanosecunde, cipul î i poate schimba configura ia, f r a pierde
datele par ial prelucrate.
Brad Hutchings, de la Brigham Young University, a construit un computer cu un set
de instruc iuni dinamic, care combin un microprocesor cu un FPGA i demonstreaz
poten ialul reconfigur rii automate folosind configura ii prestocate. Pe m sur ce un program
ruleaz , FPGA-ul cere reconfigurarea sa, dac structura de por i necesar nu este rezident .
Este permis astfel crearea de configura ii multiple, adaptate diverselor sarcini, care pot fi
activate similar cu ini ierea unui apel de subrutin într-un microprocesor.
Grupul Colt, condus de Peter Athanas, de la Virginia Polytechnic Institute and State
University, investigheaz o tehnic de reconfigurare numit "gaur de vierme". În cadrul
acesteia fluxul de date creaz o structur logic adaptat pe m sur ce parcurge sistemul
reconfigurabil.

- 40 -
Capitolul 6 Concluzii

John Wawrzynek i colegii s i de la University of California, Berkley, dezvolt


deasemenea un sistem care combin un microprocesor i un FPGA. Un compilator special
preia un program obi nuit i genereaz în mod automat o combina ie de instruc iuni în cod-
ma in pentru microprocesor i un ansamblu de configura ii pentru FPGA, astfel încât
performan ele globale ale sistemului s fie maximizate.

FPGA-urile nu vor înlocui niciodat microprocesoarele pentru activit i de tip


generic, dar conceptul de calcul configurabil va juca un rol tot mai mare în dezvoltarea
sistemelor de calcul ultra-performante. Puterea de calcul oferit de FPGA-uri va face ca ele
s fie preferate în aplica ii ce necesit o adaptare rapid la datele de intrare.
În plus, linia desp r itoare ce separ procesoarele programabile i FPGA-urile va
deveni tot mai neclar . Viitoarele genera ii de FPGA-uri vor avea caracteristici ce sunt acum
specifice microprocesoarelor: memorie local mai mare, multiplicatoare dedicate etc. În
schimb, noile genera ii de microprocesoare ce sunt dezvoltate în prezent posed zone cu
propriet i asem n toare reconfigur rii FPGA-urilor.
Un prim pas într-o direc ie similar a fost deja f cut de compania Transmeta prin
procesorul Crusoe, ap rut în ianuarie 2000. Acesta transfer cea mai mare parte a rolului
procesorului — determinarea instruc iunilor ce trebuie executate i a momentului execu iei
— în software, într-un proces numit adaptarea codului (în lb. englez code morphing). Acesta
efectueaz în primul rând transformarea instruc iunilor x86 în instruc iuni specifice unit ii de
execu ie, precum i reordonarea acestora astfel încât mai multe instruc iuni pot fi executate
simultan. În paralel se realizeaz o statistic a instruc iunilor procesate, astfel încât procesorul
se adapteaz la fluxul de intrare, iar instruc iunile ce se repet nu mai sunt din nou
transformate, ci se utilizeaz direct instruc iunile corespunz toare stocate în cache.

A a cum în prezent computerele î i pot aduce prin intermediul Internetului


componente software necesare pentru rezolvarea anumitor probleme, viitoarele ma ini vor
putea primi la cerere noi configura ii hardware, în m sura necesit ilor. Este cert oricum c
sistemele de calcul vor include o combina ie strâns de hardware programat prin software i
de logic hardware reconfigurabil . Aceasta face ca rolul limbajelor de programare facil a
hardware-ului, de tipul Handel-C, s continue s creasc i în continuare.

- 41 -
Bibliografie
[Alt-**] Altera, Inc. ([Link]).
[Bar-01] F. R. M. Barnes, R. Beuran, R. W. Dobinson, M. J. LeVine, B. Martin, J. Lokier,
C. Meiro u, "Ethernet Networks for the ATLAS Data Collection System:
Emulation and Testing", Proc. of the 12th IEEE Real Time Congress on Nuclear
and Plasma Sciences, Valencia, iunie 2001, pp. 6-10.
[Beu-00] R. Beuran, "Marcarea digital a imaginilor", lucrare de diserta ie, Universitatea
"Politehnica" Bucure ti, mai 2000.
[Cel-**] Celoxica, Ltd. ([Link]).
[Dob-01] R. W. Dobinson, S. Haas, K. Korcyl, M. J. LeVine, J. Lokier, B. Martin, C.
Meiro u, F. Saka, K. Vella, "Testing and modeling Ethernet switches for use in
ATLAS high-level triggers", IEEE Trans. on Nuclear Science, vol. 48, no. 3,
2001.
[Hau-98] S. Hauck, "The Roles of FPGAs in Reprogrammable Systems", Proc. of IEEE,
vol. 86, nr. 4, aprilie 1998, pp. 615-638.
[Hoa-88] C. A. Hoare (editor), "Occam 2 Reference Manual", Prentice Hall International
Series in Computer Science, Cambridge, 1988.
[Ker-88] B. Kernighan, D. Ritchie, "The C Programming Language", Prentice Hall, 1988.
[Max-96] C. Maxfield, "Field-programmable devices", EDN Magazine, mai 1996.
[Pae-91] A. W. Paeth, "Image File Compression Made Easy", Graphics Gems II, James
Arvo (editor), Academic Press, San Diego, 1991.
[Pag-97] I. Page, "Hardware-software Co-synthesis Tesearch at Oxford", Proc. of IEE
Vacation School on Hardware/Software Co-design, IEE, iulie 1997.
[Pro-**] The Programmable Logic Jump Station ([Link]).
[Sea-97] R. C. Seals, G. F. Whapshott, "Programmable Logic: PLDs and FPGAs", Mc-
Graw Hill, 1997.
[Tan-97] A. S. Tanenbaum, "Re ele de calculatoare", edi ia a 3-a, Computer Press Agora,
1997.
[Tau-95] E. Tau, D. Chen, I. Eslick, J. Brown, A. DeHon, "A First generation DPGA
Implementation", Proc. of the 3rd Canadian Workshop on Field-Programmable
Devices, mai 1995, pp. 138-143.
[Toa-96] Gh. Toac e, D. Nicula, "Electronic digital ", Editura Teora, Bucure ti, 1996.
[Ver-00] C. Vertan, M. Ciuc, V. Buzuloiu, R. Beuran, "New Trends in Color Image
Analysis and Processing", EEA - Electrotehnic , Electronic i Automatic , vol.
48, no. 5-6, mai - iunie 2000, pp. 12-16.

- 42 -
[Vil-97] J. Villasenor, W. H. Mangione-Smith, "Configurable Computing", Scientific
American, iunie 1997.
[Wal-90] G. K. Wallace, "Overview of the JPEG Still Picture Compression Algorithm",
Electronic Imaging East, 1990.

- 43 -

S-ar putea să vă placă și