Outils informatiques 25-26 Exercices VHDL pour l évaluation Alain Vachoux EPFL/STI-IMM-LSM alain.vachoux@epfl.ch Organisation des exercices Les informations sur l organisation des exercices se trouvent sur les pages web suivantes: http://lsm.epfl.ch/page12635-fr.html (description du cours + documents) http://moodle.epfl.ch/course/view.php?id=118 (Site web pour le rendu des exercices pour l'évaluation) Chaque étudiant inscrit au cours est prié de s enregistrer sur le site Moodle (2ème URL ci-dessus). Il faut utiliser votre identification GASPAR (nom d utilisateur et mot de passe) ainsi que la clé d identification "3nov5" (sans les guillemets). Ceci permettra de rendre les fichiers relatifs aux exercices et d obtenir des commentaires et les notes de l évaluation du module VHDL.
Outils informatiques 25-26 Exercices VHDL pour l évaluation - 2 Exercice 1: Décodeur pour affichage à 7 segments Il s agit de développer un modèle fonctionnel (comportemental) d un décodeur pour un affichage LED à 7 segments. SEG_A SEG_B SEG_C SEG_D SEG_E SEG_F SEG_G a 4 BCD(3:) e f d g c b BCD "1" a b c d e f g "1 1 1 1 1" Une entrée BCD de 4 bits codant un entier de à 9. Sept sorties de 1 bit SEG_A,..., SEG_G, une par segment, valant 1 si le segment correspondant doit être allumé et valant sinon. om d entité suggéré: dec7seg. Le comportement à décrire est purement combinatoire et doit réaliser la table de vérité du composant. Utiliser une instruction d affectation de signal sélective concurrente ou sa forme équivalente utilisant un processus (voir p. 59 du cours). om d architecture suggéré: bhv (pour "behaviour" - comportement). Le chiffre 9 peut être affiché avec les segments abcgf ou abcdgf à 1. Prévoir un affichage d erreur si le code BCD est incorrect. Le modèle de test doit tester toutes les entrées possibles en séquence. oms suggérés pour le modèle de test: tb_dec7seg (entité) et bench (architecture). Option: Les sorties peuvent être rassemblées dans un seul bus de 7 bits. Les indices du bus peuvent être des entiers (p.ex. 7 downto 1) ou des caractères (p.ex. a to g ). Définir une table de vérité dans un tableau constant. La table de vérité peut être utilisée dans l architecture du composant et dans le modèle de test. Il peut être nécessaire de déclarer la table de vérité dans un paquetage séparé qui est importé dans l architecture et le modèle de test (voir p. 89 du cours). Le paquetage est alors importé dans le modèle au moyen d une clause use (voir p. 19 du cours).
Outils informatiques 25-26 Exercices VHDL pour l évaluation - 3 Exercice 2: Compteur synchrone Il s agit de développer un modèle fonctionnel (comportemental) d un compteur synchrone générant une séquence de valeurs, 1, 2,..., 2-1, où est le nombre de bits du signal contenant la valeur du compteur. Une fois la valeur maximum atteinte, le compteur recommence à la valeur. Compteur COUT(-1:), 1, 2, 3,, 2-1,, 1, 2,... Entrées: Horloge (1 bit), reset (1 bit) actif au niveau bas ( ). Sortie: Valeur du compteur COUT ( bits). peut être une valeur fixe à choix ou un paramètre générique. Voir ci-dessous pour le choix du type. om d entité suggéré: counter. Pseudo-code à réaliser en VHDL: si reset actif alors COUT := sinon à chaque flanc d horloge faire: si COUT > valeur maximum alors COUT := sinon COUT := COUT + 1 Encapsuler le comportement ci-dessus dans un processus sensible sur les signaux et. Le reset est asynchrone (indépendant du flanc d horloge). La notation "(others => )" permet d initialiser un mot de taille quelconque à zéro. Il est interdit de lire la valeur d un signal d interface de mode out. Utiliser une variable locale au processus pour réaliser l incrémentation. Le type bit_vector ne supporte pas les opérations arithmétiques de manière prédéfinie, le type unsigned si (voir p. 96 du cours). om d architecture suggéré: bhv. Définir une horloge dont la période est définie par une constante (voir p. 53 du cours). Tester le comportement de reset (une impulsion 11) et le comportement normal. oms suggérés pour le modèle de test: tb_counter (entité) et bench (architecture). Options: Le modèle peut compter jusqu à une valeur fixée au choix ou définie dans un paramètre générique. Le flanc d horloge actif peut être le flanc montant ou le flanc descendant. Le test "COUT > valeur maximum" n est pas forcément nécessaire...
Outils informatiques 25-26 Exercices VHDL pour l évaluation - 4 Exercice 3: Registre série-parallèle Il s agit de développer un modèle structurel d un registre bits avec une entrée série et une sortie parallèle basé sur des composants flip-flops. DI D BIT(-1) D BIT(-2) D BIT(-3) D BIT(1) D BIT() DOUT(-1:) Entrées: Horloge (1 bit), reset (1 bit) actif au niveau bas ( ), données série DI (1 bit). Sortie: Contenu du registre DOUT ( bits). peut être une valeur fixe à choix ou un paramètre générique. om d entité suggéré: spreg. Structure (architecture): L architecture doit inclure instances de composants flip-flops dont le modèle de base est donné en p. 54 du cours. Le modèle de flip-flop doit inclure un comportement de reset synchrone du type: wait until clk = 1 ; if rst_b = then... else... Utiliser le mécanisme d instanciation directe pour décrire la structure du registre. om d architecture suggéré: str (pour "structure"). Définir une horloge dont la période est définie par une constante (voir p. 53 du cours). Tester le comportement de reset. Remplir le registre avec un mot de bits et le vider. oms suggérés pour le modèle de test: tb_spreg (entité) et bench (architecture). Options: Le modèle peut inclure un nombre fixe de flip-flops ou un nombre défini par un paramètre générique. Dans ce dernier cas, l usage d une instruction generate est requise (voir p. 78 du cours).
Outils informatiques 25-26 Exercices VHDL pour l évaluation - 5 Exercice 4: Registre à décalage programmable Il s agit de développer un modèle fonctionnel (comportemental) d un registre à décalage de bits pouvant subir des opérations de décalages ou de rotations sur un nombre quelconque de bits en un seul coup d horloge (on parle aussi de barrel shifter). 7 6 5 4 3 2 1 7 6 5 4 3 2 1 CMD SR DI(-1:) -1-2 1 DOUT(-1:) SHLL 1 ' ' SHLA 1 ' SHRL 1 ' SHRA 1 ROTL 1 ROTR 1 Entrées: Horloge (1 bit), reset (1 bit) actif au niveau bas ( ), commande CMD (type énuméré), nombre de bits affectés par la commande SR (entier ), données parallèle DI ( bits). peut être une valeur fixe à choix ou un paramètre générique. Les commandes doivent être codées par un type énuméré (voir p. 33 du cours) avec les conventions suivantes: LOAD: chargement de DI dans le registre. SHLL, SHRL: décalage logique à gauche, à droite. SHLA, SHRA: décalage arithmétique à gauche, à droite. ROTL, ROTR: rotation à gauche, à droite. Le type énuméré doit être déclaré dans un paquetage séparé (voir p. 89 du cours). Le paquetage est alors importé dans le modèle au moyen d une clause use (voir p. 19 du cours) juste avant l entité. Sortie: Contenu du registre DOUT ( bits). om d entité suggéré: barrelsr. Réaliser les opérations de décalages et de rotations au moyen de l opérateur de concaténation & (voir p. 36 du cours). Le contenu du registre peut être mémorisé dans un signal ou une variable. (Option) Définir chaque opération possible par une procédure (voir p. 81 du cours). (Option) Traiter SR < comme l opération symétrique (p.ex. SHLL -2 = SHRL 2). om d architecture suggéré: bhv. Vérifier les opérations modélisées au moyen des opérateurs de décalages et de rotations prédéfinis sll, srl, sla, sra, rol et ror (voir p. 36 du cours). Utiliser des assertions (voir p. 57 du cours). oms suggérés pour le modèle de test: tb_barrelsr (entité) et bench (architecture).