Cours - Microprocesseurs reconfigurables

publicité
ETRS 811 « FPGA et processeurs
reconfigurables »
Emilie HERAULT
[email protected]
Bâtiment Chablais, bureau 212
04 79 75 94 68
1
Présentation du cours
z
z
Organisation :
z
CM : 10.5 h en 7 séances
z
6 TDs (M. Montagny)
z
3 TPs (M. Montagny)
Evaluation :
z
1 exam théorique (75% )
z
1 exam de TP (25%)
2
Présentation du cours
z
Objectifs du cours :
z
z
z
z
Concevoir et appréhender des systèmes complexes à
base de FPGA
Savoir utiliser des IPs et des processeurs reconfigurables
Maitriser la conception de circuits numériques synchrones
Prérequis :
z
VHDL, connaissances de base sur les FPGA
3
Matériel
z
Logiciels QUARTUS II et Nios II Embedded Design
Suite
Possibilité de télécharger sur le site d’Altera
Quartus II Web Edition
https://www.altera.com/download/software/quartus-ii-we
z
z
Carte DE1 d’Altera
4
Plan global du cours
z
I. Rappels et introduction
z
II. Méthodologie de conception synchrone
z
III. Microprocesseurs
z
IV. SOPC, design re-use
z
V. Processeur NIOS II
z
VII. Initiation au langage Tcl
5
Plan global du cours
z
I. Rappels et introduction
z
Rappels FPGA et VHDL
z
Introduction : Co-design
z
II. Méthodologie de conception synchrone
z
III. Microprocesseurs
z
IV. SOPC, design re-use
z
V. Processeur NIOS II
z
VII. Initiation au langage Tcl
6
Rappels : FPGA
z
Vidéo
7
Rappels : FPGA
Virtex II (Xilinx)
Pentium IV (Intel)
8
Rappels : FPGA
9
Rappels : FPGA
10
Rappels : FPGA
Synthèse
Placement, routage
Téléchargement et tests
Génération du bitstream
11
Rappels : FPGA
z
Des circuits flexibles permettant des évolutions
z
De meilleures performances qu’un logiciel
z
Moins chers que des ASICs pour de faibles volumes
z
Un temps de développement moins élevé
Mais :
z
Plus chers que des circuits standards
z
Gourmands en énergie (sauf les « low power »)
z
Volatiles
z
Leur sûreté de fonctionnement est parfois considérée
comme faible (à juste titre?)
12
Rappels : FPGA
z
Programmation
z
Par schématique
z
Par langage de programmation
z
HDL : Hardware Description Langage (AHDL, ABEL,…)
z
VHDL : Very High Speed Integrated Circuit Hardware
Description Langage
z
Verilog : conception et simulation de circuits numérique
z
SystemC : modélisation de systèmes numériques matériels et
logiciels à l'aide de C++ (systèmes matériels, mais aussi des
systèmes logiciels, mixtes ou non-partitionnés)
13
Rappels : VHDL
z
Langage de modélisation et/ou de synthèse de systèmes
électroniques
z
Langage généraliste x simulation
z
Langage près des portes logiques x VHDL de synthèse
z
Système de CAO : Schéma ou VHDL ou mixte
14
Rappels : VHDL
15
Rappels : VHDL
z
Instruction séquentielle : instruction à l’intérieur d’un
process
z
Instruction concurrente : instruction à l’extérieur des
process.
Rappel : les instructions se placent toujours uniquement
entre le begin et le end de l’architecture
16
Rappels : machine à états
z
Par essence la conception hardware est concurrente
z
Pour introduire du séquentiel, on utilise des séquenceurs,
par exemple une machine à états.
17
Rappels : machine à états
Entrée ≠ ‘1’
E0
Entrée ≠ ‘2’
P=0
Entrée = ‘1’
E1
1=1
P=0
Entrée ≠ ‘3’
Entrée = ‘2’
P=0
E2
Entrée = ‘3’
E3
P=1
18
Rappels : machine à états
19
Exercice
z
Concevoir une montre numérique
z
Un système qui compte les secondes de 0 à 9 et qui affiche le
résultat sur un afficheur 7 segments
z
3 groupes : une solution logicielle, une solution en vhdl, une
solution en schématique
20
Exercice
z
Solution logicielle
21
Exercice
z
Solution schématique
22
Exercice
z
Solution vhdl
23
Plan global du cours
z
I. Rappels et introduction
z
Rappels FPGA et VHDL
z
Introduction : Co-design
z
II. Méthodologie de conception synchrone
z
III. Microprocesseurs
z
IV. Design re-use
z
V. Processeur NIOS II
z
VII. Initiation au langage Tcl
24
Conception de systèmes
25
Définitions
z
Système
z
z
Toute « chose » constituée de parties organisées pour assurer une
fonction ou un ensemble de fonctions dans son environnement
Architecture
z
Structure fondamentale et unifiante du système définie en termes de
ses constituants, interfaces, liens, comportements et contraintes
26
Architectures
z
z
z
Logicielles (software)
z
Flexibilité, facilité de maintenance
z
Faible temps de conception
z
Faible coût de conception
z
Pas d’ajout de matériel
Matérielles (hardware)
z
Performances
z
Consommation
z
Protection industrielle
Mixtes
z
Objectif : prendre les avantages des 2 approches ¼ co-design
27
Flexibilité
z
60 % environ des activités dans le domaine des systèmes
embarqués se situent dans la maintenance et les mises à
jour
z
Pour un logiciel :
z
z
Si bug ou évolution du produit : modification du code
Pour une carte :
z
Généralement remplacement du produit
28
Performance
z
Microprocesseur à 1 GHz
¬1 000 000 000 opérations par seconde
z
FPGA à 300 MHz avec 1000 multiplicateurs
¬300 000 000 000 opérations par seconde
29
Complémentarité soft/hard
Soft
Hard
Performance
Contraintes
physiques
Intégration
Consommation
Contraintes
économiques
du produit
Contraintes
économiques de
développement
Coût de production
Flexibilité
Protection industrielle
Coût de développement
Temps de développement
Prise de risque
30
Choix d’une architecture
31
Qu’est ce que le co-design ?
z
Conception (spécifier + valider + synthétiser)
concurrente (logicielle + matérielle)
d’un circuit électronique complexe
z
Etapes clé :
z
Partitionnement hard/soft
z
Modélisation
z
Co-validation
z
Co-synthèse
32
Flot de conception
33
Flot de conception
Microprocesseur
Microcontrôleur
DSP
34
Flot de conception
Code compréhensible
par et optimisé pour le
matériel
35
Flot de conception
Peut prendre 60 % à 70 %
du cycle de conception
36
Plan global du cours
z
I. Rappels et introduction
z
II. Méthodologie de conception synchrone
z
Méthodologie
z
Descriptions VHDL paramétrables
z
Conception Full synchrone - Signal d’horloge
z
III. Microprocesseurs
z
IV. Design re-use
z
V. Processeur NIOS II
z
VII. Initiation au langage Tcl
37
Méthodologie de conception
synchrone
z
Méthodologie orientée FPGA et CPLD
z
Règle principale : conception FULL synchrone
z
Dans le cas de réalisations pour un ASIC, de design
asynchrone, … les méthodologies et les règles peuvent être
différentes
38
Complexité d’un système
z
Complexité ≠ densité
z
Facteurs aggravants sur la complexité :
z
Asynchronisme
z
Spécification incomplète
z
Proximité des limites technologiques
z
Traitements numériques complexes
39
Les clés du succès
z
Analyse détaillée
z
Simplicité
z
z
z
Décomposer un système complexe en blocs simples
z
Simplicité = clareté
Modularité
z
Augmente le rendement
z
Permet la réutilisation
Abstraction
z
Imaginer l’interaction entre les blocs
40
Les clés du succès
41
Méthodologie
z
Analyse du cahier des charges
z
Décomposition du système
z
Description et validation de chaque bloc
z
Rassemblement des blocs élémentaires du système
42
Méthodologie
z
Analyse du cahier des charges
z
Elle n’est jamais trop détaillée
z
Déterminer les contraintes des E/S
z
Timing
z
Liaison asynchrone
z
…
43
Méthodologie
z
Décomposition du système
z
Etudier plusieurs architectures
z
Un choix judicieux d’architecture permet d’optimiser la quantité de
logique ¼ souvent solution plus rapide
z
Eventuellement faire plusieurs décompositions (hiérarchie)
z
Obtenir des blocs simples avec une seule fonction
44
Méthodologie
z
Description des blocs
z
z
z
Elle doit être SIMPLE et commentée
z
Matériel optimum
z
Si c’est plus lisible, la maintenance est plus facile
z
Le dépannage est plus facile
Faire preuve de rigueur et de méthode
Validation des blocs
z
De bas en haut
z
Simuler chaque bloc séparément
45
Méthodologie
z
z
Rassemblement des blocs élémentaires
z
A chaque hiérarchie : vérification des interconnexions
z
Au top level : Vérification de la fonctionnalité globale
Un outil : le cahier méthodologique
z
Il définit des règles pour la description de systèmes numériques
z
Rigueur indispensable
z
Description uniforme au sein d’une équipe
46
Exemple de cahier méthodologique
47
Exemple de cahier méthodologique
48
Exemple de cahier méthodologique
49
Exemple de cahier méthodologique
50
Fichiers VHDL
z
Un fichier ne contient qu’une seule entité
z
Nom du fichier = nom de l’entité
z
Fichier de simulation : <nom_fichier>_tb.vhd
z
Ecrire un entête
z
Société, auteur
z
Logiciels utilisés (nom, version, …)
z
Explication du fonctionnement du module
z
Liste des fichiers utilisés (hiérarchie)
z
Liste des modifications
z
Description des entrées/sorties
51
Top Level
z
Adapter la polarité des signaux
z
z
z
A l’extérieur la logique peut être mixte (positive ou négative)
A l’intérieur, uniquement logique positive
Signaux bidirectionnels uniquement au Top Level
z
Instanciation de buffer 3 états au top level
z
Exemple :
data_in <= donnee_souris;
donnee_souris <= data_out WHEN direction_donnee ELSE 'Z';
z
Signaux unidirectionnels dans les blocs
52
Plan global du cours
z
I. Rappels et introduction
z
II. Méthodologie de conception synchrone
z
Méthodologie
z
Descriptions VHDL paramétrables
z
Conception Full synchrone - Signal d’horloge
z
III. Microprocesseurs
z
IV. Design re-use
z
V. Processeur NIOS II
z
VII. Initiation au langage Tcl
53
Descriptions VHDL paramétrables
z
Objectif : Décrire un circuit dont la taille des bus est un
paramètre
z
Plusieurs solutions :
z
Taille des bus définie par les déclarations dans l’entité
z
Taille des bus définie dans un package
z
Utilisation de constantes génériques
54
Descriptions VHDL paramétrables
z
Signaux internes basés sur la taille des bus déclarés dans
l’entité : ’range
55
Descriptions VHDL paramétrables
Exemple : compteur 4 bits
56
Descriptions VHDL paramétrables
z
Déclaration d’un package
z
z
Par défaut le package est placé dans la bibliothèque work
Déclaration d’une constante dans un package
57
Descriptions VHDL paramétrables
58
Descriptions VHDL paramétrables
z
Utilisation d’un paramètre generic
z
Valeur du paramètre fixée lors de l’instanciation
¼ Penser à définir une valeur par défaut
59
Descriptions VHDL paramétrables
z
Exemple
60
Descriptions VHDL paramétrables
61
Descriptions VHDL paramétrables
62
Descriptions VHDL paramétrables
63
Exercice
z
Décrire un comparateur dont la sortie vaut 1 si les deux bus
en entrée ont la même valeur, la taille des bus étant un
paramètre générique
64
Exercice
z
Instancier dans un circuit TopLevel un comparateur ayant en
entrée 2 bus de 8 bits. Pour cela, utiliser le comparateur de
l’exercice précédant.
65
Plan global du cours
z
I. Rappels et introduction
z
II. Méthodologie de conception synchrone
z
Méthodologie
z
Descriptions VHDL paramétrables
z
Conception Full synchrone - Signal d’horloge
z
III. Microprocesseurs
z
IV. Design re-use
z
V. Processeur NIOS II
z
VII. Initiation au langage Tcl
66
Pourquoi Full synchrone?
z
Pseudo - synchrone : le signal d’horloge d’une bascule
dépend de bascules précédentes
z
Full - synchrone : toutes les bascules sont synchronisées
sur le même signal d’horloge
z
Avantages du full synchrone
z
Facilite la conception
z
Evolution des signaux est prédictible
z
Retard identique pour chaque sortie de bascule
z
Une analyse statique permet de déterminer la fréquence max de
fonctionnement
z
Arbre d’horloge prévu dans les FPGA
67
Pourquoi Full synchrone?
z
Compteur pseudo - synchrone
68
Pourquoi Full synchrone?
z
z
Décompteur pseudo - synchrone
Retard = N . Tp
69
Pourquoi Full synchrone?
z
Compteur full - synchrone
70
Pourquoi Full synchrone?
z
Compteur full - synchrone
z
Retard identique pour chaque bascule
z
Fmax < 1/(Tpbascule + TpET)
71
Propagation de l’horloge
z
Problème si on fait de la logique combinatoire avec l’horloge
72
Propagation de l’horloge
z
Problème si on fait de la logique combinatoire avec l’horloge
ERREUR!! Q2 risque de s’activer une période
d’horloge trop tôt
73
Propagation de l’horloge
z
z
Analyse bascule Q1 :
z
Q0 changera d’état toujours après le front montant de clock
z
Q1 sera mis à jour lors du prochain front montant de clock
¼
Fonctionnement indépendant du temps de propagation des bascules
Analyse bascule Q2 :
z
Q0 changera d’état toujours après le front montant de clock
z
Mais le front montant de clk_Gated est retardé
z
Il y a risque que Q2 soit mis à jour avant le prochain front montant de
clock
¼
Fonctionnement dépendant du temps de propagation dans les portes
74
Analyse temporelle statique
Tb
z
TSLC
TFH
Fmaxhorloge = 1/( Tb + TSLC + TFH )
75
Analyse temporelle statique
z
Avec Quartus : dans le rapport de compilation
76
Analyse temporelle statique
z
Tsu (clock setup time) :
z
The length of time for which data that feeds a register via its data or enable input(s) must
be present at an input pin before the clock signal that clocks the register is asserted at the
clock pin.
z
z
tSU = <pin to register delay> + <micro setup delay> - <clock to destination register delay>
Tco (clock to output delay) :
z
Time from a clock edge to the output of the register actually changing
z
tCO = <shortest clock to source register delay> + <micro clock to output delay> + <shortest
register to pin delay>
z
Th (clock hold time) :
z
The minimum length of time for which data that feeds a register via its data or enable
input(s) must be retained at an input pin after the clock signal that clocks the register is
asserted at the clock pin.
z
tH = <clock to destination register delay> + <micro hold delay of destination register> - <pin
to register delay>
77
Arbre d’horloge
z
Même si on prend des précautions, il peut y avoir un décalage
d’horloge (clock skew) lié au temps de propagation
¼
Utilisation d’un arbre d’horloge
z
Pré cablé dans le FPGA
z
Garantit que toutes les bascules voient l’horloge au même
instant
z
Clock skew le plus faible possible
z
Clock skew inférieur aux temps de propagation internes
78
Arbre d’horloge
z
Pour les Cyclones II d’Altera
79
Arbre d’horloge
z
L’arbre doit être équilibré
pour garantir un temps de
propagation uniforme
Entrée d’horloge
80
Arbre d’horloge
z
Pour les Cyclones II
81
Arbre d’horloge
z
Pour les Cyclones II
82
Modifier la fréquence d’horloge
z
Pour réduire la fréquence d’horloge
z
z
Diviseur de fréquence + utilisation des entrées clock enable
Pour augmenter la fréquence d’horloge
z
PLL
83
PLL
z
z
z
z
Phase Locked Loop : Boucle à verrouillage de phase
Permet d’asservir la phase instantanée de la sortie sur la phase
instantanée de l’entrée
Permet d’asservir la fréquence de sortie sur la fréquence
d’entrée
Permet de générer une fréquence quelconque avec la même
précision que celle de l’oscillateur à quartz qui génère l’horloge
84
PLL
z
Avec Quartus : dans la
bibliothèque de composants
http://www.altera.com/literature/ug/ug_altpll.pdf
85
PLL
86
Système multi clocks
z
Pour être sûr de bien réussir son circuit synchrone :
UNE seule horloge!
z
Parfois il peut être utile de diviser un système en sous
systèmes utilisant des horloges différentes
z
Permet de réduire les contraintes de synthèse des systèmes les
moins rapides
z
Le meilleur moyen de créer plusieurs horloges est d’utiliser
des PLL
87
Système multi clocks
z
Quand plusieurs horloges dans un même circuit sont
totalement indépendantes, on parle de Systèmes
Localement synchrones, Globalement Asynchrones GALS
z
A l’intérieur de chaque sous-circuit, le fonctionnement est
synchrone
z
Conception habituelle
z
Problèmes aux interfaces…
88
Métastabilité
89
Métastabilité
z
Violation du Tsetup ¼ Métastabilité
z
Tr : temps de résolution de la métastabilité
90
Métastabilité
z
Les interfaces sont traitées comme des liaisons entre circuits
différents
z
On peut prévoir des détecteurs d’erreurs (bit de parité) pour s’assurer
que la transmission s’est bien passée
z
En revanche, une métastabilité peut de propager dans
l’ensemble des bascules du système
z
Surtout si les temps de propagation dans les parties combinatoires
sont longs
91
Métastabilité
z
MTBF : Mean Time
Between Faillure
Temps moyen entre 2
pannes
92
Synchroniseur simple
z
Objectif : Confiner l’état intermédiaire dans le synchroniseur
jusqu’à ce qu’il prenne une valeur
93
Synchroniseur simple
z
Tr = Tc – (Tcomb + Tsetup)
z
Si Tc = 20 ns et Tsetup = 2.5 ns
¼ Tr = 17.5 – Tcomb
Si Tcomb = 1 ns, Tr = 16.5 ns ¼ MTBF = 272 ans
Si Tcomb = 12.5 ns, Tr = 5 ns ¼ MTBF = 0.88 s
94
Synchroniseur double
z
Synchroniseur le plus utilisé
z
Tcomb = 0 ns ¼ Tr = Tc – Tsetup = 17.5 ns
¼ MTBF = 2000 ans
95
Synchroniseur
z
Le synchroniseur assure seulement que le système recevant le
signal n’entre pas dans un état métastable
z
Il ne garantit pas la bonne transmission du signal
96
Transmission d’un système
lent vers un système rapide
z
Système lent : 1 MHz
z
Système rapide : 10 MHz
97
Transmission d’un système
lent vers un système rapide
z
Système lent : 1 MHz
z
Système rapide : 10 MHz
z
Problème : l’impulsion enable risque d’être trop étroite pour être
détectée
98
Transmission d’un système
lent vers un système rapide
z
Procédé handshake
99
Transmission d’un système
lent vers un système rapide
z
Côté émetteur
100
Transmission d’un système
lent vers un système rapide
z
Côté récepteur
101
Plan global du cours
z
I. Rappels et introduction
z
II. Méthodologie de conception synchrone
z
III. Microprocesseurs
z
Architecture d’un microprocesseur
z
Amélioration des performances
z
IV. Design re-use
z
V. Processeur NIOS II
z
VII. Initiation au langage Tcl
102
Microprocesseur
103
Programme
z
z
C’est une suite d’instructions
Une instruction est codée en code machine
11001000 0000 0010
Instruction
Opérande ou
registre de l’opérande
104
Fonctions du processeur
z
Mettre a jour l’adresse de la prochaine instruction
z
Récupérer le code de l’instruction en mémoire programme
z
Décoder l’instruction
z
Aller chercher l’opérande en mémoire donnée
z
Exécuter l’instruction
z
Mettre à jour le registre d’état
z
Eventuellement stocker le résultat de l’instruction en mémoire
donnée
105
L’unité de commande
106
L’unité de commande
z
Le compteur de programme (PC : programme Counter)
appelé aussi Compteur Ordinal (CO) constitué par un
registre dont le contenu est initialisé avec l'adresse de la
première instruction du programme. Il contient toujours
l’adresse de la prochaine instruction à exécuter.
¼ Compteur mis à jour par le bloc logique de commande
107
L’unité de commande
z
Le registre d'instruction et le décodeur d'instruction :
chacune des instructions à exécuter est transférée depuis la
mémoire dans le registre instruction puis est décodée par le
décodeur d’instruction.
z
Bloc logique de commande (ou séquenceur) :
Il organise l'exécution des instructions au rythme d’une horloge.
Il élabore tous les signaux de synchronisation internes ou
externes (bus de commande) du microprocesseur en fonction
des divers signaux de commande provenant du décodeur
d’instruction ou du registre d’état par exemple.
¼ Machine à états
108
L’unité de traitement
109
L’unité de traitement
z
z
Les accumulateurs sont des registres de travail qui servent à
stocker une opérande au début d'une opération arithmétique et
le résultat à la fin de l'opération.
Le registre d'état. Chacun de ces bits est un indicateur dont
l'état dépend du résultat de la dernière opération effectuée par
l’UAL. On peut citer par exemple les indicateurs de :
z
z
z
z
z
z
Retenue (carry : C)
Retenue intermédiaire (Auxiliary-Carry : AC)
Signe (Sign : S)
Débordement (overflow : OV ou V)
Zéro (Z)
Parité (Parity : P)
¼ Registres
110
L’unité de traitement
z
L’Unité Arithmétique et Logique (UAL) est un circuit
complexe qui assure les fonctions logiques (ET, OU,
Comparaison, Décalage, etc…) ou arithmétique (Addition,
soustraction).
¼ Plusieurs circuits en parallèles, chacun réalisant
une des fonctions du jeu d’instruction
+ des multiplexeurs en entrée et en sortie
111
Exemple UAL : 74181 (TTL)
112
Exemple UAL : 74181 (TTL)
113
Exercice
z
Concevoir une UAL réalisant ces fonctions :
f
S
00
A and B
01
A or B
10
A+B
11
A-B
Les entrées A et B sont sur 8 bits
114
Plan global du cours
z
I. Rappels et introduction
z
II. Méthodologie de conception synchrone
z
III. Microprocesseurs
z
Architecture d’un microprocesseur
z
Amélioration des performances
z
IV. Design re-use
z
V. Processeur NIOS II
z
VII. Initiation au langage Tcl
115
Amélioration des performances
z
Conception en « pipeline »
z Sans pipeline :
z
Temps de traitement d’un programme de m instructions de n
étapes
116
Amélioration des performances
z
Avec pipeline :
z
Temps de traitement d’un programme de m instructions de n
étapes
117
Amélioration des performances
z
Différents types de pipeline
z
3 niveaux
z
z
5 niveaux (ARM 9, MIPS)
z
z
Fetch, Decode, Execute
Instruction Fetch, Instruction Decode, Execution, Memory,Write Back
Jusqu’à 25 niveaux! (20 pour le pentium IV)
118
Amélioration des performances
z
Pipeline 5 niveaux
119
Amélioration des performances
z
Pipeline 5 niveaux
120
Deux types d’architecture
z
CISC :
z
Microcode ou microprogramme d’instruction
z
Nombre d’instructions élevé avec multiples modes
d’adressage
z
Avantages :
z
z
Code compact
z
Instructions très complexes et très rapides
Inconvénients
z
Surface importante de silicium ¼ Consommation élevée
z
Mauvaise utilisation des instructions complexes par les compilateurs
121
Deux types d’architecture
z
RISC :
z
Instructions de taille fixe
z
Limitation des modes d’adressage
z
Avantages :
z
z
Architecture moins complexe
z
Interruptions plus rapides
z
Compilateur plus simple et efficace
Inconvénients
z
Taille du programme plus importante
z
Traitements avec accès multiples à la mémoire pénalisés
122
Exercice
z
Concevoir un processeur RISC 32 bits en utilisant 5 niveaux de
pipeline
123
Plan global du cours
z
I. Rappels et introduction
z
II. Méthodologie de conception synchrone
z
III. Microprocesseurs
z
IV. Design re-use
z
IP
z
Exemples de processeurs
z
Bus d’interfaçage
z
Operating System / Real Time Operating System
z
V. Processeur NIOS II
z
VII. Initiation au langage Tcl
124
Design re-use
z
La complexité des circuits augmente plus vite que la
productivité par ingénieur
¼
Il devient difficile de concevoir un SoC entièrement
¼
Il faut réutiliser des parties déjà conçues
125
Design re-use
z
Exemples de complexité de projets
126
Design re-use
z
Il faut concevoir des composants « virtuels » réutilisables
z
z
Démarche qualité, méthodologie, paramètres génériques, …
Mais une entreprise seule ne peut pas toujours concevoir tous
les composants dont elle a besoin
z
Echange de composants « virtuels »
z
Instauration d’une protection juridique : « Intellectual Property »
z
Nécessité d’utiliser un même formalisme pour l’utilisation et la
modélisation pour une adaptation rapide au système
127
Différents types d’IP matérielles
z
« Soft » IP
z
z
z
z
z
« Firm » IP
z
z
z
z
Modèle de description de matériel. Peut être non synthétisable pour la
validation purement fonctionnelle
Flexible, paramétrable
Indépendant de la technologie
Difficile à protéger
Liste d’équipotentielles post synthèse logique
Dépend de la technologie
Assez difficile à protéger
« Hard » IP
z
z
z
Liste d’équipotentielles placées et routées
Contient les temps de propagation
Facile à protéger (boite noire avec des entrées/sorties
128
Usage et format des IP
z
Remarque : il faut toujours valider les IPs en simulation et en
environnement de test de production
129
Les fournisseurs d’IP
z
Sociétés d’études et de conception
z
Sociétés sans fonderie dont le profit vient des droits sur les licences
z
z
z
Offre incluant des IPs Soft, de simulation et synthèse
Sociétés de semi-conducteurs
z
Peuvent fournir des IPs Hard en plus des IPs Soft
z
z
Alcatel, Adaptec
Fournisseurs d’outils de CAO
z
IPs soft uniquement
z
z
TI, Motorola, Lucent, Altera, Xilinx, LSI Logic, STM
Equipementiers
z
z
DSP Group (IP pour les télécoms), ARM (processeurs RISCs)
Mentor Graphics, Cadence, Synopsys, …
Des passionnés : open source
130
Les types d’IP
z
Processeurs
z
DSPs
z
Composants de traitement spécialisés
z
z
Contrôleurs de mémoire et de bus
z
z
Cryptographie, traitement d’images, multimédia, …
SDRAM, USB, PCI, UART, AMBA, …
Réseaux
z
ATM, Ethernet
z
IP commerciales : http://www.design-reuse.com/
z
IP libres : http://opencores.org/
131
Exemple d’IP
z
Mega functions d’Altera
132
Exemple d’IP
z
Cœur de processeur libre : LEON
z
Processeur 32 bits compatible SPARC (Scalable Processor Architecture)
conçu à l’ESA (European Spatial Agency)
z
5 étages de pipeline
z
Cache instruction et cache données
z
MAC (multiplier-accumulator) et
division câblées
z
Contrôleur mémoire SRAM ou ROM
z
Périphériques : uarts, timers,
contrôleur d’interruption, port E/S 16 bits
z
Bus AMBA AHB et APB
z
Interface co-processeur
z
Mode veille
z
133
Cœur sous licence « Lesser GPL », testbench vhdl sous licence GPL
http://www.leox.org/
Plan global du cours
z
I. Rappels et introduction
z
II. Méthodologie de conception synchrone
z
III. Microprocesseurs
z
IV. Design re-use
z
IP
z
Exemples de processeurs
z
Bus d’interfaçage
z
Operating System / Real Time Operating System
z
V. Processeur NIOS II
z
VII. Initiation au langage Tcl
134
Spécifications des processeurs
embarqués
z
Développeur (nom, année)
z
Fabricant de FPGA (optimisations)
z
Type de licence (GPL, commerciales,…)
z
Architecture
z
Niveaux de pipeline, nombre de registres
z
MMU Memory Management Unit, FPU Floating Point Unit, caches
z
Multiprocesseur (SMP Symmetric Multiprocessing, AMP Asymmetric
Multiprocessing)
z
Multithreading
135
Spécifications des processeurs
embarqués
z
Performances (Fmax, Dhrystone MIPS/MHz)
z
Dhrystone = Nb itérations par seconde
z
Dhrystone MIPS=DMIPS = Dhrystone/1757
z
1757 = Dhrystone d’une machine de référence à 1 MIPS
z
DMIPS/MHz = DMIPS / Freqprocesseur
z
Ressources
z
Langage de description (VHDL, Verilog)
z
Bus (Amba, Avalon, …)
z
OS/RTOS Real Time Operating System (uLinux,…)
136
Exemples de processeur
z
MicroBlaze (Xilinx)
z
Code source non accessible
z
RISC 32 bits (Harvard)
z
3 ou 5 étages de pipeline, 32 registres, MMU
z
235 MHz, 1.2 Dhrystone MIPS/MHz
z
Non orienté multiprocesseur
z
Bus CoreConnect
137
Exemples de processeur
138
Exemples de processeur
z
MICO32 (Lattice)
z
2006
z
Open source Verilog
z
RISC 32 bits (Harvard)
z
6 étages de pipeline, 32 registres
z
??? Dhrystone MIPS/MHz
z
Non orienté multiprocesseur
z
Bus Wishbone
139
Exemples de processeur
140
Exemples de processeur
z
ARM CORTEX M1
z
Conception ARM/Actel pour FPGA optimisé pour Actel, Xilinx et Altera
z
Licence commerciale
z
RISC 32 bits
z
180 MHz, 0.8 Dhrystone MIPS/MHz
z
Instructions Thumb2
z
3 étages de pipeline
z
Bus Amba
141
Exemples de processeur
142
Exemples de processeur
z
OpenRisc 1200
z
Open source développé par OpenCores
z
Verilog
z
Architecture 32 bits (Harvard)
z
5 étages de pipeline, 32 registres, MMU, caches
z
250 MHz, 1 Dhrystone MIPS/MHz
z
Bus Wishbone
143
Exemples de processeur
144
Exemples de processeur
z
NIOS II (Altera)
z
Code source non accessible
z
RISC 32 bits
z
6 étages de pipeline, 32 registres, MMU
z
200 MHz, 1.16 Dhrystone MIPS/MHz
z
Non orienté multiprocesseur
z
Bus Avalon
145
Plan global du cours
z
I. Rappels et introduction
z
II. Méthodologie de conception synchrone
z
III. Microprocesseurs
z
IV. Design re-use
z
IP
z
Exemples de processeurs
z
Bus d’interfaçage
z
Operating System / Real Time Operating System
z
V. Processeur NIOS II
z
VII. Initiation au langage Tcl
146
Bus d’interfaçage
z
Bus Amba
z
1996 – spécifié par ARM
z
Advanced High-performance Bus (AHB)
z
z
Nouvelle génération (supporte les bursts)
z
Bus haute performance / haute vitesse / 64-128 bits
Advanced System Bus (ASB)
z
z
Bus microcontrôleur 16-32 bits
Advanced Peripheral Bus (APB)
z
Bus pour périphériques basse consommation
147
Bus d’interfaçage
z
Bus Wishbone
z
Développé par Silicores et distribué en open source par OpenCores
z
Interconnection souple :
z
Point à point
z
En chaîne (data flow)
z
Par bus (avec arbitre si multimaitre)
z
Par crossbar switch
148
Bus d’interfaçage
149
Bus d’interfaçage
z
Bus Avalon
z
Bus propriétaire Altera
z
Interfaces :
z
Avalon Memory Mapped Interface (Avalon-MM)
z
z
Avalon Streaming Interface (Avalon-ST)
z
z
Interface classique maitre/esclave
Interface de streaming
Avalon Memory Mapped Tristate
z
Bus tristate pour connexion avec l’extérieur du FPGA
z
Avalon clock
z
Avalon Interrupt
150
Bus d’interfaçage
151
Plan global du cours
z
I. Rappels et introduction
z
II. Méthodologie de conception synchrone
z
III. Microprocesseurs
z
IV. Design re-use
z
IP
z
Exemples de processeurs
z
Bus d’interfaçage
z
Operating System / Real Time Operating System
z
V. Processeur NIOS II
z
VII. Initiation au langage Tcl
152
OS/RTOS pour processeur embarqué
z
uC-Linux (Système Linux sans MMU)
z
z
FreeRTOS (RTOS open source)
z
z
Altera NiosII, Xilinx MicroBlaze
Micriµm µC/OS-II RTOS
z
z
Altera NiosII, Xilinx MicroBlaze, Mico32, Leon
Altera NiosII, Xilinx MicroBlaze, Mico32
eCos (RTOS open source)
z
Leon
153
Plan global du cours
z
I. Rappels et introduction
z
II. Méthodologie de conception synchrone
z
III. Microprocesseurs
z
IV. Design re-use
z
V. Processeur NIOS II
z
VII. Initiation au langage Tcl
154
Processeur NIOS II
z
Présentation Altera
z
Datasheet
155
Processeur NIOS II
Comment utiliser dans la partie software du projet des
données issues des périphériques définis dans la partie
hardware?
z
En utilisant directement les registres qui leur ont été
attribués
z
Noter les adresses des registres attribués sous SoPC Builder
z
Dans le programme, définir des variables qui pointent sur ces
registres
#define switches (volatile char *) 0x01000000
#define leds (volatile char *) 0x01000010
z
Définition en volatile pour éviter des optimisations non voulues de
compilateur
156
Processeur NIOS II
z
En utilisant l’interface Avalon
z
Utiliser les fonctions définies dans altera_avalon_pio_regs.h
z
Par exemple IORD_ALTERA_AVALON_PIO_DATA(base)
et
IOWR_ALTERA_AVALON_PIO_DATA(base, data) permettent de lire ou
d’écrire des données dans le registre base
z
Le registre attribué à un périphérique est noté PERIPHERIQUE_BASE
z
Le nom du périphérique est celui qu’on lui a donné dans
SoPCBuilder
z
Le lien se fait grâce au fichier system.h
157
Processeur NIOS II
z
Exemple :
#include <stdio.h>
#include "altera_avalon_pio_regs.h"
#include "system.h"
int main(void)
{
int led = 0x01;
IOWR_ALTERA_AVALON_PIO_DATA(LEDS_BASE,led);
return 0;
}
Ce programme écrit la valeur 0x01 dans le registre attribué au périphérique
LEDS. Il allume donc une led.
158
Processeur NIOS II
z
Ecrire un programme permettant d’allumer des leds avec
des interrupteurs en utilisant l’interface Avalon
#include <stdio.h>
#include "altera_avalon_pio_regs.h"
#include "system.h"
int main(void)
{
int led = 0x0F;
printf("ca tourne\n");
while(1)
{
led = IORD_ALTERA_AVALON_PIO_DATA(ENTREE_BASE);
IOWR_ALTERA_AVALON_PIO_DATA(SORTIE_BASE,led);
}
return 0;
}
159
Plan global du cours
z
I. Rappels et introduction
z
II. Méthodologie de conception synchrone
z
III. Microprocesseurs
z
IV. Design re-use
z
V. Processeur NIOS II
z
VII. Initiation au langage Tcl
160
Pourquoi utiliser des scripts ?
z
Pour lier des outils de conception entre eux
z
Par exemple, modelsim + quartus
z
Pour automatiser des tâches
z
Pour diminuer la taille mémoire d’un projet
z
Pour faciliter la maintenance d’un projet
z
Pour créer des outils
z
Par exemple, un désassembleur dans modelsim
161
Le langage Tcl/Tk
z
Tcl = Tool Command Langage (Prononcer « Tickle »)
z
Tk = graphical ToolKit : Extension pour la gestion des
interfaces graphiques (Prononcer « Ticket »)
z
Fonctionne sur tous types de machine
z
Langage interprété (pas besoin de le compiler)
z
Langage de script utilisé par Quartus II et Modelsim
z
Editeur dédié dans Quartus
162
Syntaxe Tcl
z
Sensible à la casse (majuscules-minuscules)
z
Syntaxe courante :
z
Le premier mot d’une commande est toujours la commande
z
Commande arg1 arg2 arg3 …
z
Exemple :
set var 3
Affecte à var la valeur 3
z
Pour passer d’une commande à une autre, soit on saute une ligne,
soit on place un ; entre les commandes
z
Les arguments sont séparés par des espaces
z
Les arguments contenant des espaces sont écrits entre "
"argument avec des espaces"
163
Syntaxe Tcl
z
Commentaires :
z
Ils sont précédés de #
# ceci est un commentaire
z
z
Variables
z
Pas besoin de déclarer les variables, elles sont créés quand une
valeur leur est affectée avec la commande set
z
Les variables n’ont pas de type
Substitution de variable
z
Si une variable a pour nom a, sa valeur est $a
z
Exemple :
set var 3
puts "La valeur de la variable est $var"
Affiche dans la console : La valeur de la variable est 3
164
Syntaxe Tcl
z
Substitution de commande
z
L’interprétation d’une ligne se fait en 2 temps
z
Substitution des variables par leur valeur et substitution du code entre [ ]
z
Exécution de la commande
Exemple :
set var 3
puts « La valeur de la variable est [expr $var + $var] »
Affiche dans la console : La valeur de la variable est 6
z
165
Syntaxe Tcl
z
Arithmétique
z
On passe par la commande expr
z
z
z
Tout ce qui suit expr est considéré comme une opération arithmétique
Exemple :
expr 10 + 20
Affiche dans la console : 30
Liste
z
z
z
set a {1 2 3}
donne à a 3 valeurs : a[0] = 1, a[1] = 2, a[2] = 3
set b [llength $a]
b est égal à la longueur de a
set c [lindex $a 2]
c est égal à a[2], soit 3
166
Syntaxe Tcl
z
if-elseif-else
if {condition} {code si vraie} elseif {condition2} {code si vraie} else {code}
z
Boucles while
while {condition} {code à executer}
z
Boucles for
for {code d’initialisation} {condition} {type d’incrémentation} {code}
z
Boucles foreach : permet de boucler sur les éléments d’une
liste
foreach element $liste {code}
167
Exemples
z
Que va-t-il s’afficher sur la console après le lancement de ce
script? (attention à bien mettre des espaces au bon endroit)
for {set i 1} {$i<10} {incr i} {if {$i==1} {set pluriel ""} else {set pluriel "s"}
puts "$i mouton${pluriel}"}
168
Exemples
z
Que va-t-il s’afficher sur la console après le lancement de ce
script?
set l [list 1 2 3 4 5]
foreach nombre $l {puts $nombre*2}
z
Que faut-il modifier pour que ça affiche
2
4
6
8
10
?
169
Paquetages Tcl
z
Un paquetage (package) regroupe plusieurs fonctions proches
z
Exemples de packages dans Quartus
z
z
::quartus::project
pour projets et affectations
z
::quartus::flow
pour compilation et run
z
::quartus::report
pour créer des rapports particuliers
z
::quartus::timing_report
pour les chemins critiques
Pour charger un package : package require ou load_package
package require ::quartus::project
load_package ::quartus::project ou load_package project
170
Commandes utiles
z
Vérifier le répertoire de travail
pwd
z
Changer le répertoire de travail
cd repertoire exemple : cd "D:/Mes documents/projet"
z
Lancer le script contenu dans un fichier
source fichierscript.tcl
z
Ouvrir un projet :
project_open nomduprojet
z
Fermer un projet :
project_close
z
Pour lancer la compilation
execute_flow -compile
171
Exemple de script Tcl
172
Exemple de script Tcl
173
Exercice
z
Que va faire Quartus à l’exécution de ce script?
load_package project
load_package flow
project_close
cd "D:/Mes documents/Enseignement/2011-2012/semestre 2/ETRS 811/vhdl/"
pwd
project_open proj
execute_flow -compile
174
Pour aller plus loin
z
http://www.tcl.tk Site en anglais de la communauté Tcl/Tk
z
http://wiki.tcl.tk/ Site en anglais contenant beaucoup d’informations
z
http://www.linbox.com/ucome.rvt/any/fr/Ressources/Cours/tcl
Cours en français pour programmer en Tcl et Tk
z
http://www.altera.com/support/examples/tcl/tcl.html
Site d’Altera sur les commandes Tcl qui peuvent être utiles. On y
trouve des exemples et la description des package Quartus
175
Téléchargement