Upload
xannon
View
52
Download
0
Tags:
Embed Size (px)
DESCRIPTION
Tehnici de proiectare a circuitelor sincrone. Obiective. La finalul acestui modul, veti putea: Folosi in mod eficient ierarhizarea Creste stabilitatea si performantele circuitului prin folosirea circuitelor sincrone. Cuprins. Ierarhizarea proiectelor Circuite sincrone in FPGA Xilinx - PowerPoint PPT Presentation
Citation preview
This material exempt per Department of Commerce license exception TSU
Tehnici de proiectare a circuitelor sincrone
Synchronous Design Techniques 2
Obiective
La finalul acestui modul, veti putea:• Folosi in mod eficient ierarhizarea• Creste stabilitatea si performantele circuitului prin folosirea
circuitelor sincrone
Synchronous Design Techniques 3
Cuprins
• Ierarhizarea proiectelor
• Circuite sincrone in FPGA Xilinx
• Concluzii
Synchronous Design Techniques 4
State MachinesOne-hotBinary
Enumerated
CountersAdders/Subtractors
Bit ShiftersAccumulators
Building BlocksStandard WidthsPipeline RAMs
DatapathsPipelining
Muxing/De-MuxingArithmetic
CoreGenParametizable functions
FIFOsFIR Filters
RAMTechnology-Specific Functions
Specific Functions
RAMOther IP/Cores
Top Level of DesignInfer or instantiate I/O here
Ierarhizarea proiectelorUtilizarea ierarhizarii sporeste claritatea codului, stabilitatea si posibilitatile de refolosire
si depanare ale proiectului
O metoda de a imparti proiectul in blocuriierarhizate este pringruparea logicii similare
Avantajele utilizarii ierarhizarii
• Claritatea proiectului– Mai usor de inteles functionalitatea proiectului si traseul urmat de date– Mai usor de debug
• Usor de refolosit parti ale proiectului
Sfaturi pentru claritatea proiectului
• Alegeti blocuri de ierarhie care au:– Legaturi logice de date intre blocuri– Legaturi fizice (de rutare) minime intre blocuri
• Alegeti denumiri descriptive pentru blocuri si semnale• Pastrati domeniile de tact separate
– Face interactiunea dintre tacturi foarte clara
• Faceti dimensiunea fiecarui fisier sursa astfel incat sa permita utilizarea optima– Mai usor de citit, de sintetizat si de debug
Sfaturi pentru refolosirea proiectului
• Realizati o serie de blocuri ce sunt accesibile oricarui proiectant – Bancuri de registri– FIFO– Alte functii standard– Functii dedicate folosite in mod frecvent in aplicatii
• Denumiti blocurile luand in calcul functia realizata si familia Xilinx ce va fi utilizata– Usor de localizat blocul necesar– Exemplu: REG_4X8_S3 (banc de 4 registri de cate 8 biti ce va fi folosit pe o
placa Spartan-3)
• Pastrati intr-un director separat de cel din Xilinx– Previne stergerea accidentala in cazul update-urilor
Synchronous Design Techniques 8
Cuprins
• Ierarhizarea proiectelor• Circuite sincrone in
FPGA Xilinx
• Concluzii
Synchronous Design Techniques 9
De ce proiectare sincrona?
• Circuitele sincrone sunt mai sigure– Evenimentele sunt generate pe fronturi de tact care apar la intervale bine
definite– Iesirile unui circuit logic au un intreg ciclu de tact in care sa se propage spre
urmatorul circuit• Diferentele dintre timpii de propagare a datelor sunt tolerate in limita unei
perioade de tact
• Circuitele asincrone sunt mai putin sigure– Uneori, intarzierile trebuie sa aiba o valoare anume (de exemplu 12 ns)– Poate exista o relatie impusa intre diverse intarzieri
Synchronous Design Techniques 10
Proiectare asincronaStudiu de caz
• Un proiect realizat cu 2 ani in urma nu mai functioneaza. Ce a modificat Xilinx in FPGA?– Imbunatatirile in procesul SRAM si contractarea geometriei
cresc viteza– Variatii normale intre placutele pe care se afla cipurile
• Un proiect trece de simulare, dar nu functioneaza in circuit. Este atunci simularea corecta? Da– Simularile ruleaza luand in considerare intarzierile in cel mai
rau caz– Conditiile în practică (pe placa) sunt de obicei mai bune
Synchronous Design Techniques 11
Intarzieri de tact
• Acest registru de deplasare nu va functiona din cauza intarzierilor de tact!
Expected operation
Clock
Q_A
Q_B
Q_C
3 cycles
Clock skewed version
A & C Clock
Q_A
Q_B
Q_C
B Clock
2 cycles
D Q_B Q_CINPUT
CLOCK
DD Q_A3.1
3.0
3.1 3.3
12.5 3.0
A B C
Folosirea buffer-elor globale pentru a reduce intarzierile de tact
• Buffer-ele globale sunt conectate la rute dedicate– Aceasta retea de rutare este astfel realizata incat sa minimizeze
intarzierile
• Toate placile Xilinx FPGA au buffer global– Placile Virtex™-II si Virtex-II Pro au 16 BUFGMUX– Placile Spartan™-3 au 8 BUFGMUX– Placile Virtex-4 au 32 BUFGCTRL
• Se poate folosi un simbol BUFG, iar tipul de buffer va fi ales de catre software– Toate sintetizatoarele importante pot infera buffer-e globale pe
semnale de tact venite din afara cipului
Synchronous Design Techniques 13
Folosirea liniilor globale• Majoritatea sintetizatoarelor pot infera in mod automat un
BUFG pe tacturi– Semnalele de tact trebuie sa vina de la un port top-level– Semnalele de tact generate intern nu sunt puse intr-un BUFG in
mod automat• Exemplu de instantiere a unui BUFGMUX (Verilog)
• BUFGMUX U_BUFGMUX • (.I0( ), // insert clock input used when select(S) is Low • .I1( ), // insert clock input used when select(S) is High • .S( ), // insert Mux-Select input • .O( ) // insert clock output);
Synchronous Design Techniques 14
Divizor de tact obisnuit
• Introduce intarziere de tact intre CLK1 si CLK2• Foloseste un BUFG in plus pentru a reduce intarzierea pentru CLK2
D QCLK2
CLK1BUFG
D Q
BUFG
Synchronous Design Techniques 15
Divizor de tact recomandat
• Nu exista intarzieri de tact intre bistabili
D QCLK2_CE
CLK1
D
CE
Q
BUFG
Synchronous Design Techniques 16
Evitarea glitch-urilor semnalelor de tact
• Deoarece bistabilii din placile FPGA de azi sunt foarte rapizi, acestia pot raspunde unor impulsuri de tact foarte inguste
• Niciodata nu luati intrari pentru semnalele de tact dintr-un circuit logic– Cunoscut si sub denumirea de “gating the clock”
Ruta mai scurta
Glitch poate aparea aici
MSB
Numarator binar
0111 1000 tranzitia poate deveni
0111 1111 1000 datorita unui MSB mai rapid
MSB
BistabilLSB
Synchronous Design Techniques 17
Evitarea glitch-urilor pe semnalul de tact
• Acest circuit realizeaza aceeasi functie, dar fara a introduce glitch-uri pe semnalul de clock
D Q3INTRARE
TACT
Numarator
Q2
Q1
Q0
CE Q
D
Bistabil
Synchronous Design Techniques 18
Codarea Clock Enable-urilor
VHDL
FF_AR_CE: process(CLK)begin if (CLK’event and CLK = ‘1’) then if (ENABLE = ‘1’) then Q <= D_IN; end if; end if;end process
VHDL
FF_AR_CE: process(CLK)begin if (CLK’event and CLK = ‘1’) then if (ENABLE = ‘1’) then Q <= D_IN; end if; end if;end process
Verilog
always @(posedge CLOCK) if (ENABLE) Q = D_IN;
Verilog
always @(posedge CLOCK) if (ENABLE) Q = D_IN;
• Daca ENABLE nu este un port top-level, scrieti codul pentru ENABLE in alt proces (secvență always)– Face codul mai clar– Ajuta sintetizatorul sa creeze un netlist mai bun
• Ordinea de precedenta a semnalelor de control: Reset, Set, Enable– Aceasta ordine trebuie respectata in cod
Pot infera logica in plus daca nu este respectata ordinea de precedenta corecta!
Synchronous Design Techniques 19
TACT
Q[x]
Numarator binar
Q[0]
INTRARE
RESET
Q
Bistabil
D
CLR
RESETasincron
Evitarea glitch-urilor Set/Reset
• Glitch-urile pe intrarile de set asincron si reset asincron pot duce la un regim incorect de functionare a circuitului
Un glitch poate aparea la tranzitia 01 10
Synchronous Design Techniques 20
TACT
Q[x]
Numarator
Q[0]
RESET
INTRARE Q
BIistabil
D
R
RESETsincron
Evitarea glitch-urilor Set/Reset
• Cand este posibil, e de preferat ca SET sa fie sincron, iar RESET sa fie asincron
Impiedica tranzitia 01 10
Synchronous Design Techniques 21
Codarea bistabililor sincroni
• Reset asincron
always @(posedge CLOCK or posedge RESET)if (RESET)
Q = 0;else
Q = D_IN;
• Reset asincron
always @(posedge CLOCK or posedge RESET)if (RESET)
Q = 0;else
Q = D_IN;
• Reset sincron
always @(posedge CLOCK)if (RESET)
Q = 0;else
Q = D_IN;
• Reset sincron
always @(posedge CLOCK)if (RESET)
Q = 0;else
Q = D_IN;
Synchronous Design Techniques 22
Cuprins
• Ierarhizarea proiectelor• Circuite sincrone in
FPGA Xilinx• Concluzii
Intrebari recapitulative
• Numiti doua avantaje ale ierarhizarii proiectelor.• De ce este indicat sa se foloseasca buffer-e
globale pentru semnalele de tact?• Ce alternativa exista la “gating of a signal”?
Raspunsuri
• Numiti doua avantaje ale ierarhizarii proiectelor.– Claritatea proiectului– Refolosirea proiectului
• De ce este indicat sa se foloseasca buffer-e globale pentru semnalele de tact?– Pentru a reduce intarzierile semnalului de tact
• Ce alternativa exista la “gating of a signal”?– Folosirea unui clock enable
Concluzii
• Utilizarea corecta a ierarhizarii ajuta la cresterea claritatii si capacitatilor de debug
• Proiectele sincrone sunt mai sigure decat cele asincrone
• Sfaturi pentru proiectare FPGA– Buffer-ele de tact global si DLL elimina intarzierile– A se evita glitch-urile, set-urile si reset-urile asincrone
Informatii aditionale
• Application notes on www.xilinx.com Documentation Application Notes
• Software documentation on www.xilinx.com Documentation Software Manuals– Development System Reference Guide, Chapter 2:
Design Flow, FPGA Design Techniques section– Libraries Guide
• Documentation for your synthesis tool ISE -> Online Help