Introduction aux Systèmes Numériques Hervé Le Provost DSM/Irfu - CEA Saclay [email protected] Version 1.1 – 20 Janvier 2012 FPGA - Cellule de Base FPGA : Field Programmable Gate Array clock i(n..1) Look Up Table (LUT) reset FLIP FLOP M U X o Cellule de Base (CB) Configuration statique (SRAM) 2 [email protected] FPGA - Lego Ligne de routage Verticale Cellule de Base Matrice de Routage i0 IBUF CB MR CB MR CB i1 IBUF Buffer d’entrée MR CB MR Buffer de Sortie OBUF o Ligne de routage Horizontale 3 [email protected] FPGA - Lego o <= i1 and i2; CB i1 IBUF MR CB MR CB i2 IBUF MR CB MR OBUF o 4 [email protected] FPGA-Logique Asynchrone i1 i1 i2 i2 FPGA o o Glitch SYSTEME FPGA o CONVERTISSEUR NUMERIQUE/ ANALOGIQUE MEMOIRE CPU Analyse au niveau système des conséquences d’un glitch : •Ordre de conversion N/A erroné •Ecriture mémoire erronée 5 [email protected] FPGA-Logique Asynchrone FPGA i1 i1 i2 i2 t1 t2 a b c t3 o t1 a t2 b c t3 Prise en compte des délais de routage • modification fonctionnelle • Reproductivité des délais de routage o Retard Largeur Absence de Glitch 6 [email protected] FPGA-Logique Synchrone SYSTEME E N T R E E S SOUS-SYSTÈME 2 i1 SOUS SYSTÈME i2 1 FLIP FLOP t1 FLIP FLOP t2 a b c t3 FLIP FLOP FPGA o SOUS SYSTÈME 3 S O R T I E S clock 7 [email protected] FPGA-Logique Synchrone T SOUS-SYSTÈME 2 clock i1 tCk i2 i1FF a i2FF t2 b c t3 FLIP oFF FLOP o clock t1 t1 Période T, Fréquence F=1/T temps de propagation tCk: horloge vers sortie (maximum) t1, t2, t3 : routage (maximum) Temps de setup tS (minimum) t2 b c oFF FLIP FLOP i1FF t1 FPGA i2FF a FLIP FLOP t3 tS Glitch ignoré t3 Fréquence maximale applicable FMAX = 1/(tCk+max(t1,t2)+t3+tS) Comportement déterministe du système pour F<=FMAX 8 [email protected] FPGA-Buffers Globaux Distribution de l’Horloge sur des lignes dédiées– Equilibrage de l’arbre d’horloge clock BUFG CB i0 IBUF MR CB MR CB i1 IBUF MR CB MR OBUF o 9 [email protected] FPGA – Fréquence d’opérations tCko=1.016 ns tSetup=0.742ns t1=0.379 ns t2= 0.378 ns t3=2.491 ns t4=0.643 ns i1 FLIP FLOP i2 FLIP FLOP clock t1 t2 tCko Pour l’exemple : •les 3 FLIP-FLOP sont associés à la broche (registre IOB) •broche ‘O’ physiquement opposée aux broches ‘i1’ et ‘i2’ t4 a b c t3 FLIP FLOP o tSetup FPGA Fréquence Maximale ? 10 [email protected] FPGA – Fréquence d’opérations FMAX=1/(tCko+t1+t4+t3+tSetup) = 189.7MHz calcul de FMAX exact ? 11 [email protected] FPGA – Fréquence d’opérations tSkew = -0.127 ns i1 FLIP FLOP i2 FLIP FLOP clock t1 t2 t4 a b c t3 FLIP FLOP o tSetup tCko tSkew FPGA FMAX=1/(tCko+t1+t4+t3+tSetup+tSkew)=185.2 MHz 12 [email protected] FPGA – Fréquence d’opérations Violation des contraintes temporelles (F=200 MHz) Comment augmenter la fréquence ? Délais de routage vs délais des opérations logiques 13 [email protected] FPGA – Fréquence d’opérations i1 i2 FLIP FLOP FLIP FLOP clock t1 t2 FLIP FLOP FLIP FLOP t4 t5 a t6 b c t3 FLIP FLOP o tSetup tCko tSkew FPGA Diminution des délais de routage 14 [email protected] FPGA – Fréquence d’opérations FMAX = 218 MHz Réduction du délai de routage du fil le plus long 15 [email protected] FPGA – Fréquence d’opérations FLIP FLOP Placement dans un registre d’entrée/Sortie (RIOB) SYSTEME clock FLIP FLOP FLIP FLOP FLIP FLOP FMAX4 FMAX2 FLIP FLOP FPGA SOUS SYSTÈME 3 FLIP FLOP FLIP FLOP FMAX3 SOUS-SYSTÈME 2 TRAITEMENT FMAX1 SOUS SYSTÈME 1 FMAX5 Fréquence Maximale du système = min (FMAX1,FMAX2, FMAX3, FMAX4, FMAX5). RIOB : FMAX4 et FMAX5 indépendants des délais de routage interne non reproductibles du FPGA 16 [email protected] FPGA – Les blocs de conception IP IP Intellectual Property FPGA CONTROLEUR MEMOIRE DYNAMIQUE PROCESSEUR LOGIQUE APPLICATIVE CONTROLEUR ETHERNET MÉMOIRE /FIFO GENERATEUR D’HORLOGE DSP MAC BLOC SILICIUM /SYNTHETISE BLOC SYNTHETISE BLOC SILICIUM LIEN RAPIDE 17 [email protected] FPGA – Exemple Famille XILINX Ressources /Blocs en dur LUT XCE6VHX565T (VIRTEX-6) XC5VFX200T (VIRTEX-5) XC3SD3400A (SPARTAN3A) 354240 LUT-6 122880 LUT-6 47744 LUT-4 708480 122880 47744 0 2 PPC440@400MHz 0 156 x 36Kbits 456 x 36Kbits 126 x 18Kbits 24 9,95 Gb/s -11,18 Gb/s 24 150 Mb/s -6,5 Gb/s 0 CONTROLEUR ETHERNET (MAC) 4 8 0 TAILLE MÉMOIRE DE CONFIGURATION 153,2 Mbits 70,9 Mbits 11,7 Mbits FLIP-FLOP PROCESSEUR RAM/FIFO TRANSCEIVER 18 [email protected] FPGA- versus CPLD MACROCELLULE (MC) I/O PAD MC ET CABLES MATRICE DE ROUTAGE I/O PAD MC Clock N ENTREES K SORTIES MC t Propagation Delay FLIP FLOP I/O PAD FLIP FLOP I/O PAD I/O PAD t Setup t ClockToOutput Valeurs Typiques : FMAX=250 MHz, Nombre de MC=256 19 [email protected] FPGA- un design, les entrées ESPACE Gamma Ray Burst Evénements Photon Temps Energie Numéro Pixel 10-bit 12-bit 10-bit (0 à 799) 80 Caméra 6400 Pixels SATELLITE 8 Numéro Pixel, Energie, temps Hit UTS Caméra sectorisée 8 liens série 80 Clock 4 MHz Data Evénement UTS Analyse temps réel Complexe : processeur Saturation Caméra 100 000 coups/s Alerte GRB détecté vers le sol [email protected] 20 FPGA – Un design, les composants PROCESSEUR BUS PCI BUS CŒUR 33MHz/32-bit MEMOIRE @100 MHz BUS MÉMOIRE @100 MHz MÉMOIRE FPGA Type XILINX VIRTEX-5 MÉMOIRE FLASH 4 MB SDRAM 128 MB Design ? 21 [email protected] FPGA- Un design Interruption 8 liens Caméras FPGA Processeur Bus Mémoire Bus PCI Mémoire FLASH Mémoire SDRAM Calcul des Bandes Passantes 22 [email protected] FPGA- Un design Caméra (Max) Caméra Bus (Saturation) PCI Bus Mémoire Largeur bus (bit) 1 32 32 32 Fréquence (MHz) 4 0,1 33 100 Nombre de bus 8 1 1 1 Bande Passante (M octet/s) 4 0,4 132 400 Bande passante maximale, efficacité des protocoles non prise en compte 23 [email protected] FPGA- Un design CPU Interrupt 0-1 FPGA Lien Caméra 0 1 Contrôleur 32 De Lien 0 inclus FIFO Lien Caméra 7 Arbitre Liens MUX. inclus FIFO Buffer De Données brutes Contrôleur De Lien 7 Design : VHDL, Verilog, Schématique Traitement Des données Et Routage / Accès Maître inclus RAM RAM De Pointeurs Controles & Status Accès Esclave Bus Local PCI Bus Bridge PCI/ Bus Local IP Gratuite Ou commerciale 24 [email protected] FPGA-un design interruption toutes les 10 ms Programme d’interruption : lecture du registre FPGA contenant le nombre de photons écrits Bus PCI IT Photons Bus Mémoire FPGA Processeur Mémoire Photon 1 Photon 2 ptr ptr Ptr+1 Buffer photons circulaire initialisation ptr = malloc(PhBuffSize) 1 cycle PCI 1 cycle Mémoire 25 [email protected]