Sisteme cu FPGA
Sisteme cu FPGA Date despre materie: Nota: 1 + 0.2*Proj + 0.2*Teor + 0.2*Tm , daca P>5, E>5 Evaluare partiala la proiect: posibila E: proiect + intrebari de teorie (documentatie permisă) Teme: Voi trebuie sa exersati! Proiecte: Aplicaţii pe placi de dezvoltare Nexys2 + PMODs Exemple functionale cu dispozitivele de pe placa +PMODs, interfete: FLASH, EPP, UART, VGA, SPI in, out, I2C, 1-Wire Exemple cu Logicore Ip: FIFO, DSP etc. Laborator: Cont la laborator: BEL\sfpga, parola sfpga %HOMEDRIVE%%HOMEPATH %= G:\ DIRECTOR DE LUCRU: C:\Temp Va rog, grija cu placile de dezvoltare si modulele PMOD!
Sisteme cu FPGA Bibliografie: Pentru dispozitive FPGA: Website XILINX, www.xilinx.com -> Products -> Silicon Devices: Pentru placile Nexys/Nexys2: Familia Spartan 3E Va recomand si V5, S6, V6, Seriile 7 (pot fi intrebari la examen din datasheet!) Steve Kilts, “Advanced FPGA design”, Architecture, Implementation and Optimization” John Wiley and Sons, 2007 Sorin Hintea, “Tehnici de Proiectare cu Arii Logice”, UTPress, 2003 Website alti furnizori: Altera, Lattice Semiconductor, Cypress Semiconductor Pentru mediul de dezvoltare Website XILINX, www.xilinx.com -> Documentation -> Design Tools -> ISE Design Tools (curent: 14.6) In mod special User Guides -> Synthesis and Simulation Design Guide, UG626 E un manual complet de HDL pentru sinteza! Placi de Dezvoltare: Manualele de Referință Website Digilent, inc., www.digilentinc.com sau www.digilent.ro -> FPGA Boards -> NEXYS2 – 1200, 500 si mai vechi: BASYS, NEXYS DOC, adică Manuale de referinta si fisiere .ucf: G:\Original\Digilent_Boards,
Sisteme cu FPGA Software: Mediul contine: Instalare: Mediul: Xilinx Integrated Software Environment (ISE) Versiunea curenta: 14.6 (posibil apare pe parcurs si versiune mai noua) Mediul contine: ISE - mediul principal de proiectare. Licenta folosita: Webpack – FREE Embedded Development Kit (EDK) – Mediu de dezvoltare pentru crearea de sisteme pe microprocesoare Microblaze, PowerPC, ARM PlanAhead – mediu de proiectare la nivel de arhitectura chip ChipScope – osciloscop prin JTAG a semnalelor interne ale unui proiect System Generator – Matlab pe FPGA Instalare: www.xilinx.com -> Download. If not user, va inregistrati Kit: About 7GB (.tar), Install: About 13GB (Webpack) Instalati ISE WEBPACK! NU FOLOSITI VARIANTE CRACKED!!! NU ARE ROST! Bibliografie: Help si Online Documentation ale programelor respective (BECUL GALBEN!)
Sisteme cu FPGA Bibliografie pentru Verilog Google cu “verilog tutorial” (http://www.asic-world.com/verilog/veritut.html) Nu e singurul tutorial! Majoritatea acestora depind de mediul de proiectare/dezvoltare/simulare folosit Medii de proiectare: zeci Limbaje Verilog: unul singur! Standardizări: 3+2: Verilog-95, -2001, -2005 + SystemVerilog + Verilog-A Fiecare limbaj este o extensie a celui precedent
Introducere Ce este FPGA? Începem de la câteva componente digitale simple, vezi pe tablă
Arii Logice Programabile Introducere Arii Logice Programabile Recapitulare scurtă Implementarea sistemelor digitale se poate face cu: Circuite logice ”discrete” (74XX, 4XX) Sisteme de procesare: Sisteme pe microprocesor Sisteme cu microcontroller Sisteme cu DSP Sisteme cu arii logice reconfigurabile (programabile?) PLA, PAL GAL CPLD (Complex Programmable Logic Device) FPGA (Field Programmable Gate Array)
Arii Logice Programabile Introducere Arii Logice Programabile Mai exact: circuitele FPGA sunt circuite ale căror “schemă internă” se poate configura / modifica în funcţie de cerinţele proiectului Principali producători: Xilinx, Altera, Actel, Cypress, Lattice etc De la fiecare producator: componentele sunt categorizate in FAMILII – similar cu alte produse comerciale
Arii Logice Programabile Introducere Arii Logice Programabile Configuratia poate fi de tip FLASH (în general, CPLD + S3NV, se păstrează configuraţia nonvolatil) de tip RAM (în general FPGA, pierde configuraţia la întreruperea alimentării) Cum putem stoca (sau măcar reproduce) configuratia in FPGA? Metode de configurare: JTAG (Joint Test Action Group) – interfață similară cu SPI Folosind memorie SerialFlash (Interfață Xilinx sau SPI) Mai nou, de la S6+ : Interfață Dual/Quad SPI (Atlys, Nexys3, Nexys4, Atlys2, Genesys2) Folosind memorie ParalellFlash (Vezi plăci S3E, V5, V6, Atlys, Nexys3) Mai nou: Stick USB (Nexys3, interfețe prin microcontrollere PIC/FTDI)
Arii Logice Programabile Introducere Arii Logice Programabile FAMILII Dispozitive Xilinx: FPGA: Spartan 3E, 3AN Spartan 6 Virtex 4, 5, 6 Seria 7: ARTIX, KINTEX, VIRTEX ZYNQ UltraScale (disponibilitate?) CPLD: CoolRunner 2 Exemple de codificare: Identificator Xilinx, Familie, Dispozitiv, Capsula, Speed Grade XC 2C 256 TQ144 – 1: Coolrunner 2, 256 Celule, capsula TQFP 144, -1 XC 3S 500E FG320 -4: Spartan 3E, 500 Kporti echivalente, … XC 5V LX110T FF1132 -1 – Virtex 5 LXT, 110 Mporti echivalente…
Arii Logice Programabile Introducere Arii Logice Programabile Cat de “mare” – complex este un dispozitiv CPLD sau FPGA? XILINX CPLD de la XC2C32 – (Coolrunner II CPLD) 32 celule (32 bistabili, 750 porti logice, 33 User IO) până la XC2C512 – 512 celule (12000 porti logice echivalente, 270 User I/O) Xilinx Spartan 3E FPGA (2005, Placile Digilent Nexys2!) XC3S500E – 500 Kporți echivalente (10,476 bistabili, max. 232 User I/O) XC3S1200E – 1200 Kporți echivalente (19,512 bistabili, max. 304 User I/O) În 3S500E “Încape” un sistem pe microprocesor Microblaze pe 32 biți + periferice aferente (3 X GPIO, 1 X UART, 1 X USB-EPP, 1X PS/2, 16 KB BRAM), toate ocupând aprox 54% din FPGA Xilinx Virtex 7 FPGA (2012..2013) de la XC7V330T – (408,000 bistabili, max. 700 User I/O) până la XC7V2000T (2,443,200 bistabili, max. 1200 User I/O) XC7V2000T – ar fi echivalent cu 233 X S3E500!
Arii Logice Programabile Introducere Arii Logice Programabile Însă: Arhitectura FPGA NU poate permite viteze de lucru mari, comparativ cu ASIC 1. Ce este ASIC? 2. DE CE? 3. Ce solutii exista?
Arii Logice Programabile Introducere Arii Logice Programabile 3. Ce solutii exista? Componente hardware in FPGA (CORE) 1. Specializate pentru FPGA BRAM DistRAM (Distributed, nu Dinamic!) DSP48 LUT4, 5, 6 SLR16 (ocupa un singur LUT!) … Ar mai trebui sa fie câteva, cautati! 2. Specialiazate pe aplicatie Ethernet MCB (Memory Control Block), mai nou : Memory Interface Generator Procesoare Încapsulate (PowerPC, mai nou: ARM) Video Controller/OSD/DMA etc Caz foarte special: ZNYC, mai exact familia ZNYC 7000 – EPP (Extensible Processing Platform): NU e o idee noua! Atmel a iesit pe piata cu AtMega + Celule Configurabile Dual ARM Cortex™-A9 MPCore + Memorie Cache + Celule Configurabile
Arii Logice Programabile Introducere Arii Logice Programabile Frecvența de lucru? Este mai puțin relevantă decât în cazul unui procesor Contează mai mult timpii de propagare în interiorul circuitului Ex. dacă la XC2C32 timpul minim de propagare = 3.8ns, rezultă FMax= 263 MHz În realitate, frecvența e aprox. de 5..10 ori mai mică, datorită rutării din interiorul FPGA Rutele devin mai lungi la creșterea complexității proiectului Ex. la FPGA S3E500, 1200 (plăcile Nexys2), frecvența cea mai uzuală e 50MHz. Proiectele optimizate pot lucra până la 100..125MHz Ex. la FPGA XC5VLX50T..LX110T (plăcile ML50X..XUPV5) frecvența cea mai uzuală e 125MHz Există însă mai multe DOMENII DE TACT (CLOCK DOMAINS): În același proiect, pot lucra componente la frecvențe de tact diferite: Un procesor soft-core la frecvența de 125MHz Un controller DDR2 la frecvența de 2X400MHz în front Un controller video la frecvența de 145 MHz (Pixelclock, HDMI 1080p) Transciever-e GTP la frecvențe de GHz (3.2Gbps, 6.25Gbps, 12.5Gbps, etc) Un controller AC’97 (audio) la frecvența de 12.28MHz
Introducere Piaţa circuitelor logice programabile: Avantaj Proiectare FPGA vs ASIC: Time-To Market Karen Parnell, Roger Bryner: Comparing and ContrastingFPGA and Microprocessor System Design and Development, XILINX Coorporation, July 2004
Introducere De ce FPGA vs ASIC? Există dezavantaje: ÎNSĂ: Consum de putere foarte mare Multe circuite “în plus”, care consumă suplimentar – switch-uri, multiplexoare Viteza FPGA nu poate concura cu cea ASIC Majoritatea traseelor de semnal trec prin puncte de comutare ÎNSĂ: În cazul producţiei la scară mică – medie e mai ieftin ASIC rentabil doar la producţia în masă – Circuite pentru tf. mobile, procesoare, circuite pentru plăci de bază etc. UN PROIECT PE FPGA POATE FI FOARTE UŞOR MODIFICAT, PE ASIC ÎNSĂ NU O foarte largă utilizare actuală a FPGA: VERIFICAREA FUNCŢIONALĂ a proiectelor foarte complexe Există plăci de dezvoltare foarte complexe, cu ARII de FPGA (scumpe)
Comparaţie între proiecte pe diverse implementări: Introducere Comparaţie între proiecte pe diverse implementări: Karen Parnell, Roger Bryner: Comparing and ContrastingFPGA and Microprocessor System Design and Development, XILINX Coorporation, July 2004
Comparaţie între microcontrollere şi FPGA Introducere Comparaţie între microcontrollere şi FPGA Facilităţi μC Soluţii μC FPGA Soluţii FPGA Viteză de lucru mică CLK> mare CLK>, paralelism Periferice predefinite da Interfeţe I/O standard: SPI, SCI, USB etc Nu Componente CORE Reprogramabilitate FLASH Da FLASH, RAM Interfeţe Analogice Convertoare D/A, A/D Circuite externe Versatilitate Pini partajaţi Mare Reconfigurabil la nivel de pin I/O Algoritmi complecşi uşor Programare C, Asm Greu Preţ de cost Familii Low-Cost Medie Preţ de cost/poartă logică <<
Comparaţie între implementările sistemelor digitale Introducere Comparaţie între implementările sistemelor digitale Concluzii: Sisteme cu microprocesoare sunt recomandate aplicațiilor de complexitate medie (sisteme de calcul), viteză medie Sisteme cu microcontrollere: în aplicaţii industriale de viteză redusă – PLC - uri (Programmable Logic Controller) Sisteme cu DSP: în aplicații de mare viteză, de complexitate redusă/medie FPGA: recomandate aplicaţii de mare viteză şi-sau cu multe I/O, complexitate medie/mare ex: prelucrări de semnale, (datorită paralelismului), sisteme de comunicaţii de mare viteză
Avantajul FPGA faţă de DSP: Introducere Avantajul FPGA faţă de DSP: Paralelism Xilinx System Generator: Toolbox MATLAB, pentru creare de filtre digitale Karen Parnell, Roger Bryner: Comparing and ContrastingFPGA and Microprocessor System Design and Development, XILINX Coorporation, July 2004