Introduction aux FPGA

publicité
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
Téléchargement
Study collections