Introduction aux FPGA Introduction aux FPGA Mickaël Dardaillon M2RTS 16/11/2011 Introduction aux FPGA Introduction Hiérarchie Circuits Logiques Processeurs Circuits programmables ASIC CPU micro-contrôleurs DSP CPLD FPGA Définitions I CPU : Computer Processing Unit I DSP : Digital Signal Processor I CPLD : Complex Programmable Logic Device I FPGA : Field Programmable Gate Array I ASIC : Application Specific Integrated Circuit Introduction aux FPGA Introduction ASIC FPGA I Développement long I Développement rapide I Coût de fabrication (en augmentation) I Coût à l’unité (en diminution) I Full custom : Performances maximales I Contraint par la technologie du FPGA I Fabrication grande série I Prototypage rapide Introduction aux FPGA Introduction Sommaire Introduction Rappels sur les circuits intégrés Structure matérielle Structure générale Cellules élémentaires Composants matériels Composants logiciels Les constructeurs Programmation Flot de conception Synthèse Placement / Routage Tests Recherche sur les FPGA à Lyon Sources Introduction aux FPGA Rappels sur les circuits intégrés Sommaire Introduction Rappels sur les circuits intégrés Structure matérielle Structure générale Cellules élémentaires Composants matériels Composants logiciels Les constructeurs Programmation Flot de conception Synthèse Placement / Routage Tests Recherche sur les FPGA à Lyon Sources Introduction aux FPGA Rappels sur les circuits intégrés Le transistor MOS MOS : Metal Oxide Semiconductor I Composant électronique de base I Porte logique ON/OFF Oxyde Drain Canal Semi−conducteur Grille Métal Source Introduction aux FPGA Rappels sur les circuits intégrés Technologie CMOS CMOS : Complementary MOS I Niveaux logiques I I I I nMOS : conducteur si la grille=1 pMOS : conducteur si la grille=0 grille I I I P ∝ CV 2 f C : Capacité d’un MOS V : Tension sur la grille f : Fréquence de fonctionnement grille g=1 g=0 drain drain nMOS pMOS Exemples 1 Puissance dissipée I source source Deux types de MOS I I 0 = 0V 1 = 3V Types de MOS x 1 y (xy) x x x y 0 Inverseur 0 porte NAND Introduction aux FPGA Rappels sur les circuits intégrés Portes élémentaires Amplificateur : x F F =x Inverseur : x 0 1 F 0 1 x 0 0 1 1 y 0 1 0 1 x F =x y F =x y x 0 1 F 1 0 x 0 0 1 1 y 0 1 0 1 NON ET : ET : x F F F 0 0 0 1 x y F =x y F F 1 1 1 0 Introduction aux FPGA Rappels sur les circuits intégrés Conception de circuit combinatoire 1. Description du problème : Addition entre deux bits a et b et une retenue c 3. Équations logiques : S = abc + abc + abc + abc cout = abc + abc + abc + abc 2. Table de vérité : 4. Équations simplifiées : S = (a ⊕ b) ⊕ c cout = ab + (a ⊕ b)c entrées a b c 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 sorties S cout 0 0 1 0 1 0 0 1 1 0 0 1 0 1 1 1 5. Portes logiques : A B C S Cout Introduction aux FPGA Rappels sur les circuits intégrés Logique séquentielle Bascule RS R S 0 1 1 0 Q Q S R 1 1 0 0 Q 0 interdit 1 Qn−1 Q 1 interdit 0 Qn−1 Bascule RS Bascule D : mémorise D lorsque l’horloge passe à ’1’ Horloge Donnée 11 00 11 00 00 11 1 0 11 00 00 11 Valeur Valeur Introduction aux FPGA Structure matérielle Sommaire Introduction Rappels sur les circuits intégrés Structure matérielle Structure générale Cellules élémentaires Composants matériels Composants logiciels Les constructeurs Programmation Flot de conception Synthèse Placement / Routage Tests Recherche sur les FPGA à Lyon Sources Introduction aux FPGA Structure matérielle Structure générale Ressources globales bloc de configuration mémoire RAM (sur certains circuits) entrée/sortie programmable logique programmable routage programmable générateur d’horloge programmable + mémoire de configuration Introduction aux FPGA Structure matérielle Structure générale Routage des signaux connection longue distance connection directe canaux généraux bloc logique matrice de routage point de routage Introduction aux FPGA Structure matérielle Structure générale Génération d’horloge Les horloges sont distribuées dans l’ensemble du FPGA par des circuits de routage spécifique, aucun travail de la part du concepteur ! plots d’horloge CLK CLKFB DCM signal interne CLK0 CLK90 CLK180 CLK270 CLKx2 CLK180x2 CLKDIV CTRL STATUS BUF vers distribution par zone DCM Introduction aux FPGA Structure matérielle Structure générale Entrées / Sorties Il existe plusieurs niveaux de tensions d’entrée / sortie, qui sont à prendre en compte pour : I La conception de la carte (compatibilité entre composants) I Les contraintes de routage (technologie à utiliser sur I/O) V in 5V porte 5.0 V 5.0 V 5.0 V 5.0 V 1 4V 1 1 1 5.0 V 5.0 V 4.5 V 1 3.9 V 3.5 V 3V 2V V out 1 x 2.0 V 2.0 V 0V 0.0 V 2.4 V 2.0 V x 1.0 V 0.8 V 0 3.3 V 0 TTL 0.4 V 0.0 V 1 1 x 1V 3.3 V 2.7 V 0 0 0.0 V 0.5 V 0.0 V CMOS 0.8 V 0.0 V 0 x 0.8 V 0 0.4 V 0.0 V TTL/CMOS 0.0 V 0 0 0.4 V 0.0 V CMOS 3V Introduction aux FPGA Structure matérielle Cellules élémentaires Composants logiques Chaque constructeur définit sa propre cellule de base, qui varie selon les familles de FPGA. Les cellules élémentaires : I Portes logiques configurables : fonctions de base (AND, OR...) I Registres : mémoire et synchronisme Les composants matériels (hardcore) : I Logique complexe : additionneurs, multiplieurs... I Mémoire RAM I Processeurs (ARM, PowerPC...) Les composants logiciels (softcore) : I UART, USB, contrôleur d’écran... I Processeurs (ARM, RISC...) I FFT, JPEG, SHA-1... I ... Introduction aux FPGA Structure matérielle Cellules élémentaires Xilinx Virtex 4 : Slice 0*1/1 ? !"#$%&'( )*+ ,-. 0*1/2 !"#$%&'( )*+ ,/. 34#'567'#8( 9$:(8944;( <=>#8 F0*1 ? 10*1 !()*+,-+.+/(012(3('4+4(5)$50+"3+5+6(2(78+9($:'8;<+!=>.+/2(?' !"#$%&'#()*+%,-!'./$01%/23"#+03+*20%.03/40%3/(%.0%35($#10201%36/$$#37 B @C @)A DE @C @)A DE B Introduction aux FPGA Structure matérielle Cellules élémentaires In addition to the adaptive LUT-based resources, each ALM contains four programmable registers, two dedicated full adders, a carry chain, a shared arithmetic chain, and a register chain. Through these dedicated resources, an ALM can efficiently implement various arithmetic functions and shift registers. Each ALM drives all types of interconnects: local, row, column, carry chain, shared arithmetic chain, register chain, and direct link. Figure 1–5 shows a high-level block diagram of the Stratix V ALM. Altera Stratix 5 : ALM (Adaptative Logic Module) Figure 1–5. High-Level Block Diagram of the Stratix V ALM shared_arith_in carry_in Combinational/Memory ALUT0 reg_chain_in labclk To general or local routing dataf0 datae0 6-Input LUT D adder0 Q reg0 dataa To general or local routing datab To general or local routing D Q reg1 To general or local routing datac D adder1 datad datae1 To general or local routing Q reg2 6-Input LUT To general or local routing dataf1 D Combinational/Memory ALUT1 Q reg3 shared_arith_out To general or local routing To general or local routing carry_out reg_chain_out Introduction aux FPGA Structure matérielle Cellules élémentaires Actel Pro Asic 3 : VersaTile ProASIC3 Flash Family FPGAs Refer to Figure 1-3 for VersaTile configurations. LUT-3 Equivalent X1 X2 X3 LUT-3 Y D-Flip-Flop with Clear or Set Data CLK CLR Enable D-Flip-Flop with Clear or Set Data Y CLK D-FF Y D-FF Enable CLR Figure 1-3 • VersaTile Configurations User Nonvolatile FlashROM ProASIC3 devices have 1 kbit of on-chip, user-accessible, nonvolatile FlashROM. The FlashROM can be used in diverse system applications: • Internet protocol addressing (wireless or fixed) • System calibration settings • Device serialization and/or inventory control • Subscription-based business models (for example, set-top boxes) • Secure key storage for secure communications algorithms Introduction aux FPGA Structure matérielle Composants matériels Composants logiques Chaque constructeur définit sa propre cellule de base, qui varie selon les familles de FPGA. Les cellules élémentaires : I Portes logiques configurables : fonctions de base (AND, OR...) I Registres : mémoire et synchronisme Les composants matériels (hardcore) : I Logique complexe : additionneurs, multiplieurs... I Mémoire RAM I Processeurs (ARM, PowerPC...) Les composants logiciels (softcore) : I UART, USB, contrôleur d’écran... I Processeurs (ARM, RISC...) I FFT, JPEG, SHA-1... I ... FPGAs are efficient for digital signal processing (DSP) applications because they can implement custom, fully parallel algorithms. DSP applications use many binary multipliers and accumulators that are best implemented in dedicated DSP slices. All Composants matériels 7 series FPGAs have many dedicated, full-custom, low-power DSP slices, combining high speed with small size while retaining system design flexibility. The DSP slices enhance the speed and efficiency of many applications beyond digital signal processing, such as wide dynamic bus shifters, memory address generators, wide bus multiplexers, and memory-mapped I/O registers. The basic functionality of the DSP48E1 slice is shown in Entrées avecdetails, multiplication accumulation sur 32 Description Figure 1-1.18 For bits complete refer to Figure/2-1 and Chapter 2, DSP48E1 and Specifics. échantillons Introduction aux FPGA Structure matérielle DSP Slice pour Virtex 4 X-Ref Target - Figure 1-1 48-Bit Accumulator/Logic Unit B X A +/– D C Pre-adder 25 x 18 Multiplier + – P = Pattern Detector UG479_c1_21_032111 Figure 1-1: Basic DSP48E1 Slice Functionality can be written to either or both ports and can be read from either or both ports. Each Introduction auxData FPGA write operation is synchronous, each port has its own address, data in, data out, clock, Structure matérielle clock enable, and write enable. The read and write operations are synchronous and require Composants matériels a clock edge. There is no dedicated monitor to arbitrate the effect of identical addresses on both ports. It is up to the user to time the two clocks appropriately. Conflicting simultaneous writes to the same location never cause any physical damage but can result in data uncertainty. RAM double port X-Ref Target - Figure 1-1 CASCADEOUTA CASCADEOUTB 36-Kbit Block RAM 32 4 16 4 DIA DIPA Port A ADDRA WEA ENA RSTREGA RSTRAMA CLKA REGCEA 32 4 16 4 DOA DOPA 32 4 36 Kb Memory Array DIB DIPB ADDRB WEB Port B ENB RSTREGB RSTRAMB DOB 32 DOPB CLKB REGCEB CASCADEINA CASCADEINB 4 Introduction aux FPGA Structure matérielle Composants matériels ADC Chapter 1: Introduction and Quick Start X -R e f Target - F igure 1-1 Te m pe rature S e nsor D ie Tem pe rature °C VP VN VAU X P [0] VAU X N [0] E xte rnal Analog Inputs VAU X P [12] VAU X N [12] VAU X P [13] VAU X N [13] VAU X P [14] VAU X N [14] VAU X P [15] VAU X N [15] S upply S e nsors V C C IN T V C C AU X V C C BR AM M ux VREFP VREFN O n-C hip R e f 1 .25 V 1 2 -bit, 1 MSPS AD C A C ontrol R e giste rs S tatus R egiste rs 3 2 x 1 6 bits R ea d/W rite 3 2 x 1 6 bits R ea d O nly M ux 1 2 -bit, 1 MSPS AD C B DRP JTAG FPGA Inte rconnect U G 4 80_ c1_ 01_090710 Figure 1-1: XADC Block Diagram The XADC also includes a number of on-chip sensors that support measurement of the Introduction aux FPGA Structure matérielle Composants matériels Processeur ARM sur SmartFusion Introduction aux FPGA Structure matérielle Composants logiciels Composants logiques Chaque constructeur définit sa propre cellule de base, qui varie selon les familles de FPGA. Les cellules élémentaires : I Portes logiques configurables : fonctions de base (AND, OR...) I Registres : mémoire et synchronisme Les composants matériels (hardcore) : I Logique complexe : additionneurs, multiplieurs... I Mémoire RAM I Processeurs (ARM, PowerPC...) Les composants logiciels (softcore) : I UART, USB, contrôleur d’écran... I Processeurs (ARM, RISC...) I FFT, JPEG, SHA-1... I ... MicroBlaze Architecture Introduction aux FPGA Structure matérielle Composants logiciels This chapter contains an overview of MicroBlaze™ features and detailed information on architecture including Big-Endian or Little-Endian bit-reversed format, 32-bit general Xilinx MicroBlazeMicroBlaze (propriétaire) purpose registers, virtual-memory management, cache software support, and Fast Simplex Link (FSL) or AXI4-Stream interfaces. I 5.1K LUTs at 241MHz on Xilinx Virtex 6 Overview I MicroBlaze™ embedded soft core is a reduced instruction 2.4K LUTs atThe 131MHz on processor Xilinx Spartan 6 set computer (RISC) optimized for implementation in Xilinx Field Programmable Gate Arrays (FPGAs). Figure 2-1 ® shows a functional block diagram of the MicroBlaze core. Instruction-side bus interface Data-side bus interface Memory Management Unit (MMU) ITLB M_AXI_IC IXCL_S Program Counter ALU Special Purpose Registers Branch Target Cache M_AXI_IP IPLB ILMB Bus IF DTLB DXCL_M DXCL_S Shift Barrel Shift M_AXI_DP Multiplier DPLB Divider FPU Instruction Buffer M_AXI_DC D-Cache I-Cache IXCL_M UTLB Instruction Decode Register File 32 X 32b Optional MicroBlaze feature Figure 2-1: MicroBlaze Core Block Diagram DLMB Bus IF M0_AXIS.. M15_AXIS S0_AXIS.. S15_AXIS MFSL 0..15 or DWFSL 0..15 SFSL 0..15 or DRFSL 0..15 Introduction aux FPGA Structure matérielle Composants logiciels Processeur OpenRISC (open-source) I 7K core cells, 4 block RAMs at 35MHz on Actel ProASIC3 I 2.4K LUTs, 1 block RAM at 125MHz on Xilinx Virtex 5 Introduction aux FPGA Les constructeurs Sommaire Introduction Rappels sur les circuits intégrés Structure matérielle Structure générale Cellules élémentaires Composants matériels Composants logiciels Les constructeurs Programmation Flot de conception Synthèse Placement / Routage Tests Recherche sur les FPGA à Lyon Sources Introduction aux FPGA Les constructeurs Les constructeurs Part de marché en termes de CA en 2010 !"#"$%&'()(* Technologie SRAM <="3>27?"3&0)@* 6"3.78-9"&:+3,-#;&')1* 2/,,"3-&4)5* +#,-./&'0)1* I Xilinx I Altera I Lattice Flash I Actel I QuickLogic Introduction aux FPGA Les constructeurs Familles Hautes performances Rentable Économie d’énergie Xilinx Virtex Kintex (ex Spartan) Artix Altera Stratix Arria Cyclone Actel Pro Asic 3 Igloo Introduction aux FPGA Les constructeurs Xilinx Virtex 7 I 28nm Process I 6,8 Milliards de transistors (intel core i7 : 995 Millions) Introduction aux FPGA Les constructeurs SmartFusion Customizable System-on-Chip (cSoC) SmartFusion cSoC Block Diagram Actel SmartFusion Cortex™-M3 Supervisor PLL OSC RC WDT 32 KHz RTC + JTAG NVIC PPB Microcontroller Subsystem ENVM 3V SWD Programmable Analog MPU – FPGA Fabric ESRAM S APB SPI 1 SysReg SysTick D I APB SPI 2 Timer1 UART 2 Timer2 I2C 2 AHB Bus Matrix EFROM I2C 1 IAP PDMA SCB Curr. Mon. Comparator SCB Temp. Mon. Volt Mon. (ABPS) Curr. Mon. Comparator EMC 10/100 EMAC Analog Compute Engine ADC ............ Volt Mon. (ABPS) .... Temp. Mon. APB ADC Sample Sequencing Engine DAC (SDD) VersaTiles ............ UART 1 Post Processing Engine ........ DAC (SDD) SRAM SRAM SRAM ........ SRAM SRAM SRAM Introduction aux FPGA Programmation Sommaire Introduction Rappels sur les circuits intégrés Structure matérielle Structure générale Cellules élémentaires Composants matériels Composants logiciels Les constructeurs Programmation Flot de conception Synthèse Placement / Routage Tests Recherche sur les FPGA à Lyon Sources Introduction aux FPGA Programmation Flot de conception Design process (1) Flot de conception (1) Design and implement a simple unit permitting to speed up encryption with RC5-similar cipher with fixed key set on 8031 microcontroller. Unlike in the experiment 5, this time your unit has to be able to perform an encryption algorithm by itself, executing 32 rounds….. Specification (Lab Experiments) VHDL description (Your Source Files) Library IEEE; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; Functional simulation entity RC5_core is port( clock, reset, encr_decr: in std_logic; data_input: in std_logic_vector(31 downto 0); data_output: out std_logic_vector(31 downto 0); out_full: in std_logic; key_input: in std_logic_vector(31 downto 0); key_read: out std_logic; ); end AES_core; Synthesis Post-synthesis simulation Introduction aux FPGA Programmation Design process (2) Flot de conception Flot de conception (2) Implementation Timing simulation Configuration On chip testing Introduction aux FPGA Programmation Flot de conception Environnement de développement Synthèse I Actel Libero I Altera Quartus II I Synopsys Synplify I Xilinx ISE I ... Simulation I ModelSim I ... Introduction aux FPGA Programmation Synthèse Translation Traduction Synthesis Circuit netlist Electronic Design Interchange Format EDIF Timing Constraints Constraint Editor Native Constraint File NCF UCF User Constraint File Translation NGD Native Generic Database file Introduction aux FPGA Programmation Synthèse Pin assignment file (UCF) NET NET NET NET NET NET NET NET NET NET NET NET "clock" LOC = "P8" ; "control<0>" LOC = "K4" ; "control<1>" LOC = "K3" ; "control<2>" LOC = "K2" ; "reset" LOC = "E11" ; "segments<0>" LOC = "R10" ; "segments<1>" LOC = "P10" ; "segments<2>" LOC = "M11" ; "segments<3>" LOC = "M6" ; "segments<4>" LOC = "N6" ; "segments<5>" LOC = "T7" ; "segments<6>" LOC = "R7" ; Introduction aux FPGA Programmation Synthèse Assigning I/O Locations Using PlanAhead Software Pin assignment graphique 3. Click Close on the Welcome dialog to proceed in the PlanAhead software. X-Ref Target - Figure 6-12 Figure 6-12: PlanAhead Software for I/O Planning Introduction aux FPGA Programmation Synthèse Synthèse Netlist Logic Synthesis VHDL description Circuit netlist architecture MLU_DATAFLOW of MLU is signal A1:STD_LOGIC; signal B1:STD_LOGIC; signal Y1:STD_LOGIC; signal MUX_0, MUX_1, MUX_2, MUX_3: STD_LOGIC; begin A1<=A when (NEG_A='0') else not A; B1<=B when (NEG_B='0') else not B; Y<=Y1 when (NEG_Y='0') else not Y1; MUX_0<=A1 and B1; MUX_1<=A1 or B1; MUX_2<=A1 xor B1; MUX_3<=A1 xnor B1; with (L1 & L0) select Y1<=MUX_0 when "00", MUX_1 when "01", MUX_2 when "10", MUX_3 when others; end MLU_DATAFLOW; ECE 449 – Computer Design Lab 46 Introduction aux FPGA Programmation Placement / Routage Mapping Mapping LUT0 LUT4 LUT1 FF1 LUT5 LUT2 FF2 LUT3 ECE 449 – Computer Design Lab 55 Introduction aux FPGA Programmation Placement / Routage Placement/Routage FPGA Programmable Connections Introduction aux FPGA Programmation Tests Analyse des temps de propagation Static Timing Analysis I Recherche du chemin critique (chemin le plus long) I Détermine la fréquence maximale de fonctionnement •! Critical Path – The Longest Path From I Outputs of Registers to ces Inputs of Simulation post-routage basé sur données Registers tP logic in D Q D Q out clk tCritical = tP FF + tP logic + tS FF ECE 449 – Computer Design Lab 59 Introduction aux FPGA Chapter 5: Behavioral Simulation Programmation Tests 5. Drag all the selected signals to the waveform. Simulation : ModelSim Note: Alternatively, right-click on a selected signal and select Add to Wave Window. X-Ref Target - Figure 5-13 Figure 5-13: Adding Signals to the Simulation Waveform Automatisation des tests Notice that the waveforms have not been drawn for the newly added signals. This is because ISim did not record the data for these signals. By default, ISim records data only Analyse Vecteurs Testbench Résultats Génération for the signals that are added to the waveform window while the simulation is running. C VHDL C Therefore, when new signals are added to the waveform window, you must rerun the txt txt simulation for the desired amount of time. Rerunning Simulation Introduction aux FPGA Programmation Tests Programmation X-Ref Target - Figure 8-9 Figure 8-8: Operation Status When the Program operation completes, a large blue message appears showing that programming was successful, as shown in the following figure. This message disappears after a few seconds. Introduction aux FPGA Recherche sur les FPGA à Lyon Sommaire Introduction Rappels sur les circuits intégrés Structure matérielle Structure générale Cellules élémentaires Composants matériels Composants logiciels Les constructeurs Programmation Flot de conception Synthèse Placement / Routage Tests Recherche sur les FPGA à Lyon Sources Introduction aux FPGA Recherche sur les FPGA à Lyon Arithmétique sur FPGA Projet Arenaire I Équipe INRIA / Laboratoire LIP / ENS I Développement de l’arithmétique sur ordinateur FloPoCo (Floating Point Cores) I I I I I Génération d’opérateurs de calculs pour √ FPGA Opérateurs classiques (+,−,×,/ et x) Opérateurs exotiques (multiplication par une constante...) Virgule fixe, flottant, formats exotiques... Cryptographie I Laboratoire CITI / INSA I Développement/expérimentations de nouvelles architectures pour la cryptographie Introduction aux FPGA Recherche sur les FPGA à Lyon Radio Logicielle a complete array for any Plateforme type of matérielle I Équipe ring for each Airelle / Laboratoire CITI / INSA I Développement de composants radio en logiciel h the host device I I gration from Plateforme d’expérimentation Lyrtech Small Form Factor Digital processing module Data conversion module ADC RX ADC Virtex-4 FPGA TX Antenna Transceiver IF TX Clk Ref GPIO LYRIO RX LYRIO to F Virtex-4 FPGA RF module DM6446 DM SoC Introduction aux FPGA Recherche sur les FPGA à Lyon Exemple : Cryptographie sur FPGA (GPS) Les réseaux de capteurs sans fil PowWow I Actel Igloo AGL250 I TI MSP430 I TI CC2420 Introduction aux FPGA Recherche sur les FPGA à Lyon Architecture classique 20 Introduction Sensor Subsystem Computation Subsystem Sensor MCU Power Supply Communication Subsystem Tx Rx Power Subsystem , version 1 - 6 Ja n 2011 Figure 1.1: General architecture of a WSN node. Architecture PowWow versality. However, when looking more carefully to actual design practices, we observe that the need for flexibility/programmability is essentially geared toward the user application layer, which happens to represent only a small fraction of a WSN node’s processing workload. Whereas most of the processing workload is almost dedicated to the communication protocol stack. Hence, in our opinion, it is worth-studying to explore the hardware specialization approach in WSN node design as well to meet the ultra low-power requirement. In order to reduce the power consumption in a WSN node, we first need to look at the generic node architecture to find out the hotspots for power consumption. The generic architecture of a WSN node is discussed in the next section. Ba Decryption* Recherche sur les FPGA à Lyon User Nonvolatile FlashRom Flash*Freeze Technology Charge Pumps nk 0 Introduction aux FPGA ISP AES Bank 1 * Not supported by AGL015 and AGL030 devices Figure 1-1 • IGLOO Device Architecture Overview with Two I/O Banks (AGL015, AGL030, AGL060, and AGL125) Actel Igloo AGL250 Bank 0 Bank 1 Bank 3 CCC RAM Block 4,608-Bit Dual-Port SRAM or FIFO Block I/Os Bank 1 Bank 3 VersaTile ISP AES Decryption* User Nonvolatile FlashRom Flash*Freeze Technology Charge Pumps RAM Block 4,608-Bit Dual-Port SRAM or FIFO Block (AGL600 and AGL1000) Bank 2 Figure 1-2 • IGLOO Device Architecture Overview with Four I/O Banks (AGL250, AGL600, AGL400, and AGL1000) I I 250 000 portes logiques ' 6144 VersaTiles Horloge cadencée à 8 MHz Introduction aux FPGA Recherche sur les FPGA à Lyon Implémentation de GPS Réaliser une multiplication : I Une clé connue de 128/256/512 bits I une valeur de 32 bits De manière efficace ? Multiplication série : méthode shift and add 1 0 0 1 0 0 1 1 0 1 0 0 0 1 0 0 0 0 × 1 1 0 1 1 + + + 1 0 1 1 0 0 0 1 1 1 0 1 0 1 0 0 1 1 0 0 1 0 0 0 0 0 1 1 0 0 Multiplication par une constante : méthode KCM Introduction aux FPGA Recherche sur les FPGA à Lyon Multiplication série : McLoone and Robshaw, 2007 Stores intermediate multiplication values 11 10 9 8 7 … … ... … … ... … … ... … … ... … … ... … … ... … … ... … … ... … … ... … … ... … … ... … … ... … … ... … … ... … … ... … … ... 6 11 10 9 8 7 6 11 10 9 8 7 6 11 10 9 8 7 6 11 10 9 8 7 6 11 10 9 8 7 6 11 10 9 8 7 6 11 10 9 8 7 6 11 10 9 8 7 6 11 10 9 8 7 6 11 10 9 8 7 6 11 10 9 8 7 6 11 10 9 8 7 6 11 10 9 8 7 6 11 10 9 8 7 6 11 10 9 8 7 6 0 0 Performs left shift by 1-bit 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 ‘0’ 16 s r + 15 1 y c I Control Logic Architecture de référence en cryptographie embarquée Introduction aux FPGA Recherche sur les FPGA à Lyon Multiplication par une constante : Architecture KCM A0 -A3 16 × 4 bits rom A4 -A7 4 bits adder A8 -A11 1 I 4 4 4 4 Architecture générée par FloPoCo 4 Introduction aux FPGA Recherche sur les FPGA à Lyon Résultats Actel Igloo VersaTiles Run cycles secret size parallel impl. serial impl. parallel/serial ratio parallel impl. serial impl. serial/parallel ratio 128 bits 10476 1546 6.8 8 339 42.4 I AGL250 ($20) : 6144 VersaTiles I AGL1000 ($100) : 24576 VersaTiles 256 bits 20755 2253 9.2 12 603 50.3 512 bits 44307 3698 12 20 1131 56.55 Introduction aux FPGA Recherche sur les FPGA à Lyon Résultats Xilinx Virtex4 Slices Run cycles secret size parallel impl. serial impl. parallel/serial ratio parallel impl. serial impl. serial/parallel ratio I XC4VSX35 ($600) : 15360 Slices I source prix : Digi-Key, 11/2011 128 bits 2213 493 4.5 8 339 42.4 256 bits 4358 784 5.5 12 603 50.3 512 bits 7115 1377 5.2 20 1131 56.55 Introduction aux FPGA Sources Sommaire Introduction Rappels sur les circuits intégrés Structure matérielle Structure générale Cellules élémentaires Composants matériels Composants logiciels Les constructeurs Programmation Flot de conception Synthèse Placement / Routage Tests Recherche sur les FPGA à Lyon Sources Introduction aux FPGA Sources Sources I Introduction aux circuits FPGA, Arnaud Tisserand I Introduction to FPGA Devices, Boards and tools (Slides from George Manson University) I http://www.fpgadeveloper.com/2011/07/ list-and-comparison-of-fpga-companies.html I http://www.actel.com I http://www.xilinx.com I http://www.altera.com I http://www.lyrtech.com I http://www.digikey.com I http://powwow.gforge.inria.fr I http://opencores.org