Site affiché en Français Voir le site en English (USA) Voir le site en English (GB)
Vous êtes ici: ac6 > ac6-formation > FPGAs & ASICs > Le langage VHDL
Télécharger le catalogue
Télécharger le catalogue
Télécharger la page
Télécharger la page
Ecrivez nous
Ecrivez nous
Version imprimable
Version imprimable
 

V1 Le langage VHDL

Programmation de FPGAs en VHDL


formateur
Objectifs
bullet_jaune_1 connaître les différentes méthodologie de modélisation des composants
bullet_jaune_1 savoir exploiter les possibilités du langage
bullet_jaune_1 modéliser des circuits combinatoires
bullet_jaune_1 mettre en oeuvre des machines d'état
bullet_jaune_1 réutiliser des composants
bullet_jaune_1 savoir écrire en VHDL pour la simulation
bullet_jaune_1 déterminer les chemins critiques et vérifier le respect des timings
Les exercices de ce cours peuvent être réalisés au choix sur plateforme à base de FPGA Lattice ou Actel
Matériel
bullet_jaune_2 Un PC par binôme
bullet_jaune_2 Exercices sur plateforme Lattice:
bullet_jaune_3 Environnement de développement Diamond de Lattice
bullet_jaune_3 Synplify PRO pour la synthèse, Active-HDL pour la simulation
bullet_jaune_3 Carte à base de FPGA Lattice ECP2 ou MachXO
bullet_jaune_2 Exercices sur plateforme Actel:
bullet_jaune_3 Environnement de développement Libero d'Actel
bullet_jaune_3 Synplify PRO pour la synthèse, ModelSim pour la simulation
bullet_jaune_3 Carte à base de FPGA Actel Fusion
Pré-requis
bullet_jaune_2 Connaissances en technologie numérique
bullet_jaune_2 Notions d'algèbre de Boole
bullet_jaune_2 Quelques notions de programmation (quel que soit le langage) sont souhaitables.

Plan
Premier jour
De la porte logique au FPGA
bullet_jaune_2 Structure d'un Circuit Intégré
bullet_jaune_3 SSI (small scale integration), logique TTL
bullet_jaune_3 MSI (medium scale integration), PALs, GALs, PLDs
bullet_jaune_3 LSI (large scale integration), CPLDs
bullet_jaune_3 VLSI (very large scale integration), ASICs, ASSPs, FPGAs
bullet_jaune_2 Evolution des architectures logiques
bullet_jaune_2 Contraintes des technologies
bullet_jaune_3 Méthode d'interconnection (SRAM, Fuse, AntiFuse, Flash)
bullet_jaune_3 Réseaux d'horloges
bullet_jaune_3 Type d'éléments logiques
bullet_jaune_2 Problèmes de timings
Les apports du VHDL
bullet_jaune_2 Intérêt d'une programmation en VHDL
bullet_jaune_2 Différentes étapes de la conception
bullet_jaune_3 saisie
bullet_jaune_3 simulation
bullet_jaune_3 synthèse
bullet_jaune_3 adaptation à la technologie (mapping)
bullet_jaune_3 placement et routage
bullet_jaune_3 analyse des timings
bullet_jaune_3 génération des binaires (bitstream)
Concepts de base
bullet_jaune_2 Entités et architectures
bullet_jaune_2 Ports, signaux et variables
bullet_jaune_3 types de données
bullet_jaune_3 attributs
bullet_jaune_2 Différents styles d'architecture
bullet_jaune_2 Environnements de simulation (Test Bench)
Exercice : prise en main des outils de conception et découverte du flot de développement à l'aide d'exemples élémentaires
Deuxième jour
Logique combinatoire en VHDL
bullet_jaune_2 Utilisation des librairies IEEE
bullet_jaune_2 Outils de modélisation de composants
bullet_jaune_2 Traitements concurrents et séquentiels
bullet_jaune_3 affectations
bullet_jaune_3 processus
bullet_jaune_3 traitements conditionnels
bullet_jaune_2 Opérateurs relationnels
bullet_jaune_2 Opérateurs arithmétiques
bullet_jaune_2 Surcharge des opérateurs
bullet_jaune_2 Instantiation de composants
Exercice : conception d'une logique de décodage d'adresses
Notion de bancs de test (TestBench)
bullet_jaune_2 Création d'un package
bullet_jaune_2 Génération des vecteurs de test
bullet_jaune_3 intégration des vecteurs dans le source du bench
bullet_jaune_3 lecture depuis un fichier
bullet_jaune_3 stocker les résultats pour analyse ultérieure
Exercice : test du décodeur d'adresses
Troisième jour
La logique séquentielle
bullet_jaune_2 Rappels sur les bascules
bullet_jaune_3 problème des états métastables
bullet_jaune_2 Gestion du reset
bullet_jaune_3 prise en compte des reset/presets asynchrones
bullet_jaune_2 Buffers trois-états
bullet_jaune_3 interface avec des bus
Exercice : conception d'une FIFO
Le test des modèles synchrones
bullet_jaune_2 Vérification des timings
bullet_jaune_3 lors de la simultaion
bullet_jaune_3 tests de faisabilité du placement routage
bullet_jaune_3 simulation après placement routage
Exercice : vérification de la FIFO à vitesse élevée
Fonctions et procédures
bullet_jaune_2 Passage de paramètres à des fonctions
bullet_jaune_2 Surcharge des fonctions
bullet_jaune_2 Différences entre procédures et fonctions
Exercice : conception et test d'un arbitrage de bus
Quatrième jour
Les machines d'états
bullet_jaune_2 Rappels sur les machines de Mealy et de Moore
bullet_jaune_3 représentations graphique
bullet_jaune_3 implémentation
bullet_jaune_3 traduction en VHDL
bullet_jaune_2 Principes de conception d'une FSM à 2 process
bullet_jaune_2 Reset d'une machine d'états
bullet_jaune_2 Utilisation de la simulation pour vérifier la conception
bullet_jaune_2 Optimisation de l'utilisation des ressources
Exercice : conception d'une interface SRAM burst
Optimisation de la conception
bullet_jaune_2 Optimisation de l'utilisation des ressources
bullet_jaune_2 Optimisation des traitements
bullet_jaune_3 temps de traitement
bullet_jaune_3 fréquence de traitement
bullet_jaune_3 concept de pîpeline
Exercice : Optimisation des modèles précédents
Conception de systèmes complexes
bullet_jaune_2 Découpage hiérarchique
bullet_jaune_2 La librairie work
bullet_jaune_2 Création de librairies
bullet_jaune_2 Packages
Exercice : exemple de l'interface PCI