tehnici de proiectare cu circuite digitale (fpga)
DESCRIPTION
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 - PowerPoint PPT PresentationTRANSCRIPT
This material exempt per Department of Commerce license exception TSU
Tehnici de Proiectare cu Circuite Digitale (FPGA)
FPGA Design Techniques 2
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:
FPGA Design Techniques 3
Cuprins
• Duplicarea bistabilelor• Pipelining• Bistabile I/O• Circuite de Sincronizare• Recapitulare
D Qfn1
D Qfn1
D Qfn1
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
Exemplu de duplicare a bistabilelor
• 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
Bistabilul conectat la 2 bancuri de registri constransi la regiuni diferite ale cipului
• 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
Exemplu de duplicare a bistabilelorBistabilul sursa este duplicat
FPGA Design Techniques 7
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
FPGA Design Techniques 8
Cuprins
• Duplicarea bistabilelor• Pipelining• Bistabile I/O• Circuite de Sincronizare• Recapitulare
FPGA Design Techniques 9
Conceptul de Pipelining
D QfMAX = n MHz
fMAX 2n MHz
Doua niveluri logice
un nivel
un nivel
D Q
D Q D Q D Q
Prin introducerea de bistabili intr-o cale de procesare de date, se pot creste performantele
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
• Circuitul original– Doua nivele logice intre SOURCE_FFS si DEST_FF– fMAX = ~233 MHz
Exemplu de Pipelining
Q
DEST_FF
LUT
D Q
DLUT
LUT
LUT
SOURCE_FFS
Circuit fara pipelining
Exemplu de Pipelining
• Circuit cu pipelining– Un nivel logic intre fiecare set de bistabili– fMAX = ~385 MHz
LUT
D Q
D QLUT
DEST_FF
LUT
LUT
SOURCE_FFS
D Q
D Q
D Q
PIPE_FFS
Circuit cu pipelining
Intrebari recapitulative
• Dat fiind circuitul original, ce e greșit la circuitul cu pipelining?• Cum poate fi solutionata problema?
• 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
Raspunsuri
FPGA Design Techniques 16
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
FPGA Design Techniques 18
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”
FPGA Design Techniques 19
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
• 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
Incalcari de timp Setup si Hold
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
FPGA Design Techniques 23
Circuitul de sincronizare 1
Asynchronous input
CLK
Synchronized signalD Q D Q
Guards against metastability
FF2FF1
• Bistabilul in plus protejeaza impotriva metastabilitatii
A se utiliza atunci cand impulsurile de intrare au latimea minima de o perioada de tact
FPGA Design Techniques 24
D
Circuitul de sincronizare 2
• FF1 capteaza impulsuri scurte• FF2 si FF3 au acelasi rol ca si circuitul de sincronizare 1
D Q
CLR
Asynchronous input
CLK
Synchronized signalD Q
Guards against metastabilityVCC
FF3FF2FF1
Q
Previne resetarea lui FF1 daca intrarea circuitului are inca valoarea HIGH
A se folosi atunci cand impulsurile de intrare pot avea latimea mai mica decat o perioada de tact
FPGA Design Techniques 25
Captarea unei magistrale
• 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
Synchronizedbus inputsCLK
One-shot enable
D
FF2FF1
D Q
n bitbus
D Q
CE
Sync_Reg
Q D Q
D Q
D Q
A se utiliza atunci cand impulsurile de intrare trebuie sa aiba latimea minima de o perioada de tact
Leading edge detector
FPGA Design Techniques 26
Captarea unei magistrale
VCC
Q
Asynchronous Input CLK
CLK
One-shot enable
D Q
FF3
D Q
FF2
D
CLR
FF1
n bitbus
CESynchronizedbus inputs
Sync_RegD Q
D Q
A se folosi atunci cand impulsurile de intrare pot avea latimea mai mica decat o perioada de tact
Leading edge detector
• 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
FPGA Design Techniques 27
Circuitul de sincronizare 3• A se folosi un FIFO pentru a trece intre domenii
Status FlagLogic
RAMB16COREWRCOUNT
RDCOUNT
WRCLK
WREN
RDCLK
RDEN
RESET
ReadPointer
FULL
EMPTY
AFU
LLA
EMPTY
RD
ERR
WR
ERR
waddr
oe
mem
_ren
mem
_wen
WritePointer
raddr
DI DOFIFO16FIFO16
FPGA Design Techniques 28
Cuprins
• Duplicarea bistabilelor• Pipelining• Bistabile I/O• Circuite de Sincronizare• Recapitulare
FPGA Design Techniques 30
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?
FPGA Design Techniques 31
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.
FPGA Design Techniques 32
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.
FPGA Design Techniques 33
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