Vous êtes sur la page 1sur 135

Enseignante: Mounira TARHOUNI

Maitre Assistante à l’ISIMG


Ingénieur ENIT 2007

1
Objective
 Introduction aux concepts essentiels de la spécification, de la
modélisation, et de la simulation d’un système logique en
VHDL.
 Compréhension de la sémantique de simulation de VHDL.
 Ecriture de modèles de niveau RTL vérifiables formellement
et synthétisable
 …
 Comprendre comment est fait un FPGA et comment il
fonctionne,
 Vous familiariser avec les termes et expressions employées
dans le domaine,
 Vous éclairer sur le flot de conception,
 Vous montrer comment un FPGA s’intègre dans un système
numérique.
 …
2
Introduction

 Langage de description de systèmes matériels


 Il est utilisé pour la modélisation et la synthèse des circuit
électroniques.
Langage proche
 VERILOG: concurrent et plus ancien. La syntaxe est proche de
celle du langage C.
 VHDL-AMS : langage de modélisation mixte numérique-
analogique IEEE.1076.1-1999. Il est entièrement compatible aves
VHDL en terme de modélisation.

3
Introduction: historique
 1980: le département de défense américain lance un appel
d’offre pour un langage qui permettrait de décrire tous les
systèmes électroniques utilisés. Motivation affichée:
réutilisabilité et réduction des coûts de conception.
 1983 trois compagnies (Intermetics, IBM, Texas
Instruments) commencent le développement.
 1985: première version officielle de VHDL (version 7.2).
 1986: VHDL est donné à IEEE pour en faire un standard.
 1987: Standard IEEE 1076-1987.
 1993: Standard IEEE 1076-1993.
 1999: Standard IEEE 1076.6-1999
4
Introduction: motivations
 Offre un cycle de conception plus court
 Permet de créer des bibliothèques de composants
réutilisables
 Chacun des composants peut être validé
indépendamment par simulation.
 Une grande variété d’outils sont disponibles
 Description portable sur différente plateforme
matérielle (carte FPGA, ASIC…)

5
Introduction : motivations
 Deux familles de circuits programmables: les plus
célèbres sont:
 Xilinx (XC4000, SPARTAN, VIRTEX, VIRTEXIII,
ZEDBOARD, Zybo, ZYNQ 702.)
 Altera FLEX 8000, APEX 20K, Stratix, Stratix III)
 Le progrès de ces technologies permet de faires des
composants toujours plus rapides et à plus hautes
intégration, ce qui permet de programmer des
applications importantes

6
Exemples des cartes FPGA

Un FPGA Xilinx de type Virtex 5

Un FPGA Xilinx de type


Spartan-3 Un FPGA Xilinx de type ZYNQ 702 7
Outils CAO
Les fabricants des FPGAs proposent
des outils de CAO, pour configurer
leurs circuits, exemple:
Xilinx: Xilinx ISE, VIVADO, …
Altera:Quartus II, Max+II
Avec ces outils on peut réaliser tout
le flot de conception allant de la
synthèse à la configuration.

8
Introduction
 VHDL : ne vise pas une exécution, il est utilisé pour :
 la simulation
 la synthèse

 la spécification

 la documentation

 Les avantages de VHDL :


 indépendant du constructeur Portabilité
 indépendant de la technologie
 indépendant de la démarche
 indépendant du niveau de conception

9
Entity/Architecture: syntaxe

10
Entité
 L’entité décrit la connectique du composant avec son
environnement, au moyen de ports de
communication.
 Les informations qu’elle fourni sont :
 le nombre de ports,
 leur nom,
 leur type,
 leur direction (entrée, sortie ou entrée-sortie),
 et leur largeur.
 Elle permet également de définir des constantes, ainsi
que des paramètres pour les modèles génériques

11
Entité

12
L’architecture
 L’architecture décrit comment les sorties d’un
composant sont élaborées à partir de ses entrées.
 Bien entendu, l’entité associée devra avoir été
préalablement définie.

13
Exemple

14
 Le VHDL est un langage à instruction concurrente:
 Les instructions sont évaluées en même temps
 L’ordre dans lequel elles sont écrites n’a aucune
importance
• Le langage VHDL ne fait pas distinction entre
majuscules et minuscules
• En langage VHDL les commentaires sont précédés
par «--» et s’arrête au retour à la ligne.

15
Objets en VHDL
 5 sortes d’objets
 Les ports d’entrée/sortie (PORT)
 Les signaux (SIGNAL)
 Les constantes (CONSTANT)
 Les variables (VARIABLE)
 Les paramètres (GENERIC)
 Les objets représentent une valeur
 Ils doivent être typés

16
Types des objets en VHDL
 Bit
 Boolean
 Integer
 Std_logic dans la bibliothèque std_logic_1164
 Std_logic_vector
 Signed, Unsigned dans la bibliothèque numeric_std
 Natural : sous type de integer limité aux nombres ≥ 0
 Positif : sous type de integer limité aux nombres > 0
 Character, string
 …….

17
TYPES ENTIERS
 Le type entier integer prédéfini dans le paquetage
standard STD permet de définir des nombres signés
sur 32 bits entre -2-31 et 231 - 1 .
 Un sous type subtype permet de déclarer un type
héritant des propriétés du type père.
 Il existe 2 "sous types" subtype associés à INTEGER :
les entiers naturels et les entiers positifs. Leur
déclaration dans le paquetage STD est la suivante :

18
TYPES ENUMERE
 Un type énuméré est un type défini par une énumération exhaustive :

 L'ordre de déclaration est important. Lors de l'initialisation d'un signal


de type énuméré T, le signal prend la valeur T'LEFT. Par exemple un
signal de type COULEURS sera ROUGE en début de simulation.
 Dans le paquetage STANDARD de la bibliothèque STD, plusieurs types
énumérés sont définis :

19
Type composite
 Le type composite est utilisé pour définir des
collections de valeurs.
 Le type est nommé "tableau" si les valeurs d’une
collection sont du même type, le type est nommé
"record" si les valeurs d’une collection sont de type
hétérogène.
 Type tableau: exemple
 type MY_WORD is array (0 to 31) of BIT ;
 type MEMORY is array (INTEGER range <>) of
MY_WORD ;
20
Type composite
 Type record :Exemple
 type DATE is record
DAY: INTEGER range 1 to 31;
MONTH: MONTH_NAME;
YEAR: INTEGER range 0 to 4000;
end record;

21
Constant , Signal, Variable
 Constant
 Syntaxe:
constant NOM_des Objets:type:={valeur initiale};
 Exemple:
constant PI:real:=3.1416;
constant Bits_Addr:integer:=12;
 Signal
 Syntaxe:
signal NOM_des Objets:type:={valeur initiale};
 Exemple:
signal:bit_vector(7 downto 0):=‘‘00000000 ’’;
signal:compteur:integer:=0;
signal S,E1,E2:std_logic:=‘0’ 22
Constant , Signal, Variable
Variable
Syntaxe:
variable :NOM_des Objets:type:={valeur initiale};
Exemple:
variable :bit_vector(7 downto 0):=‘‘00000000 ’’;
variable :compteur:integer:=0;
variable S,E1,E2:std_logic;
 Affectation :
S:=E1 and E2; (exemple avec des portes logiques).

23
Les identificateurs
 Les objets manipulés par le langage doivent tous porter un
nom. Aussi, chacun possède un identificateur unique qui
permet de le désigner sans la moindre ambiguïté. Ce
dernier obéit à certaines règles :
 Suite de lettres, chiffres et underscore "_«
 Le premier caractère doit être une lettre
 Il ne peut y avoir 2 « _ » de suite
 L’identificateur ne peut se terminer par « _ »
 Il ne doit pas dépasser la taille d’une ligne
 Aucune distinction n’est faite entre les lettres majuscules et
les lettres minuscules.
 Il doit être différent des mots réservés du langage.

24
Mots réservés
 Un certain nombre de mots clés sont utilisés par VHDL
pour sa syntaxe propre . On dit que ces mots sont
réservés par le langage et ils ne peuvent pas être utilisés
pour autre chose.
 Heureusement, la plupart des éditeurs de textes qui
supportent le VHDL identifient automatiquement les mots
clés et les affichent avec une couleur différente, ou en
caractères gras.

25
Priorité des opérateurs

26
27
Exemple d’application

- Donner la table de vérité de multiplexeur 4 vers 1.


- Donner l’entité de ce multiplexeur, utiliser une entrée de type vecteur.
- Réaliser le programme VHDL
28
29
Opérateurs
 Opérateurs logiques (sur booléens, bits et dérivés)

Operateurs Description Résultat


not Complément logique Même types
and Et logique Même types
or Ou logique Même types
nand Non-et logique Même types
nor Non–ou logique Même types
xor Ou exclusif Même types
xnor Non-ou exclusif Même types

30
Opérateurs
 Opérateurs relationnels (sur types scalaires ou dérivés
(signed, unsigned))

Operateurs Description Résultat


= Egalité Booléen
/= Inégalité (différent) Booléen
< Inférieur Booléen
<= Inférieur ou égal Booléen
> Supérieur Booléen
>= Supérieur ou égal Booléen

31
Opérateurs
Opérateurs relationnels: exemples

32
Opérateurs
 Opérateurs bits (sur vecteurs de bits et types numériques)
opérateur Description Résultat
& Concaténation Même type, plus large
 Opérateurs arithmétiques (sur types numériques : entiers,
signés, non signés, flottant)
Opérateur Description
+ Addition
- Soustraction
abs Valeur absolue
*,** Multiplication,
puissance
/ Division
mod modulo
rem reste 33
Opérateurs
 A mod B = A – B * N  A rem B = A – (A/B) * B
 7 mod 4 -- has value 3 .............................................
 -7 mod 4 -- has value –3 .............................................
 7 mod (-4) -- has value –1 .............................................
 -7 mod (-4) -- has value –3
.............................................
............................................. .............................................
............................................. .............................................
............................................. .............................................
............................................. .............................................
34
Opérateurs
 Opérateurs de décalage (sur tableaux de bits )

sll Shift left logical fill value is ‘0’


srl Shift right logical fill value is ‘0’
sla Shift left arithmetic fill value is right-hand bit

sra Shift right arithmetic fill value is left-hand bit

rol Rotate left logical


ror Rotate right logical

35
Opérateurs
“1100” sll 1 yields “1000” ……………………………………………
“1100” srl 2 yields “0011” …………………………………………
“1100” sla 1 yields “1000” …………………………………………
 “1100” sra 2 yields “1111” …………………………………………
“1100” rol 1 yields “1001” …………………………………………
“1100” ror 2 yields “0011” …………………………………………
………………………………………… …………………………………………
………………………………………… …………………………………………
………………………………………… …………………………………………
………………………………………… …………………………………………
………………………………………… …………………………………………
………………………………………… …………………………………………
…………………………………………
36
Type std_logic_vector
 L’accès aux éléments d’un vecteur de bits peut se faire
de différentes façons en VHDL :
 Accès direct : a(7) <= b(2);
 Accès par tranche : a(7 downto 5) <= b(2 downto 0);
 Accès par agrégat :
 Notation positionnelle :
a(1 to 3) <= (‘0’,’1’,’1’); b <=(‘1’,’1’,others=>’0’);
 Notation avec nommage :
a(4 downto 0) <= (3=>’1’,1=>’1’,others=>’0’);

37
38
Simulation

39
Exemple 1: porte et
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
40
Exemple 2: demi_add
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
41
Descriptions possibles en VHDL
 Flot de données : c’est-à-dire réalisée à partir d’équations
booléennes.
 On fait complètement abstraction de la réalité physique du composant,
pour s’attacher à ses signaux d’entrée et aux transformations qu’elles
subissent en vue d’obtenir ses signaux de sortie.
 Les opérations effectuées sont généralement construites à partir
d’opérateurs arithmétiques et logiques.

 Comportementale: sans référence à des structures ou


des équations

42
Descriptions possibles en VHDL
 Structurelle: c’est-à-dire réalisée à partir de composants
prédéfinis.

 Mixte :dans le but de permettre au concepteur d’exprimer son idée de la


façon la plus simple, VHDL permet de mélanger tous les types de description
que nous venons de voir dans un même modèle.

43
Exemple de description Flot de données

44
Exemple de description Flot de données
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
……………………………………………………………………………
45
Exemple de description Flot de données
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
……………………………………………………………………………

46
Description Structurelle
 La description structurelle d'un circuit complexe en vhdl
présente de nombreux avantages :
 Une architecture hiérarchique compréhensible : il est plus
simple de séparer un circuit en un ensemble de blocs plus
petits, ayant des fonctions bien identifiées. Ces blocs
pourront alors être décrits sous forme comportementale,
ou bien à leur tour être séparés en blocs encore plus
simples.
 Une synthèse logique efficace : la synthèse est un processus
lent (en terme de temps de calcul). Plus un bloc est gros et
complexe, plus sa synthèse prendra du temps. Il vaut donc
mieux travailler sur des blocs plus petits, plus simples à
synthétiser, et rassembler le tout à la fin.

47
Description Structurelle
 Dans ce mode de description, le concepteur adopte une approche de type
assemblage : il assemble des sous-modules pour construire un nouveau
module. Les sous-composants doivent avoir déjà été décrits, puis compilés et
rangés dans une bibliothèque.
 La netlist ainsi obtenue donne une vue proche de celle d’un schéma
électrique, avec des composants reliés par des signaux.
 Déclaration d’un composant: syntaxe
 Le mot clé component sert à déclarer le prototype d'interconnexion. La syntaxe
est presque identique à celle de l'entité :

 Instanciation d’un composant: syntaxe

48
Description Structurelle : exemple
 Dans cet exemple, 2 instances de
composant "and2" sont appelées pour créer
une porte ET à 3 entrées.

 L'association des ports du composants aux


signaux de l'instance se fait à l'aide de la
clause port map.

 La syntaxe des associations est soit


par nom où chaque broche du composant
est associée à un signal : cas de inst_1

 positionnelle où l'ordre des signaux


correspond à l'ordre des broches : cas de
1 inst_2

49
Exemple de description structurelle
 Utilisez une description de type structurelle pour réaliser
l’additionneur de 1 bit dont le schéma bloc est illustré par la
figure ci-dessous :

……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
………………………………………………………………………….
50
Description comportementale
 On s’attache à décrire le fonctionnement d’un module.
 Le concepteur ne se préoccupe absolument pas de la réalisation
physique de son circuit. La description comportementale est plus
abstraite que la description structurelle et fait appel à des concepts
proches de la programmation informatique évoluée.
A ce titre, pour un circuit particulier, il peut exister un grand nombre
de descriptions comportementales (comportementale et séquentielle,
comportementale et concurrente)

51
Affectation conditionnelle
L’interconnexion est soumise à des conditions.
Syntaxe:

Exemple

52
Affectation Sélective
 Suivant la valeur d’une expression , l’interconnexion sera effectué.
Syntaxe:

Exemple
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
…………………........................................................................................
53
Les instructions séquentielle
Elles sont utilisées dans les process ou les corps de sous-programmes
 Elles permettent des descriptions comportementales

54
Process
 Un process est une partie de la description d’un circuit
dans laquelle les instructions sont exécutées
séquentiellement c’est-à-dire les unes à la suite des
autres
 Syntaxe:

55
Process
 Un process est un bloc de commande dans un circuit
dans lequel les instructions sont exécutées
séquentiellement c’est-à-dire les unes à la suite des
autres.
 L’exécution d’un process est déclenchée par un ou des
changements d’états de signaux logiques
 Le nom de ces signaux est défini dans la liste de
sensibilité lors de la déclaration du process
 Le nom de process (Label) est facultatif, mais il peut
être très utiles pour repérer un process parmi d’autres
lors de phases de simulations
56
Exemples de description comportementale
 Utilisez une description de type comportementale et
concurrente pour réaliser l’additionneur 1 bit.

 Utilisez une description de type comportementale et


séquentielle pour réaliser l’additionneur 1 bit.

 Utilisez une description de type mixte pour réaliser


l’additionneur 1 bit

57
Exemples de description comportementale
 Utilisez une description de type comportementale et
concurrente pour réaliser un multiplexeurs 4 vers 1.

 Utilisez une description de type comportementale et


séquentielle pour réaliser un multiplexeurs 4 vers 1.

58
Exemple: bascule D

59
Exemple : bascule D
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
………………………

60
Library
 IEEE.STD_LOGIC_1164.all
 Permet de définir les types, opérateurs et fonctions de
conversion de base
 IEEE.numeric_std.all
 Définit les types signed et unsigned. Un vecteur
représente un nombre signé ou non signé représenté en
C2
 Permet d’utiliser les opérateurs arithmétiques + et * sur
des vecteurs de bits

61
Exemples des Conversions utilisant
le package Numeric_Std

https://www.nandland.com/vhdl/tips/tip-convert-numeric-std-logic-
vector-to-integer.html 62
exemple
 Add 32 bit
 ……………….

63
64
La généricité
 C’est un moyen de transmettre une information à un
bloc :
 Vu de l’extérieur du bloc, la généricité == paramètre
 Vu de l’intérieur du bloc, paramètres == constantes
 Intérêts :
 description de composants généraux :
 additionneur à N entrées,

 registre N bits

 permettre la réutilisation des composants :


 description des bibliothèques par des modèles génériques
65
La généricité

66
67
Exemple d’application

68
PARTIE B

Les machines à états finis (FSM)

69
Les machines à états finis
 FSM : Finite State Machine
 Outil pour représenter un système séquentiel
 On définit différents états dans lesquels peut être le
système
 Le passage d’un état à un autre s’effectue si une
condition sur les entrées est remplie
 Les sorties du système dépendent de l’état
courant(machine de Moore) ou de l’état courant et
des entrées(machine de Mealy)
 Dans le cas d’une FSM synchrone, la valeur des
entrées est analysée sur front d’horloge
70
Exemple Détecteur de séquences

71
Exemple Détecteur de séquences

72
Exemple Détecteur de séquences

73
Exemple Détecteur de séquences

74
Exemple Détecteur de séquences

75
Exemple Détecteur de séquences

76
Machine de Moore.
 Les sorties d’une machine
de Moore dépendent de
l’état présent (synchrones,
elles changent sur un front
d’horloge).
 L’état futur est calculé à
partir des entrées et de
l’état présent.

77
Machine de Mealy
 L’état futur est calculé à partir des
entrées et de l’état présent.
 Les sorties d’une machine de Mealy
dépendent de l’état présent et des
entrées.
 Mémorisation synchrone des états
(c-à-d sur un front d’horloge).
 La sortie dépend directement de
l’entrée et ceci indépendamment de
l’horloge (clk)
⇒ Sortie asynchrone.
 Nombre d’états plus réduit que pour
une machine de Moore.
 Il est possible de resynchroniser la
sortie au besoin en ajoutant des
bascules D.
78
Machine de Mealy

79
Machine de Mealy

80
Machine de Moore

81
Machine de Moore

82
Machine de Moore

83
Machine de Moore
 Description avec 2 process
 Les 2 process combinatoires possèdent des listes de
sensibilité « compatibles », ils peuvent donc être regroupés en
un seul process afin d’abréger l’écriture
 ⇒ 2 process = 1 process séquentiel + 1 process combinatoire
 Description avec 1 process
 Description la plus compacte en utilisant une variable pour
l’état (en lieu et place des 2 signaux).
 Cependant perte de lisibilité lors de l’écriture. Alors que cette
description n’apporte rien en terme de résultat de synthèse
par rapport à une description 2 process.
 ⇒ À éviter (pt de vue personnel cependant …).

84
Exemple d’application 2
 Identifier les variables d’états: les sorties des éléments
à mémoire;
 Ecrire les équations d’états et les équations de sortie.
 Dresser le tableau d’états
 Dessiner le diagramme d’états
 Faire la description VHDL

85
Exemple d’application 2

86
PARTIE C

FPGA ( Field-Programmable Gate Array)

87
Origine
 En 1984, Xilinx tente d’apporter une réponse en
proposant le premier FPGA.
 FPGA : Field Programmable Gate Array
 Les premiers FPGA utilise une technologie CMOS et
des cellules à base de LUT (SRAM) disposées en
matrice.
 Un design sera décomposé en cellules et placé sur la
matrice.
 Cette structure simple est encore utilisée aujourd’hui.

88
Que sont les FPGA?
 Field-Programmable Gate Array - réseau de portes
programmables
 Ce sont des circuits intégrés programmables (ou plutôt
reconfigurables) plusieurs fois et de plus en plus
dynamiquement!
 Ils permettent
 Soit d’émuler un circuit afin de le valider avant la gravure
silicium
 Soit d’implanter un système complet, System on Chip (SoC)
En utilisant la reconfiguration dynamique, ce système peut
devenir adaptatif en fonction des besoins (accélération de
fonctionnalités choisies).

89
Pourquoi sont-ils si intéressants?
 Complexité
 Les PLD sont programmables, mais trop simples.
 Les ASIC sont très denses, mais figés.
Les FPGA sont un intermédiaire.
 Programmation
 Les CPU sont programmables, mais mal adaptés au
calcul répétitif sur de gros volumes de données.
 Les ASIC sont adaptés à ce problème, mais non
programmables.
 Les FPGA sont un intermédiaire.

90
A quoi peuvent-ils servir?
 Utilisations
 Milieu des années 80
 Machines à états de complexité moyenne
 Traitement de données simple
 Début des années 90
 Télécommunication
 Réseaux
 Fin des années 90
 Applications industrielles (traitement d’image, robotique, contrôle,…)
 Applications personnelles (multimédia, périphériques PC,…)
 Applications automobiles (automotive)
 Début des années 2000
 DSP
 Systèmes sur une puce programmables

91
Circuits intégrés :classification
 Circuits standards
Exp: processeur, mémoire, oscillateur,
amplificateur ..
 ASICs : Application-Specific Integrated Circuit

 ASICs semi-spécifiques: Pour un ASIC semi-


spécifique, une partie ou l’ensemble des étapes de
fabrication sont réalisés avant la conception.
- Circuits programmables
(CPLD, EPLAD, FPGA, …)
- Matrices prediffusées (gate
array, sea of gates )
92
Circuits intégrés :classification

 ASICs spécifiques: l’ensemble des étapes de fabrication sont


réalisés après la conception.
- Circuits sur mesure (« full custom »)
- Circuits pré-caractérisés (« cell base »,
« standard cell »)
- Système sur puce (SOC, « system on chip »
construits par assemblage de composants
« virtuels » (IP)

Circuits hybrides, MCM (Multi Chip Module)

Micro-systèmes (capteurs, traitement, actionneur) 93


5. ASIC : Application Specific Integrated Circuit

 Classification des ASICs

ASIC

ASIC semi- ASIC


spécifique spécifique

Programmbale Pré-diffusé Pré-caractérisé Sur mesure Système sur


‘FPGA’ "Gate Array" "Standard Cell" "Full Custum" puce "SoC"

94
ASIC Application Specific Integrated
PLD Programmable Logic Device
Circuits

Choix du fondeur Choix du circuit

Conception du circuit (full- Programmation du circuit


custom - bibliothèques) (logiciel + interface circuit)
Très grand niveau
Intégration limitée
d’intégration
Fabrication à très grand Implémentation nombre
nombre d’exemplaire d’exemplaires limité

 Un circuit dédié à une  Un circuit programmé pour une


application application
 Choix de la technologie  Technologie figée mais :
 Maximum de performances  Facilité de programmation 95
Conception et fabrication de
circuits intégrés

96
Evolution des techniques de conception

97
4. Evolution des systèmes microélectroniques
Matériels standards ou spécifiques ??

98
5. ASIC : Application Specific Integrated Circuit
 Comparaison des ASICs

Temps de conception

Circuits
Circuits Circuits Pré- Circuits sur
Programmable
Prédiffusés caractérisés mesure
s

Complexité et niveau d’intégration

99
FPGA :Time to market
 Temps de mise sur le marché :
 la technologie FPGA représente une solution souple
offrant des capacités de prototypage rapide. Ainsi, vous
pouvez tester une idée ou un concept, puis le vérifier
sur du matériel sans avoir à passer par le long
processus de fabrication d'un ASIC personnalisé.
vous pourrez apporter les éventuelles modifications
nécessaires à votre FPGA.

100
6. ASIC Semi Spécifique
6.1. circuits logiques programmables
Composants standards programmables une seule fois
(fusible) ou reprogrammables (reconfiguration).
Principe des architectures :
 Réalisation de fonctions booléennes sous forme d’une
limitée de monômes
Exp:
- PAL (Programmable Array Logic, réseau logique programmable),
- PLD, (programmable logic device, circuit logique programmable)
- EPLD (erasable programmable logic device, circuit logique
programmable et effaçable)…
 Réalisation d’un réseau de cellules
Exp: FPGA (field-programmable gate array, réseau de portes
programmables ) 101
6. ASIC Semi Spécifique
6.1. circuits logiques programmables
 Technologies de programmation:
 Fusibles en métal pour les premiers circuits
programmables réalisés avec des technologies
bipolaires,
 Anti-fusibles (capacité MOS),
 Transistors MOS à grille flottante (EPLD),
 Mémoire RAM statique (FPGA-SRAM ou flash),
Outils de conception:
 programmation automatique à partir d’un schéma
 programmation automatique à partir d’un fichier de
description,
102
ASIC Semi Spécifique: technologie de conception

Circuits logiques programmables


(Programmbales Logic Device)

PLD EPLD-CPLD FPGA

UVPROM « Ultra
PAL « programmable
Violet Programmable SRAM
array logic »
Read Only Memory »

GAL : « Generic Array


EECMOS Antifuse
logic »

Flash
103
ASIC Semi Spécifique: Les principaux fabricants

104
LES FPGA
 Un circuit logique programmable est un circuit intégré
comportant un très grand nombre de ressources logiques
(des fonctions élémentaires combinatoires et
séquentielles) dont la plupart des interconnexions sont
laissées ouvertes
 Le concepteur conçoit la fonction globale du circuit à
l’aide d’un langage de haut niveau (HDL : Hardware
Description Langage).
Un outil de synthèse convertit le code HDL en description
normalisée de blocs logiques et d’interconnexions

Un outil de configuration réalise les connexions


matérielles
Le circuit est reconfigurable. 105
Structure d’un FPGA - Xilinx

Les FPGA sont un rassemblement et une combinaison de


différents blocs :
 d’entrées/sorties (IOB - Input Output Blocks),
 de routage (PSM - Programmable Switch Matrix),
 de logique programmable (CLB - Configurable Logic Blocks)
 et d’autres blocs plus spécifiques. 106
les cellules logiques de Xilinx

107
les cellules logiques de Xilinx

108
les cellules logiques de Xilinx
 Quatre slices forment un CLB (Configurable Logic
Block).

Cette hiérarchie reflète la hiérarchie du routage :


On communique plus vite à l’intérieur d’un LC qu’entre deux LC distincts.
On communique plus vite à l’intérieur d’un slice qu’entre deux slices distincts.
 On communique plus vite à l’intérieur d’un CLB qu’entre deux CLB distincts.
109
Mémoire intégrée
 Les opérateurs de calcul travaillent sur des gros
volumes de données qu’il faut pouvoir stocker.
 Au départ le stockage était externe, mais le temps
d’accès a commencé à devenir pénalisant au fur et à
mesure que les performances des FPGA ont augmenté.
 Pour réduire ce temps, les constructeurs ont ajouté des
blocs de mémoire interne.
 Ces blocs créent une hiérarchie mémoire :
 Mémoire externe grande et lente d’accès.
 Mémoire interne petite mais très rapide.

110
Mémoire intégrée (embedded RAM).

111
LUT (look up table)
 La LUT peut être programmée pour réaliser n’importe qu’elle fonction
logique à 3 entrées.
 Le verrou/bascule peut être programmé pour réaliser n’importe quel
latch (verrou) ou flip-flop (bascule), avec ou sans
 set ou reset
 enable ou disable
 Le multiplexeur permet de stocker la sortie de la LUT ou une entrée du
PLB.

112
LUT (look up table)

113
LUT (look up table)
 Les LUT sont passées à 6 entrées. On peut les utiliser
en une fonction combinatoire à 6 entrées ou en 2
fonctions combinatoires indépendantes à 5 entrées.

114
Technologie à LUT
 Technologie à masques
 Technologie à PROM
 Technologie à EPROM (UV-EPROM)
 Technologie à EEPROM
 Technologie à FLASH
 Technologie à SRAM

115
Ressources d’horloges
 Il y a beaucoup plus de ressources d’horloge dans le FPGA avec des horloges
globales et régionales. Il n’y a quasiment plus de restriction sur le nombre
d’horloges.
Des MMCM (Mixed-Mode Clock Manager) : les
MMCM permettent la génération de signaux d’horloge.
Un seul oscillateur génère plusieurs signaux avec des
fréquences multiples ou sous multiples de la fréquence
d’entrée
Les Phase Locked Loop (PLL) sont conçues pour
travailler avec les IO phaser pour contrôler
de la mémoire.
Clock wizard
Par programmation
...
116
Input/Ouput block (IOB)
 Les IOB peuvent être de deux
types :
 Les IOB « high range »
supportent des tensions jusqu’à
3.3 V
 Les IOB « high performance »
supportent les standards jusqu’à
1.8 V
 Les broches ont des ressources
spécifiques (IO PLL et IO
phaser shift) pour s’interfacer
avec des mémoires de type
DDR3
117
Bloc DSP
 Pour accélérer les applications de traitement du signal,
certains FPGA embarquent des blocs DSP, également
appelés cellules MAC (Multiply Accumulate).
 Ils contiennent des opérateurs arithmétiques et
séquentiels (addition, soustraction, multiplication,
registre, …) câblés donc plus rapide que s’ils étaient
programmés dans des cellules du FPGA.

118
Flot de conception

119
Flot de conception

120
Synthèse Netlist

121
Assignement des pins

122
Mapping

123
Placement/Routage

124
Programmation

125
Programmation conjointe: le
codesign
 HW exécute les algorithmes les plus compliqués / longs
 Bénéficie des avantages de parallélisme HW
 Maintient une haute fréquence de traitement
 SW contrôle et met à jour les éléments de ces algorithmes
 Facilité de gérer les entrées compliquées (multiples variables, accès
mémoires)
 Nécessitant une fréquence moins importante que le HW

126
Notion d’IP (Intellectual Property)
Hard Ip
Notion d’IP (Intellectual Property)
 Hard IP exemples : multimédias
http://www.design-reuse.com/sip/multimedia-video-image-
audio-c-12/
camerIC™ 2MP-18MP - Camera Processor IP Core up to
18 Megapixels pour telephonie, laptop, apparels photo
..etc

Page  128
Notion d’IP (Intellectual Property)
 Soft IP , exemples:
AES Cryptography algorithms, optimized for ARM platforms:
http://www.design-reuse.com/hds/

Autres :
Digital Signal Processing
Communications and Networking
High Speed Interfaces
Mixed Signal
RF
Multimedia

Page  129
Notion d’IP (Intellectual Property)
 Amelioration de la productivité des Ips,
IP plus flexibles et mieux optimisables => conversion des IP hard
to IP soft + former une base de donnés IP importantes..
=> TSMC Soft-IP Alliance Program

Sources:
http://www.semiwiki.com/forum/showwiki.php?title=TSMC:IP+Alliance+Wiki
http://www.tsmc.com/
Notion d’IP (Intellectual Property)
 On a pu, par conséquence, rapidement développer des
bibliothèques de fonctionnalités comme une interface USB,
un contrôleur MAC Ethernet que l'on appelle blocs IP
(Intellectual Property).

 On peut les acheter ou bien utiliser des blocs IP libres


(comme du logiciel libre) dont le site phare de référence est
http://www.opencores.org.

 On peut ainsi voir la conception d'un système numérique


complexe comme un assemblage de blocs IP.

Page  131
mustapha.hamdi@insat.rnu.tn
L’architecture de Zynq-7020

132
Architecture de AP SoC Zynq-7000

133
Les éléments logiques constitutifs
de la carte Z-7020

134
Choix optimal de la stratégie
mul −processeurs

135

Vous aimerez peut-être aussi