Introduction aux Systèmes Numériques - CEA-Irfu

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