270 likes | 420 Views
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
E N D
Tehnici de proiectare a circuitelor sincrone This material exempt per Department of Commerce license exception TSU
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 • Concluzii
Ierarhizarea 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
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
Cuprins • Ierarhizarea proiectelor • Circuite sincrone in FPGA Xilinx • Concluzii
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
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
D D Q_A 12.5 A B C Q_B D 3 cycles Clock Q_A Q_B Q_C 2 cycles A & C Clock B Clock 3.0 3.1 3.0 3.3 3.1 Q_A Clock skewed version Expected operation Q_B Q_C Intarzieri de tact • Acest registru de deplasare nu va functiona din cauza intarzierilor de tact! INPUT Q_C CLOCK
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
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);
Divizor 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
Divizor de tact recomandat • Nu exista intarzieri de tact intre bistabili D Q CLK2_CE CE D Q CLK1 BUFG
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” MSB 0111 1000 tranzitia poate deveni 0111 1111 1000 datorita unui MSB mai rapid MSB Ruta mai scurta Bistabil LSB Glitch poate aparea aici Numarator binar
Evitarea 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
Codarea Clock Enable-urilor Pot infera logica in plus daca nu este respectata ordinea de precedenta corecta! • 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 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;
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 INTRARE Q D RESET asincron Numarator binar CLR Bistabil Q[x] RESET Q[0] TACT Un glitch poate aparea la tranzitia 01 10
Evitarea 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 Q[x] Q[0] TACT Impiedica tranzitia 01 10
Codarea bistabililor sincroni • 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;
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