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

V1 Le langage VHDL

Programmation de FPGAs en VHDL

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