Sunteți pe pagina 1din 19

LUCRAREA NR.

13
SINTEZA CIRCUITELOR NUMERICE CU DISPOZITIVE PROGRAMABILE DE TIP FPGA
1. Scopul lucrrii Se prezint metode de sintez specifice proiectrii circuitelor numerice cu dispozitive FPGA. Se prezint strategiile de implementare a componentelor elementare n dispozitivele FPGA XILINX. Se studiaz modul de implementare a unui numrtor Moebius specificat cu editorul schematic. Se prezint principalele reguli de specificare a proiectelor n vederea sintezei lor n dispozitivele FPGA XILINX.

2. Consideraii teoretice Metodele de sintez a circuitelor numerice nu difer n cazul proiectrii cu dispozitive FPGA de metodele clasice. Dimpotriv, datorit specificului tehnicilor de proiectare cu aceste dispozitive (utilizarea instrumentelor software de susinere a proiectrii), implementarea circuitelor ar trebui s fie mai simpl. Totui, n cazul n care dorim s configurm manual cipul FPGA (pentru a economisi timp de rulare a programelor software, pentru a atinge anumite obiective specifice sau din alte motive), este indicat s inem seama de anumite tehnici de proiectare cu dispozitivele FPGA. 2.1 Strategii de proiectare cu FPGA Reamintim c un circuit secvenial sincron este alctuit din dou pri principale: partea strict secvenial (bistabilele); partea combinaional (pori logice elementare) care contribuie n mare msur la determinarea strii urmtoare a circuitului. De aceea trebuie s discutm despre tehnicile de proiectare cu FPGA-uri a principalelor elemente de circuit, att a celor secveniale ct i a

132

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

celor combinaionale. Aceste tehnici sunt strict dependente de tipul de FPGA utilizat. n cele ce urmeaz vom discuta despre FPGA-urile XILINX. Proiectarea cu LCA-ul necesit nelegerea posibilitilor i limitrilor specifice slice-urilor i CLB-urilor. Fiecare slice are o capacitate funcional i de stocare a datelor limitat, iar noi trebuie s determinm cum pot fi folosite aceste capaciti. Vom studia posibilitile de construire a decodificatoarelor, multiplexoarelor, registrelor de deplasare i a numrtoarelor (se subnelege c implementarea codificatoarelor i demultiplexoarelor se realizeaz analog cu cea a decodificatoarelor i respectiv a multiplexoarelor). Decodificatoarele se implementeaz prin cascadarea RAM-urilor funcionale ale slice-urilor, care sunt configurate fie ca funcii I fie ca funcii I-NU. Pentru a construi un decodificator 3-la-8 standard (cum ar fi 4138) sunt necesare cel puin 8 slice-uri (care au 4 intrri i o ieire) numai pentru a genera ieirile distincte pentru toate cele 8 combinaii. Multiplexoarele, ca i decodificatoarele, sunt construite n interiorul slice-urilor configurnd n mod adecvat RAM-urile interne ale acestora. Din nou, numrul limitat al intrrilor n RAM-uri necesit expandarea numrului de slice-uri pentru a forma funcii de mai multe intrri. Problemele care apar aici se refer la faptul c aceast abordare consum rapid slice-urile i scade viteza funciilor. n plus, bistabilele din slice-uri rmn de multe ori neutilizate. Registrele de deplasare sunt eficient de implementat n slice-uri. Atribuind biii unor slice-uri sau CLB-uri adiacente, registrele de deplasare nu necesit interconectare global i nu blocheaz canalele de rutare. Clasa de aplicaii care utilizeaz din plin registre de deplasare cuprinde echipamente de comunicaii, dispozitive de recunoatere a formelor, generatoare polinomiale etc. La fel cum decodificatoarele i multiplexoarele las neutilizate bistabilele, registrele de deplasare nu folosesc blocurile logice combinaionale. Implementarea numrtoarelor reprezint o problem interesant n arhitecturile LCA. Metodele clasice sunt aplicabile numai pentru numrtoare mici. Partea combinaional din alctuirea unui numrtor (cea care determin starea urmtoare, deci funciile de tranziie) crete foarte mult, n termeni de intrri necesare pentru porile logice, pe msur ce crete numrul de bii (ordinul) numrtorului. Acest tip de abordare limiteaz prea mult posibilitile LCA-ului, aa c XILINX recomand pentru numrtoare o abordare modular i cascadabil. n aceast abordare, fiecare bistabil din numrtor are n fa un acelai tip de circuit logic combinaional. Vom numi un bistabil, mpreun cu funciile de tranziie proprii, o celul de

SINTEZA CIRCUITELOR NUMERICE CU FPGA

133

numrare. Fiecare celul de numrare semnaleaz celulei urmtoare faptul c i-a ncheiat ciclul de numrare, astfel fiind posibil cascadarea acestor celule de numrare. Numrul de bii ai numrtorului este egal cu numrul de celule de numrare. ncepnd cu seria 4000, funciile de tranziie pot avea pn la 4 intrri. Principalul neajuns al acestei abordri este viteza redus. O plasare atent a celulelor minimizeaz totui timpul de propagare al semnalelor de la o celul de numrare la urmtoarea. 2.2 Introducerea proiectului prin editor schematic n cazul introducerii proiectului prin editor schematic este necesar efectuarea unei sinteze manuale prealabile a proiectului. Se va utiliza apoi editorul schematic din pachetul ISE Foundation, pentru introducerea efectiv a proiectului. De exemplu, circuitul descris n schema din figura 13.1 reprezint un numrtor Moebius pe 4 bii:
+ 1 0 Set / Reset Q1
J S Q CLK K R Q J S Q CLK K Q R

Q2
J S Q CLK K Q R

Q3
J S Q CLK K Q R

Q4

Shift +

Figura 13.1 Numrtor Moebius pe 4 bii Acest numrtor va avea formele de und conform figurii 13.2:
100 Shift Q1 Q2 Q3 Q4
1 0 0 0 1 1 0 0 1 1 1 0 1 1 1 1 0 1 1 1 0 0 1 1 0 0 0 1 0 0 0 0

Figura 13.2 Formele de und ale numrtorului Moebius

134

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

Dup editarea proiectului, acesta va fi simulat cu ajutorul simulatorului din ISE Foundation i se vor obine formele de und prezentate n figura 13.2. n continuare, putem parcurge celelalte etape din fluxul de proiectare, conform celor prezentate n Lucrarea 12. 2.3 Reguli i metode generale pentru sinteza circuitelor numerice n FPGA n cele ce urmeaz vom prezenta cteva reguli i metode cu caracter general, dar extrem de utile pentru sinteza proiectelor digitale pentru dispozitive FPGA (i nu numai). Aceste reguli i metode permit creterea performanei proiectului i chiar a sistemului n care este integrat cipul FPGA gazd. a) Duplicarea bistabilelor Exist situaii cnd un singur bistabil comand foarte multe alte componente din sistem (figura 13.3). n acest caz, firul fn1 are un fanout foarte mare.

fn1

Figura 13.3 Fir cu fanout mare: un singur bistabil comand un numr foarte mare de alte resurse
Firele care au un fanout mare sunt mai lente (semnalele se propag mai lent) i mai dificil de rutat n cip. Duplicarea bistabilelor poate rezolva ambele probleme: Reducerea fanout-ului micoreaz ntrzierile de propagare a semnalelor prin fir;

SINTEZA CIRCUITELOR NUMERICE CU FPGA

135

Fiecare bistabil poate direciona semnalul produs de el ctre regiuni fizice diferite ale cipului, reducndu-se astfel congestia cilor de rutare.

fn1

fn1

Figura 13.3 Duplicarea bistabilului reduce fanout-ul i congestia cilor de rutare Principalele rezultate ale aplicrii acestei tehnici: Crete rutabilitatea i performana; Crete suprafaa ocupat de ctre proiect n cip (logica activ + reeaua de interconectare). Se recomand ca bistabilele duplicate s fie notate cu _a, _b etc., nu _1, _2, deoarece bistabilele numerotate sunt mapate n acelai slice n mod implicit. Bistabilele duplicate trebuie s fie separate, mai ales dac semnalele pe care le transmit sunt distribuite n regiuni diferite ale cipului. Se recomand ca bistabilele duplicate s fie create duplicate n codul HDL, deoarece dei majoritatea instrumentelor de sintez controleaz n mod automat fanout-ul, ele nu determin ntotdeauna diviziunea optim a sarcinilor. n plus, aceste instrumente vor denumi bistabilele duplicate _1, _2 etc. Trebuie de asemenea s setm instrumentele de sintez astfel ca s pstreze logica redundant (de exemplu, se folosete atributul KEEP). Nu trebuie duplicate bistabilele care primesc date de la semnale asincrone. Mai nti semnalul respectiv trebuie sincronizat i abia apoi semnalul sincronizat va fi distribuit bistabilelor duplicate. b) Pipelining Tehnica de pipelining are ca scop creterea vitezei sistemelor de calcul. Regula general este de a se introduce cel mult dou niveluri de

136

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

logic combinaional ntre registrele tampon din interiorul sistemului situaia este ilustrat n figura 13.4.

fMAX = n MHz

Dou sau mai multe niveluri de logic combinaional

Figura 13.4 Structura general a unui sistem numeric Principalul factor care limiteaz viteza sistemului este, n acest caz, ntrzierea de propagare a semnalelor prin blocul de logic combinaional. Cu ct numrul nivelurilor de logic combinaional dintre bistabile crete, cu att viteza sistemului scade. De aceea, ideal pentru performan ar fi ca numrul nivelurilor de logic combinaional dintre bistabile s fie minim (adic egal cu 1). Acest deziderat se poate atinge prin spargerea logicii combinaionale n blocuri mai mici ntre care se vor intercala alte registre tampon, ca n figura 13.5.

fMAX 2n MHz

un nivel de logic combinaional

un nivel de logic combinaional

Figura 13.5 Crearea unui pipeline cu dou etaje pentru creterea vitezei Atunci cnd recurgem la pipelining, trebuie s verificm anumite aspecte. n primul rnd, trebuie s determinm cte niveluri de logic combinaional exist ntre bistabile n proiectul nostru. Dac exist un singur nivel logic ntre bistabile, tehnica de pipelining nu va mbunti performana. Acest fapt se poate determina citind raportul Post-Map Static Timing Report sau raportul Post-Place & Route Static Timing Report. n al doilea rnd, trebuie s ne ntrebm dac avem la dispoziie n cipul FPGA suficiente bistabile pentru implementare. Acest fapt se poate

SINTEZA CIRCUITELOR NUMERICE CU FPGA

137

determina citind raportul produs de utilitarul MAP (MAP Report). n general, numrul de bistabile disponibile este suficient. Urmtoarea problem pe care trebuie s ne-o punem este aceea dac sistemul poate tolera latena. Fiecare etaj al pipeline-ului introduce o ntrziere egal cu o perioad a impulsului de tact, nainte ca prima ieire corect s fie disponibil. Acest fenomen se numete umplerea pipelineului. Dup ce pipeline-ul este plin, din acel moment ncolo este disponibil cte o nou ieire n fiecare ciclu de tact. Aceast problem este ilustrat grafic n figura 13.6.

Prima intrare sosete aici

Pipeline-ul se umple

Prima ieire valid

Dup ce pipeline-ul este plin, este disponibil cte o nou ieire n fiecare ciclu de tact

Figura 13.6 Problema latenei n pipeline Un exemplu de pipeline este cel din figura 13.7 a). Se observ c exist dou niveluri de logic combinaional ntre bistabilul surs i cel destinaie. Frecvena operaional este de aproximativ 233 MHz. Prin introducerea unui nivel suplimentar de bistabile tampon, se creeaz un pipeline cu dou etaje a crui frecven operaional ajunge la 385 MHz (figura 13.7 b)).

138

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

LUT D Q LUT LUT D Q

Bistabil surs
LUT

Bistabil destinaie

a)

LUT

Q LUT D Q

LUT

Bistabil surs
LUT D Q

Bistabil destinaie
Bistabile tampon n pipeline

b)

Figura 13.7 a) Circuitul iniial cu dou niveluri de logic combinaional ntre bistabilul surs i cel destinaie; b) Circuitul pipeline-izat c) Folosirea bistabilelor din blocurile de intrare / ieire Fiecare bloc de intrare / ieire (IOB) din dispozitivele FPGA XILINX conine mai multe bistabile (de regul, 6 bistabile). Blocul IOB a fost prezentat n detaliu n Lucrarea 12. Bistabilele din IOB-uri ofer valori garantate ale timpilor de setup, hold i clock-to-out, atunci cnd semnalul de tact (clock) provine dintr-un buffer BUFG (Global Clock Buffer, o component primitiv din cipurile FPGA cu rol de repetor i distribuitor al semnalului de tact n interiorul cipului). Folosirea acestor bistabile este foarte important mai ales n cazul blocurilor logice care realizeaz interfaarea cipului FPGA cu alte cipuri din sistemul n care este integrat. De asemenea, uneori n cazul proiectelor de mari dimensiuni bistabilele din slice-uri nu sunt suficiente, fapt pentru care este obligatoriu s se recurg i la cele din IOB-uri.

SINTEZA CIRCUITELOR NUMERICE CU FPGA

139

De regul, instrumentele de sintez tind s aloce bistabilele din sliceuri, nu din IOB-uri. Pentru a obine utilizarea bistabilelor din IOB-uri n decursul procesului de sintez, putem recurge la specificarea unor constrngeri temporale care s foreze plasarea bistabilelor n IOB-uri. Exist instrumente de sintez care ofer posibilitatea de a da valori unor atribute sau unor directive de sintez cu ajutorul crora bistabilele vor fi plasate ntr-un IOB. De exemplu, n utilitarul Xilinx Constraint Editor trebuie selectat tab-ul Misc i apoi se vor specifica registrele care ar trebui s fie plasate n IOB-uri. Este necesar s cunoatem numele (eticheta) fiecrei instane de registru. Registrele fiind alctuite din bistabile, acestea vor ocupa unul sau mai multe IOB-uri. n timpul etapei MAP a procesului de implementare, n cutia de dialog Map Properties, opiunea Pack I/O Registers/Latches into IOBs este selectat implicit. Folosirea constrngerilor temporale va avea de asemenea ca efect plasarea registrelor n IOB-uri, n cazul cilor critice. n final, vom verifica raportul utilitarului MAP pentru a avea confirmarea faptului c au fost utilizate bistabilele din IOB-uri (n seciunea IOB Properties). d) Circuite de sincronizare i metastabilitatea Circuitele de sincronizare au rolul de a capta un semnal de intrare asincron i de a-l transmite mai departe doar pe frontul ascendent sau descendent al semnalului de tact. Aceste circuite sunt necesare pentru a preveni violarea timpilor de setup i de hold ale bistabilelor i pentru a asigura astfel sigurana i fiabilitatea proiectului. Circuitele de sincronizare sunt necesare atunci cnd cipul are intrri asincrone sau atunci cnd n cadrul aceluiai proiect exist zone care funcioneaz sincron cu semnale de tact diferite i total nenrudite (ntre care nu exist nici o corelaie), dar care schimb informaie prin intermediul unor semnale. Aceste semnale interzonale trebuie sincronizate cu ajutorul unor circuite de sincronizare. Dac ntre semnalele de tact exist o corelaie, atunci nu este nevoie de nici un circuit de sincronizare (se pot folosi constrngeri de tip PERIOD impuse asupra semnalelor de tact, care vor rezolva toate problemele poteniale). Violrile timpilor de setup i de hold constituie o problem serioas i nepredictibil n cazul intrrilor asincrone. Ele apar atunci cnd intrarea

140

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

de date a bistabilului se modific ntr-un moment temporal prea apropiat de frontul tactului. Aceasta poate avea drept rezultat trei situaii (figura 13.8): Bistabilul va fi nscris cu vechea valoare de pe intrarea sa de date; Bistabilul va fi nscris cu noua valoare de pe intrarea sa de date; Ieirea bistabilului devine metastabil.

Vechea valoare a lui D Comportare posibil pe ieirea Q Noua valoare a lui D Starea metastabil

Figura 13.8 Rezultatele posibile ale violrii timpilor de setup i de hold Metastabilitatea nseamn c bistabilul intr ntr-o stare tranzitorie care nu este nici 0, nici 1, adic anumite circuite o pot interpreta drept 0, iar altele o pot interpreta drept 1. Bistabilul rmne n aceast stare o perioad de timp nepredictibil, dar n cele din urm se va stabiliza fie n starea 0, fie n starea 1. Din motive statistice, apariia evenimentelor metastabile poate fi doar redus, nu eliminat complet. Exist un parametru funcional care se numete Timpul Mediu ntre Cderi (Mean Time Between Failure MTBF) i care depinde n mod exponenial de mrimea intervalului de timp acordat bistabilului pentru a-i reveni din starea metastabil. Dac i acordm bistabilului cteva nanosecunde suplimentare pentru a-i reveni, aceasta va reduce extrem de mult ansele apariiei unui eveniment de acest tip. Circuitele din figurile 13.9 i 13.10 permit acordarea unui timp de recuperare egal cu durata unui ciclu de tact complet.

SINTEZA CIRCUITELOR NUMERICE CU FPGA

141

Circuitul de sincronizare 1 Acesta poate fi folosit atunci cnd impulsurile de intrare au ntotdeauna o durat cel puin egal cu cea a perioadei semnalului de tact. Bistabilul suplimentar previne apariia fenomenului de metastabilitate datorit faptului c i ofer primului bistabil timpul necesar pentru a-i reveni dup apariia unui eveniment de tip metastabilitate.
Previne metastabilitatea Intrare asincron Semnal sincronizat

Bist 1

Bist 2

CLK

Figura 13.9 Circuitul de sincronizare 1 Circuitul de sincronizare 2 Acesta poate fi folosit atunci cnd impulsurile de intrare pot avea o durat mai mic dect cea a perioadei semnalului de tact. Bistabilul 1 capteaz impulsurile scurte, care sunt apoi preluate n Bistabilul 2. Bistabilul 3 previne apariia strii metastabile; dac semnalul sincronizat a fost preluat corect, Bistabilul 1 este resetat pentru a fi pregtit s capteze urmtorul impuls.
VCC Previne metastabilitatea Semnal sincronizat
D Q D Q D Q

Bist 1 Intrare asincron


CL

Bist 2

Bist 3

CLK

Figura 13.10 Circuitul de sincronizare 2

142

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

2.4 Reguli de sintez n cazul specificrii proiectului prin limbaj de descriere hardware a) Reguli generale de sintez Prezentm succint n continuare cteva reguli simple i eficiente de scriere a codului i de structurare a proiectului n cazul n care dorim implementarea acestuia ntr-un dispozitiv FPGA XILINX: Folosii tehnica de pipelining cu ajutorul ei se va spori frecvena operaional a sistemului proiectat i implicit viteza; Folosii reset-ul sincron astfel controlul sistemului de calcul proiectat va fi mai bun; Folosii optimizrile automatelor finite exist astfel de setri care se pot face n diferitele meniuri ale utilitarelor din pachetul software de susinere a proiectrii; Folosii resurse care pot fi inferate de ctre instrumentul de sintez, cum ar fi: o Multiplexor; o Shift Register LUT (SRL); o BlockRAM, LUT RAM; o Blocuri DSP cascadate. Evitai construciile de limbaj de nivel nalt (de exemplu, buclele) n cod multe instrumente de sintez produc implementri lente pe baza lor; Folosii constrngerile temporale: o Specificai constrngeri stricte, dar realiste asupra semnalelor de tact; o Plasai semnale de tact nenrudite n grupuri (clock groups) diferite. Folosii opiunile i atributele de sintez cele mai adecvate: o Dac dorii s obinei o vitez ct mai mare, dezactivai opiunea de partajare a resurselor (resource sharing). Cnd aceast opiune este selectat, instrumentul de sintez va permite ca funciile logice s aib n comun anumite ci de semnal (de exemplu, dou sumatoare separate pot fi autorizate s partajeze anumite blocuri logice). Folosirea acestei opiuni genereaz de obicei module cu vitez mai mic, dar care ocup mai puin spaiu (logic activ) n cip;

SINTEZA CIRCUITELOR NUMERICE CU FPGA

143

o Mutai bistabilele din IOB-uri mai aproape de blocurile logice combinaionale; o Activai opiunea de optimizare a automatelor finite (FSM optimization) implementarea automatelor finite este detaliat mai jos n cadrul acestei lucrri; o Folosii opiunea de retiming semnificaia ei este detaliat mai jos n cadrul acestei lucrri. Evitai instruciunile if-then-else ncuibrite majoritatea instrumentelor de sintez le implementeaz n paralel, ns este posibil s se genereze un bloc logic pe baz de prioriti (cum este de pild codificatorul prioritar), dei nu acesta era efectul dorit; Folosii instruciuni de tip case pentru decodificatoare de mari dimensiuni, i nu instruciuni de tipul if-then-else; Ordonai i grupai funciile i operatorii aritmetici i logici de exemplu, scriei A <= (B + C) + (D + E), i nu A <= B + C + D + E; Evitai orice inferen nedorit a unui bistabil trebuie acoperite toate ieirile posibile pe fiecare ramur de cod. Acest lucru este uor de realizat specificnd instruciuni de atribuire de valori implicite naintea instruciunilor if-then-else i case; Unele resurse trebuie s fie instaniate sau create / generate pe baza unui IP core (cu ajutorul utilitarelor Architecture Wizard i CORE Generator). Exemple n acest sens: modulele FIFO16, ISERDES i OSERDES (primitive care fac ca pinii de intrare / ieire s comunice cu logica din exteriorul cipului FPGA la viteze mai mari), diverse resurse de gestionare a semnalelor de tact; Anumite resurse necesit o codificare specific: o Registrele din primitiva DSP48 au numai set / reset sincron; o Memoriile RAM / ROM distribuite i primitivele SRL nu sunt prevzute cu funcionalitatea de set sau reset dup configurare. Este preferabil folosirea reset-ului sincron n locul celui asincron dispozitivele FPGA XILINX au un reset al configuraiei (GSR Global Set-Reset) care este utilizat pe durata etapei de configurare a cipului, pentru a aduce FPGA-ul ntr-o stare cunoscut. Semnalul GSR este de asemenea accesibil

144

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

proiectantului dup configurare, prin intermediul blocului STARTUP. Nu este necesar iniializarea asincron la punerea sub tensiune a cipului. b) Sinteza automatelor finite Sinteza eficient a automatelor finite este un aspect deosebit de important, deoarece n multe aplicaii proiectantul trebuie s-i defineasc propriile automate finite, cu totul unice (n funcie de cerinele aplicaiei). ntruct de regul automatele finite reprezint creierul sistemului, este imperios necesar ca instrumentele de sintez s genereze o structur optim a lor. Un automat finit trebuie s posede urmtoarele elemente: La intrri: semnale de intrare i tranziii de la o stare la alta; La ieiri: semnale de ieire, de control i de validare pentru restul sistemului; Automatul NU trebuie s conin logic aritmetic, uniti de execuie (ci de date) sau alte funcii combinaionale. Cu alte cuvinte, automatul finit trebuie s conin strict logica de trecere dintr-o stare n alta i de generare a ieirilor specifice, fr nici o interferen cu alte module ale sistemului (trebuie s fie pur, complet separat de partea de execuie).
x1 Intrri xn zm z1 Ieiri

CLC

y1 Variabile de stare (starea curent) ys Elemente de memorie (Registrul de stri)

Y1 Funcii de tranziie (starea urmtoare) Ys

Figura 13.11 Schema generic a unui automat finit Cnd specificm un automat finit ntr-un limbaj de descriere hardware, vom plasa logica responsabil de generarea noii stri ntr-o instruciune case. Tot aici putem include registrul de stri; el poate fi specificat i ntr-un proces separat. Aceast abordare previne partajarea resurselor (resource sharing), care poate afecta viteza sistemului.

SINTEZA CIRCUITELOR NUMERICE CU FPGA

145

n cazul n care folosim limbajul VHDL, vom folosi tipuri enumerate pentru definirea strilor automatului, deoarece majoritatea instrumentelor de sintez au comenzi pentru extragerea i recodificarea strilor automatelor descrise astfel. Acesta este un mare avantaj pentru proiectant, care nu trebuie s se mai preocupe de acest aspect (unde de altfel are destule anse s greeasc)! n cazul n care urmrim s obinem viteze foarte mari se recomand folosirea metodei de sintez cu un bistabil pe stare (one-hot encoding). Astfel vom folosi mai multe bistabile, dar se va simplifica logica de calcul al noii stri. O ultim sugestie este aceea de a trece ieirile automatului finit prin registre, pentru a-i crete performana. c) Instanierea i inferena resurselor Se recomand instanierea unei componente atunci cnd suntem nevoii s impunem cu precizie ce resurs ne este necesar, iar instrumentul de sintez fie nu poate infera resursa respectiv, fie o infereaz greit. Inferena este preferabil ori de cte ori este posibil, deoarece face codul mult mai portabil. Pe de alt parte, instanierea este recomandat pentru a crea blocuri cu funcionalitate mai complex, cum ar fi Uniti Aritmetico-Logice, multiplicatoare rapide, filtre cu rspuns finit (Finite Impulse Response FIR). Pentru acestea se recomand utilitarul CORE Generator. Se va folosi instanierea numai atunci cnd este necesar accesarea anumitor caracteristici speciale ale dispozitivului FPGA, cnd se dorete creterea performanei sistemului sau diminuarea suprafeei de logic activ ocupat n cip. Este indicat s limitm localizarea componentelor instaniate la doar cteva fiiere surs, pentru a facilita localizarea acestor componente atunci cnd vom dori s portm codul pe un alt dispozitiv FPGA gazd. XILINX recomand instanierea urmtoarelor elemente: Resurse de memorie mai ales BlockRAM-uri (se poate folosi utilitarul CORE Generator pentru a construi memorii de mari dimensiuni); Resursele standard SelectIO cele cu ajutorul crora se selecteaz standardul electric; Resursele de gestionare a semnalelor de tact DCM, IBUFG, BUFG, BUFGMUX i BUFGCE.

146

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

Raiunea acestor sugestii o gsim n faptul c astfel este mai uor s schimbm sau s portm proiectul nostru pe alte suporturi fizice, realizate n tehnologii noi (mai avansate). n felul acesta, sunt mai puine constrngeri de sintez i atribute care trebuie transmise mai departe (cel mai simplu este s pstrm majoritatea atributelor i constrngerilor n fiierul User Constraints File (UCF), cci astfel informaiile critice sunt grupate ntr-un singur fiier) Se recomand de asemenea s crem un bloc ierarhic separat pentru instanierea acestor resurse. Deasupra blocului de la nivelul ierarhic cel mai nalt din proiectul nostru (top-level), vom crea un wrapper care va conine instanierile componentelor specifice dispozitivelor FPGA XILINX. n cazul n care vom dori la un moment dat s portm proiectul nostru pe un dispozitiv FPGA al altui productor, va fi suficient s efectum modificrile n acest wrapper.
XILINX wrapper top_xlnx
STARTUP DCM IBUFG BUFG

Blocul TopLevel

OBUF_GTL OBUF_GTL OBUF_GTL

IBUF_SSTL2_I

Figura 13.12 Schema de principiu a unui wrapper d) Operaia de Retiming Aceast operaie este suportat de principalii productori de software de susinere a proiectrii. Instrumentul de sintez urmrete s distribuie automat blocurile de logic combinaional dintre registre pentru a echilibra ntrzierile pe cile de date combinaionale. Figura 13.13 ilustreaz acest concept. nainte de Retiming
D Q D Q D Q

Dup Retiming
D Q D Q D Q

Figura 13.13 Operaia de retiming

SINTEZA CIRCUITELOR NUMERICE CU FPGA

147

3. Desfurarea lucrrii 1. Se editeaz i se simuleaz numrtorul Moebius din figura 13.1 i se verific obinerea corect a formelor de und din figura 13.2. 2. Se parcurg toi paii necesari n vederea implementrii numrtorului Moebius n cipul FPGA de pe placa NEXYS-2, folosindu-se i utilitarele din pachetul Foundation Series menionate n seciunea 2.2. 3. Se editeaz, se simuleaz i se parcurgnd toi paii necesari n vederea implementrii unui numrtor zecimal i a unei uniti aritmetico-logice n cipul FPGA de pe placa NEXYS-2. 4. Se editeaz i se simuleaz un dispozitiv universal numrtor / registru de deplasare, parcurgndu-se apoi toi paii necesari n vederea implementrii n cipul FPGA de pe placa NEXYS-2. 5. Se va specifica numrtorul Moebius din figura 13.1 prin limbaj de descriere hardware, iar numrtorul zecimal i unitatea aritmeticologic vor fi specificate prin editorul schematic. Cum este mai simplu? Care variant de implementare (cu editor schematic sau cu limbaj de descriere hardware) este mai avantajoas i n ce condiii? 6. Fiind dat urmtorul circuit (figura 13.14):

Figura 13.14 Circuitul iniial s-a dorit pipeline-izarea lui, aa c s-a creat noua schem din figura 13.15

Figura 13.15 Circuitul pipeline-izat Care este problema cu noul circuit? Cum poate fi rezolvat aceast problem?

148

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

Anex
Ghidul utilizatorului plcii NEXYS-2 elemente de baz
Fiind produs de aceeai companie (Digilent Inc.), placa NEXYS-2 are n principiu componente principale similare cu cele ale plcii Spartan3 Starter Kit care a fost prezentat n Anexa lucrrii 12. Principalele deosebiri (din punct de vedere al desfurrii lucrrilor practice) constau n dispozitivul FPGA existent pe plac (Spartan3E-500 FG320) i n modul su de programare, care se realizeaz pe portul USB. Pentru programarea plcii este necesar folosirea unui program suplimentar al firmei Digilent Inc., numit ADEPT. A.1 Cele patru afiaje cu LED-uri cu 7 segmente Numrul i principiul de funcionare al acestor afiaje este similar celui al afiajelor de pe placa Spartan3 Starter Kit. Pinii dispozitivului FPGA la care sunt legai pinii afiajelor sunt redai n tabelele 13.1 i 13.2. Tabelul 13.1 Conexiunile dintre dispozitivul FPGA i afiajul cu 7 segmente (active pe 0) Segmentul Pinul dispozitivului FPGA A L18 B F18 C D17 D D16 E G14 F J17 G H14 DP C17 Tabelul 13.2 Semnalele de control al anodului (active pe 0) Anode Control FPGA Pin AN3 F15 AN2 C18 AN1 H17 AN0 F17

SINTEZA CIRCUITELOR NUMERICE CU FPGA

149

A.2 Cele opt comutatoare cu dou poziii Numrul i principiul de funcionare al acestor comutatoare este similar celui al comutatoarelor de pe placa Spartan3 Starter Kit. Pinii dispozitivului FPGA la care sunt legai pinii comutatoarelor sunt redai n tabelul 13.3. Tabelul 13.3 Conexiunile comutatoarelor la pinii dispozitivului FPGA Comutator Pin FPGA SW7 R17 SW6 N17 SW5 L13 SW4 L14 SW3 K17 SW2 K18 SW1 H18 SW0 G18

A.3 Cele patru comutatoare de tip push button Numrul i principiul de funcionare al acestor comutatoare de tip push button este similar celui al comutatoarelor de tip push button de pe placa Spartan3 Starter Kit. Pinii dispozitivului FPGA la care sunt legai pinii comutatoarelor de tip push button sunt redai n tabelul 13.4. Tabelul 13.4 Conexiunile comutatoarelor de tip push button la pinii dispozitivului FPGA Push Button Pin FPGA A.4 LED-urile Numrul i principiul de funcionare al acestor LED-uri este similar celui al LED-urilor de pe placa Spartan3 Starter Kit. Pinii dispozitivului FPGA la care sunt legai pinii LED-urilor sunt redai n tabelul 13.5. Tabelul 13.5 Conexiunile LED-urilor la pinii dispozitivului FPGA Spartan3 LED Pin FPGA LD7 P4 LD6 E4 LD5 P16 LD4 E16 LD3 K14 LD2 K15 LD1 J15 LD0 J14 BTN3 H13 BTN2 E18 BTN1 D18 BTN0 B18

A.5 Programarea plcii Pentru programarea plcii nu se mai poate folosi utilitarul IMPACT din mediul ISE Foundation, ci se va folosi programul ADEPT (mai precis modulul ExPort al acestuia). Interfaa fiind foarte simpl i intuitiv, nu va fi prezentat aici.