Programarea FPGA
Programarea FPGA
referat de doctorat
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
-3-
Capitolul 2 Circuite logice programabile
-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 .
-5-
Capitolul 2 Circuite logice programabile
* 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.
-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.
-9-
Capitolul 2 Circuite logice programabile
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.
- 10 -
Capitolul 2 Circuite logice programabile
- 11 -
Capitolul 2 Circuite logice programabile
- 12 -
Capitolul 2 Circuite logice programabile
Proiectarea
circuitului
Maparea/ Modificarea/corectarea
rutarea circuitului
Verificarea/
simularea
Î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
- 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.
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
- 16 -
Capitolul 3 Limbajul Handel-C
- 17 -
Capitolul 3 Limbajul Handel-C
- 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
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
- 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.
- 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.
- 24 -
Capitolul 4 Studiu de caz: testarea re elelor de calculatoare
- 25 -
Capitolul 4 Studiu de caz: testarea re elelor de calculatoare
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.
- 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.
- 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.
* 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
- 30 -
Capitolul 4 Studiu de caz: testarea re elelor de calculatoare
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
Î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
- 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.
- 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.
- 37 -
Capitolul 5 FPGA-urile în prelucrarea i analiza imaginilor
- 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.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
- 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 -