Chapitre II-2 : Conception SoPC (Altera) Plan 1. 2. Processeurs embarqués : conception conjointe System on Programmable Chip = 1. 2. 3. Systèmes à base de Nios-II Le bus système Avalon Les périphériques on-chip 1. Processeurs embarqués, vers le codesign Processeurs embarqués Bloc IP : Soft core Propriétaire : format netlist, FPGA dependant Libre Microblaze (Xilinx), Nios (Altera) : format VHDL, FPGA independant Leon, OpenRISC, F-CPU Architectures 32 bits, Harvard, RISC Circuit implanté sur support : hardcore classique Architectures de traitement utilisées dans l’embarqué FPGAs avec processeurs Carte Altera NiosII Kit Carte Nios-II Kit Première caractéristiques du circuit Stratix 1S10 10 570 Logic Elements (LE) 920 448 bits de mémoire on-chip Pré-programmée avec un design Nios-II présent dans la flash, Lorsque la configuration est terminée, le niosII commence l’exécution du boot code présent en flash Fonctionnalité mixte Une application peut être composée d’une partie matérielle accélératrice sur le FPGA Couplée à une partie logicielle en softcore De plusieurs technos différentes On a alors besoin d’une conception conjointe logicielle/matérielle (ou codesign) Rupture dans la méthodologie classique ! Digital Set-Top Box System Diagram Broadcast Signal Satellite, Terrestrial, Cable Phone Non Altera Altera Devices Altera Altera IP Solutions Other Services • Network Control Digital Digital Digital Tuner Tuner Tuner ADC ADC ADC Interface Bridge External Interfaces Demodulation Demodulation Demodulation &FEC FEC &&FEC DRAM CPU & MPEG Decoder Personal Video Recorder • Conditional Access Manager • • • Residential LAN • A/V Decode Video Encode M82092IDE IDE Controller ATA1 M82371IDE IDE Controller ATA4 • LAN Link Demultiplex & Descramble IDE Interface • • ROM RAM • Post A/V Processing Timing Control DAC Audio DAC Video FIR Compiler Color Space Converter Plasma Display Panel Module System Diagram Non Altera Altera Devices Altera Altera IP Solutions • Timing Control • Digital Image Source Decode Display Processing Plasma Display Driver Driver IC(N) COF Strips • • • Color Space Converter SDRAM Controller • SDRAM • MPEG-2 Video Decoder (CS6651) Color Laser Printer System Diagram Non Altera Altera Devices Bus Altera IP Solutions Altera Other Services • Flash Card Interface DDR SDRAM DDR SDRAM Controller I/O & System Control LAN Link Peripheral Interface CPU LAN • • • • Color Space Converter DDR SDRAM Controller PCI Compiler • Peripheral • • 10/100 Ethernet MAC USB 1.1 and 2.0 Device Controller PCI Bus • • • LCD Control LCD Panel Image CODEC Image Processing & Enhancement Print Engine Interface Print Engine FIR Compiler Color Space Converter DSL Router System Diagram Non Altera Altera Devices Bus Altera IP Solutions Altera Memory Other Services • Memory Controller Security Processor • • • CPU PCI Bus PCI-Utopia Bridge • SDRAM Controller DES Encryption Rijndael Encryption/ Description AES Cyptoprocessor • PCI-MII Bridge Traffic Management (VoIP & Video Processing) DSL Modem Chips LAN • • Ethernet Ethernet Ethernet MAC MAC MAC Ethernet Ethernet Ethernet Transceiver Transceiver Transceiver • • DSL Line Utopia Master Transmitter/Receiver PCI Compiler, 32-bit Target 10/100 Ethernet MAC Factory Automation Image Sensor System Diagram Non Altera Altera Devices Functional Block Altera IP Solutions Altera Other Services Video Input Video Input Buffer Memory Video Input Buffer Memory • • • Buffer Memory • • FIR Filter • Image-to-Data Conversion SRAM 32-bit Processor Flash Recognition Module Configuration Manager UART UART Profibus Controller Host System Nios Peripheral Library UART FIR Compiler Auto Telematics/Entertainment System Diagram Non Altera Altera Other Services Altera Devices Bus Functional Block Sub System Altera IP Solutions • Telematics/Entertainment Controller Memory GPS Navigation System Display OSD RISC CPU & Subsystems Image Processing • • • • Nios Peripheral Library CAN Bus MCAN2D1 CAN 2.0 Network Controller • • • Car Multimedia Bus Memory Card Interface DVD Interface Camera Interface Memory Card DVD Player Digital Camera Phone/PDA Interface Mobile Phone / PDA Regional Defined Road Tolling Smart card Interface • • 10/100 Ethernet MAC M82092IDE IDE Controller ATA1 M82371IDE IDE Controller ATA4 USB 2.0 Device Controller 2. Les composants d’un System on Programmable Chip Standard Reference Design Block Diagram 1MB SRAM 8MB FLASH 16MB Compact FLASH Nios II Processor Tri-State Bridge Address (32) Read Write Data In (32) Data Out (32) IRQ IRQ #(6) On-Chip Off-Chip Avalon Switch Fabric 32-Bit Nios II Processor Tri-State Bridge Compact Flash PIOs 32MB SDRAM SDRAM Controller UART ROM (with Monitor) General Purpose Timer Periodic Timer JTAG_UART Reconfig PIO LED PIO LCD PIO 7-Segment LED PIO 8 LEDs Expansion Header J12 2 Digit Display Button PIO 4 Momentary buttons Level Shifter Ethernet MAC/PHY a. Nios-II based system Principe du SOPC 1 Available Programmable Logic 3 2 Memory PLLs Logic Nios II Processor Block Diagram Nios II Processor Core Tightly-Coupled Instruction Mem reset clock JTAG interface to Software Debugger HardwareAssisted Debug Module Program Controller & Address Generation Exception Controller Interrupt Controller irq[31..0] Custom I/O Signals Custom Instruction Logic General Purpose Registers r0 to r31 Instruction Cache Tightly-Coupled Instruction Mem Instruction Bus Control Registers ctl0 to ctl4 Arithmetic Logic Unit Data Bus Data Cache Tightly-Coupled Data Mem Tightly-Coupled Data Mem Caractéristiques du NiosII Architecture de Harvard Data Master port Instruction Master port Banc de 32 registres 32 bits, Chacune des unités précédente définit l’architecture NiosII, mais rien n’oblige que ces unités soient réalisées en hard, Exemple : l’unité flottante est émulée en Sw Lorsqu’une instruction n’est pas implémentée en Hw, le processeur génère une exception, et l’exception handler appelle la routine d’émulation Sw (instruction, div…). Diagramme du processeur Nios Registres généraux du Nios-II Registres de contrôle Contrôleur d’interruptions Le processeur Nios-II supporte 32 niveaux d’interruption (IRQ) La priorité des interruptions est fixée par logiciel Les interruptions sont autorisées individuellement par le registre ienable et globalement par le registre d’état Une interruption est générée si et seulement si les 3 conditions suivantes sont réunies : L’entrée IRQi est active Le bit i du registre ienable est à 1 Le champs PIE du registre d’état est à 1 Nios II Versions Nios II Processor Comes In Three ISA Compatible Versions FAST: Optimized for Speed STANDARD: Balanced for Speed and Size ECONOMY: Optimized for Size Software Code is Binary Compatible No Changes Required When CPU is Changed 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 TCM (Instr / Data) Up to: 4 / 4 Up to: 4 / 0 0/0 Logic Usage (Logic Elements) 1400 - 1800 1200 – 1400 600 – 700 Custom Instructions Up to 256 Nios II: Faster & Smaller 250 Fast 4X Faster Performance (DMIPS) 200 150 Standard 10% Smaller Over 2X Faster 100 50 Economy 50% Smaller 0 0 Results Based on Stratix II FPGA 500 1000 CPU Core Size (Logic Elements) 1500 2000 Variation with FPGA Device 250 Fast DMIPS 200 150 Standard 100 Economy 50 0 0 500 1000 1500 2000 Logic Elements Stratix II Stratix Cyclone HC-Stratix Cyclone II Nios II: Hard Numbers Nios II/f Stratix II Stratix Cyclone II Cyclone Nios II/s Nios II/e 225 DMIPS @205MHz 133 DMIPS @180MHz 31 DMIPS @209MHz 1319 ALUTs 1029 ALUTs 483 ALUTs Stratix II 2S60-C3 Stratix II 2S60-C3 Stratix II 2S60-C3 157 DMIPS @143MHz 99 DMIPS @134MHz 23 DMIPS @160MHz 1808 LEs 1170 LEs 529 LEs Stratix 1S80-C5 Stratix 1S80-C5 Stratix 1S80-C5 105 DMIPS @126MHz 57 DMIPS @110MHz 22 DMIPS @159MHz 1595 LEs 1033 LEs 542 LEs EP2C20-C6 EP2C20-C6 EP2C20-C6 101 DMIPS @128MHz 57 DMIPS @124MHz 16 DMIPS @126MHz 1679 LEs 1145 LEs 522 LEs EP1C20-C6 EP1C20-C6 EP1C20-C6 * FMax Numbers Based on Reference Design Running From On-Chip Memory (Nios II/f ≅1.15 DMIPS / MHz) Accès mémoire Protocole de rangement mémoire Little Endian Le mapping des adresses des mémoires et des périphériques est ‘design-dependent’. Seules trois adresses font partie du processeur : Adresse de Reset Adresse d’exception Adresse du Break Handler Tightly Coupled Masters Connected to tightly-coupled slaves through “Tightly Coupled Memory Interfaces” “Slaves” are on-chip true dual port memories They allow “Normal” data master to connect to second port, allowing reading and writing of data TightlyCoupled Instruction and Data Masters Regular Instruction and Data Masters Nios II CPU Instruction Master TCMs Data Master Tightly Coupled Data Master Tightly Coupled Instruction Master Slave 32 Slave Tightly Coupled Memory Interface Avalon Switch Fabric Avalon Slave Avalon Slave Mémoire off-chip SDRAM Correspond au standard pc100 Synchrone et dynamique Il faut ajouter un contrôleur sur le SoC qui traduit le protocole Avalon dans l’interface de la mémoire choisie, + un PLL : l’horloge de la RAM est de même période que le contrôleur, mais la distance implique un décalage qu’il faut compenser : Phase Locked Loop Idéalement il serait possible d’atteindre un mot par cycle, mais à cause des temps de pause gérés par le contrôleur pour le rafraichissement il est impossible d’atteindre cette performance. Mémoire off-chip utilisé en TP Mémoire SRAM (statique) Utilisé comme mémoire principale Mémoire flash Contient la configuration utilisateur du FPGA Plus la ‘safe configuration’ du FPGA Pour la stratix-I, la flash de 8Mo est découpée en 128 sections réinscriptibles individuellement de 64Ko Nios II System Design Flow SOPC Builder GUI Processor Library Configure Processor Custom Instructions Peripheral Library Select & Configure Peripherals, IP IP Modules Software Development Hardware Development Connect Blocks HDL Source Files Testbench Synthesis & Fitter User Design Other IP Blocks Quartus II Generate Hardware Configuration File Nios II EDS C Header files Custom Library Peripheral Drivers Executable Code Verification & Debug JTAG, Serial, or Ethernet Altera FPGA On-Chip Debug Software Trace Hard Breakpoints SignalTap® II Compiler, Linker, Debugger User Code Libraries RTOS GNU Tools ® Nios II C2H Compiler Plan 1. 2. Processeurs embarqués : conception conjointe System on Programmable Chip = 1. 2. 3. Systèmes à base de Nios-II Le bus système Avalon Les périphériques on-chip b. Bus Avalon Plan de la section Avalon i. ii. iii. iv. v. vi. Introduction à l’interconnect système Les signaux du système Avalon Comportement en mode Escalve Comportement en mode Maître Mode Pipeline Le mode tristate Qu’est ce qu’Avalon ? Avalon (en gaulois « la pommeraie ») est, dans la légende arthurienne, une île mythologique. Avalon est une spécification d’interfaces pour des composants sur puce. Les composants sont mappés dans l’espace mémoire, ce qui est référencé comme Avalon-MM pour Memory Mapped. La spécification définit les transferts entre un (ou plusieurs) périphériques et une structure d’interconnect. Avalon est un système de communication maître-esclave. Master/Slave Un composant Maître sur le bus initie les transaction soit en envoyant directement des données, soit en emmettant des requêtes aux composants esclaves. Un composant Esclave ne prend jamais l’initiative d’utiliser le bus (en lecture ou en écriture). Il ne fait que répondre aux requêtes des maîtres. Les autres protocoles d’interconnect Altera Avalon Xilinx CoreConnect ARM Amba Wishbone Spécification Avalon La spécification définit Un ensemble de signaux Le comportement des périphériques Les types de transferts supportés par ces signaux Chaque périphérique est connecté par un(ou +) port (M/S) Tous les ports sont reliés au ‘system interconnect fabric’ C’est un standard ouvert Exemple de système basé Avalon On-Chip Exemple (suite) ii. Les signaux Caractéristiques générales Lignes séparées pour Les adresses, Les données (entrantes et sortantes si pas tristate), Le contrôle. Lignes de données de largeur jusqu’à 1024, Opérations synchrones, Performances jusqu’à un transfert par cycle, Actifs à l’état haut sauf si suivis de _n (read_n). Liste de signaux pour un port Esclave Signal type (22) width dir Description Clk 1 In synchronisation Chipselect 1 In Address 1-32 In When desarted, Slave ignores all other signals Word offset in the slave adress space Read 1 In Read request (not required for WOM) Readdata 1-1024 Out Write 1 In Writedata 1-1024 In Byteenable 2,4-128 In Write request (not required for ROM) Enable 1 byte lane on ports > 8bits Writebyteenable 2,4,-128 In = BE and write begintransfer =1 at the first cycle of every transfer 1 In Liste de signaux pour un port Esclave Wait-states signals waitrequest 1 Out Slave can’t respond => stall Pipeline signals readdatavalid 1 Out Asserted at end of wait Burst signals burstcount 2-32 In Number of transfer in a burst beginbursttranf 1 In Indicate start of a burst Flow-control signals Readyfordata 1 Out Ready for a write transfer dataavailable 1 Out Ready for a read transfer endofpacket 1 Out Periperal-specific Liste de signaux pour un port Esclave Tristate signals data 1-1024 InOut Bidirectional data outputenable 1 In When =0 slave must not drive data Other signals irq 1 Out reset 1 In resetrequest 1 Out If slave need to be serviced by master Peripheral resets the entire avalon system Liste des signaux pour un port Maître (17) Les même signaux Souvent de direction opposée En plus (2) : Flush; Data; Irq; Irqnumber; 6; 1; 8, 16 - 1024, 1,32; En moins (7) : Outputenable, Chipselect, Writebyteenable, Begintranserf, Beginbursttransfer, Readyfordata, Dataavailable, Out; Pipeline signal InOut; In; Each line corresponds directly to the irq signal on the slave port In; Interrupt priority of each slave port Interfaces configurables Par exemple une ROM ne nécessite que les signaux : Address, read-data, Chipselect Un registre RO : Writedata, Write, Chipselect, clk iii. Le comportement en mode esclave Plusieurs modes Les interfaces Avalon supportent les propriétés suivantes : Wait-states pour les esclaves (fixe ou variable), Pipeline, Burst, Tristate, Flow-control Le mode fondamental n’utilise aucune des propriétés ci-dessus. Protocole synchrone Un cycle est défini d’un front montant à l’autre de l’horloge système. Le protocole est synchrone sur cette horloge : Tous les transferts commencent au front montant, Tous les signaux sont donc générés par / à Clk, Les signaux doivent être stables pendant l’état haut (holdtime), Il est possible de connecter des périphériques asynchrones (comme des mémoires off-chip : clk différent), Dans ce cas, le concepteur doit faire en sorte que les signaux sont stables pendant l’état haut de clk Adressage Esclave L’adresse en entrée des ports esclaves est une adresse de mots, désignant donc un offset dans l’espace d’adressage du port esclave. Chaque adresse accède donc à un mot complet par rapport à la largeur des signaux readdata ou writedata. Maître Les adresses envoyés par le maître sont des adresses d’octets, sans prise en compte de la largeur des bus de données, Par exemple, un port maître de données de 32 bits devra aligner ses adresses sur des frontières de 4 octes : 0x00, 0x04, 0x08, 0x0C… Pour accéder à un octet spécifique dans un mot, le maître dit utiliser le signal byteenable. Transferts en mode Esclave Le port est soit désigné par le chipselect Lorsque le signal est désactivé, l’esclave ignore les autres signaux Lorsqu’il est actif, les signaux read/write indique le type d’accès Ou le port est désigné uniquement par les signaux Read/write L’esclave est en mode Idle lorsque les 2 sont à Zéro Temps d’accès Périphériques asynchrones (mémoires off-chip) : Accès dans le cycle courant Périphériques synchrones (mémoire on-chip) : 1 cycle d’attente (wait-states) Plusieurs cycles d’attentes fixes Cycles d’attentes variables => waitrequest Lecture en mode Esclave en un cycle Temps de traitement de la requête par le maître Temps de traitement de la requête par l’esclave Lecture en mode Esclave avec 1 cycle d’attente Lecture en mode Esclave avec plusieurs cycles d’attente Lecture en mode Esclave avec cycles d’attente variables Le système avalon n’a pas de timeout!! Écriture en mode esclave en 1 cycle iv. Transferts en mode Maître Transfert en mode Maître Comme l’adresse d’octet est comprise comme une adresse de mot par l’esclave, le maître envoie le signal Byteenable, C’est un vecteur dont la taille est égale au nombre d’octets dans la largeur du bus de données. Sans sa présence, l’esclave renverrait tout le mot Les combinaisons valides En 32 bits sont : 0001, 0010, 0100, 1000, 0011, 1100, 1111 Lecture en mode Maître en 1 cycle Lecture en mode Maître avec cycles d’attente Ecriture en mode Maître avec cycles d’attente v. Mode tristate Mode pipeline Utilisé pour communiquer avec des périphériques externes : mémoires, processeurs… Ce mode permet de s’adapter à de nombreux protocoles d’IPs externes Par exemple pour communiquer avec des devices qui partagent les bus d’adresse et de données sur le circuit imprimé (PCB). Le bus de données devient donc bidirectionnel Les esclaves sont contrôlés par le signal outputenable Ce signal est émis par l’interconnect en fonction de l’adresse envoyé par le mâitre Adressage Dans le mode tristate, l’adresse sur le port esclave devient une adresse d’octet contrairement à l’adresse de mots en mode fondamental. Si le bus est plus large qu’un octet, il faut alors corriger le mapping des adresses venant du maître vers le bus d’adresse du port esclave !! A0 du port esclave Adresse provenant de l’interconnect fabric Différences avec le mode non-tristate Master No-tristate Byte @ Master Tristate Byte @ = x4 @ Wdata Rdata write read byteenable @ data write read 32 32 4 32 CS @ Wdata Rdata write read byteenable Avalon Interconnect CS + OE Fabric @ Wdata Wdata Rdata write read waitrequest Slave No-tristate Word @ waitrequest Slave No-tristate Byte @ Ecriture/Lecture en mode Maître Read data into master Write data into slave vi. Mode Pipeline Mode pipeline Il n’y a que des transferts pipeline sur les transferts lecture pas en écriture. La durée d’un transfert pipeliné se divise en 2 phases : Un port maître initie un transfert (remplit le pipeline) en positionnant l’adresse durant la phase d’adresse Un port esclave continue le transfert en délivrant la donnée durant la phase de données La phase d’adresse d’un nouveau transfert peut commencé avant la fin de la phase de données précédente La latence du pipeline est égale à la différence entre la fin de la phase d’adresse et la fin de la phase de données. Transfert lecture pipeliné en mode esclave Transfert lecture pipeliné en mode maître Lecture pipelinée esclave avec latence variable Plan 1. 2. Processeurs embarqués : conception conjointe System on Programmable Chip = 1. 2. 3. Systèmes à base de Nios-II Le bus système Avalon Les périphériques on-chip c. Les périphériques on-chip i. Hiérarchie Mémoire Blocs RAM Caches TCM On-Chip RAM SDRAM Flash Pios Recensement Leds Afficheurs 7 segments Boutons Autres Timers PLL Standard Reference Design Block Diagram 1MB SRAM 8MB FLASH 16MB Compact FLASH Nios II Processor Tri-State Bridge Address (32) Read Write Data In (32) Data Out (32) IRQ IRQ #(6) On-Chip Off-Chip Avalon Switch Fabric 32-Bit Nios II Processor Tri-State Bridge Compact Flash PIOs 32MB SDRAM SDRAM Controller UART ROM (with Monitor) General Purpose Timer Periodic Timer JTAG_UART Reconfig PIO LED PIO LCD PIO 7-Segment LED PIO 8 LEDs Expansion Header J12 2 Digit Display Button PIO 4 Momentary buttons Level Shifter Ethernet MAC/PHY En TP Chaque composant est un cas d’étude à lui seul. Pour comprendre en détail Le fonctionnement, Les paramètres de configuration de chacun Nous utiliserons la documentation sur http://www.altera.com/literature/lit-nio2.jsp