Tehnici de Proiectare cu Circuite Digitale (FPGA)

32
This material exempt per Department of Commerce license exception TSU 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 Presentation

Transcript of Tehnici de Proiectare cu Circuite Digitale (FPGA)

Page 1: Tehnici de Proiectare cu Circuite Digitale (FPGA)

This material exempt per Department of Commerce license exception TSU

Tehnici de Proiectare cu Circuite Digitale (FPGA)

Page 2: 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:

Page 3: Tehnici de Proiectare cu Circuite Digitale (FPGA)

FPGA Design Techniques 3

Cuprins

• Duplicarea bistabilelor• Pipelining• Bistabile I/O• Circuite de Sincronizare• Recapitulare

Page 4: Tehnici de Proiectare cu Circuite Digitale (FPGA)

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

Page 5: Tehnici de Proiectare cu Circuite Digitale (FPGA)

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

Page 6: Tehnici de Proiectare cu Circuite Digitale (FPGA)

• 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

Page 7: Tehnici de Proiectare cu Circuite Digitale (FPGA)

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

Page 8: Tehnici de Proiectare cu Circuite Digitale (FPGA)

FPGA Design Techniques 8

Cuprins

• Duplicarea bistabilelor• Pipelining• Bistabile I/O• Circuite de Sincronizare• Recapitulare

Page 9: Tehnici de Proiectare cu Circuite Digitale (FPGA)

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

Page 10: Tehnici de Proiectare cu Circuite Digitale (FPGA)

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?

Page 11: Tehnici de Proiectare cu Circuite Digitale (FPGA)

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

Page 12: Tehnici de Proiectare cu Circuite Digitale (FPGA)

• 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

Page 13: Tehnici de Proiectare cu Circuite Digitale (FPGA)

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

Page 14: Tehnici de Proiectare cu Circuite Digitale (FPGA)

Intrebari recapitulative

• Dat fiind circuitul original, ce e greșit la circuitul cu pipelining?• Cum poate fi solutionata problema?

Page 15: Tehnici de Proiectare cu Circuite Digitale (FPGA)

• 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

Page 16: Tehnici de Proiectare cu Circuite Digitale (FPGA)

FPGA Design Techniques 16

Cuprins

• Duplicarea bistabilelor• Pipelining• Bistabile I/O• Circuite de Sincronizare• Recapitulare

Page 17: Tehnici de Proiectare cu Circuite Digitale (FPGA)

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

Page 18: Tehnici de Proiectare cu Circuite Digitale (FPGA)

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”

Page 19: Tehnici de Proiectare cu Circuite Digitale (FPGA)

FPGA Design Techniques 19

Cuprins

• Duplicarea bistabilelor• Pipelining• Bistabile I/O• Circuite de Sincronizare• Recapitulare

Page 20: Tehnici de Proiectare cu Circuite Digitale (FPGA)

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

Page 21: Tehnici de Proiectare cu Circuite Digitale (FPGA)

• 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

Page 22: Tehnici de Proiectare cu Circuite Digitale (FPGA)

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

Page 23: Tehnici de Proiectare cu Circuite Digitale (FPGA)

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

Page 24: Tehnici de Proiectare cu Circuite Digitale (FPGA)

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

Page 25: Tehnici de Proiectare cu Circuite Digitale (FPGA)

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

Page 26: Tehnici de Proiectare cu Circuite Digitale (FPGA)

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

Page 27: Tehnici de Proiectare cu Circuite Digitale (FPGA)

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

Page 28: Tehnici de Proiectare cu Circuite Digitale (FPGA)

FPGA Design Techniques 28

Cuprins

• Duplicarea bistabilelor• Pipelining• Bistabile I/O• Circuite de Sincronizare• Recapitulare

Page 29: Tehnici de Proiectare cu Circuite Digitale (FPGA)

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?

Page 30: Tehnici de Proiectare cu Circuite Digitale (FPGA)

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.

Page 31: Tehnici de Proiectare cu Circuite Digitale (FPGA)

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.

Page 32: Tehnici de Proiectare cu Circuite Digitale (FPGA)

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