+ All Categories
Home > Documents > programarea_FPGA

programarea_FPGA

Date post: 26-Sep-2015
Category:
Upload: bogdanbalaican
View: 6 times
Download: 2 times
Share this document with a friend
Description:
FPGA
47
UNIVERSITATEA "POLITEHNICA" BUCURETI FACULTATEA DE ELECTRONIC I TELECOMUNICAII Programarea FPGA-urilor folosind limbajul Handel-C referat de doctorat Prep. drd. ing. Rzvan Beuran Coordonatori: Prof. dr. ing. Vasile Buzuloiu Prof. dr. ing. Jean-Marie Becker - 2001 -
Transcript
  • 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