350 likes | 544 Views
Tehnici de Proiectare cu Circuite Digitale (FPGA). Obiective. Cresteti performantele unui proiect prin duplicarea bistabilelor Cresteti performantele unui proiect prin folosirea pipeline Cresteti performantele unei placi de dezvoltare prin folosirea de bistabile I/O
E N D
Tehnici de Proiectare cu Circuite Digitale (FPGA) This material exempt per Department of Commerce license exception TSU
Obiective • Cresteti performantele unui proiect prin duplicarea bistabilelor • Cresteti performantele unui proiect prin folosirea pipeline • Cresteti performantele unei placi de dezvoltare prin folosirea de bistabile I/O • Construiti circuite de sincronizare stabile Dupa completarea acestui modul, veti fi in stare sa:
Cuprins • Duplicarea bistabilelor • Pipelining • Bistabile I/O • Circuite de Sincronizare • Recapitulare
Duplicarea Bistabilelor • Conexiunile cu fan-out ridicat pot avea intarzieri mari si sunt greu de rutat • Duplicarea bistabilelor poate solutiona ambele probleme • Un fanout limitat reduce intarzierile de retea • Fiecare bistabil poate avea fanout catre diferite regiuni fizice pe cip, reducand astfel congestia de rutare • Compromisuri de design • Performanta si capacitate de rutare crescute • Largirea ariei de dezvoltare • Fanout crescut catre alte retele fn1 D Q fn1 D Q fn1 D Q
Exemplu de duplicare a bistabilelor Bistabilul conectat la 2 bancuri de registri constransi la regiuni diferite ale cipului • Bistabilul sursa si pinul nu sunt constransi • Constrangere de timp: Period = 5 ns • Implementat cu optiunile implicite • Cea mai lunga cale de propagare = 6.806 ns • Nu respecta constrangerea de timp
Exemplu de duplicare a bistabilelor Bistabilul sursa este duplicat • Fiecare bistabil reprezinta sursa pentru o regiune de pe cip • Fiecare bistabil foate fi amplasat mai aproape de registrul al carui sursa este • Timpi de propagare prin rute redusi • Cea mai lunga cale de propagare = 4.666 ns • Indeplineste constrangerea de timp
Sugestii pentru duplicarea bistabilelor • Bistabilii duplicati se vor denumi _a, _b; NOT _1, _2 • Bistabilii numerotati sunt implicit mapati in acelasi slice • Bistabilii duplicati trebuie sa fie separati • Mai ales daca incarcarile sunt raspandite pe cip • Bistabilii duplicati trebuie creati in mod explicit in codul HDL (mai bine instantiati decat descrisi) • Cele mai multe sintetizatoare ofera control automat de fanout • Totusi, nu intotdeauna este aleasa cea mai buna distribuire a incarcarilor • De asemenea, bistabilii duplicati vor fi denumiti _1, _2 • Numeroase sintetizatoare optimizeaza prin reducere bistabilii duplicati • Folositi optiunea de sinteza ce pastreaza logica redundanta • Nu duplicati bistabilii care lucreaza cu semnale asincrone • Intai sincronizati semnalul • Trimiteti apoi semnalul sincronizat mai multor bistabile
Cuprins • Duplicarea bistabilelor • Pipelining • Bistabile I/O • Circuite de Sincronizare • Recapitulare
Doua niveluri logice un nivel un nivel Conceptul de Pipelining Prin introducerea de bistabili intr-o cale de procesare de date, se pot creste performantele fMAX = n MHz D Q D Q fMAX 2n MHz D Q D Q D Q Reduce numarul de nivele logice (LUT) dintre bistabili
Aspecte legate de Pipelining • Exista suficienti bistabili disponibili? • Consultati MAP Report • In general, nu se epuizeaza resursa de bistabili • Exista mai multe nivele logice intre bistabili? • Daca ar exista un singur nivel logic intre bistabili, pipelining nu va imbunatati performantele • Consultati Post-Map Static Timing Report sau Post-Place & Route Static Timing Report • Poate sistemul tolera latenta?
Latenta in sisteme cu Pipeline • Fiecare etaj de pipeline intarzie disponibilitatea datelor la iesire cu cate o perioada de tact • Asa numitul fenomen de “umplere a pipeline-ului” • Dupa ce un pipeline este umplut, un rezultat nou este disponibil la fiecare tact
LUT D Q Q D LUT LUT SOURCE_FFS DEST_FF LUT Exemplu de Pipelining Circuit fara pipelining • Circuitul original • Doua nivele logice intre SOURCE_FFS si DEST_FF • fMAX = ~233 MHz
D Q LUT D Q D Q LUT D Q LUT SOURCE_FFS DEST_FF D Q LUT PIPE_FFS Exemplu de Pipelining Circuit cu pipelining • Circuit cu pipelining • Un nivel logic intre fiecare set de bistabili • fMAX = ~385 MHz
Intrebari recapitulative • Dat fiind circuitul original, ce e greșit la circuitul cu pipelining? • Cum poate fi solutionata problema? Circuit cu Pipelining Circuit Original
Raspunsuri • Ce e greșit la circuitul cu pipelining? • Nepotrivire de latenta • Datele vechi sunt amestecate cu cele noi • Raspunsul circuitului este incorect • Cum poate fi solutionata problema? • Prin adaugarea unui bistabil pe semnalul SELECT • Toate intrarile de date prezinta aceeasi latenta
Cuprins • Duplicarea bistabilelor • Pipelining • Bistabile I/O • Circuite de Sincronizare • Recapitulare
Privire de ansamblu a bistabilelor I/O • Fiecare bloc I/O dintr-un Virtex™-II Pro contine 6 bistabili • IN FF pe intrare, OUT FF pe iesire, EN FF pe 3-state enable (fiecare cu OCK1, OCK2) • Suporta single data rate sau double data rate • Bistabilii I/O asigura timpi de setup, hold si clock-to-out atunci cand semnalul de tact vine de la un BUFG
Accesarea bistabililor I/O • In timpul sintezei • Sinteza controlata de constrangeri de timp poate face ca bistabilii sa fie amplasati in Input/Output Blocks (IOB) • Anumite sintetizatoare suporta atribute sau directive de sinteza pentru a marca bistabili spre a fi amplasati in IOB • Xilinx Constraint Editor • Se poate selecta tab-ul Misc si specifica registri care trebuie plasati in IOB • Trebuie cunoscute denumirile de instanta pentru fiecare registru • In timpul fazei de implementare MAP • In fereastra de dialog Map Properties, optiunea “Pack I/O Registers/Latches into IOBs” este selectata implicit • Si operatiunea MAP controlata de constrangeri va muta registrii in IOB pentru cai de propagare critice • MAP Report trebuie verificat pentru a confirma faptul ca bistabilii IOB au fost folositi • A se cauta sectiunea de “IOB Properties”
Cuprins • Duplicarea bistabilelor • Pipelining • Bistabile I/O • Circuite de Sincronizare • Recapitulare
Circuite de Sincronizare • Ce este un circuit de sincronizare? • Preia un semnal de intrare asincron si il trimite pe un front de tact • De ce sunt necesare circuitele de sincronizare? • Pentru a preveni incalcari ai timpilor de setup si hold • Pentru a asigura un design cat mai stabil • Cand avem nevoie de circuite de sincronizare? • Atunci cand semnalele se conecteaza intre domenii de tact fara legatura intre ele • Intre domenii de tact asociate, constrangerile relative de tip PERIOD fiind suficiente • Intrari de cip care sunt asincrone
Incalcari de timp Setup si Hold • Incalcarile se petrec atunci cand intrarea unui bistabil se schimba prea aproape de un front de tact • Exista 3 rezultate posibile: • Bistabilul citeste valoarea veche • Bistabilul citeste valoarea noua • Iesirea bistabilului devine metastabila
Metastabilitatea • Iesirea bistabilului intra intr-o stare tranzitorie • Nu este nici 0 nici 1 valid • Unele intrari pot interpreta ca 0, iar altele ca 1 • Ramane in aceasta stare pentru o perioada de timp nedefinita inainte de a se stabiliza la o valoare de 0 sau 1 • Datorita naturii ei statistice, aparitia evenimentelor metastabile poate fi doar redusa, insa niciodata eliminata • Media statistica a nereusitelor – Mean Time Between Failure (MTBF) este invers exponentiala fata de intervalul de timp alocat bistabilului sa isi revina • Cateva ns in plus alocate revenirii bistabilului pot reduce substantial sansele ca bistabilul sa intre in starea metastabila • Circuitele prezentate in acest subcapitol permit bistabilelor o intreaga perioada de tact pentru revenirea din starea metastabila
Circuitul de sincronizare 1 A se utiliza atunci cand impulsurile de intrare au latimea minima de o perioada de tact • Bistabilul in plus protejeaza impotriva metastabilitatii Guards against metastability Synchronized signal Asynchronous input D Q D Q FF1 FF2 CLK
Circuitul de sincronizare 2 A se folosi atunci cand impulsurile de intrare pot avea latimea mai mica decat o perioada de tact • FF1 capteaza impulsuri scurte • FF2 si FF3 au acelasi rol ca si circuitul de sincronizare 1 VCC Guards against metastability Synchronized signal D Q D Q Q D FF1 FF2 FF3 Asynchronous input CLR CLK Previne resetarea lui FF1 daca intrarea circuitului are inca valoarea HIGH
D Q CE One-shot enable D Q D Q FF1 FF2 D Q Synchronized bus inputs D Q CLK n bit bus Sync_Reg D Q Captarea unei magistrale A se utiliza atunci cand impulsurile de intrare trebuie sa aiba latimea minima de o perioada de tact • Intai magistrala de date este inregistrata de tactul asincron • Apoi circuitul “one-shot enable” – debouncer – sincron cu tactul semnalizea prin CE faptul ca datele au fost captate Asynchronous input CLK Leading edge detector Circuitul 1
VCC One-shot enable Q D Q D Q Asynchronous Input CLK FF2 FF3 CLK D D Q FF1 Synchronized bus inputs CE CLR n bit bus Sync_Reg D Q Captarea unei magistrale A se folosi atunci cand impulsurile de intrare pot avea latimea mai mica decat o perioada de tact • Intai magistrala de date este inregistrata de tactul asincron. • Apoi circuitul “one-shot enable” – debouncer – sincron cu tactul semnalizea prin CE faptul ca datele au fost captate Leading edge detector Circuitul 2
FIFO16 DI DO RAMB16 CORE RDCOUNT waddr raddr WRCOUNT Write Pointer Read Pointer mem_ren mem_wen oe Status Flag Logic WRCLK RDCLK WREN RDEN RESET FULL AFULL EMPTY RDERR WRERR AEMPTY Circuitul de sincronizare 3 • A se folosi un FIFO pentru a trece intre domenii
Cuprins • Duplicarea bistabilelor • Pipelining • Bistabile I/O • Circuite de Sincronizare • Recapitulare
Intrebari recapitulative • Un fanout ridicat este unul din motivele pentru a duplica un bistabil. Care este un alt motiv? • Dati un exemplu in care nu este nevoie de resincronizarea unui semnal care trece dintr-un domeniu de tact in altul. • De ce se foloseste bistabilul in plus in circuitele de sincronizare prezentate?
Raspunsuri • Un fanout ridicat este unul din motivele pentru a duplica un bistabil. Care este un alt motiv? • Incarcarile sunt distribuite in mai multe locatii pe cip. • Dati un exemplu in care nu este nevoie de resincronizarea unui semnal care trece dintr-un domeniu de tact in altul. • Raport bine stabilit intre fazele semnalelor de tact • Exemplu: semnalele de tact au aceeasi frecventa, fiind insa defazate cu 180o. • Se pot folosi constrangeri de tip PERIOD pentru a asigura indeplinirea cerintelor de timp. • De ce se foloseste bistabilul in plus in circuitele de sincronizare prezentate? • Pentru a permite primului bistabil sa isi revina din starea de metastabilitate.
Concluzii • Performantele unui circuit pot fi crescute prin: • Duplicarea bistabililor • Adaugarea etajelor de pipelining • Folosirea bistabililor I/O • Compromisuri • Duplicarea bistabililor creste aria circuitului • Pipelining-ul introduce latenta si de asemenea creste aria circuitului • Circuitele de sincronizare cresc stabilitatea proiectului.
Informatii aditionale • User Guides: www.xilinx.com Documentation User Guides • Switching Characteristics • Detailed Functional Description Input/Output Blocks (IOBs) • Application Notes: www.xilinx.com Documentation Application Notes • XAPP094: Metastability Recovery • XAPP225: Data-to-Clock Phase Alignment