programarea_fpga
DESCRIPTION
FPGATRANSCRIPT
-
UNIVERSITATEA "POLITEHNICA" BUCURETIFACULTATEA DE ELECTRONIC I TELECOMUNICAII
Programarea FPGA-urilor folosindlimbajul Handel-C
referat de doctorat
Prep. drd. ing. Rzvan Beuran
Coordonatori:Prof. dr. ing. Vasile BuzuloiuProf. dr. ing. Jean-Marie Becker
- 2001 -
-
Coninut
1 Introducere................................................................................................................12 Circuite logice programabile...................................................................................3
2.1 Tehnologii de fabricaie.....................................................................................32.1.1 Conexiuni fuzibile..................................................................................................42.1.2 Conexiuni anti-fuzibile...........................................................................................42.1.3 Celule EPROM i EEPROM..................................................................................42.1.4 Celule SRAM.........................................................................................................5
2.2 Clasificarea arhitecturilor.................................................................................62.2.1 Circuite logice programabile simple......................................................................62.2.2 Circuite logice programabile complexe.................................................................72.2.3 Matrici de pori programabile (FPGA-uri).............................................................92.2.4 Interconexiuni programabile................................................................................10
2.3 FPGA-urile.......................................................................................................102.3.1 Caracteristici de baz............................................................................................102.3.2 Tipuri de arhitecturi..............................................................................................112.3.3 Tehnologii de fabricaie........................................................................................122.3.4 Programarea FPGA-urilor....................................................................................13
3 Limbajul Handel-C................................................................................................153.1 Concepte de baz.............................................................................................16
3.1.1 Fluxul de execuie.................................................................................................173.1.2 Comunicaia i accesul la variabile......................................................................183.1.3 Ciclul de proiectare...............................................................................................18
3.2 Sintaxa limbajului............................................................................................203.2.1 Structura unui program.........................................................................................203.2.2 Elemente de baz..................................................................................................203.2.3 Un exemplu..........................................................................................................223.2.4 Eficiena programelor...........................................................................................223.2.5 Interfaarea cu exteriorul......................................................................................24
4 Studiu de caz: testarea reelelor de calculatoare.................................................254.1 Arhitectura plcii Enet32.................................................................................25
4.1.1 TxMan..................................................................................................................264.1.2 MAC.....................................................................................................................274.1.3 RxMan..................................................................................................................27
4.2 Emulatorul pentru ATLAS................................................................................274.3 Programarea plcii Enet32..............................................................................284.4 Interfaa cu utilizatorul....................................................................................294.5 Rezultate experimentale...................................................................................31
5 FPGA-urile n prelucrarea i analiza imaginilor.................................................355.1 Calcul reconfigurabil.......................................................................................355.2 Recunoaterea formelor...................................................................................365.3 Urmrirea obiectelor.......................................................................................37
5.3.1 Prezentarea aplicaiei............................................................................................385.3.2 Implementarea algoritmului.................................................................................39
- i -
-
5.3.3 Performane..........................................................................................................39
6 Concluzii..................................................................................................................40Bibliografie..................................................................................................................42
- ii -
-
Capitolul 1 Introducere
1 IntroducereNoua tehnologie de implementare logic digital, introdus la mijlocul anilor '80, i
anume matricea de pori programabil, FPGA (Field Programmable Gate Array), a cunoscuto rspndire 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 acelai circuit pentru o utilizare ulterioar diferit.
La nceputul anilor '90 a aprut un nou tip de circuite logice programabile, numit
DPGA (Dynamically Programmable Gate Array) [Tau-95], a cror funcionalitate poatefi schimbat n intervale de ordinul milisecundelor, prin simplu control software. Acestecomponente deschid cu adevrat calea conceptului de hardware reconfigurabil, adic dearhitecturi care se schimb n timpul operrii, pentru a sluji aplicaia curent ntr-un mod ct
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 carecele mai rspndite sunt VHDL i Verilog. VHDL (VHSIC HDL VHSIC nsemnnd VeryHigh Speed Integrated Circuits) a devenit standard IEEE n anul 1986 i se nrudete, dinpunct 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 asemntor la nivel
general cu limbajul C, ceea ce poate fi considerat drept un argument privind uurina nvrii
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 timpuluintre elaborarea unui algoritm i implementarea sa, devine evident necesitatea utilizrii unui
limbaj care s fie ct mai apropiat de un limbaj de programare frecvent ntrebuinat, un
candidat perfect fiind limbajul C. n acest fel devine posibil realizarea sistemelor hardwarede ctre persoane care nu au urmat lungi cursuri speciale de limbaje de descriere a hardware-ului. Un alt avantaj este facilitarea transformrii unui algoritm scris n C ntr-o implementare
hardware.Un limbaj care rspunde acestor cerine este Handel-C, furnizat de compania
Celoxica [Cel-**]. Acest limbaj este bazat pe limbajul Handel elaborat de Ian Page, profesorla Imperial College din Londra i cofondator al Celoxica. La rndul su limbajul Handel estesimilar cu un subset al lui occam [Hoa-88], un limbaj folosit pentru descrierea sistemelor de
- 1 -
-
Capitolul 1 Introducere
aplicaii concurente. Utiliznd limbajul Handel-C este aadar posibil programarea FPGA-
urilor ntr-un mod firesc, natural, cu rezultate satisfctoare din punctul de vedere al
eficienei implementrii.
Aplicaiile care pot beneficia de aportul sistemelor hardware reconfigurabile suntnumeroase, de la cele de tipul recunoaterea formelor, comunicaia video,
criptarea/decriptarea, pn la sisteme de testare a reelelor de calculatoare .a.m.d. n general
vorbind, pentru orice domeniu n care sunt necesare operaii n timp real, iar prelucrrile
software nu sunt suficient de rapide, o soluie practic extrem de eficient este folosirea unorsisteme pe baz de FPGA-uri (sau DPGA-uri), programate cu un limbaj de nivel nalt, cum ar
fi Handel-C. Aceasta paradigm a migrrii dinspre software spre hardware este foarte binesintetizat de A. S. Tannenbaum n urmtoarea declaraie:
"Designers with different goals may, and often do, make different decisions [...] theboundary between hardware and software is arbitrary and constantly changing. Today'ssoftware 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
modalitile uzuale de programare a acestora. Capitolul 3 va detalia structura limbajului
Handel-C, iar n Capitolul 4 se va prezenta o aplicaie care utilizeaz n mod intensiv acest
limbaj. n Capitolul 5 se trec n revist o serie de posibile aplicaii ale conceptului de
hardware reprogramabil n prelucrarea i analiza imaginilor. Lucrarea se ncheie cu o serie deconsideraii finale i bibliografia folosit.
* Designeri cu scopuri diferite pot lua decizii diferite, i deseori o fac [...] frontiera ntre hardware isoftware este arbitrar i n continu schimbare. Software-ul de astzi este hardware-ul de mine, iviceversa.
- 2 -
-
Capitolul 2 Circuite logice programabile
2 Circuite logice programabileDup cum s-a menionat i n introducere, circuitele logice programabile (n lb.
englez FPD Field Programmable Devices), au cptat o rspndire tot mai mare la oraactual. Denumirea este folosit n prezent pentru toate circuitele integrate a cror
funcionalitate poate fi modificat ulterior fabricaiei [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. englezFPMSD Field Programmable Mixed-Signal Devices).
Datorit evoluiei 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
posibilitile care exist n prezent pentru a programa astfel de circuite [Max-96].
2.1 Tehnologii de fabricaieTehnologiile de fabricaie 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 fuzibileConexiunile fuzibile sunt similare cu siguranele casnice, n sensul c, prin aplicarea
unei cantiti de curent excesive, acestea i schimb substanial caracteristicile electrice.
Exist dou tipuri de astfel de conexiuni: cu legtur lateral sau vertical.
Conexiunea lateral este compus dintr-un fir de aliaj tungsten-titanium n serie cu un
tranzistor cu jonciune bipolar, care poate permite trecerea unui curent suficient de mare
pentru topirea firului. Acest tip de conexiune este iniial n scurt-circuit i devine circuit
deschis dup programare.
Prin comparaie, dioda ntre baz i emitor a unui tranzistor cu jonciune bipolar
formeaz o conexiune vertical. Acest tip de legtur este iniial n circuit deschis, deoarece
tranzistorul se comport ca dou diode cuplate spate n spate, mpiedicnd astfel trecerea
curentului. Dac ns se foreaz trecerea unui curent prin emitor, se produce un efect de
avalan, emitorul se topete i se creaz un scurt-circuit.
Acest tip de conexiune este programabil o singur dat (n lb. englez OTP One-Time Programmable), ns conexiunile rmase neprogramate se pot bineneles modifica ncontinuare.
2.1.2 Conexiuni anti-fuzibileCa 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 intrrile componentei. Acest semnal duce la
apariia unei conexiuni prin transformarea siliciului amorf izolator n polisiliciu conductor.
i acest tip de conexiune este programabil o singur dat, datorit ireversibilitii
procesului implicat.
2.1.3 Celule EPROM i EEPROMToate componentele coninute de memoriile PROM (Programmable Read Only
Memory), incluznd 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 nct circuitul obinut devinereprogramabil. 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 fabricaie,
printr-o suit de programri i tergeri. Circuitele ce se pot programa direct n cadrul
sistemului sunt de preferat, cci nu necesit scoaterea lor de pe plac i folosirea unor tehnici
speciale pentru reprogramare, cum ar fi radiaiia ultraviolet.
2.1.4 Celule SRAMSRAM este acronimul pentru Static RAM, RAM semnificnd Random Access
Memory. n aceast tehnologie, conexiunile programabile sunt constituite din tranzistori de
trecere, pori 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 funcionalitii folosesc de preferin elemente SRAM.
Dezavantajul principal ar fi dimensiunile mai mari implicate de tehnologia SRAM, ceea ce
nseamn c vor fi mai puine puncte de configuraie dect n cazul celorlalte tehnologii.
- 5 -
-
Capitolul 2 Circuite logice programabile
2.2 Clasificarea arhitecturilorn prezent sunt disponibile o serie de arhitecturi de logic programabil, fiecare clas
major prezentnd variante specifice diverilor productori. O posibilitate de clasificare este
urmtoarea [Pro-**]:
circuite logice programabile simple;
circuite logice programabile complexe;
matrici de pori programabile (FPGA-uri);
interconexiuni programabile.
2.2.1 Circuite logice programabile simpleCircuitele logice programabile simple (n lb. englez SPLD Simple
Programmable Logic Device) mai sunt cunoscute i sub urmtoarele 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 conine ntre 4 i 22 de macrocelule, complet interconectate
ntre ele. Majoritatea circuitelor utilizeaz memorii non-volatile, de tipul EPROM, EEPROM
sau Flash*, pentru definirea funcionalitii.
n mod tradiional, SPLD-urile sunt bazate pe un ir de pori AND (I), ale cror ieiri
sunt conectate la un ir de pori OR (SAU). Forma cea mai versatil o constituie PLA-urile, n
care utilizatorul controleaz ambele matrici de intrare ale porilor. Numrul de pori AND
este independent de numrul de intrri, iar numrul de pori OR (i n consecin de ieiri)
este independent de numrul de intrri i de numrul de pori AND.
Combinaia de pori AND i OR nu este singura soluie posibil, unele circuite avnd
dou iruri de pori NAND (I-NEGAT, NUMAI), sau dou iruri de pori NOR (SAU-
NEGAT, NICI), iar n unele cazuri un ir de pori NAND ca intrare a unui ir de pori NOR.
Exist chiar circuite bazate pe un singur ir de pori ale crui ieiri se constituie n intrri
(prin conexiune invers), pentru a implementa expresii cu termeni de tipul "sume de
produse"*.
Multe aplicaii nu necesit ca ambele iruri de pori s fie programabile. De exemplu,
n circuitele PAL, matricea porilor AND este programabil, iar cea a porilor OR este
* O memorie de tip EEPROM, ns mai rapid dect cipurile EEPROM clasice, deoarece datele suntscrise n blocuri i nu la nivel de octei.
* Termeni numii i maxtermi, sau termen canonic produs din cadrul dezvoltrii n forma canonicdisjunctiv.
- 6 -
-
Capitolul 2 Circuite logice programabile
predefinit. PLA-urile sunt mai flexibile dect PAL-urile, ns acestea opereaz mai rapid,
deoarece conexiunile cablate (n lb. englez hard-wired) comut mai rapid dectechivalentele 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 vzute ca un ir predefinit
de pori AND la intrarea unui ir programabil de pori OR. (n realitate, arhitectura intern
PROM este mai asemntoare cu un decodor ce constituie intrarea unui ir programabil de
pori OR.) Dei PROM-urile sunt privite n general ca i circuite de memorie, n care pentru o
adres drept intrare, la ieire apare o valoare programat n circuit, ele pot fi interpretate ca i
circuite logice programabile clasice, fiind folosite pentru stocarea tabelelor de adevr, sau
implementarea funciilor cu un numr mare de maxtermi.
n plus fa de funcionalitatea de baz, SPLD-urile sunt disponibile i cu o serie de
opiuni programabile, cum ar fi ieiri cu trei stri sau prin regitri. 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 intrri, ieiri, sau conexiuni bidirecionale.
2.2.2 Circuite logice programabile complexeCircuitele logice programabile complexe (n lb. englez CPLD Complex
Programmable Logic Device) mai poart i urmtoarele denumiri: EPLD (ErasableProgrammable 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 pn la 64 de circuite simple. Un CPLD
conine zeci sau sute de macrocelule, grupuri de 4 pn la 16 dintre acestea constituind un
bloc funcional. Macrocelulele din acelai bloc funcional sunt complet interconectate ntre
ele, iar dac un circuit conine mai multe blocuri funcionale, acestea sunt la rndul lor
interconectate, ns nu neaprat complet, aceast chestiune depinznd de productor. O
consecin a acestui fapt este eventuala imposibilitate de rutare i probleme cu repartiia
pinilor ntre versiuni diferite de proiectare.
CPLD-urile au o arhitectur asemntoare cu SPLD-urile, de aceea tranziia este
uoar pentru proiectani. 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 proiectri 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) denalt performan.
Unele din variaiile majore ntre arhitecturile de CPLD-uri includ: numrul de termeni
produs per macrocelul, dac acetia pot fi "mprumutai" ntre macrocelule, dac matricea de
interconectare este complet sau doar parial populat. "mprumutarea" termenilor produs
menionat mai sus, ce este posibil n unele arhitecturi, lrgete gama de aplicaii. De
remarcat faptul c, n anumite cazuri, macrocelule de la care s-a "mprumutat" devin
nefuncionale, n timp ce n alte arhitecturi ele i pstreaz o funcionalitate de baz. Trebuie
ns subliniat c, prin astfel de "mprumuturi", timpul de propagare de obicei crete.
O alt diferen ntre arhitecturi este dat de numrul de conexiuni n matricea de
comutare. Dac toate variantele sunt posibile, matricea este numit complet populat, n caz
contrar parial populat. Numrul de conexiuni determin uurina 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 uurin, chiar dac majoritatea resurselor sunt folosite, iar
ntrzierile sunt fixe i predictibile.
Un circuit cu o matrice de interconectare parial populat poate cauza dificulti de
rutare. Schimbrile de proiectare sunt mai dificile, i poate fi necesar modificarea repartiiei
pinilor, ceea ce constituie un inconvenient major, cci este mult mai uor s se schimbe
structura intern a unui circuit programabil, dect s se reproiecteze ntreaga plac.
ntrzierile pentru acest fel de matrice nu sunt fixe i mai greu de prezis. Folosirea unor astfel
de circuite, n ciuda limitrilor amintite, este bineneles 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
funcionalitii. Circuitele bazate pe EPROM sunt de obicei programabile o singur dat, cu
excepia cazului cnd sunt incluse ntr-o capsul cu o fereastr pentru programarea prin
radiaie ultraviolet. Programarea se face de ctre productor 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 productori, doar
Atmel i Philips mai produc doar CPLD-uri de primul tip, restul companiilor (Altera,Cypress, Lattice, Vantis, Xilinx) producnd 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
conine mai mult de 100 de trasee, sunt interfaate 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 ntrzierilor. Piaa acestor circuite a
crescut considerabil n ultimii ani, ele gsindu-i ntrebuinri n multe aplicaii comerciale,
ncluznd regndirea unor proiecte bazate pe SPLD-uri, astfel nct implementarea s
necesite mai puine circuite.
2.2.3 Matrici de pori programabile (FPGA-uri)FPGA-urile (Field Programmable Gate Array) mai sunt cunoscute sub urmtoarele
denumiri: LCA (Logic Cell Array), pASIC (programmable ASIC), FLEX, APEX (de laAltera), 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/ieire programabile i legate prin interconexiuni care sunt la rndul lor
programabile (vezi seciunea 2.3 pentru o tratare mai detaliat).
- 9 -
-
Capitolul 2 Circuite logice programabile
2.2.4 Interconexiuni programabileInterconexiunile 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 stabilete 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-Cubeofer astfel de circuite ca i componente de sine stttoare, n timp ce Aptix lecomercializeaz ca pri ale sistemelor lor de emulare hardware.
2.3 FPGA-urileCircuitele SPLD i CPLD sunt utile ntr-o varietate de scopuri, dar structura lor,
bazat pe iruri de pori programabile AND i OR este totui o limitare. La cellalt capt al
spectrului se afl ASIC-urile (Application-Specific Integrated Circuit), care includ matrici depori, elemente standard i circuite adaptate cerinelor. Acestea sunt foarte generice, au o
arhitectur de granularitate fin (la nivel de pori de baz i regitri) i au capaciti de
800.000 de pori sau chiar mai mult. Pe de alt parte, aceste circuite necesit costuri mari de
punere n producie i perioade lungi de proiectare. Deci ntre SPLD-uri/CPLD-uri, la un
capt, i ASIC-uri, la captul cellalt al scrii, se gsea un gol.
2.3.1 Caracteristici de bazSpre sfritul anilor '80, un nou tip de circuite i-a fcut apariia pentru a umple acest
gol, i anume FPGA-urile (Field Programmable Gate Array). Aceste circuite combinaumulte din caracteristicile matricilor de pori, cum ar fi densitatea mare, cu cele ale circuitelor
programabile timpurii, n principal programabilitatea. Un factor difereniator 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/ieire programabile i legate prin
interconexiuni care sunt la rndul lor programabile (vezi figura 1).
Un FPGA tipic conine ntre 64 i zeci de mii de blocuri logice, i un numr 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 blocurilefuncionale i crearea interconexiunilor nter acestea.
- 10 -
-
Capitolul 2 Circuite logice programabile
Figura 1: Structura de principiu a unui FPGA.
2.3.2 Tipuri de arhitecturiExist o serie de sub-arhitecturi care se ncadreaz n modelul general prezentat
anterior. Secretul densitii i performanelor nalte despre care s-a vorbit rezid n funciile
logice ale blocurilor logice prezente, precum i n eficiena 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 granulaie mare;
arhitecturi cu granulaie fin.
Arhitecturile cu granulaie mare se bazeaz pe blocuri logice relativ mari, coninnd adeseori
dou sau mai multe tabele de cutare i dou sau mai multe bistabile. Principalele dou abordri
pentru circuitele cu granularitate mare sunt:
tabelele de cutare (n lb. englez look-up tables, LUT); multiplexoarele.
Presupunndu-se un tabel cu 3 intrri, o tehnic implic folosirea unui decodor 3-la-8
pentru a selecta una din cele 8 celule SRAM care conine valoarea de ieire dorit din tabela
de adevr a funciei logice. Ca o alternativ se pot folosi celule SRAM pentru a controla o
structur piramidal de multiplexoare i a genera ieirea. 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 rnd,
- 11 -
-
Capitolul 2 Circuite logice programabile
ntrzierile nu sunt la fel de predictibile ca n cazul SPLD-urilor i CPLD-urilor. n al doilea
rnd, toi productorii utilizeaz programe speciale pentru a plasa schemele de principiu n
circuitele lor, ceea ce face aproape imposibil migrarea de la un productor la altul i
meninerea acelorai ntrzieri de propagare. n al treilea rnd, 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 pori logice, iar programelededicate FPGA-urilor nu reuesc 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
ntrzierilor de propagare nainte de rutare, ceea ce nseamn ca uneori sunt necesare
intervenii pe nivelele de jos ale ciclului de proiectare pentru a face sistemul funcional.
Totui unele tehnici sunt adaptate n particular arhitecturilor FPGA cu granularitate
mare, cum ar fi, de exemplu, biblioteca de module parametrizate EDIF (Electronic DesignInteroperability Format). Deasemenea se observ o tendin n cretere ctre utilizareaarhitecturilor FPGA cu granularitate fin, cum ar fi circuitele pASIC-2 ale companiei
QuickLogic, ale cror celule se pot comporta n ambele moduri (cu granularitate mare saugranularitate fin), sau arhitectura CrossFire a Crosspoint Solutions, care folosete blocuri debaz ultrafine "jumtate de poart logic".
Cellalt tip de arhitectur este aadar cel cu granulaie fin. Aceste circuite conin un numr
mare de blocuri logice relativ simple. Un astfel de bloc conine, de obicei, fie o funcie 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
porilor logice.
2.3.3 Tehnologii de fabricaieO 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 interconectibiliti sporite.
Circuitele bazate pe SRAM sunt n mod inerent reprogramabile, chiar n cadrul
sistemului, dar necesit o surs extern de memorie de configuraie. Aceasta conine
programul care definete modul n care funcioneaz blocurile logice, care blocuri I/E sunt
intrri i care sunt ieiri, modul n care blocurile sunt interconectate. FPGA-ul respectiv, fie
i auto-ncarc configuraia dintr-o memorie, fie un procesor extern descarc configuraia n
el. Cnd se auto-ncarc, FPGA-ul adreseaz o memorie PROM standard asemeni unui
procesor la iniializare, sau folosete un tip special de PROM, cu acces secvenial. n a doua
- 12 -
-
Capitolul 2 Circuite logice programabile
variant FPGA-ul este oarecum echivalent cu un periferic de microprocesor standard.
Configuraia dureaz, n mod uzual, mai puin de 200ms, depinznd de dimensiunea
circuitului i de metoda de configuraie.
n contrast cu circuitele descrise mai sus, n cazul celor anti-fuzibile programarea se
face o singur dat, i funcionalitatea nu mai poate fi modificat, rmnnd valabil chiar i
dup ntreruperea alimentrii. Aceste circuite sunt n consecin programate doar de ctre
fabricant sau distribuitor.
Unele FPGA-uri au integrate anumite caracteristici de nivel mai nalt, cum ar fi
magistrale, memorii pentru mici blocuri de regitri sau cozi, suport pentru JTAG*, ceea ce
face ca ele s fie preferate pentru schemele mai complexe.
2.3.4 Programarea FPGA-urilorProgramarea convenional a FPGA-urilor poate fi descris prin urmtoarea
succesiune de pai (vezi i figura 2):
1) etapa de proiectare;
2) etapa de mapare/rutare;
3) etapa de verificare/simulare;
4) eventual modificarea sau corectarea circuitului.
Figura 2: Ciclul de proiectare convenional 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 -
Proiectareacircuitului
Maparea/rutarea
Verificarea/simularea
Modificarea/corectareacircuitului
-
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 acelai 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-ulasociat proiectului.
Etapa de mapare/rutare realizeaz convertirea netlist-ului produs n faza anterioarntr-un fiier binar de configurare a FPGA-ului. Cei trei pai inclui n aceast etap sunt:
a) maparea schemei pe resursele circuitului;
b) asignarea blocurilor logice, create anterior prin mapare, unor locaii specifice din
circuit;
c) interconectarea blocurilor logice.
n final se creaz o descriere exact a configuraiei 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 sincronizrii/temporizrii. O serie
dintre aceste teste se poate efectua cu instrumentele de verificare/simulare, care permit o
caracterizare detaliat a proiectului, prin efectuarea de simulri de funcionalitate i
sincronizare. Un alt mod de testare este chiar verificarea sub tensiune, prin crearea condiiilor
normale de operare.
Uneori, dup etapa de mai sus se pot constata inadecvri ntre funcionalitatea
circuitului i cea dorit. n acest caz se impune reluarea ciclului de proiectare de la primul
pas.
Configurarea este procesul prin care fiierul binar produs la pasul 2 este propriu-zis
ncrcat n FPGA. Circuitele pot fi configurate prin folosirea unui PROM, cel serial fiind cel
mai folosit, dar existnd i variante paralele la nivel de octet. n acest caz FPGA-ul i citete
n mod activ configuraia 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 interfee,
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 configuraia este integrat ntr-o funcie a unui limbaj de nivel
nalt, de obicei C; astfel devine posibil configurarea din cadrul unei aplicaii.
De curnd 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 uurin
mai mare n programare i permit de obicei efectuarea de simulri nainte de mapare/rutare.
3 Limbajul Handel-CHandel-C este un limbaj de programare ce a fost proiectat pentru a permite
transformarea programelor n implementri hardware digitale. Totui Handel-C nu este unlimbaj 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 pori logice.
n cele ce urmeaz se va discuta despre versiunea 2.0 a limbajului, care a fost folosit
pentru implementarea plcii de test descris n capitolul 4. Ultima versiune, i anume 3.0,
adaug o serie de faciliti limbajului, uurnd i mai mult portarea din C.
- 15 -
-
Capitolul 3 Limbajul Handel-C
3.1 Concepte de bazSintaxa limbajului Handel-C se bazeaz pe aceea a limbajului C convenional
[Ker-88], deci programatorii familiarizai cu acesta recunosc cu uurin majoritatea
elementelor sintactice. Limbajul permite aadar exprimarea unui algoritm fr 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 convenional este pentru limbajul deasamblare al microprocesorului.
Programe secveniale pot fi scrise n Handel-C la fel ca i n C, dar, pentru a beneficia
ct mai mult de implementarea hardware, trebuie exploatat paralelismul inerent al acestuia.De aceea Handel-C conine construcii paralele, acesta fiind una din cele mai importante
diferene fa de C-ul convenional.
- 16 -
-
Capitolul 3 Limbajul Handel-C
3.1.1 Fluxul de execuieLimbajul Handel-C este aadar n principal secvenial, ordinea a dou instruciuni
deteminnd ordinea execuiei. Ca n oricare limbaj convenional exist instruciuni ce
controleaz cursul programului. De pild o poriune de cod poate fi executat n mod
condiionat, n funcie de valoarea unei expresii, sau poate fi repetat de un numr de ori
folosind instruciuni de ciclare. Trebuie precizat faptul c schema hardware produs deHandel-C este aceeai cu cea specificat prin codul surs; nu exist nici un nivel intermediar
de interpretare cum se ntmpl n cazul limbajelor de asamblare. Porile logice constituie
"instruciunile" de asamblare ale limbajului Handel-C.
Datorit faptului c prin compilare se produce un netlist, o cretere important aperformanelor se poate obine prin utilizarea paralelismului. Este deci posibil n Handel-C (i
esenial, din punctul de vedere al eficienei execuiei) a instrui compilatorul s genereze
hardware care execut instruciuni n paralel.Paralelismul n Handel-C este veritabil, nu ca cel simulat ntlnit n computerele de uz
general. Cu alte cuvinte, dou instruciuni pentru care se dispune a fi executate n paralel vor
fi executate n exact acelai tact de ceas de ctre dou poriuni de hardware diferite. Cnd se ajunge la un bloc paralel fluxul de execuie se ramific la nceputul blocului
i ramurile sunt executate simultan. Fluxul de execuie este apoi reluat la sfritul blocului,
cnd toate ramurile au terminat execuia. Ramurile care termin mai devreme sunt forate s o
atepte pe cea mai nceat dintre ele, nainte de continuarea execuiei.
- 17 -
-
Capitolul 3 Limbajul Handel-C
3.1.2 Comunicaia i accesul la variabilePentru comunicaia 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 recepioneaz. Canalele servesc deasemenea la
sincronizarea ntre ramuri, cci transferul nu poate avea loc dect atunci cnd ambele capete
ale canalului de comunicaie sunt disponibile. Dac transmitorul nu este pregtit pentru
comunicaie, atunci receptorul trebuie s atepte i viceversa.
Vizibilitatea declaraiilor de variabile este bazat pe blocuri de cod separate de
acolade, ca i n limbajul C. Deoarece construciile 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 aceleiai 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 acelai tact de ceas;
exist ns posibilitatea de a citi valoarea unei variabile, ceea ce duce uneori la eficientizarea
unor poriuni de cod.
3.1.3 Ciclul de proiectaren figura 3 se poate observa secvena operaiilor implicate de programarea n Handel-
C. Se observ c simulrile se efectueaz cu ajutorul instrumentelor Handel-C, iar
implementarea n hardware este ulterioar. Astfel accentul se pune pe efectuarea eventualelorcorecii nc din faza "software" a proiectului, deci nainte de implementarea hardware.Motivul principal este c operaiile asociate cu aceasta din urm (mapare, rutare) dureaz n
general mult mai mult timp dect simpla compilare.
- 18 -
-
Capitolul 3 Limbajul Handel-C
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 -
Portarea algoritmuluin Handel-C
Compilarea n vederea simulrii
Rularea simulriipropriu-zise
Adugarea interfeei cu hardware-ul extern
Compilarea pentruhardware
Fitarea i rutareapentru FPGA
ProgramareaFPGA-ului
Modificarea/corectareaprogramului
-
Capitolul 3 Limbajul Handel-C
3.2 Sintaxa limbajuluiDup cum s-a amintit anterior, sintaxa limbajului Handel-C este foarte asemntoare
cu cea a limbajului C. n continuare se vor prezenta succint elementele de baz ale sintaxei,
cu sublinierea diferenelor care exist fa de limbajul C.
3.2.1 Structura unui programStructura general a unui program este urmtoarea:
Declaraii globalevoid main(void){
Declaraii localeBloc de instruciuni
}
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. Biii din variabile pot fi extrai cu uurin i
alturai 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 uura portarea din C.
3.2.2 Elemente de bazO diferen important n Handel-C, n comparaie cu limbajul C, este inexistena
pointerilor, care se datoreaz bineneles lipsei unei memorii globale.
Tablourile de variabile pot fi declarate n acelai mod ca i n limbajul C. O restricie
important n versiunea 2.0 este aceea c indicii trebuie s fie constante la compilare (aceast
restricie 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 puine
resurse. Dezavantajul principal este c doar o singur locaie poate fi accesat ntr-un tact de
ceas.
Pentru comunicaie se folosesc canale sau chiar tablouri de canale. Citirea dintr-un
canal se face printr-o instruciune de forma:
Canal ? Variabil;
iar scrierea prin:
Canal ! Expresie;
Pentru ca un bloc de instruciuni s fie executat n paralel, acesta trebuie precedat de
cuvntul cheie par:
par{
Bloc de instruciuni}
Instruciunile de atribuire sunt singurele care sunt considerate ca avnd o durat
temporal n Handel-C, fcnd astfel calculul sincronizrilor mai simplu. Se pot regsi n
limbaj i instruciunile de execuie condiionat sau ciclare uzuale n C: if-else, switch,
while, do-while, for. Exist deasemenea i instruciunea break.
O instruciune nou este delay, care nu are nici un efect, ci doar cauzeaz o
ntrziere de un tact de ceas. Ea se folosete pentru a preveni conflictele asupra resurselor sau
pentru a ajusta sincronizarea proceselor n timpul execuiei.
Este definit o serie ntreag de operatori, de la cei de manipulare a biilor (dintre care
unii sunt specifici Handel-C, cum ar fi cei de selecie a biilor), pn la operatori aritmetici,
relaionali sau operatorul condiional.
Ca i n limbajul C, Handel-C permite folosirea de macro-uri, fie ele expresii
constante sau parametrizate. Prin folosirea cuvntului cheie shared n locul celui de macro
se instruiete compilatorul s refoloseasc expresia n toate locurile unde apare, efectund
astfel o economie de resurse. Prin folosirea combinaiei macro proc se definete o
procedur, evitndu-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 execuie a unui bloc de instruciuni sunt elemente eseniale
pentru a asigura corectitudinea execuiei n cazul programelor ce conin multiple procese
paralele ce interacioneaz ntre ele. Dup cum s-a amintit i anterior, atribuirea i
instruciunea delay dureaz un tact de ceas, celelalte instruciuni fiind considerate
instantanee. Ca o consecin, un ciclu care nu conine nici o instruciune cu "durat" este
- 21 -
-
Capitolul 3 Limbajul Handel-C
considerat incorect, cci nu i se poate evalua timpul de execuie, i poart denumirea de ciclucombinatorial. Un mod de a corecta o astfel de eroare este introducerea unei instruciuni dentrziere.
3.2.3 Un exemplun continuare este prezentat un exemplu foarte simplu, al crui 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 ieire:
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 definete dou variabile:
sum pentru a stoca suma intrrilor i data pentru a stoca temporar fiecare intrare; ele sunt
ntregi fr semn pe 16, respectiv 8 bii. Se definesc apoi cele dou canale, unul de intrare
(input) i unul de ieire (output), folosind cuvintele cheie chanin i chanout, care
realizez legtura cu intrarea i ieirea standard a simulatorului.
Suma se iniializeaz la 0. Se intr apoi ntr-un ciclu n care, la fiecare iteraie, se
citete un ntreg pe canalul de intrare care se adun la sum. A se observa operatorul '@' care
realizeaz prefixarea datelor cu 0, astfel nct ambii membri ai sumei s aib acelai numr de
bii. De remarcat c lungimea prefixului 0, i anume 8 bii, este calculat n mod automat de
compilator.
Ieirea din ciclu are loc cnd datele de la intrare au valoarea '0'. Suma este trimis pe
canalul de ieire i apoi se ncheie execuia.
3.2.4 Eficiena programelorEficiena unui FPGA programat n Handel-C depinde de eficiena programului
- 22 -
-
Capitolul 3 Limbajul Handel-C
propriu-zis. Foarte important n acest context este frecvena/perioada ceasului folosit n
sistem; cu ct frecvena este mai mare (respectiv perioada este mai mic), cu att sistemul
este mai eficient. Perioada ceasului sistemului trebuie s fie mai mare dect durata cii celei
mai lungi prin logica combinaional a programului. Dac perioada nu este suficient de mic
pentru a asigura funcionarea sistemului la frecvena dorit se impune efectuarea de
optimizri.
Desigur transformarea codului n Handel-C ntr-o configuraie hardware, care este un
proces automat nu asigur optimalitatea implementrii algoritmului. Se pare ns c acest
aspect este satisfctor (i oricum este n afara controlului utilizatoruil), aa c ne vom ocupa
doar de optimizrile pe care acesta le poate ntreprinde la nivelul codului.
- 23 -
-
Capitolul 3 Limbajul Handel-C
O prim cale de optimizare este reducerea adncimii logicii. Iat cteva soluii pentru
aceasta:
1) evitarea utilizrii operatorului de nmulire, care implic folosirea unei importante
cantiti de resurse logice; multe astfel de operaii se pot efectua prin iftare, sau o
combinaie de ciclare, iftare i adunare;
2) reducerea circuitelor de adunare pe mai muli bii la mai multe circuite similare pe mai
puini bii;
3) evitarea utilizrii comparaiilor de tipul sau prin nlocuirea lor cu operatorii == sau
!=, atunci cnd aceasta este posibil;
4) reducerea operaiilor complexe prin folosirea mai multor etape executate secvenial;
5) evitarea irurilor lungi de instruciuni vide, ce apar de pild n secvene de if fr
else.
Cea de-a doua cale de optimizare este utilizarea principiului benzii de asamblare, prin
mprirea operaiilor complexe n etape ce se execut n paralel. Un astfel de sistem, dei
calculeaz o valoare n mai mult de un tact, dup cteva tacte iniiale produce cte un rezultat
pe tact.
3.2.5 Interfaarea cu exteriorulInterfaarea cu simulatorul se realizeaz prin intermediul canalelor, i poate fi
interactiv cu utilizatorul, dac se folosesc canalele standard de intrare/ieire, sau poate fi
bazat pe fiiere n care utilizatorul stocheaz datele de intrare i n care simulatorul
stocheaz datele de ieire.
Pentru interfaarea codului, i deci a FPGA-ului, cu alte componente hardware,acestea trebuie declarate prin definirea unor interfee. 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 cuvntului cheie interface.
- 24 -
-
Capitolul 4 Studiu de caz: testarea reelelor de calculatoare
4 Studiu de caz: testarea reelelor de calculatoareATLAS 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 acestuiexperiment, ca i pentru scopuri generale de testare a reelelor, s-a construit aici o plac de
testare a reelelor 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, att pentruimplementarea controlerelor de acess la mediu MAC (Media Access Controller) ct i pentrurestul componentelor care contribuie la realizarea funcionalitii ce va fi descris n
continuare.
Din punctul de vedere al prezentei lucrri 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 plcii, ea putnd rspunde unei game foarte largi
de cerine, de la testarea general reelelor i switch-urilor [Tan-97] sau modelarea acestora,pn la generarea unui trafic de reea identic cu cel ce se va ntlni n cadrul experimentului
ATLAS [Dob-01].
4.1 Arhitectura plcii Enet32Arhitectura plcii este prezentat n figura 4. Conexiunea la PC-ul de control este
efectuat printr-un port paralell IEEE 1284. Controlul asupra conexiunii este deinut de un
FPGA, numit I/O Manager (IoMan), care trimite datele i comenzile dinspre PC spre celelaltecomponente ale plcii, ca i datele dinspre acestea spre PC.
- 25 -
-
Capitolul 4 Studiu de caz: testarea reelelor de calculatoare
Figura 4: Arhitectura plcii de test Enet32
Cele 32 de MAC-uri, IoMan precum i alte dou FPGA-uri: managerul de transmisie
a pachetelor (TxMan) i mangerul de recepie a pachetelor (RxMan), sunt conectate printr-o
magistral de tip inel, ceasul sistemului fiind de 25MHz*. Magistrala are o lrgime de 52 de
bii, dintre care 32 sunt utilizai pentru transmiterea datelor, iar ceilali pentru transportul
comenzilor, semnalelor de stare precum i a ceasului global.
4.1.1 TxMann timpul operrii, funcia magistralei este de a furniza descriptori de pachete
provenind de la TxMan tuturor MAC-urilor. Un descriptor const din 5 cuvinte de cte 32 bii
i conine suficient informaie pentru generarea unui pachet Ethernet. TxMan poate accesa o
memorie SRAM privat de 1Mega-cuvnt (36 de bii/cuvnt), ce este folosit pentru stocarea
descriptorilor de transmisie generai de PC-ul de control. Lrgimea de band a magistralei
este suficient pentru a permite generarea celui mai mic pachet Ethernet (64 octei), la debit
maxim.
Descriptorii de transmisie sunt produi de TxMan n modul urmtor. Ei sunt preluai
* Aceasta permite generarea unui trafic de 100Mb/s prin emiterea unui grup de 4 bii (n lb. engleznybble) pe fiecare tact.
- 26 -
-
Capitolul 4 Studiu de caz: testarea reelelor de calculatoare
din memoria TxMan, unde au fost stocai n prealabil, prin ciclare ntr-o manier secvenial
sau pseudo-aleatoare.
4.1.2 MACDescriptorii trimii de TxMan ajung la MAC, unde sunt tratai de ctre un procesor
implementat n Handel-C. Acesta este controlat printr-un limbaj de asamblare specializat
definit de noi, deci schimbrile sunt deosebit de facile, implicnd doar editarea programului
n asamblare i ncrcarea acestuia n MAC. Pachetele transmise conin 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 folosete valori fixe pentru dimensiunea pachetelor, timpul nter
transmiterea a dou pachete i adresa destinaiei.
Pachetele recepionate sunt prelucrate de MAC-uri pentru a genera descriptorii de
recepie (tot 5 cuvinte a 32 de bii). Acetia conin date eseniale ce pot fi extrase direct din
pachete, sau pot fi generate pe baza informaiei din acestea. Direct din pachete se pot extrage
adresa sursei, prioritatea pachetului (dac se folosesc cmpuri de tip VLAN, Virtual LocalArea Network) etc. Pe baza informaiei temporale privind transmiterea pachetului i a valoriicurente a ceasului se poate calcula latena pachetului, iar folosind momentele de recepie a
pachetelor consecutive se poate determina timpul ntre sosirea a dou pachete.
4.1.3 RxManDescriptorii de recepie sunt transmii prin magistral spre RxMan, care folosete
informaia cuprins n descriptori pentru a realiza diverse statistici, cum ar fi totaluri ale
latenelor i numrului de octei, sau histograme ale latenelor i timpilor ntre sosirea a dou
pachete succesive, n funcie de msurtorile ce se efectueaz. Histogramele sunt stocate n
memoria SRAM privat de 1 Mega-cuvnt (36 de bii/cuvnt), ntr-un mod configurabil de
ctre utilizator prin intermediul unor regitri de control. Schimbarea naturii informaiei
extrase din pachete necesit ns intervenia 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 ATLASPlaca de test Enet32, datorit flexibilitii i programabilitii sale, a putut fi folosit
- 27 -
-
Capitolul 4 Studiu de caz: testarea reelelor de calculatoare
i pentru efectuarea unor simulri n cadrul experimentului ATLAS. Este vorba de emularea
traficului de reea generat de sistemele ROB (Read-Out Buffer) din cadrul nivelului 2 alarhitecturii ATLAS. Aceste sisteme trebuie s rspund la cererile efectuate de sistemele de
control prin unul sau mai multe pachete coninnd datele furnizate de detectorii asociai.
Enet32 a fost programat pentru a prelua informaia relevant din cereri i pentru a
produce rspunsurilor necesare. Acestea au proprieti conforme cu cererea, dar datele
coninute de pachete n timpul simulrii nu sunt valide. n pachetele-rspuns trimise se
insereaz momentul de timp la care s-a fcut cererea (provenind din pachetul-cerere), astfel
nct la recepia n PC-ul de control se poate calcula direct latena procesului cerere-rspuns.
Se insereaz deasemeni numrul pachetului-cerere pentru a permite detectarea pierderilor de
pachete de ctre PC-ul care face cererile.
Deocamdat s-au fcut teste doar cu 4 plci Enet32. Un sistem de test cu 8 plci
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 ntregulsistem ATLAS. Pe lng informaia privind pierderile de pachete i latena reelei, se vor mai
putea oferi histograme privind ocuparea cozilor interne, ceea ce constituie o msur
cantitativ privind elasticitatea i robusteea sistemului.
Informaiile obinute prin simulrile efectuate conform descrierii de mai sus vor fi
folosite pentru evaluarea diverselor strategii-candidat privind transmiterea mesajelor (cereri i
rspunsuri), precum i privind topologia reelei.
4.3 Programarea plcii Enet32Programarea plcii Enet32 s-a fcut n mod integral folosind limbajul Handel-C,
versiunea 2.0. Din aceast cauz programarea este uoar chiar pentru cineva care are doar
cunotine de C. Este ns bineneles necesar nelegerea conceptului de paralelism i
execuie sincron, precum i celelalte diferene care exist fa de limbajul C standard (vezi
capitolul 3).
Producerea fiierelor de configurare a FPGA-urilor are loc n dou etape. Mai nti se
compileaz programul surs n Handel-C, obinndu-se un netlist. Acesta este preluat deutilitarul de fitare Altera Max+PlusII [Alt-**] care produce fiierele de configurare nformatul RBF (Raw Bitstream File). Fiierele binare sunt trimise la IoMan prin portul paralel,iar acesta programeaz FPGA-urile respective, pe un canal JTAG. IoMan nsui, a crui
comportare se schimb rareori, este programat prin JTAG pe un cablu ByteBlaster. Exist i
- 28 -
-
Capitolul 4 Studiu de caz: testarea reelelor de calculatoare
opiunea de a folosi un cip PROM, din care IoMan i citete singur programul la punerea n
funciune a plcii; aceasta este modalitatea folosit n mod curent.
4.4 Interfaa cu utilizatorulInteraciunea cu utilizatorul se realizeaz pe dou ci. n primul rnd exist o suit de
scripturi scrise n Perl* prin intermediul crora se pot trimite comenzi plcii, stabilindu-se
porturile care particip la test, configurndu-se aceste porturi, pornindu-se i oprindu-se
testul. De asemenea se pot citi rezultatele testelor: sume de latene, numrul de pachete
transmise/recepionate/pierdute, numrul de octei recepionai sau histograme ale latenei sau
ale timpului ntre sosirea pachetelor. Scripturile menionate comunic fizic cu placa printr-un
port paralel, folosind comunicaia prin pipe-uri i un program scris n C.Dei scripturile ofer o mare libertate n controlul plcii, colegul meu Ctlin Meirou
a programat i o interfa grafic, al crei scop principal este definirea mai intuitiv a testului
i afiarea grupat, n mod dinamic, a unor parametri de baz, cum ar fi numarul de octei i
de pachete transmise/recepionate pe secund, latena medie a pachetelor i debitul la
transmisie i recepie. La cerere este posibil i afiarea unei ferestre ce prezint i alte detalii
privind un anumit port, cum ar fi de pild numrul de pachete pierdute.
n figura 5 se prezint interfaa grafic la momentul n care era folosit pentru
controlul a dou plci de test situate pe calculatoare diferite (un total de 64 de porturi
FastEthernet). Pentru fiecare din aceste plci, pe calculatoarele gazd ruleaz un server care
comunic prin socket-uri cu interfaa grafic i trimite la rndul su comenzi plci ntr-unmod asemntor 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 cepermite scrierea de scripturi.
- 29 -
-
Capitolul 4 Studiu de caz: testarea reelelor de calculatoare
Figura 5: Interfaa grafic cu utilizatorul.
- 30 -
-
Capitolul 4 Studiu de caz: testarea reelelor de calculatoare
4.5 Rezultate experimentalePlaca de test Enet32 se poate folosi pentru efectuarea unei game largi de msurtori,
toate mrimile ce caracterizeaz traficul putnd fi determinate. Singura problem ce nu a fost
nc rezolvat este sincronizarea nter dou plci astfel nct acestea s funcioneze ca un
sistem unitar i s permit efectuarea msurtorilor la distan i pentru sisteme mai
complexe. La momentul de fa se lucreaz la o soluie privind acest inconvenient.
n continuare, pentru a pune n eviden caracteristicile plcii, sunt prezentate cteva
rezultate obinute pentru generarea de trafic cu proprieti controlate. Traficul generat este fie
cu o rat constant (CBR, Constant Bit Rate), fie de tip Poisson, adic cu o distribuieexponenial negativ discret a timpilor ntre pachete. S-au folosit pachete de 64 i 1518
octei (dimensiunile minim i maxim permise n standardul Ethernet), iar caracteristicile
traficului au fost astfel alese nct s determine o ncrcare de aproximativ 50% a reelei.
Pentru pachetele de 64 de octei aceasta nseamn un trafic CBR cu 12s ntre emiterea
pachetelor sau un trafic Poisson cu media de 12s; pentru pachetele de 1518, valoarea medie
a timpului ntre emiterea pachetelor este de 250s. Proprietile traficului sunt ilustrate prin intermediul histogramelor timpului ntre
sosirea pachetelor la receptor. Pentru traficul de tip CBR se prezint att caracteristicile
traficului la emisie, prin conectarea direct ntre portul ce transmite i cel ce recepioneaz,
ct i caracteristicile traficului dup trecerea printr-un switch (s-a folosit echipamentul T5Compact al companiei BATM). Histogramele au fost efectuate folosind rezoluia maxim aplcii, deci intervalul de cuantizare este de 40ns. Pentru figura 6 s-au alctuit grupuri de 25 de
astfel de intervale, deci rezoluia graficului este de 1s, n scopul sporirii vizibilitiicaracteristicilor traficului.
1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24
x 104
0.5
1
1.5
2
2.5x 105
Timpul intre sosirea a doua pachete [ns]
Num
arul
de
pach
ete
1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24
x 104
1
2
3
4
5
6
7
8
x 104
Timpul intre sosirea a doua pachete [ns]
Num
arul
de
pach
ete
(a) (b)
- 31 -
-
Capitolul 4 Studiu de caz: testarea reelelor de calculatoare
Figura 4: Timpul ntre sosirea a dou pachete (a) fr switch, (b) prin switch;tipul traficului=CBR, dimensiunea pachetelor=64 octei,
timpul ntre emiterea a dou pachete=12s.
Se observ din figurile 4 i 5 c proprietile traficului la emitere sunt exact cele
programate. Dup trecerea prin switch se constat o uoar modificare a caracteristicilor,timpul ntre sosirea a dou pachete ndeprtndu-se cu pn la 120ns fa de valoarea la
emitere.
2.496 2.497 2.498 2.499 2.5 2.501 2.502 2.503 2.504
x 105
2000
4000
6000
8000
10000
12000
Timpul intre sosirea a doua pachete [ns]
Num
arul
de
pach
ete
2.495 2.496 2.497 2.498 2.499 2.5 2.501 2.502 2.503 2.504 2.505
x 105
500
1000
1500
2000
2500
3000
3500
4000
4500
5000
5500
Timpul intre sosirea a doua pachete [ns]
Num
arul
de
pach
ete
(a) (b)
Figura 5: Timpul ntre sosirea a dou pachete (a) fr switch, (b) prin switch;tipul traficului=CBR, dimensiunea pachetelor=1518 octei,
timpul ntre emiterea a dou pachete=250s.
Figura de mai jos permite aprecierea calitii bune a proprietilor 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 variaia latenei este mult mai
mare.
- 32 -
-
Capitolul 4 Studiu de caz: testarea reelelor de calculatoare
0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5
x 104
0.5
1
1.5
2
2.5
x 104
Timpul intre sosirea a doua pachete [ns]
Num
arul
de
pach
ete
1 1.5 2 2.5 3 3.5 4 4.5 5 5.5
x 105
0
10
20
30
40
50
60
70
80
90
100
Timpul intre sosirea a doua pachete [ns]
Num
arul
de
pach
ete
Figura 6: Timpul ntre sosirea a dou pachete (a) dimensiunea pachetelor=64 octei, (b) dimensiunea
pachetelor=1518 octei; tipul traficului=Poisson,
timpul mediu ntre emiterea a dou pachete=12s, respectiv 250s.
O alt mrime care se poate analiza cu ajutorul plcii de test Enet32 este latena
medie a pachetelor la trecerea printr-o reea. n general aceasta este relativ constant la
nivelul unui switch pentru trafic de tip unicast (cu un emitor i un receptor), att timp ct nuapar fenomene de congestie. Un aspect interesant este ns cazul broadcast-ului (un port esteemitor i toate celelalte recepioneaz). Pe baza latenei medii se pot deduce n acest caz
informaii privind structura interna a switch-ului i modul de realizare a broadcast-ului dectre acesta.
1 5 9 13 17 21 25 290
5
10
15
20
25
Pozitia portului receptor
Late
nta
med
ie p
er p
ort a
pac
hete
lor [
us]
1 5 9 13 17 21 25 29
0
50
100
150
200
250
300
350
Pozitia portului receptor
Late
nta
med
ie p
er p
ort a
pac
hete
lor [
us]
Figura 7: Latena medie per port a pachetelor pentru broadcast (a) dimensiunea pachetelor=64 octei, (b) dimensiunea pachetelor=1518 octei.
n figura 7 se prezint latena medie a pachetelor ce sosesc la fiecare port din switch,singurul port emitor fiind cel cu indexul 0, cu trafic de tip broadcast. Cele 32 de porturi aleswitch-ului care s-au folosit sunt grupate n module de cte 8 porturi. Se constat c pentru
- 33 -
-
Capitolul 4 Studiu de caz: testarea reelelor de calculatoare
porturile din primul modul, ce conine i portul cu numrul 0, latenele sunt mai mici dect
pentru celelalte module. Explicaia const n faptul c traficul intra-modul beneficiaz de
legturile foarte rapide care exist n cadrul modulului.
Pentru celelalte module, ce conin porturile de la 9 la 32, latena este cu aoproximativ
5s mai mare. Se poate deduce aadar c pachetele au fost trimise per modul n modcentralizat de ctre o unitate central. n cadrul unui modul distribuirea se face apoi
secvenial, 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
ntrzierile 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 imaginilorSistemele bazate pe FPGA-uri tind s aib un rol tot mai important n aplicaiile 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 strns, ntre software i hardware, accentul fiind pus deaplicaiile din domeniul prelucrrii i analizei imaginilor. Motivul principal este c pentru
acest tip de aplicaii este ntotdeauna nevoie de o putere de calcul relativ mare. n plus,
operaiile simple la nivel de pixeli care se regsesc n multe dintre tehnicile de prelucrare i
analiz a imaginilor [Ver-00] cum ar fi filtrarea, marcarea digital a imaginilor [Beu-00],
recunoaterea formelor, compresia imaginilor [Pae-91], [Wal-90] etc. se preteaz foarte
bine la folosirea FPGA-urilor.
5.1 Calcul reconfigurabilO chestiune de baz n proiectarea sistemelor de calcul actuale este raportul adecvat
ntre vitez i generalitate. Se pot produce cipuri versatile, care au o funcionalitate larg, dar
care execut relativ ncet o sarcin, sau se pot crea cipuri specifice aplicaiilor, care realizeaz
un numr limitat de sarcini, dar o fac foarte rapid. Microprocesoarele, cum ar fi IntelPentium, Athlon sau Motorola PowerPC, ce se gsesc n computere, sunt cipuri cu scopgeneral: instruciuni codate n form binar pot conduce procesorul prin orice secven de
operaii 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 funcionalitatea
necesar ntr-un anumit context. Datorit acestui fapt este posibil producerea de cipuri mai
mici, mai ieftine i mai rapide, care consum mai puin. Un cip grafic poate afia pe ecran
forme geometrice sau imagini de 10 pn la 100 de ori mai rapid dect o unitate central de
uz general. Dezavantajul este c un ASIC nu poate n general rezolva o problem uor
modificat fa de cea pentru care a fost conceput. Chiar dac un ASIC modificat poate fi
reproiectat, este posibil ca dependena circuitelor de problem s mpiedice reutilizarea lor
pentru generaii succesive de produse. Aceasta face ca efortul depus la proiectare s
trebuiasc amortizat printr-un numr relativ redus de uniti comercializate.
Dac ns se nlocuiesc ASIC-urile cu FPGA-uri, constrngerile de mai sus dispar
[Vil-97]. Este adevrat c se poate pierde n vitez, dar avnd n vedere c FPGA-urile
actuale opereaz i la frecvene 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 cobort pn la nivelul milisecundelor i se ateapt ca n
curnd ca acesta s ajung de ordinul a 100 de microsecunde. n acest fel sistemele de calcul
se pot adapta aproape n mod continuu la schimbrile 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 puin pretenioas este alternarea la comand ntre diverse
funcionaliti; aceasta este echivalentul alternrii 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 rezolvrii 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 transformri de prelucrare a imaginilor i n final FPGA-ul
capt funcionalitatea 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 msur ce execut o sarcin,rafinndu-i programarea pentru a crete perfomana. Un cip destinat recunoaterii formelor
s-ar putea adapta ca urmare a unei ncercri de a identifica un obiect: dac acesta reprezint
un automobil, pri ale circuitului care serveau la recunoatere aeronavelor sau a persoanelor
pot fi reconfigurate pentru a se concentra pe vehicule terestre. O astfel de abordare poate avea
o influen important asupra performanelor globale ale sistemului. Dac la nceput
reconfigurarea menionat se va face pe baza unor proceduri precalculate, nu este exclus
venirea unui moment cnd, n mod inteligent, programul ce ruleaz n FPGA se va optimiza
pe sine nsui.
5.2 Recunoaterea formelorUna din aplicaiile cele mai promitoare pentru calculul reconfigurabil o reprezint
recunoaterea formelor. Aceast tehnic este folosit n scopuri diverse, cum ar fi
recunoaterea scrisului de mn, identificarea persoanelor dup fotografii, obinerea
imaginilor din baze de date, sau recunoaterea automat a intelor n domeniul militar. O
operaie fundamental n majoritatea aplicaiilor de recunoatere a formelor o constituie
compararea unui set de bii de intrare (reprezentnd o imagine, un ir de caractere sau orice
- 36 -
-
Capitolul 5 FPGA-urile n prelucrarea i analiza imaginilor
alt tip de informaie) cu un set de abloane corespunznd diverselor modele ce trebuie
recunoscute. Sistemul declar recunoaterea dac numrul de bii de intrare care se potrivesc
cu biii unui ablon depete un anumit prag.
n cazul recunoaterii 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 conine n
mod obinuit mii de pixeli, iar o int poate apare oriunde n imagine. Pentru a le recunoate
suficient de rapid, conform cerinelor aplicaiilor militare, un sistem trebuie s efectueze
comparaii la o rat de cteva trilioane de operaii pe secund, deoarece toi pixelii imaginii
de intrare trebuie comparai cu cei ai abloanelor.
n [Vil-97] se raporteaz construirea, cu sprijin din partea DARPA (DefenseAdvanced Research Projects Agency), a unui prototip de sistem de recunoatere a formelor cuhardware configurabil, care realizeaz economii de resurse adaptndu-se la fiecare model nparte. Muli din pixelii unui ablon tipic nu contribuie la deciziile luate, astfel nct ei ar putea
fi omii din calculele ulterioare. Un sistem convenional nu ar putea face asta cu uurin,
deoarece poziiile pixelilor difer de la model la model. Se poate merge mai departe n
exploatarea flexibilitii sistemelor reconfigurabile prin luarea n consideraie a similaritilor
care exist ntre abloane. Astfel, un set de modele poate fi prelucrat n paralel, folosind o
singur unitate de comparaie pentru toi pixelii cu aceai 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 encripia folosind
algoritmul DES (Data Encryption Standard). Acesta implic folosirea unei chei, ce rmnede obicei fix n timpul comunicaiei, pentru criptarea mesajului n blocuri de bii. Prin
folosirea unui sistem bazat pe FPGA este posibil adaptarea structurii interne la cheia
folosit, obinndu-se astfel att o economie de resurse (de la 25000 de pori logice s-a ajuns
la folosirea a numai 13000), ct i o cretere a eficienei. Cnd se schimb cheia de criptare,
noua structura intern este descrcat rapid n FPGA.
Din aceste exemple se deduce aadar potenialul care exist pentru hardware-ulconfigurabil, prin adaptarea la tipuri de date diverse i n continu schimbare. Alte aplicaii
care ar putea beneficia de aceste avantaje sunt comunicaiile digitale, prelucrrile digitale n
diverse domenii, cum ar fi cele pentru sistemele radar, etc.
5.3 Urmrirea obiectelorGrupul 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 bii (un
transputer T805 sau T425) cu o memorie DRAM de 4 Moctei, strns cuplat cu un sistem
bazat pe un FPGA de la compania Xilinx (XC3195A), ce are o memorie local de 2 bancuriSRAM a 32kbii x 16 bii. n [Pag-97] se prezint o aplicaie care folosete sistemul HARP,
aplicaie ce va fi descris succint n continuare.
5.3.1 Prezentarea aplicaieiScopul aplicaiei este extragerea dintr-o secven video, n timp real, pentru fiecare
cadru, a dreptunghiurilor nglobante pentru obiectele care se mic n scena respectiv. Un
context posibil este un sistem automat de siguran, care se bazeaz pe o camer video cu un
cmp de vedere larg, dar care se poate mica i poate face zoom pe obiectele aflate n
micare. Imaginile ce conin obiecte n micare pot fi nregistrate, sau un operator poate fi
alertat n legtur cu detecia obiectului n micare, care constituie un potenial intrus.
Fluxul video este digitizat i subeantionat de ctre transputer, astfel nct se obin
cadre pe nivele de gri de 128 x 128 x 8 bii. Acestea sunt trimise FPGA-ului folosind un canal
de comunicaie de tip magistral. Transferul limiteaz dimensiunile imaginilor i ar fi de dorit
existena unui sistem n care imaginile sunt accesibile direct FPGA-ului, totui performanele
obinute prin utilizarea sistemului HARP sunt satisfctoare din punctul de vedere al
raportului pre/performan.
Aplicaia funcioneaz prin efectuarea diferenei ntre imagini digitizate succesive i
apoi o prguire 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
aplicaia n discuie. Regiunile cu o arie aflat sub un anumit prag sunt ignorate.
n continuare se presupune c frontierele calculate mai sus corespund obiectelor n
micare. Acestea sunt asociate dreptunghiurilor nglobante (ai cror parametri au fost
calculai tot la pasul precedent) i din nou se elimin acele obiecte a cror arie se situeaz sub
un anumit prag.
Pentru a crete robusteea sistemului, n primul rnd fa de zgomot, dreptunghiurile
nglobante sunt modelate i urmrite cu un filtru Kalman predictiv, multi-obiect. Acesta
modeleaz i prezice comportarea lor n timp, pe baza poziiei, a dimensiunii i a derivatelor
de ordinul nti ale acestor mrimi. Astfel se reueste chiar i urmrirea unui obiect care este
temporar ocultat de un obstacol. Pentru fiecare dreptunghi se menine un nivel de ncredere,
ce corespunde probabilitii ca acesta s fie asociat unui obiect real n micare; dac nivelul
- 38 -
-
Capitolul 5 FPGA-urile n prelucrarea i analiza imaginilor
de ncredere scade sub un anumit prag, dreptunghiul este nlturat. Noi descrieri sunt create
de fiecare dat cnd un obiect n micare este detectat.
5.3.2 Implementarea algoritmuluiAlgoritmul este implementat n aa fel nct operaiile la nivel de pixel ruleaz n
FPGA, iar filtrul Kalman i interfaa cu utilizatorul pe microprocesor. Aceasta deoarece
hardware-ul este potrivit pentru calculele rapide cu complexitate sczut, iar software-ulpentru calcule mai lente dar mai complexe. n consecin, diferenierea ntre cadre, prguirea,
umplerea regiunilor i calcularea dreptunghiurilor nglobante se fac toate ntr-un FPGA, care
se ocup deasemenea de comunicaia cu microprocesorul.
Fiecare cadru de 128 x 128 pixeli este transferat n FPGA printr-o instruciune 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 interfaa pe baz de meniuri cu
utilizatorul sunt rulate de microprocesorul programat n occam. Dei sistemul HARP este
situat ntr-un PC, acesta nu are nici un rol la rulare, ci doar la iniializarea plcii.
5.3.3 PerformaneSistemul produce la ieire un flux de imagini video ce sunt primite de la placa HARP
i afiate pe un monitor. Unul din modurile de afiare este prin supraimpunerea pe imaginea
video a dreptunghiurilor nglobante. La utilizare se obine o rat de 12-23 de cadre pe
secund, n funcie de ceea ce se ntmpl n scen. Aceste rezultate sunt destul de bune,
avnd 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 aceeai aplicaie ruleaz integral pe microprocesor, performana scade de ase
ori. Acest factor ar fi fost i mai mare dac sistemul iniial ar fi permis ca intrarea/ieirea
video s foloseasc o memorie direct accesibil FPGA-ului. Oricum, performane similare ar
necesita utilizarea a cel puin nc 5 microprocesoare asemntoare, ceea ce implic un efort
n plus pentru distribuirea algoritmului n vederea calcului n paralel.
- 39 -
-
Capitolul 6 Concluzii
6 ConcluziiCalculul configurabil este un domeniu nc nou. Dei conceptul a fost propus pentru
prima oar de Gerald Estrin de la University of California, Los Angeles, la sfrsitul anilor'60, primele demonstraii nu au aprut dect la mijlocul anilor '90, iar FPGA-urile utilizate n
mod curent cu un numr de pori de ordinul sutelor de mii, nu ofer nc suportul pentru
exploatarea complet a posibilitilor acestei tehnici. FPGA-urile de ultim or au ns un
numr mai mare de pori (de pild cele din familia Virtex de la Xilinx au peste 1.000.000 depori, iar pentru circuitele APEX II de la Altera se ajunge pn la 4.000.000), ceea ce permiteimplementarea unor aplicaii mai complexe.
Cercettorii i productorii ncearc depirea limitrilor care au mpiedicat adoptarea
pe o scar mai larg a FPGA-urilor. Acestea sunt potrivite pentru operaii la nivel de bii sau
cu valori ntregi, dar nu efectueaz eficient operaii numerice, cum ar fi nmulirea sau
calculul cu valori n virgul mobil. Circuitele de nmulire dedicate pot fi optimizate pentru a
realiza aceste operaii mai eficient dect echivalentele lor create cu resurse interne. n plus,
FPGA-urile ofer un spaiu intern relativ redus pentru stocarea rezultatelor intermediare ale
calculelor; de aceea, n multe aplicaii, este necesar folosirea de memorii externe mari.
Deasemenea, transferul de date dinspre i nspre FPGA cresc consumul i ncetinesc
calculele.
Unele cercetri sunt ndreptate spre dezvoltarea de FPGA-uri care conin memorie,
uniti aritmetice i alte blocuri speciale. Andr DeHon i Thomas Knight, de la
Massachusetts Institute of Technology au propus un FPGA care stocheaz configuraiimultiple 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 configuraia, fr a pierde
datele parial prelucrate.
Brad Hutchings, de la Brigham Young University, a construit un computer cu un setde instruciuni dinamic, care combin un microprocesor cu un FPGA i demonstreaz
potenialul reconfigurrii automate folosind configuraii prestocate. Pe msur ce un program
ruleaz, FPGA-ul cere reconfigurarea sa, dac structura de pori necesar nu este rezident.
Este permis astfel crearea de configuraii multiple, adaptate diverselor sarcini, care pot fi
activate similar cu iniierea unui apel de subrutin ntr-un microprocesor.
Grupul Colt, condus de Peter Athanas, de la Virginia Polytechnic Institute and StateUniversity, investigheaz o tehnic de reconfigurare numit "gaur de vierme". n cadrulacesteia fluxul de date creaz o structur logic adaptat pe msur ce parcurge sistemul
reconfigurabil.
- 40 -
-
Capitolul 6 Concluzii
John Wawrzynek i colegii si de la University of California, Berkley, dezvoltdeasemenea un sistem care combin un microprocesor i un FPGA. Un compilator special
preia un program obinuit i genereaz n mod automat o combinaie de instruciuni n cod-
main pentru microprocesor i un ansamblu de configuraii pentru FPGA, astfel nct
performanele globale ale sistemului s fie maximizate.
FPGA-urile nu vor nlocui niciodat microprocesoarele pentru activiti 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 aplicaii ce necesit o adaptare rapid la datele de intrare.
n plus, linia despritoare ce separ procesoarele programabile i FPGA-urile va
deveni tot mai neclar. Viitoarele generaii de FPGA-uri vor avea caracteristici ce sunt acum
specifice microprocesoarelor: memorie local mai mare, multiplicatoare dedicate etc. n
schimb, noile generaii de microprocesoare ce sunt dezvoltate n prezent posed zone cu
proprieti asemntoare reconfigurrii FPGA-urilor.
Un prim pas ntr-o direcie similar a fost deja fcut de compania Transmeta prin
procesorul Crusoe, aprut n ianuarie 2000. Acesta transfer cea mai mare parte a roluluiprocesorului determinarea instruciunilor ce trebuie executate i a momentului execuiei
n software, ntr-un proces numit adaptarea codului (n lb. englez code morphing). Acestaefectueaz n primul rnd transformarea instruciunilor x86 n instruciuni specifice unitii de
execuie, precum i reordonarea acestora astfel nct mai multe instruciuni pot fi executate
simultan. n paralel se realizeaz o statistic a instruciunilor procesate, astfel nct procesorul
se adapteaz la fluxul de intrare, iar instruciunile ce se repet nu mai sunt din nou
transformate, ci se utilizeaz direct instruciunile corespunztoare stocate n cache.
Aa cum n prezent computerele i pot aduce prin intermediul Internetului
componente software necesare pentru rezolvarea anumitor probleme, viitoarele maini vorputea primi la cerere noi configuraii hardware, n msura necesitilor. Este cert oricum csistemele de calcul vor include o combinaie strns de hardware programat prin software ide logic hardware reconfigurabil. Aceasta face ca rolul limbajelor de programare facil ahardware-ului, de tipul Handel-C, s continue s creasc i n continuare.
- 41 -
-
Bibliografie[Alt-**] Altera, Inc. (www.altera.com).
[Bar-01] F. R. M. Barnes, R. Beuran, R. W. Dobinson, M. J. LeVine, B. Martin, J. Lokier,
C. Meirou, "Ethernet Networks for the ATLAS Data Collection System:
Emulation and Testing", Proc. of the 12th IEEE Real Time Congress on Nuclearand Plasma Sciences, Valencia, iunie 2001, pp. 6-10.
[Beu-00] R. Beuran, "Marcarea digital a imaginilor", lucrare de disertaie, Universitatea"Politehnica" Bucureti, mai 2000.
[Cel-**] Celoxica, Ltd. (www.celoxica.com).
[Dob-01] R. W. Dobinson, S. Haas, K. Korcyl, M. J. LeVine, J. Lokier, B. Martin, C.
Meirou, 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 InternationalSeries 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 (www.optimagic.com).[Sea-97] R. C