Le support du cours SoPC 2011
Transcription
Le support du cours SoPC 2011
Introduction à la conception SoPC MASTER SEC Hervé BOEGLEN Plan 1. Introduction 2. Technologie des FPGA 3. Les HDL 4. Le langage VHDL 5. Outils de développement ALTERA (Quartus II + DE2) 6. NIOS II et SoPC Builder 2/72 1. Introduction Evolution de l’électronique depuis 1948 2011 : Intel Core I7 2600K, 32nm : Die : 216mm2 1,16 x 109 transistors ! 3/72 1. Introduction La loi de Moore 4/72 1. Introduction La densité de puissance 5/72 1. Introduction Les systèmes numériques aujourd’hui : 6/72 1. Introduction La conception des systèmes numériques : 7/72 1. Introduction Les cibles logicielles et matérielles : Les cibles logicielles (=µP, µC, DSP) 8/72 1. Introduction Les µP : 9/72 1. Introduction Les µC : 10/72 1. Introduction Les µC : 11/72 1. Introduction Les Digital Signal Processors (DSP) : 12/72 1. Introduction Les Digital Signal Processors (DSP) : 13/72 1. Introduction En résumé sur les cibles logicielles : • Avantages : – Flexibilité: il suffit de modifier le programme pour modifier l’application – Simple à mettre en œuvre grâce à la programmation de haut niveau (langage C) (possibilité de grande abstraction par rapport au matériel) – Temps de conception courts et coûts de conception faibles – Prix de revient faible • Inconvénients : – Faibles performances (consommation de puissance, vitesse de fonctionnement, puissance de calcul, etc,) à cause d’une architecture séquentielle (une opération à la fois, ou quelques unes dans le cas superscalaire) et de trop nombreux accès à la mémoire (instructions + données) 14/72 1. Introduction Les cibles matérielles spécialisées (ASIC) : 15/72 1. Introduction Les différentes cibles matérielles : 16/72 1. Introduction ASIC full custom : 17/72 1. Introduction ASIC standard cell : 18/72 1. Introduction ASIC gate array: 19/72 1. Introduction ASIC gate array: 20/72 1. Introduction Circuit configurable (ici FPGA) : 21/72 1. Introduction Le marché des FPGA : Xilinx 58% 31% Altera 11% All Others 22/72 1. Introduction ASIC vs FPGA: 23/72 1. Introduction De 1997 à 2005 : évolution des coûts 24/72 1. Introduction Temps de conception comparés : 25/72 1. Introduction Conclusion ASIC : • Avantages : – – – – – Haute intégration, Hautes performances (vitesse, consommation), Coûts unitaires faibles en production de masse Personnalisation Sécurité industrielle • Inconvénients : – – – – – Prix du 1 er exemplaire, Pas d’erreur possible Non-flexible High time to market Fabrication réservée aux spécialistes (fondeurs), 26/72 1. Introduction Conclusion FPGA : • Avantages : – – – – Possibilité de prototypage, Low time to market Adaptabilité aux évolutions futures (reconfiguration) Flexibilité • Inconvénients : – Intégration limitée, – Moins performant qu’un ASIC – Prix unitaire élevé en production de masse 27/72 1. Introduction Mais les méthodes de conception évoluent car : • Toujours plus d’intégration (SoC) • Les FPGA sont de plus en plus performants et de moins en moins chers, • Les FPGA remplacent peu à peu les ASIC… 28/72 2. Technologie des FPGA 29/72 2. Technologie des FPGA What is an FPGA ? Field Programmable Gate Array Gate Array Two-dimensional array of logic gates Traditionally connected with customized metal Every logic circuit (customer) needs a custommanufactured chip Field Programmable Customized by programming after manufacture One FPGA can serve every customer FPGA: re-programmable hardware 30/72 2. Technologie des FPGA Basic Internals of an FPGA Logic Element Logic Element Logic Element Logic Element Logic Element Logic Element Logic Element Logic Element Logic Element Each logic element is programmed to to implement the desired function Programmable Connections 31/72 2. Technologie des FPGA FPGA Logic Element Look-Up Table (LUT) + register + extra … LUT A B 0 Out 0 0 0 1 SRAM Cell Out 0 1 A B FPGAs typically use 4-input or larger LUTs Cyclone family (low cost): 4-inputs Stratix II: Adaptive Logic Module implements 4 – 6 input LUTs efficiently 32/72 Virtex 5: 6 inputs 2. Technologie des FPGA Connecting the Logic y LE z f I/O Pads I/O Pad x FPGA Logic elements implement the pieces of the circuit Now hook them up with the programmable routing 33/72 2. Technologie des FPGA Programmable Routing Programmable switches connect fixed metal wires Choose pattern so any logic element can connect to any other In2 Logic Block SRAM cell In1 Out 34/72 2. Technologie des FPGA Modern, mid-size FPGA – 2S60 I/O Channels with External Memory Interface Circuitry Adaptive Logic Modules High-Speed I/O Channels with DPA M512 Block Digital Signal Processing (DSP) Blocks M4K Block M-RAM Blocks High-Speed I/O Channels with Dynamic Phase Alignment (DPA) I/O Channels with External Memory Interface Circuitry Phase-Locked Loops (PLL) 60,440 Equivalent Logic Elements 2,544,192 Memory Bits 90nm Stratix II 2S60 35/72 2. Technologie des FPGA Low-cost Cyclone II range 36/72 2. Technologie des FPGA Low-cost Cyclone II IO 37/72 2. Technologie des FPGA 400MHZ max mais traitement parallèle ! Exemple soit à réaliser : • Réalisation logicielle à 400MHz : 7 cycles machine = 17,5 ns • Réalisation matérielle : temps de traversée des portes = 2 ns 38/72 3. Les HDL Définition : Un langage de description de matériel (Hardware Description Language, HDL) est une instance d'une classe de langage informatique ayant pour but la description formelle d'un système électronique. Il peut généralement : • décrire le fonctionnement du circuit, • décrire sa structure, • et servir à vérifier sa fonctionnalité par simulation ou preuve formelle. Un HDL est une représentation textuelle d'un comportement temporel ou d'une structure d'un circuit. En comparaison avec un langage de programmation classique, la syntaxe et la sémantique des HDL inclut des notations pour exprimer la concurrence et le temps, qui sont les principaux attributs du matériel. Les classes de langages dont la seule caractéristique est de décrire un circuit par une hiérarchie de blocs interconnectés est appelée une netlist. 39/72 3. Les HDL But : la simulation : • L'un des objectifs des HDL est d'aboutir à une représentation exécutable d'un circuit, soit sous forme autonome, soit à l'aide d'un programme externe appelé simulateur. Cette forme exécutable comporte une description du circuit à simuler, un générateur de stimuli (vecteurs de test), ainsi que le dispositif implémentant la sémantique du langage et l'écoulement du temps. Il existe deux types de simulateurs, à temps discret, généralement pour le numérique, et à temps continu pour l'analogique. Des HDL existent pour ces deux types de simulations. La synthèse : • En n'utilisant qu'un sous-ensemble d'un HDL, un programme spécial appelé synthétiseur peut transformer une description de circuit en une netlist de portes logiques ayant le même comportement que le circuit de départ. Le sous-ensemble du langage utilisé à ce propos est alors dit synthétisable. La sémantique synthétisable ignore typiquement toutes les constructions ayant un rapport avec le temps. 40/72 3. Les HDL Il existe un grand nombre de HDL : VHDL (Europe) Verilog (USA) SystemC SystemVerilog … 41/72 4. Le langage VHDL VHDL (VHSIC Hardware Description Langage) est un langage de description de matériel, c'est-à-dire un langage utilisé pour décrire un système numérique matériel, comme, par exemple, un flip-flop (bascule D) ou un microprocesseur Il peut modéliser un système par n'importe quelle vue, structurelle ou comportementale, à tous les niveaux de description. De plus il peut servir non seulement à simuler un système mais aussi à le synthétiser, c'est-à-dire être transformé par des logiciels adaptés (synthétiseurs) en une série de portes logiques prêtes à être gravées sur du silicium. VHDL est l'un des trois grands langages de description de matériel utilisés majoritairement dans l'industrie, avec VHDL et SystemC. Le langage standard IEEE VHDL a été développé par le Groupe d’Analyse et de Standardisation VHDL (VASG, pour “VHDL Analysis and Standardization Group”). 42/72 4. Le langage VHDL Structure d’une description VHDL : Une description VHDL est composée de 2 parties indissociables à savoir : • L’entité (ENTITY), elle définit les entrées et sorties. • L’architecture (ARCHITECTURE), elle contient les instructions VHDL permettant de réaliser le fonctionnement attendu. 43/72 4. Le langage VHDL Exemple : Démultiplexeur 2 vers 4 : 44/72 4. Le langage VHDL Exemple : Démultiplexeur 2 vers 4 : 45/72 4. Le langage VHDL Instructions concurrentes et séquentielles : Comme tout langage de description de matériel, le VHDL décrit des structures par assemblage d'instructions concurrentes dont l'ordre d'écriture n'a aucune importance, contrairement aux instructions séquentielles qui sont exécutées les unes après les autres, comme c'est la cas du C. VHDL offre cependant la possibilité d'utiliser des instructions séquentielles, plus naturelles pour l'homme, par le biais de processus process. Les processus peuvent avoir leurs propres variables locales variable . 46/72 4. Le langage VHDL Le fonctionnement du processus est régi par les règles suivantes : Un processus est une boucle infinie , lorsqu'il arrive à la fin du code, il reprend automatiquement au début, Un processus doit être sensible des points d'arrêt de façon à le synchroniser. La synchronisation est donc indiquée par un point d'arrêt qui est évènement particulier. Il existe 2 types de points d'arrêts : • Le processus est associé à une "liste de sensibilité" qui contient une liste de signaux qui réveillent le processus lors d'un changement d'un des signaux. Sa syntaxe est process(liste de signaux) • Le processus a des instructions d'arrêt wait dans sa description interne. Le wait est sensible soit à un signal soit à un temps physique, Les variables sont internes au processus et sont affectées immédiatement, contrairement aux signaux qui eux ne sont pas affectés directement mais par le biais de leur échéancier qui est mis à jour en fin de processus avec la nouvelle valeur et le temps d'affectation qui correspond à un delta-cycle 47/72 après le signal ayant réveillé le processus. 4. Le langage VHDL Exemples : 48/72 4. Le langage VHDL Règle d’or : pas de synthèse sans simulation testbench. 49/72 4. Le langage VHDL Testbench : 50/72 5. Outils de développement ALTERA Software & Development Tools Quartus II All Stratix, Cyclone & Hardcopy Devices APEX II, APEX 20K/E/C, Excalibur, & Mercury Devices FLEX 10K/A/E, ACEX 1K, FLEX 6000 Devices MAX II, MAX 7000S/AE/B, MAX 3000A Devices Quartus II Web Edition Free Version Not All Features & Devices Included • See www.altera.com for Feature Comparison 51/72 5. Outils de développement ALTERA // Begin: Write Control always @ (posedge wrbusy_int) begin // Begin: Write Control write0 <= 1'b1; always @ (posedge wrbusy_int) write1 <= 1'b0; begin writex <= 1'b0; Control // Begin: write0 Write <= 1'b1; end always @ (posedge wrbusy_int) write1 <= 1'b0; begin <= 1'b0; writex always @ (negedge wrbusy_int) write0 <= 1'b1; end begin write1 <= 1'b0; write0 <= writex 1'b0; <= 1'b0; always @ (negedge wrbusy_int) end beginend IP Cores write0 <= 1'b0; always @ (posedge write0_done) end always @ (negedge wrbusy_int) begin begin write1 <= write0 1'b1; <= 1'b0; always @ (posedge write0_done) beginend write1 <= 1'b1; always @ (posedge write0_done) begin write1 <= 1'b1; Synthesis 3-rd Party or Altera Placement & Routing Physical Synthesis Timing & Power Analysis Assembler Over 10 Million Lines of Code! Report 52/72 52 5. Outils de développement ALTERA SignalTap II Logic Analyzer Embedded Logic Analyzer Downloads into Device with Design Captures State of Internal Nodes Uses JTAG for Communication 53/72 53 5. Outils de développement ALTERA SignalTap II Logic Analyzer 54/72 54 5. Outils de développement ALTERA DE2 board Specifications FPGA • Cyclone II EP2C35F672C6 FPGA and EPCS16 serial configuration device I/O Devices • Built-in USB Blaster for FPGA configuration • 10/100 Ethernet, RS-232, Infrared port • Video Out (VGA 10-bit DAC) • Video In (NTSC/PAL/Multi-format) • USB 2.0 (type A and type B) • PS/2 mouse or keyboard port • Line-in, Line-out, microphone-in (24-bit audio CODEC) • Expansion headers (76 signal pins) Memory • 8-MB SDRAM, 512-KB SRAM, 4-MB Flash • SD memory card slot Switches, LEDs, Displays, and Clocks • 18 toggle switches • 4 debounced pushbutton switches • 18 red LEDs, 9 green LEDs • Eight 7-segment displays • 16 x 2 LCD display 55/72 • 27-MHz and 50-MHz oscillators, external SMA clock input 55 6. NIOS II et SoPC Builder What is Nios II? Altera’s Second Generation Soft-Core 32 Bit RISC Microprocessor Debug On-Chip ROM On-Chip RAM Avalon Switch Fabric Nios II CPU Cache Developed Internally By Altera Harvard Architecture Royalty-Free UART GPIO Timer SPI SDRAM Controller FPGA 56/72 6. NIOS II et SoPC Builder Problem: Reduce Cost, Complexity & Power Flash I/O CPU SDRAM I/O I/O I/O I/O I/O FPGA CPU DSP DSP Solution: Replace External Devices with Programmable Logic 57/72 6. NIOS II et SoPC Builder System On A Programmable Chip (SOPC) Flash FPGA SDRAM CPU is a Critical Function Solution: ReplaceControl External Devices Required forProgrammable System-Level Logic Integration with 58/72 6. NIOS II et SoPC Builder FPGA Hardware Design Flow with Quartus II and SOPC Builder • Create FPGA project in Quartus II • Build embedded sub-system in SOPC Builder • Integrate sub-system in Quartus II • Compile and generate a programming file .sof / .pof file 59/72 6. NIOS II et SoPC Builder Nios II System Architecture Instr. Nios II CPU On-Chip Debug Core Address Decoder Data Interrupt Controller Avalon Master/ Slave Port Interfaces UART 0 Timer 0 SPI 0 Wait State Generation GPIO 0 Off-Chip Software Trace Memory Data in Multiplexer Master Arbitration Dynamic Bus Sizing Avalon Switch Fabric DMA 0 Memory Interface User-Defined Interface UART n Timer n SPI n GPIO n DMA n Memory Interface 60/72 6. NIOS II et SoPC Builder Nios II Block Diagram Nios II Processor Core reset clock JTAG interface to Software Debugger HardwareAssisted Debug Module Program Controller & Address Generation General Purpose Registers r0 to r31 Instruction Master Port Instruction Cache Exception Controller Interrupt Controller irq[31..0] Custom I/O Signals Custom Instruction Logic Arithmetic Logic Unit Control Registers ctl0 to ctl4 Data Cache Data Master Port 61/72 6. NIOS II et SoPC Builder Nios II Processor Architecture Classic Pipelined RISC Machine − 32 General Purpose Registers − 3 Instruction Formats − 32-Bit Instructions − 32-Bit Data Path − Flat Register File − Separate Instruction and Data Cache (configurable sizes) − Branch Prediction − 32 Prioritized Interrupts − Custom Instructions − JTAG-Based Hardware Debug Unit 62/72 6. NIOS II et SoPC Builder Nios II Versions Nios II Processor Comes In Three ISA Compatible Versions − FAST: Optimized for Speed − STANDARD: Balanced for Speed and Size Software − ECONOMY: Optimized for Size Code is Binary Compatible • No Changes Required When CPU is Changed 63/72 6. NIOS II et SoPC Builder Binary Compatibility / Flexible Performance Nios II /f Fast Nios II /s Standard Nios II /e Economy Pipeline 6 Stage 5 Stage None H/W Multiplier & Barrel Shifter 1 Cycle 3 Cycle Emulated In Software Branch Prediction Dynamic Static None Instruction Cache Configurable Configurable None Data Cache Configurable None None 1400 - 1800 1200 – 1400 600 – 700 Logic Usage (Logic Elements) Custom Instructions Up to 256 64/72 6. NIOS II et SoPC Builder Nios II: Hard Numbers Nios II/f Stratix II Stratix Cyclone Nios II/s Nios II/e 200 DMIPS @ 175MHz 1180 LEs 1 of 8 DSP 4K Icache, 2K Dcache Stratix 2S10-C5 150 DMIPS @ 135MHz 1800 LEs 1 of 8 DSP 4K Icache, 2K Dcache Stratix 1S10-C5 100 DMIPS @ 125MHz 1800 LEs 90 DMIPS @ 175MHz 800 LEs 28 DMIPS @ 190MHz 400 LEs 4K Icache, No Dcache Stratix 2S10-C5 67 DMIPS @ 135MHz 1200 LEs No Icache, No Dcache Stratix 2S10-C5 22 DMIPS @ 150MHz 550 LEs 4K Icache, No Dcache Stratix 1S10-C5 62 DMIPS @ 125MHz 1200 LEs No Icache, No Dcache Stratix 1S10-C5 20 DMIPS @ 140MHz 550 LEs 4K Icache, 1K Dcache Cyclone 1C4-C6 2K Icache, No Dcache Cyclone 1C4-C6 No Icache, No Dcache Cyclone 1C4-C6 65/72 * FMax Numbers Based Reference Design Running From On-Chip Memory (Nios II/f ≅1.15 DMIPS / MHz) 6. NIOS II et SoPC Builder SOPC Builder System Contents Page Over 60 Cores Available Today Altera, Partner & User Cores − − − − − − Processors Memory Interfaces Peripherals Bridges Hardware Accelerators Import User Logic (ie. custom peripherals) Web-Based IP Deployment 66/72 6. NIOS II et SoPC Builder Notion de bloc IP : 67/72 6. NIOS II et SoPC Builder Notion de bloc IP : 68/72 6. NIOS II et SoPC Builder Nios II System Design Flow SOPC Builder GUI Processor Library Configure Processor Custom Instructions Peripheral Library Select & Configure Peripherals, IP IP Modules Hardware Development Software Development Nios II IDE Connect Blocks HDL Source Files Testbench Synthesis & Fitter User Design Other IP Blocks Quartus II Generate Hardware Configuration File C Header files Custom Library Peripheral Drivers Executable Code Compiler, Linker, Debugger Verification & Debug JTAG, Serial, or Ethernet Altera FPGA On-Chip Debug Software Trace Hard Breakpoints SignalTap® II User Code Libraries RTOS GNU Tools 69/72 6. NIOS II et SoPC Builder Nios II IDE (Integrated Development Environment)* Leading Edge Software Development Tool Target Connections − Hardware (JTAG) − Instruction Set Simulator − ModelSim®-Altera Software Advanced Hardware Debug Features − Software and Hardware Break Points, Data Triggers, Trace Flash Memory Programming Support 70/72 * Based on Eclipse Project 6. NIOS II et SoPC Builder Nios II IDE List of Open Projects File Viewer Window (for C code, C++, and assembly*) Terminal window 71/72 6. NIOS II et SoPC Builder Démonstration : Emulateur de DSP SNES des consoles Super Nintendo 72/72