Cours VHDL FPGA 2
Transcription
Cours VHDL FPGA 2
III. VHDL ETRS 511 1 Plan gobal du cours z z z I. Introduction II. FPGA III. VHDL z z z z z z z z z z Introduction Règles d’écriture Unités de conception - Objets VHDL - Opérateurs Assignations concurrentes/séquentielles Assignations conditionnelles/sélectives Composant Machine à états Règles de conception Simulation Compléments (fonctions, procédures, packages, …) ETRS 511 2 Introduction Historique z 1981 : le DoD (department of defence) initie le projet VHSIC (Very High Speed Integrated Circuit) – IBM, TI, Intermetrix ¬ langage commun pour la description des circuits z 1987 : normalisation du VHDL (VHSIC Hardware Description Language) par l’IEEE (Institute of Electrical and Electronic Engineers) z La norme est révisée tous les 5 ans (P1076-87, P1076-93, P10762000, P1076-2002, P1076-2006) z Il existe aussi des normes correspondant à des groupes de travail sur des extensions ou des restrictions pour des besoins spécifiques (P1076.1, P1076.6-2004,…) ETRS 511 3 Introduction Pourquoi et où utilise-t-on le VHDL? Flot de conception ETRS 511 4 Introduction Pourquoi et où utilise-t-on le VHDL? Flot de conception ETRS 511 5 Introduction Qu’est ce que le VHDL? z Langage de modélisation et/ou de synthèse de systèmes électroniques z Langage généraliste x simulation z Langage près des portes logiques x VHDL de synthèse z Système de CAO : Schéma ou VHDL ou mixte ETRS 511 6 Introduction Qu’est ce que le VHDL? z Langage normalisé, sensé être indépendant de tout compilateur ou simulateur z Cible : CPLD, FPGA, ASIC z Conception de haut niveau d’abstraction (modification rapide de la conception, réduction cycle, réduction risques, …) z Meilleur gestion de projet, développement de grosses conception (structure hiérarchisée) z Adéquation entre le style d’écriture et les compilateurs : résultats en terme de vitesse ou de compacité différents ETRS 511 7 Plan gobal du cours z z z I. Introduction II. FPGA III. VHDL z z z z z z z z z z Introduction Règles d’écriture Unités de conception - Objets VHDL - Opérateurs Assignations concurrentes/séquentielles Assignations conditionnelles/sélectives Composant Machine à états Règles de conception Simulation Compléments (fonctions, procédures, packages, …) ETRS 511 8 Règles d’écriture z VHDL 87 (obsolète), VHDL 93, VHDL 2000 (très peu de changements) z La simulation comportementale est indépendante du style d’écriture, du compilateur utilisé et de la cible ; pas la synthèse z Aucune distinction entre les minuscules et les majuscules z Commentaires : commencent par 2 tirets et se prolongent jusqu’à la fin de la ligne. Ils sont ignorés par le compilateur ETRS 511 9 Règles d’écriture z En général, les instructions se terminent par « ; » z Règles de dénomination : z 26 lettres de l’alphabet, les 10 chiffres et ‘_’ z Le premier caractère est une lettre z Il ne peut y avoir 2 « _ » de suite z L’identifieur ne peut se terminer par « _ » ETRS 511 10 Règles d’écriture z Les valeurs explicites: z Entier : 123 1_2_3 z Entier basé : base#valeur# 2#11# (Q3) 16#1F# (Q31) z Valeurs physiques : toujours laisser un espace entre la valeur et l’unité 100 ps 2 ns 5V z Caractère : entre apostrophe ‘a’ ‘@’ z Bit : entre apostrophe ‘0’ ‘1’ ‘Z’ z Chaîne de caractères : entre guillemets (attention là les minuscules et majuscules sont significatives) "Bonjour " z Bus : entre guillemets "01111001 " z Booléen : true ETRS 511 false 11 Mots réservés http://amouf.chez.com/syntaxe.htm ETRS 511 12 Plan gobal du cours z z z I. Introduction II. FPGA III. VHDL z z z z z z z z z z Introduction Règles d’écriture Unités de conception - Objets VHDL - Opérateurs Assignations concurrentes/séquentielles Assignations conditionnelle/sélective Composant Machine à états Règles de conception Simulation Compléments (fonctions, procédures, packages, …) ETRS 511 13 Unités de conception Structure d’un fichier VHDL ETRS 511 14 Unités de conception Library z IEEE.STD_LOGIC_1164.all z Permet de définir les types, opérateurs et fonctions de conversion de base z IEEE.numeric_std.all z Définit les types signed et unsigned. Un vecteur représente alors un nombre signé ou non signé représenté en C2 z Permet d’utiliser les opérateurs arthmétiques + et x sur des vecteurs de bits z Fournit des fonctions de conversion entre entiers et vecteurs ETRS 511 15 Unités de conception Library IEEE.numeric_std.all ETRS 511 16 Unités de conception Entity z Définition de l’entité : Vue externe d’un composant z Spécifications : z Ports d’entrée et de sortie z Type z Mode : - entrée (in) - sortie (out) - entrée/sortie (inout) - sortie avec retour en interne (buffer) Remarque : le nom d’un fichier VHDL doit être celui de l’entité qu’il contient ETRS 511 17 Unités de conception Entity a b 8 8 Comparateur z Le mode in protège le signal en écriture z Le mode out protège le signal en lecture ETRS 511 egal 18 Unités de conception Exercice Ecrire l’entité d’un additionneur Add4 de deux mots, a et b, de 4 bits en entrée, avec une retenue entrante ci, et une sortie somme sur 4 bits avec une retenue sortante co. a b ci 4 4 4 Add4 ETRS 511 somme co 19 Unités de conception Exercice Ecrire l’entité correspondante au schéma de ce multiplexeur : ETRS 511 20 Unités de conception Exercice Dessiner le schéma du composant correspondant à l’entité suivante : b clk raz ETRS 511 parite parite 21 Unités de conception Architecture z Toute architecture est associée à une entité z Définition : L’architecture définit les fonctionnalités et les relations temporelles. Elle décrit le comportement du composant. Zone de déclaration Zone de définition ETRS 511 22 Unités de conception Architecture z Il peut y avoir plusieurs architectures associées à un même composant 2 architectures d’un même composant Remarque : l’instruction after n’est pas synthétisable ! ETRS 511 23 Objets VHDL z 5 sortes d’objets z Les ports d’entrée/sortie (PORT) z Les signaux (SIGNAL) z Les constantes (CONSTANT) z Les variables (VARIABLE) - - cf partie assignation séquentielle z Les paramètres (GENERIC) - - cf partie compléments z Les objets représentent une valeur z Ils doivent être typés ETRS 511 24 Objets VHDL Type z Tout objet a un format prédéfini z Seules des valeurs de ce format peuvent être affectées à cet objet z z Plusieurs catégories de types z Types scalaires (numériques et énumérés) z Types composés (tableaux et vecteurs) Possibilité de définir de nouveaux types ETRS 511 25 Objets VHDL Type z Types scalaires : z Types énumérés : liste de valeurs z Types numériques : domaine de définition range z to downto Types composés : collections d’éléments de même type repérés par des valeur d’indices ETRS 511 26 Objets VHDL Type z Exemple de types prédéfinis : z Bit z Boolean z Integer z Std_logic z Bit_vector, Std_logic_vector z Signed, Unsigned z Natural : sous type de integer limité aux nombres ≥ 0 z Positif : sous type de integer limité aux nombres > 0 z Character, string ETRS 511 dans la bibliothèque std_logic_1164 dans la bibliothèque numeric_std 27 Objets VHDL Type z Std_logic : ETRS 511 28 Objet VHDL Exercice Type Définir un type pental composé de chiffres de 0 à 4 Définir un type énuméré etat composé des valeurs OK, HS, ERROR ETRS 511 29 Objets VHDL Signal z Un signal représente une équipotentielle z Il doit être déclaré avant utilisation z Il peut être déclaré : z dans un package, il est alors global z dans une entity, il est alors commun à toutes les architectures de l’entité z dans l’architecture, il est alors local ETRS 511 30 Objets VHDL Signal z L’affectation se fait avec l’opérateur « <= » z Accès à des sous-éléments avec l’opérateur alias alias lsb : bit_vector(7 downto 0) is add_bus(7 downto 0) ; z Initialisation rapide Toto <=(others => ‘0’); est équivalent à Toto <= "000000…0 "; ETRS 511 31 Objets VHDL Constant z z Une constante doit être déclarée avant utilisation Elle peut être déclarée : z z z z dans un package, elle est alors globale dans une entity, elle est alors commune à toutes les architectures de l’entité dans l’architecture, elle est alors locale L’affectation se fait avec l’opérateur « := » ETRS 511 32 Objets VHDL Variable z Une variable doit être déclarée avant utilisation z Elle ne peut être déclarée que dans un « process » z L’affectation se fait avec l’opérateur « := » ETRS 511 33 Opérateurs z Opérateurs logiques (sur booléens, bits et dérivés) z Opérateurs relationnels (sur types scalaires ou dérivés (signed, unsigned)) ETRS 511 34 Opérateurs z Opérateurs bits (sur vecteurs de bits et types numériques) z Opérateurs arithmétiques (sur types numériques : entiers, signés, non signés, flottant) z Opérateurs de décalage (sur tableaux de bits ou étendus) : sll, srl, sla, sra, rol, ror ETRS 511 35 Exercice Ecrire l’ensemble d’un fichier VHDL (Library, Entity, Architecture) qui décrit une porte OU à 2 entrées a et b de 1 bit (sortie s) ETRS 511 36 Exercice Ecrire l’ensemble d’un fichier VHDL (Library, Entity, Architecture) qui décrit un additionneur ADD4 à 2 entrées de 4 bits A et B signées et une sortie S de 4 bits ETRS 511 37 Exercice Ecrire l’ensemble d’un fichier VHDL concat4to8.vhd (Library, Entity, Architecture) permettant la concaténation de 2 bus de 4 bits A et B en un bus C de 8 bits (le bus A représente les bits de poids fort). ETRS 511 38 Plan gobal du cours z z z I. Introduction II. FPGA III. VHDL z z z z z z z z z z Introduction Règles d’écriture Unités de conception - Objets VHDL - Opérateurs Assignations concurrentes/séquentielles Assignations conditionnelles/sélectives Composant Machine à états Règles de conception Simulation Compléments (fonctions, procédures, packages, …) ETRS 511 39 Assignations concurrentes/sequentielles z Instruction séquentielle : instruction à l’intérieur d’un process z Instruction concurrente : instruction à l’extérieur des process. Rappel : les instructions se placent toujours uniquement entre le begin et le end de l’architecture ETRS 511 40 Assignations concurrentes z Toutes les déclarations sont exécutées simultanément et en permanence z L’ordre des déclarations dans le code source n’a pas d’influence z Les déclarations possibles sont : z Assignation continue : <= z Instantiation d’un composant : port map z Assignation conditionnelle : when … else z Assignation sélective : with … select … when … when z Appel d’un process z Instruction generate z Appel d’une fonction ETRS 511 cf. compléments 41 Assignations séquentielles z z z z z Ce mode concerne uniquement les function, procedure et process Les process manipulent les variable et signal Au sein de ces descriptions, les déclarations sont exécutées de manière séquentielle, l’une après l’autre L’ordre des déclarations est donc important Les déclarations possibles sont : z z z z z z Assignation continue : <= (signal) et := (variable) Assignation conditionnelle : if … then … elsif … then … else … end if; Assignation sélective : case … is … when … => … when … => … end case; Boucles : for … in … loop … end loop; Boucles : while ... loop … end loop; Instructions next et exit ETRS 511 42 Process z Dans un process, l’interprétation des instructions est séquentielle mais l’ensemble de leur réalisation est instantanée (le temps extérieur est suspendu) z Les signaux sont assignés en sortie du process z Les variables sont assignée immédiatement z Les variables ne sont pas visibles de l’extérieur ETRS 511 43 Process z Lors d’affectations multiples, c’est la dernière qui est prise en compte z Un process n’est activé que lorsque les signaux de sa liste de sensibilité ont subi un changement z Absence de liste de sensibilité : le process est réactivé en permanence z Tous les process d’un design fonctionnent de manière concurrente ETRS 511 44 Process Exemples ETRS 511 45 Process Exemples ETRS 511 46 Process Exercice Décrire cette fonction en utilisant un process : ETRS 511 47 Process z Mise en œuvre de process synchronisé sur l’horloge z If clk’event and clk=‘1’ then ou if rising_edge(clk) z If clk’event and clk=‘0’ then ou if falling_edge(clk) z Absence de liste de sensibilité et wait until (clk=‘1’) placé en tête de la partie déclarative du process ETRS 511 48 Process Exercice Tracer les chronogrammes qui correspondent à la description de ce process clk t a t b t c t var1 t d t ETRS 511 49 Exercice Ecrire l’ensemble d’un fichier VHDL (Library, Entity, Architecture) qui décrit un compteur COMPT qui compte sur 3 bits sur front montant du signal d’horloge clk ETRS 511 50 Plan gobal du cours z z z I. Introduction II. FPGA III. VHDL z z z z z z z z z z Introduction Règles d’écriture Unités de conception - Objets VHDL - Opérateurs Assignations concurrentes/séquentielles Assignations conditionnelles/sélectives Composant Machine à états Règles de conception Simulation Compléments (fonctions, procédures, packages, …) ETRS 511 51 Assignations conditionnelles Assignation concurrente z Forme générale : signal <= valeur when condition else autrevaleur when autrecondition …; z Une seule cible peut être assignée z Les conditions sont sous-entendues exclusives z Mémorisation implicite lorsque toutes les conditions ne sont pas listées ETRS 511 52 Assignations conditionnelles Assignation séquentielle z Forme générale : If condition then … elsif conditions then…else … end if; z Mémorisation implicite lorsque toutes les conditions ne sont pas listées ETRS 511 53 Assignations sélectives Assignation concurrente z Forme générale : With sélecteur select signal <= valeur when val_sel, valeur when val_sel2 …; z Clause when others qui permet de préciser tous les cas non définis z Possibilité de regrouper plusieurs valeurs du sélecteur pour une même assignation « | » ETRS 511 54 Assignations sélectives Assignation séquentielle z Forme générale : Case sélecteur is when val_selec => instructions; … end case; z Possibilité de regrouper des valeurs de sélection z Attention aux clauses incomplètes pouvant générer des latches Utilisation de la clause when others ETRS 511 55 Assignations sélectives If versus case ETRS 511 56 Assignations sélectives If versus case ETRS 511 57 Exercice Ecrire l’ensemble d’un fichier VHDL (Library, Entity, Architecture) qui décrit un compteur COMPT5 qui compte sur 3 bits de 0 à 5 sur front montant du signal d’horloge clk ETRS 511 58 Exercice Modifier la description de l’exercice précédent pour que lorsque l’entrée Load est à ‘1’ la sortie du compteur prenne la valeur de l’entrée Data et compte à partir de cette valeur. ETRS 511 59 Exercice Ecrire l’ensemble d’un fichier VHDL (Library, Entity, Architecture) qui décrit un comparateur mettant la sortie EGAL à ‘1’ lorsque les entrées A et B (bus de 8 bits) sont égales et à ‘0’ sinon. Assignation concurrente ETRS 511 60 Exercice Assignation séquentielle ETRS 511 61 Exercice Ecrire l’ensemble d’un fichier VHDL (Library, Entity, Architecture) qui décrit un décodeur binaire / 7 segments ETRS 511 62 Exercice Assignation concurrente ETRS 511 63 Exercice Assignation séquentielle ETRS 511 64 Boucles loop z Instruction séquentielle z Forme générale : For i in val_deb to val_fin loop … end loop; While condition loop… end loop; ETRS 511 65 Exercice Ecrire l’architecture d’un circuit qui inverse bit par bit un bus data_in de 8 bits ( data_out = not (data_in) ). ETRS 511 66 Plan gobal du cours z z z I. Introduction II. FPGA III. VHDL z z z z z z z z z z Introduction Règles d’écriture Unités de conception - Objets VHDL - Opérateurs Assignations concurrentes/séquentielles Assignations conditionnelles/sélectives Composant Machine à états Règles de conception Simulation Compléments (fonctions, procédures, packages, …) ETRS 511 67 Composant z Description structurelle : comment est réalisée la fonction ? z Interconnexions entre des composants (component) z Chaque composant a une entité et une architecture propre ETRS 511 68 Composant z 3 façon de déclarer un composant : z Toutes les paires entity/architecture sont déclarées dans le même fichier z La paire entity/architecture de chaque composant est déclarée dans un fichier qui lui est propre z La structure du composant est déclarée dans une bibliothèque via un package ETRS 511 69 Composant Mise en oeuvre z Ecrire l’entité et l’architecture du composant essai dans un fichier enregistrer à son nom (essai.vhd) z Dans le fichier du circuit principal tutu, déclarer le composant dans l’architecture avant le « begin » ETRS 511 70 Composant Mise en oeuvre z Après le « begin » de l’architecture, instancier le composant avec Port Map() (relier les fils) Instanciation par position ETRS 511 Instanciation par nomination 71 Exercice Ecrire l’architecture du circuit TopLevel, contenant 3 composants Riri, Fifi et Loulou dont les connexions sont schématisées ci-dessous : Clk Datain_a 8 TopLevel Riri H s 8 Loulou e busa H b dout Sortie Fifi Datain_b Control ETRS 511 H a b c 72 Exercice sig_interne2 ETRS 511 73 Composant Duplication automatique z Syntaxe générale : label : for indice in val_debut to val_fin generate … end generate label ; ETRS 511 74 Composant Duplication automatique z Possibilité d’insérer des conditions dans la boucle if condition then generate … end generate ; (pas de else ni de elsif) ETRS 511 75 Plan gobal du cours z z z I. Introduction II. FPGA III. VHDL z z z z z z z z z z Introduction Règles d’écriture Unités de conception - Objets VHDL - Opérateurs Assignations concurrentes/séquentielles Assignations conditionnelles/sélectives Composant Machine à états Règles de conception Simulation Compléments (fonctions, procédures, packages, …) ETRS 511 76 Machine à état z FSM Finite State Machine z Outil pour représenter un système séquentiel z On définit différents états dans lesquels peut être le système z Le passage d’un état à un autre s’effectue si une condition sur les entrées est remplie z 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) z Dans le cas d’une FSM synchrone, la valeur des entrées est analysée sur front d’horloge ETRS 511 77 Machine à état Exemple : détecteur de séquence La porte ne s’ouvre que si l’on tape la séquence ‘1’ ‘2’ ‘3’ z Etat 0 : le système attend un ‘1’ en entrée, la porte est fermée (P=0) z Etat 1 : le système attend un ‘2’ en entrée, la porte est fermée (P=0) z Etat 2 : le système attend un ‘3’ en entrée, la porte est fermée (P=0) z Etat 3 : la bonne séquence a été entrée, la porte est ouverte (P=1) ETRS 511 78 Machine à état Exemple : détecteur de séquence On représente une machine à état par un graphe d’état Entrée ≠ ‘1’ E0 Entrée ≠ ‘2’ P=0 Entrée = ‘1’ E1 1=1 P=0 Entrée ≠ ‘3’ Entrée = ‘2’ P=0 E2 Entrée = ‘3’ E3 ETRS 511 P=1 79 Machine à état Graphe d’état Définition : z Un diagramme ou graphe d’états permet d’avoir une représentation graphique d’un système séquentiel. z Il est constitué par l’énumération de tous les états possible du système. z Un seul de ces états peut être actif à la fois. z A chaque état est associé la valeur de la (ou des) grandeur(s) de sortie. Transition ETRS 511 Etat 1 2 s=1 s=0 Valeur de la (ou des) sortie(s) 80 Machine à état Exercice Dessiner le graph d’état d’une bascule D D=0 D Q=0 E0 Q D=0 D=1 E1 Q=1 D=1 ETRS 511 81 Machine à état Conception de circuits z Deux architectures courantes : z Des bascules enregistrent l’état courant z Des circuits combinatoires sont placés avant et après les bascules pour déterminer l’état suivant et la valeur des sorties ETRS 511 82 Machine à état Codage des états z Codage binaire Le numéro de l’état est codé en binaire état 0 = "00", état 1 = "01", état 2 = "10", état 3 = "11" z One-Hot-One Chaque état correspond à 1 bit d’un même bus état 0 Q state = "0001", état 1 Q state = "0010", état 2 Q state = "0100", état 3 Q state = "1000" z One-Hot-Zero Même principe que One-Hot-One mais l’état 0 se code "0000" ETRS 511 83 Programmer un FPGA par FSM z Avec le logiciel Quartus, on peut décrire une FSM z en utilisant une architecture de Moore ou de Mealy que l’ont fait soit même z schématiquement, en rentrant directement le graphe d’état z en la décrivant en VHDL ETRS 511 84 Description de FSM en VHDL z Entité z Architecture Déclaration d’un nouveau type énuméré contenant les noms des états Déclaration d’un signal du nouveau type juste déclaré ETRS 511 85 Description de FSM en VHDL Gestion des états Gestion de la valeur de la sortie ETRS 511 86 Description de FSM en VHDL Exemples ETRS 511 87 Description de FSM en VHDL Exemples Etats en One-Hot-One ETRS 511 88 Description de FSM en VHDL Exemples : FSM à 2 process Déclaration de deux signaux d’état ETRS 511 89 Description de FSM en VHDL Exemples : FSM à 2 process Premier process pour définir l’état suivant et les valeurs de sortie en fonction de l’état courant ETRS 511 90 Description de FSM en VHDL Exemples : FSM à 2 process Deuxième process qui décrit le passage d’un état à un autre sur les fronts montants d’horloge Remarque : Description très proche de la machine de Moore ETRS 511 91 Description de FSM en VHDL z Attention au problème de mémorisation implicite en utilisant une syntaxe de type case, when, … z Si la valeur d’un signal n’est spécifiée que dans certains cas, la synthèse produit des bascules non désirées pour mémoriser la valeur du signal dans tous les autres cas. z Il faut donc affecter toutes les sorties dans toutes les conditions ETRS 511 92 Description de FSM en VHDL Problème de l’état initial z En simulation, par défaut, la valeur de l’état initiale du système est celle à gauche des états énumérés type state is (etat0, etat1, etat2, etat3) z Après synthèse, l’état initial peut être n’importe quel état. z Il faut donc prévoir un reset pour forcer la machine à démarrer dans le bon état ETRS 511 93 Description de FSM en VHDL Problème de l’état initial z Reset asynchrone ETRS 511 94 Description de FSM en VHDL Problème de l’état initial z Reset synchrone ETRS 511 95 Exercice Ecrire l’architecture d’une machine à état avec un reset synchrone qui décrit un diviseur de fréquence par 2. On considère que la fréquence d’horloge est beaucoup plus élevée que la fréquence du signal d’entrée D. D z Commencer par représenter le graphe d’état z Coder la machine en VHDL t S t ETRS 511 96 Exercice D = ‘0’ D = ‘1’ E3 S=0 S=0 E0 D = ‘0’ D = ‘1’ D = ‘1’ D = ‘0’ E2 S=1 S=1 D = ‘1’ E1 D = ‘0’ ETRS 511 97 Exercice ETRS 511 98 Plan gobal du cours z z z I. Introduction II. FPGA III. VHDL z z z z z z z z z z Introduction Règles d’écriture Unités de conception - Objets VHDL - Opérateurs Assignations concurrentes/séquentielles Assignations conditionnelles/sélectives Composant Machine à états Règles de conception Simulation Compléments (fonctions, procédures, packages, …) ETRS 511 99 Règles de conception Timing ETRS 511 100 Règles de conception Système combinatoire (asynchrone) a0 a1 a2 a3 a4 Niveaux logiques z b0 b1 b2 1 2 3 délai Plus le nombre de niveaux logiques est grand, plus le délai augmente z Mauvaise performance en temps z Difficile à mettre au point z Difficile de tester tous les cas possibles ETRS 511 101 Règles de conception Conception synchrone ETRS 511 102 Règles de conception Conception synchrone z Améliore des performances en vitesse z Simplifie de la vérification fonctionnelle z Autorise des analyses statiques du timing z Assure une parfaite testabilité z Correspond à l’architecture des composants ETRS 511 103 Règles de conception Règles à suivre : z 1 seule horloge z Jamais de logique sur un signal d’horloge (utiliser enable) z Si plusieurs domaines d’horloge, prévoir des FIFOs tampons z Resynchroniser tous les signaux asynchrones pour éviter la métastabilité (2 bascules D à la suite) ETRS 511 104 Règles de conception Exemple de synchronisation d’un signal reset (actif asynchrone mais inactif de manière synchrone) ETRS 511 105 Règles de conception z Adopter une démarche qualité (dénomination, hiérarchisation) z Attention aux assignations incomplètes (mémorisation implicite) z Attention à l’utilisation des variables z Penser à l’implantation (orienter le compilateur) z Trouver le bon compromis entre ressources et vitesse en choisissant le bon degré de parallélisme ETRS 511 106 Plan gobal du cours z z z I. Introduction II. FPGA III. VHDL z z z z z z z z z z Introduction Règles d’écriture Unités de conception - Objets VHDL - Opérateurs Assignations concurrentes/séquentielles Assignations conditionnelles/sélectives Composant Machine à états Règles de conception Simulation Compléments (fonctions, procédures, packages, …) ETRS 511 107 Simulation Simulation pour valider tout ou une partie du design z Vérification manuelle sur chronogrammes z Fastidieux voir impossible si design complex z Taux de couverture? z Vérification automatique : z Efficace z Mais, validité du modèle comportemental? z Vitesse? ETRS 511 108 Simulation z Vérification automatique z Très efficace ETRS 511 109 Simulation Type de simulation z Simulation fonctionnelle : z Le programme simule un circuit idéal sans temps de propagation z Permet de vérifier que les fonctions sont réalisées correctement z Simulation temporelle : z Prise en compte des délais de propagation z Permet de vérifier que contraintes temporelles sont respectées (vitesse d’horloge) ETRS 511 110 Simulation Ecriture d’un testbench z Création graphique de chronogrammes z Pour Quartus : fichier vector waveform .vwf z Generate functionnal simulation netlist z Lancement de la simulation z Fastidieux, taux de couverture ? ETRS 511 111 Simulation Exercice Tracer les chronogrammes de deux signaux en entrée d’une porte ET pour tester son bon fonctionnement A 00 01 11 10 t (ns) B t (ns) ETRS 511 112 Simulation Ecriture d’un testbench en vhdl z Possibilité d’utiliser des ressources vhdl non synthétisables z Composition du fichier z Library z Entity (vide) z Architecture z Déclaration du composant à tester z Définition des signaux et constantes z Description du chronogramme des signaux z Mapping du composant ETRS 511 113 Simulation Ecriture d’un testbench en vhdl ETRS 511 114 Simulation Ecriture d’un testbench en vhdl La durée s’exprime avec un type physique : fs, ps, ns, us,… z Affectation d’un signal Signal <= valeur after durée, valeur after durée, … ; z Conditions temporelles (dans un process) wait on liste_signal until condition for durée; z wait on : attente sur événement z wait until : attente de conditions z wait for : attente pour un certain temps ETRS 511 115 Simulation Ecriture d’un testbench en vhdl z Utilisation d’attribut z Signal’stable : vrai s’il n’y a pas d’événement pendant la durée z Signal’last_event : durée depuis le dernier événement z Signal’last_value : avant dernière valeur ETRS 511 116 Simulation Génération d’horloge ETRS 511 117 Simulation Génération d’horloge ETRS 511 118 Simulation Génération d’horloge Autres possibilités : ETRS 511 119 Simulation Exercice Ecrire le fichier vhdl permettant de simuler une porte ET ayant deux entrées A et B et une sortie S. Les chronogrammes des signaux A et B doivent suivre les chronogrammes suivants : A B 0 0 ETRS 511 30 80 50 t (ns) 100 120 t (ns) 120 Simulation Exercice ETRS 511 121 Simulation Assertions z Permettent d’avoir des informations dynamiques sur la simulation assert test report message severity action z Si le test est négatif, on affiche message avec arrêt ou non de la simulation en fonction de action now = temps de simulation ETRS 511 122 Simulation Assertions ETRS 511 123 Simulation Assertions z Il est possible d’afficher la valeur d’un signal ou d’une constante type‘image(signal) z Attention, pas de fonction prévue pour le type std_logic_vector ETRS 511 124 Simulation Exercice Ecrire le fichier vhdl permettant de simuler une ALU qui peut réaliser les opérations suivantes : S = A si commande = 00 A z S = B si commande = 01 B z S = A + B si commande = 10 z z S = A – B si commande = 11 S 4 4 ALU 4 Commande 2 Lorsqu’une opération est réalisée, utiliser les assertions pour faire apparaître un message d’erreur s’il y a une erreur de calcul. A la fin de la simulation, faire apparaître «Fin de simulation». ETRS 511 125 Simulation Exercice ETRS 511 126 Simulation Exercice ETRS 511 127 Plan gobal du cours z z z I. Introduction II. FPGA III. VHDL z z z z z z z z z z Introduction Règles d’écriture Unités de conception - Objets VHDL - Opérateurs Assignations concurrentes/séquentielles Assignations conditionnelles/sélectives Composant Machine à états Règles de conception Simulation Compléments (fonctions, procédures, packages, …) ETRS 511 128 Paramètres génériques z Permettent de paramétrer des composants z Se déclarent dans l’entity z On leur donner une valeur par défaut ( := ) z L’instanciation se fait avec generic map (…) ETRS 511 129 Paramètres génériques a, b et c ont 4 bits de largeur a, b et c ont 8 bits de largeur (valeur par défaut) ETRS 511 130 Sous-programmes z Permettent de modulariser le code z Permettent de regrouper des actions répétitives z Permettent de réutiliser des fonctions z Rendent les fichiers plus lisibles z Permettent d’automatiser des actions (simulation) z Fonction et procédure ETRS 511 131 Fonction z Les paramètres d’une fonction sont uniquement en entrée z Une fonction ne retourne qu’une seule valeur z Elle a un type, celui de la valeur retournée z Elle doit être déclarée dans un package, une entity ou une architecture z Exemple : conversion de types ETRS 511 132 Fonction z Syntaxe : function nom (paramètre : type) return type is Zone de déclaration Begin Zone d’instructions return valeur; end nom; z Exemple : ETRS 511 133 Fonction ETRS 511 134 Procédure z Les paramètres d’une procédure peuvent être en entrée, en sortie ou les deux z Une procédure peut retourner plusieurs valeurs z Elle doit être déclarée dans un package, une entity ou une architecture z Elle permet de réduire les lignes de code ETRS 511 135 Procédure z Syntaxe : Signal, variable ou constant procedure nom (class paramètre : mode type) is Zone de déclaration Begin in, out ou inout Zone d’instructions end nom; z Exemple : ETRS 511 136 Procédure Déclaration de la procédure cycle ETRS 511 137 Procédure Déclaration de la procédure verif ETRS 511 138 Procédure Utilisation de la procédure verif ETRS 511 139 Package z Un package est une unité de compilation permettant de regrouper constant, type, component, function et procedure z Un package est compilé à part soit dans une bibliothèque spécifique, soit dans la bibliothèque courante work Il doit être compilé avant les composants qui l’utilisent z use work.nom_package.all; ETRS 511 library lib; use lib. nom_package.all; 140 Package Liste de ce qu’il y a dans le package Description de ce que font les fonctions ou les procédures ETRS 511 141