Title: Tehnici de proiectare a circuitelor sincrone
1Tehnici de proiectare a circuitelor sincrone
2Obiective
- La finalul acestui modul, veti putea
- Folosi in mod eficient ierarhizarea
- Creste stabilitatea si performantele circuitului
prin folosirea circuitelor sincrone
3Cuprins
- Ierarhizarea proiectelor
- Circuite sincrone in FPGA Xilinx
- Concluzii
4Ierarhizarea proiectelor
Utilizarea ierarhizarii sporeste claritatea
codului, stabilitatea si posibilitatile de
refolosire si depanare ale proiectului
Top Level of Design
Infer or instantiate I/O here
O metoda de a imparti proiectul in
blocuri ierarhizate este prin gruparea logicii
similare
State Machines
Datapaths
One-hot
Pipelining
Binary
Muxing/De-Muxing
Enumerated
Arithmetic
Counters
Building Blocks
Adders/Subtractors
Standard Widths
Bit Shifters
Pipeline RAMs
Accumulators
Specific Functions
RAM
Other IP/Cores
CoreGen
FIFOs
Parametizable functions
FIR Filters
RAM
Technology-Specific Functions
5Avantajele 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
6Sfaturi 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
7Sfaturi 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
8Cuprins
- Ierarhizarea proiectelor
- Circuite sincrone in FPGA Xilinx
- Concluzii
9De 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
10Proiectare 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 practica (pe placa) sunt de obicei
mai bune
11Intarzieri de tact
INPUT
Q_C
CLOCK
- Acest registru de deplasare nu va functiona din
cauza intarzierilor de tact!
12Folosirea 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
13Folosirea 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)
14Divizor de tact obisnuit
- Introduce intarziere de tact intre CLK1 si CLK2
- Foloseste un BUFG in plus pentru a reduce
intarzierea pentru CLK2
D
Q
CLK2
D
Q
BUFG
CLK1
BUFG
15Divizor de tact recomandat
- Nu exista intarzieri de tact intre bistabili
D
Q
CLK2_CE
CE
D
Q
CLK1
BUFG
16Evitarea 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
MSB
0111 1000 tranzitia poate deveni
0111 1111 1000 datorita unui MSB mai
rapid
Ruta mai scurta
MSB
Bistabil
LSB
Glitch poate aparea aici
Numarator binar
17Evitarea glitch-urilor pe semnalul de tact
- Acest circuit realizeaza aceeasi functie, dar
fara a introduce glitch-uri pe semnalul de clock
D
INTRARE
Q3
D
Q2
Q
CE
Q1
Q0
Bistabil
TACT
Numarator
18Codarea Clock Enable-urilor
Pot infera logica in plus daca nu este respectata
ordinea de precedenta corecta!
VHDL FF_AR_CE process(CLK) begin if (CLKevent
and CLK 1) then if (ENABLE 1) then Q
lt D_IN end if end if end process
Verilog always _at_(posedge CLOCK) if (ENABLE) Q
D_IN
- Daca ENABLE nu este un port top-level, scrieti
codul pentru ENABLE in alt proces (secven?a
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
19Evitarea glitch-urilor Set/Reset
- Glitch-urile pe intrarile de set asincron si
reset asincron pot duce la un regim incorect de
functionare a circuitului
INTRARE
Q
D
RESET asincron
Numarator binar
CLR
Bistabil
Qx
RESET
Q0
TACT
Un glitch poate aparea la tranzitia 01 ? 10
20Evitarea glitch-urilor Set/Reset
- Cand este posibil, e de preferat ca SET sa fie
sincron, iar RESET sa fie asincron
INTRARE
Q
D
RESET sincron
Numarator
R
BIistabil
RESET
Qx
Q0
TACT
Impiedica tranzitia 01 ? 10
21Codarea bistabililor sincroni
- Reset asincron
- always _at_(posedge CLOCK or posedge RESET)
- if (RESET)
- Q 0
- else
- Q D_IN
- Reset sincron
- always _at_(posedge CLOCK)
- if (RESET)
- Q 0
- else
- Q D_IN
22Cuprins
- Ierarhizarea proiectelor
- Circuite sincrone in FPGA Xilinx
- Concluzii
23Intrebari 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?
24Raspunsuri
- 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
25Concluzii
- 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
26Informatii 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 -gt
Online Help