Upload
truongkiet
View
219
Download
5
Embed Size (px)
Citation preview
VHDLSAMMOUDI.N ISI 2007/2008
VERSION :1.0
Plan
� Introduction � Organisation d'un modèle VHDL� Représentation de l'information� Méthode de description� Domaine d’instruction
ISI 2007/2008VHDL2
� Domaine d’instruction� Aspects avancés� Références
Plan
� Introduction� Qu'est ce que VHDL?� Domaine d'application� Modèle et simulation logique� Utilisation de VHDL
ISI 2007/2008VHDL3
Qu'est ce que VHDL?
� Langage de description de systèmes matériels� Comportement� Structure� Documentation
� Développement de modèles exécutables� Simulation
ISI 2007/2008VHDL4
� Synthèse (sous-ensemble)
� Modèle logiciel� Langage fortement typé� Modularité� Extensibilité
� Standard IEEE (réf. IEEE Std 1076-2002)� Supporté par tous les outils EDA
Histoire de VHDL
� 1980 Début du projet VHDL financé par le US DoD
� 1985 Première version 7.2 publique
� 1987 Première version du standard IEEE Std 1076-1987
ISI 2007/2008VHDL5
1987
� 1993 Mise à jour du standard (IEEE Std 1076-1993)
� 2002 Mise à jour du standard (IEEE Std 1076-2002)
Domaine d'application
ISI 2007/2008VHDL6
Comportement concurrent vs séquentiel
(1/2)
� Exemple: multiplieur, modèle algorithmique
ISI 2007/2008VHDL7
Comportement concurrent vs séquentiel
(2/2)
Exemple: additionneur, niveau logique
ISI 2007/2008VHDL8
Simulation
ISI 2007/2008VHDL9
Plan
� Organisation d'un modèle VHDL� Unités/entités de conception
ISI 2007/2008VHDL10
Unités de conception
ISI 2007/2008VHDL11
Entité de conception
ISI 2007/2008VHDL12
Plan
� Représentation de l'information� Types, sous-types� Objets� Attributs
ISI 2007/2008VHDL13
Types et sous-types
� Type = ensemble de valeurs + opérateurs associés� Sous-type = type dérivé d'un type de base (type
parent) avec contraintes� 4 classes de types
� Types scalaires : entier, réel, énuméré, physique� Types composites : tableaux, enregistrements
ISI 2007/2008VHDL14
� Types composites : tableaux, enregistrements� Pointeurs� Fichiers
� Déclaration de type:� Déclaration de sous-type:� Types et sous-types prédéfinis dans le paquetage
STANDARD
Objets et constantes
� Objet = élément nommé ayant des valeurs d'un type donné
� 4 classes d'objets: constantes, variables, signaux, fichiers
� Une constante possède une valeur fixe durant la
ISI 2007/2008VHDL15
� Une constante possède une valeur fixe durant la simulation
� Déclaration de constante
� Exemple :
Variables
� Simple conteneur dont la valeur peut changer en cours de simulation
� Valeur initiale par défaut = soustype'left� Déclaration de variable
ISI 2007/2008VHDL16
� Exemples de déclarations
Signaux
� Représentent des formes d'ondes logiques sous forme de paires temps/valeur
� Objets essentiels à la modélisation de comportement s concurrents
� Déclaration de signal
Exemples de déclarations
ISI 2007/2008VHDL17
� Exemples de déclarations
� Un signal possède un structure de donnée complexe ( pilote)
Fichiers
� Représentent un stockage externe� Déclaration de fichier
� type file_open_kind is (read_mode, write_mode, appen d_mode);
� Exemples de déclarations
ISI 2007/2008VHDL18
� Fermeture de fichiers� A la fin de la simulation� Au moyen de la procédure file_close
Attributs prédéfinis
� Attribut = information sur un élément du langage� Par exemple: longueur d'un signal bus = bus'length
� Permettent d'écrire des modèles généraux
� Notation� Elément: type ou objet
� Attribut: type, intervalle, valeur, fonction ou signal
ISI 2007/2008VHDL19
� Attributs signaux utiles� S'event Fonction à valeur de type boolean valant TRUE si un événement est arrivé sur S durant le
cycle de simulation courant, et FALSE sinon
� S'last_event Fonction à valeur de type time valant le temps écoulé depuis le dernier événement sur S
� S'last_value Fonction à valeur du type de S valant la valeur de S avant le dernier événement sur S
Plan
� Méthode de description � Structurelle� Comportementale
� Instructions séquentielles( Process )
� Instructions concurrentes ( Flot de donnée )
ISI 2007/2008VHDL20
Méthode de description
� Description StructurelleDécrit l’assemblage de différents circuits électroniques, chacun d’eux étant une boîte noire (entité).
� Comportementale (behavioral)� Flot de données
Décrit à partir du flot de données, le comportement des données transitant à l’intérieur de la boîte noire (entité).
ISI 2007/2008VHDL21
données transitant à l’intérieur de la boîte noire (entité).� Algorithme
Décrit sous forme d’un programme informatique, les instructions séquentielles constituant un processus et traduisant un algorithme ou un comportement.
� MixteDécrit à la fois le comportement et le flot de données d’un circuit.
Description Structurelle
� On cherche à décrire les connexions entre les différents composants du circuit� Signal pour décrire les interconnexions (noeuds).
� Component et port map pour décrire les portes.� Les différentes composants peuvent être des portes simples ou des
circuits complexes.
� La définition des composants se trouve ailleurs, dans un package
ISI 2007/2008VHDL22
� La définition des composants se trouve ailleurs, dans un package par exemple.
Déclaration de composant� Syntaxe Exemple
� Similaire à une déclaration d'entité, mais:� Un composant définit ce dont on a besoin (demande)
ISI 2007/2008VHDL23
� Un composant définit ce dont on a besoin (demande)� Une entité définit ce qui est disponible (offre)
� Le nom d'un composant, de ses paramètres et de ses ports ne doivent pas nécessairement être identiques à ceux d'une entité de conception particulière
� Une configuration permet d'associer une instance de composant à une entité de conception
Instance de composant
� Syntaxe
ISI 2007/2008VHDL24
Description comportementale (Flot de donné)
� Le design est décrit en termes du flot des données et des opérations:� Peut être exprimé par des assignations de signaux concurrents.� Peut aussi être simplement une table de vérité.
� Les opérations logiques à effectuer sur les entrées sont décrites et non la structure du circuit à réaliser.
ISI 2007/2008VHDL25
Description comportementale (séquentielle)
� Décrit des algorithmes à réaliser.
� Ils sont typiquement décrits à l’intérieur de processus.
� Des opérateurs séquentiels sont souvent utilisés pour décrire ces algorithmes.� À l’intérieur d’un process les opérations s’effectuent séquentiellement.
� Les énoncés de condition permettant de décrire un algorithme en informatique sont aussi utilisables dans un process VHDL
ISI 2007/2008VHDL26
informatique sont aussi utilisables dans un process VHDL� If, else
� Loop, while, for
� Case
� Le code VHDL à l’extérieur d’un process (simplement dans l’architecture) s’exécute continuellement en parallèle avec les autres process.
� → Il est donc impossible d’utiliser une opération séquentielle hors d’un process.
Processus
� Instruction concurrente la plus fondamentale� Toute instruction concurrente peut s'exprimer de manière
équivalente à l'aide d'un processus
ISI 2007/2008VHDL27
� Vie et mort d'un processus� Contexte local créé dans la phase d'élaboration� Activé/stoppé durant la simulation� Contexte local détruit à la fin de la simulation
� Pas un sous-programme!
Modalités d'activation d'un processus
� Seulement si un événement survient sur au moins un signal sensible
� Soit liste de sensibilité , soit instruction wait
� Instruction wait� Instruction séquentielle
� Plusieurs instructions dans un processus possible
ISI 2007/2008VHDL28
Plan
� Domaine d’instruction� Instruction concurrente� Instruction séquentielle
ISI 2007/2008VHDL29
Domaines d'instructions
� Instructions concurrentes
� Instructions s'exécutant dans des flots séparés
� Base pour la modélisation de systèmes matériels
� Requièrent un gestionnaire d'événements(simulation)
ISI 2007/2008VHDL30
d'événements(simulation)� Instructions séquentielles
� Instructions s'exécutant dans un ordre donné
� Similaires à celles existant dans les langages de programmation
Instruction d'affectation de signal
Forme générale
ISI 2007/2008VHDL31
Instruction concurrente sélective
Exemple
ISI 2007/2008VHDL32
Instruction concurrente conditionnelle
Exemple
ISI 2007/2008VHDL33
Instructions séquentielles(1/3)
Instruction conditionnelle Instruction sélective
ISI 2007/2008VHDL34
Instructions séquentielles(2/3)
� Instructions de boucle
ISI 2007/2008VHDL35
Instructions séquentielles(3/3)
ISI 2007/2008VHDL36
Applications
ISI 2007/2008VHDL37
Démultiplexeur
� circuit avec une entrée et N sorties, mettant en relation l'entrée avec une seule des sorties
� sélection de la sortie à l'aide de lignes d'adressagetrès proche d'un
ISI 2007/2008VHDL38
� très proche d'un décodeur
� exemple� 1 ligne d'entrée portant les
données D� 4 lignes de sortie Y0, Y1,
Y2, Y3� 2 lignes d'adressage A et B
Demi-additionneur
ISI 2007/2008VHDL39
Additionneur(1/2)
� 3 entrées :� les 2 bits des nombres à
ajouter� la retenue de l'étage
précédent
� 2 sorties :
ISI 2007/2008VHDL40
� 2 sorties :� le résultat de l'addition� la retenue
Additionneur (2/2)
ISI 2007/2008VHDL41
To be continued …
ISI 2007/2008VHDL42