Polycopié. Conception des systèmes numérique - Cours VHDL - Génie électrique - 4 ème année. Bekkay HAJJI ENSAO - Université Mohamed Premier

of 45
154 views
PDF
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Document Description
Polycopié Conception des systèmes numérique - Cours VHDL - Génie électrique - 4 ème année Bekkay HAJJI ENSAO - Université Mohamed Premier Année universitaire : Table des matières 1 Introduction
Document Share
Document Transcript
Polycopié Conception des systèmes numérique - Cours VHDL - Génie électrique - 4 ème année Bekkay HAJJI ENSAO - Université Mohamed Premier Année universitaire : 2 Table des matières 1 Introduction Qu'est ce que VHDL? Avantages du VHDL Flot de conception d'un circuit numérique Structure d'un module VHDL Entité Architecture Exemples Diérents styles de description d'un circuit Description comportementale Process Description structurelle Description par ot de données Descriptions mixtes Testbench Structure du testbench Exemples du testbench Testbench du demi-additionneur Testbench du diviseur de fréquence Machines à états en VHDL Introduction Types de Machine à état Diagramme d'état Machines d'état en VHDL Exemple d'une perceuse 4 TABLE DES MATIÈRES 6 Quelques détails du langage VHDL Librairie IEEE Opérateurs Objets et leurs types Objets Types TABLE DES MATIÈRES 5 Avant propos 6 TABLE DES MATIÈRES Chapitre 1 Introduction Les avancées technologiques de ces dernières années continues à stimuler l'évolution fulgurante des circuits logiques programmables. Nous disposons actuellement de circuits avec plusieurs millions de portes. De plus, les fréquences de fonctionnement de ces circuits ne cessent d'augmenter, pour atteindre 400 à 500 Mhz. Ces évolutions permettent d'orir des circuits logiques de plus en plus performant à un coût toujours plus faible. Le domaine d'utilisation de ces circuits ne se limite plus à de petites applications périphériques mais s'élargit jusqu'à l'intégration de système à processeur complet (SoPC). Parallèlement, la diminution du prix de ces composants ainsi que de leurs outils de conceptions, les met à la portée de toute PME (Petites et moyennes entreprises ) désireuse d'accéder à cette technologie. Avec la complexité des systèmes à réaliser, les méthodes conventionnelles de description basées sur le dessin des schémas de portes logiques ont été délaissées. De nouvelles méthodes de descriptions ont vu le jour. L'association de ces méthodes, avec un langage de description de haut niveau, apporte la souplesse nécessaire à une conception rapide, ecace, able et évolutive. Le langage VHDL (VHSIC Hardware Description Langage) fourni un très bon moyen de description et associé à une méthodologie adaptée, il permet de réaliser les projets les plus ambitieux. 1.1 Qu'est ce que VHDL? L'acronyme VHDL signie Very High Speed Integrated Circuit (VHSIC) Hardware Description Langage (HDL). VHDL est un langage de programmation complet. Le langage a été développé pour le compte du gouvernement américain pour documenter la conception d'asic. Il est fortement inspiré 7 8 CHAPITRE 1. INTRODUCTION du langage ADA. Rapidement, des simulateurs de VHDL sont apparus, puis des synthétiseurs capables de traduire un programme VHDL en une liste d'interconnexions entre des portes logiques (netlist) pouvant être réalisée sur un ASIC. Le langage VHDL est normalisé par l'ieee. La première norme remonte à Des mises à jour ont eu lieu en 1993, 2000, 2002 et Le présent document se base sur la norme puisque la norme n'a été publiée qu'en janvier La norme plus récente est mal supportée par les outils de conception au moment de la préparation du présent document. 1.2 Avantages du VHDL Les avantages de langage VHDL par rapport aux schémas sont les suivants : Il permet de décrire des systèmes complexes complets ; Il favorise la décomposition en modules paramétrables ; Il facilite l'établissement de spécications et d'interfaces clairement dé- nies ; et, IL normalise l'échange d'informations entre plusieurs groupes travaillant sur un même projet.. Le langage VHDL peut servir à trois choses : la modélisation de circuits (surtout numériques) ; la description de circuits en vue de leur synthèse (i.e. leur réalisation matérielle) ; et, la documentation de circuits. 1.3 Flot de conception d'un circuit numérique Un ot de conception est une séquence d'opérations permettant d'obtenir un circuit concret, implémenté dans une technologie donnée, à partir de sa description. Un ot de conception typique de circuit numérique est illustré à la Figure 1.1. Les étapes principales du ot de conception sont les suivantes : Description : La description du module peut se faire par une combinaison de code HDL dans plusieurs langages, de schémas, diagrammes d'états ou encore ots de données. Synthèse : La synthèse du code HDL est eectuée par un outil de 1.3. FLOT DE CONCEPTION D'UN CIRCUIT NUMÉRIQUE 9 Figure 1.1 Flot de conception d'un circuit numérique. synthèse, ou synthétiseur. Le synthétiseur produit une description du circuit en termes d'éléments logiques simples. Le synthétiseur indique aussi les inter-connexions entre ces composantes. Le produit du synthétiseur est communément appelé liste des inter-connexions (netlist). Simulation fonctionnelle : Le circuit ainsi synthétisé est simulé pour tester s'il fonctionne correctement ou non, ce type de simulation ne tient pas compte des temps de propagation. Placement& routage : L'outil va choisir l'emplacement des éléments logiques, ainsi que les déférentes routes (interconnexions entre eux). Analyse temporelle : Cette étape consiste en l'analyse des délais de propagations. Pour fournir des indications sur les performances en vitesse du circuit.. Ce document est articulé autours de cinq chapitres : Le chapitre 1 donne les concepts de base du langage VHDL. Le chapitre 2 présente les diérentes méthodes de description d'un circuit numériques. Le testbench est traité dans le chapitre 4 avec des exemples d'applications. Le dernier chapitre de ce document aborde d'une manière détaillée les machines d'états en VHDL 10 CHAPITRE 1. INTRODUCTION Chapitre 2 Structure d'un module VHDL Une description VHDL se compose de deux parties indissociables à savoir : L'entité (ENTITY) : Elle décrit l'interface du circuit avec le monde extérieur. Il précise le nom du module, les ports d'entrés/sorties ainsi que leur types. L'architecture (ARCHITECTURE) : Elle décrit le fonctionnement du circuit. Elle peut contenir trois styles de descriptions à savoir : La description comportementale, structurelle et en n la description dite ot de données. Ces trois formes peuvent être utilisées conjointement dans la description de l'architecture d'un circuit. Plusieurs architectures peuvent être associées à une même entité pour montrer l'évolution du processus de conception. 2.1 Entité Le bloc Entité (Entity) décrit la vue externe du circuit. Elle est constituée d'une entête contenant son nom suivie de la liste des diérents signaux entrées/sorties (ports) qui constituent son interface. Chaque port possède : Un nom. Un mode, ce qui dénit le sens de transfert comme l'illustre le schéma de la gure 2.1. IN pour des signaux entrants. OUT pour des signaux sortants (non visibles à l'intérieur de l'entité). BUFFER pour les signaux sortants qui peuvent être aussi utilisés à l'intérieur de l'entité. INOUT pour les signaux bidirectionnels. 11 12 CHAPITRE 2. STRUCTURE D'UN MODULE VHDL Figure 2.1 Sens du signal. Un type, qui peut être : Std_logic pour un signal (simple l) Std_logic_vector dans le cas d'un bus composé de plusieurs signaux (une nappe de ls). Les dimensions seront données par les deux indices extrémaux. Les ls d'une nappe peuvent être indicés dans le sens croissant (par exemple de 0 à 15 (0 to 15)) ou dans le sens décroissant (par exemple de 32 à 1 (32 downto 1)) Description VHDL de l'entité Blackbox : Dans cette exemple, l'entité est nommé black_box dont les ports sont : clk, rst : Signaux d'entrés de types std_logic. d : Signal d'entrée de type std_logic_vector de 8 bits. co : Signal de sortie de type std_logic. q : Signal de sortie de type std_logic_vector Figure 2.2 Entity. 2.1. ENTITÉ 13 La gure 2.3 donne la description en VHDL de l'entité Black_Box. Figure 2.3 Description VHDL de l'entité Black_Box Description de l'entité de l'additionneur complet : Figure 2.4 Additionneur. Figure 2.5 Description VHDL de l'entité de l'additionneur. 14 CHAPITRE 2. STRUCTURE D'UN MODULE VHDL 2.2 Architecture Le bloc architecture décrit le fonctionnement interne du circuit. Chaque architecture porte un identicateur et est reliée à une seule entité. Cependant, une entité peut avoir plusieurs architectures. Le format du bloc architecture est montré dans l'exemple ci-dessous. Figure 2.6 Additionneur. Le bloc architecture comporte deux parties : une partie déclarative et un corps. Dans la partie déclarative, on peut retrouver des déclarations de signaux, de constantes, de composantes et de types. On peut aussi y dénir des sous-routines sous la forme de fonctions et de procédures. Dans le corps de l'architecture on retrouve des instructions concurrents qui décrivent le comportement de l'entité à laquelle l'architecture est rattachée. Architecture de l'additionneur :. La gure 2.7 illustre l'architecture du demi additionneur par la description de ot de données. Figure 2.7 Architecture du demi additionneur. 2.3. EXEMPLES Exemples Exemple 1 : Code VHDL de l'additionneur complet Figure 2.8 Demi additionneur. Exemple 2 : Code VHDL de la bascule D ip-op Cette bascule possède deux entrées : la donnée D et le signal d'horloge clk. Son principe de fonctionnement est le suivant : a chaque front montant de clk, la sortie q recopie l'entrée d. La gure 2.9 présente le code VHDL de la bascule D. 16 CHAPITRE 2. STRUCTURE D'UN MODULE VHDL Figure 2.9 Bascule D ip_op. Chapitre 3 Diérents styles de description d'un circuit En VHDL, il existe trois façons, largement utilisées, pour décrire le fonctionnement d'un circuit numérique à savoir : La description comportementale à l'aide des processus La description à l'aide des ots de données et la descriptions structurelles à l'aide des instanciations des composants 3.1 Description comportementale Dans ce type de description, le comportement du circuit se fait à laide des commandes process (pour processus). Chaque process contient des instructions séquentielles qui s'exécutent séquentiellement les unes après les autres Process Qu'est ce qu'un process? Un process permet de décrire de manière algorithmique le fonctionnement d'un système numérique, similaires à ceux d'un langage procédural comme C et Java, incluant les structures de condition et de répétition. Il est pratiquement indispensable pour décrire les éléments mémoires (bascules).un processus décrit une partie du circuit qui s'exécute de façon concurrente à d'autres processus et à des assignations concurrentes de signaux. La forme d'un énoncé process est illustrée dans l'exemple de la gure 3.1 : Le process comporte deux parties : une partie déclarative et un corps. 17 18CHAPITRE 3. DIFFÉRENTS STYLES DE DESCRIPTION D'UN CIRCUIT Figure 3.1 Forme d'un process. La partie déclarative contient : Les déclarations de types, d'objets des catégories variable et constant Des fonctions et des procédures. Les items déclarés dans cette partie ne sont visibles qu'à l'intérieur du processus.. Dans la partie corps, on y retrouve des énoncés séquentiels qui décrivent le comportement du processus. Règles de fonctionnement d'un process : 1. L'exécution d'un process est déclenchée à chaque changement d'état d'un signal de la liste de sensibilité. 2. Les instructions du process s'exécutent séquentiellement. 3. Les changements d'état des signaux par les instructions du process sont pris en compte à la n du process Il est possible de se passer de la liste de sensibilité du process à condition d'utiliser l'instruction WAIT comme le montre l'exemple de la gure 3.2. Cette instruction permet la suspension de l'évolution d'un process. Trois formes utilisées pour l'instruction WAIT : Wait until condition : La suspension du process a lieu jusqu'à ce que la condition devienne VRAIE Wait on liste de sensibilité : L'exécution du process reprend dès qu'un des signaux de la liste de sensibilité change d'état Wait for durée : Suspension du process a lieu pendant une durée spéciée 3.1. DESCRIPTION COMPORTEMENTALE 19 Figure 3.2 Process sans liste de sensibilité. Remarque : les process qui ne possèdent pas une liste de sensibilité sont généralement non synthétisable. Structures utilisées dans un process : Les deux principales structures utilisées dans un process sont : L'assignation conditionnelle : if-then-else (Figure 3.3) L'assignation sélective : Case when (Figure 3.4) Figure 3.3 Instruction IF-THEN-ELSE. Exemple 1 : Bscule D Dans l'exemple de la gure 3.5, nous décrirons le fonctionnement de la bascule D en utilisant la notion du process. La bascule D comporte les entrées suivants : D, clk et reset : signaux d'entrés. Q : signal de sortie. 20CHAPITRE 3. DIFFÉRENTS STYLES DE DESCRIPTION D'UN CIRCUIT Figure 3.4 Instruction CASE-WHEN. La liste de sensibilité du process contient les signaux : CLK et rst. D'après les règles de fonctionnement énoncées précédemment, le changement d'état du signal CLK ou bien rst va déclencher le process et par conséquent évaluer les instructions de celui-ci. La détection de front montant du signal CLK est réalisée par l'instruction if (CLK'event and CLK='1'). Si on veut un déclenchement sur un front descendant, il faut écrire l'instruction suivante : if (CLK'event and CLK='0'). Les bibliothèques IEEE possèdent deux instructions permettant de détecter les fronts montants Rising_edge(CLK) ou descendants Falling_edge(CLK). Exemple 2 : Multiplixeur 4 vers 1 L'exemple de la gure 3.8 illustre la description VHDL du multiplexeur 4 vers 1 à l'aide du process basé sur l'instruction CASE -WHEN. Nous précisons que cette dernière termine toujours par OTHERS qui traite la dernière possibilité de choix. 3.2 Description structurelle La description structurelle consiste à implanter le système comme un agrégat de sous systèmes. Elle consiste, tout simplement, à décrire la mise en uvre et l'interconnexion de ses modules à l'aide des signaux. Elle est semblable à une description schématique.la démarche de la description structurale nécessite : la déclaration de la liste des composants utilisés dans la partie déclarative de l'architecture avec le mot clé component. 3.2. DESCRIPTION STRUCTURELLE 21 Figure 3.5 Description comportementale de la bascule D (If-then -else). Figure 3.6 Bscule F (Flip-op). la déclaration de la liste des signaux internes qui sont de simples ls, ou des nappes de ls, utilisés pour interconnecter les composants. L'instanciation des composants à l'aide la commande port map (nom_port = Nom_signal). On peut instancier chaque composante déclarée autant de fois que nécessaire. Exemple 1 : Description structurelle d'un comparateur : L'exemple de la gure 3.8 présente la description structurelle du comparateur. Ce derniers se considère comme l'association de deux composants à 22CHAPITRE 3. DIFFÉRENTS STYLES DE DESCRIPTION D'UN CIRCUIT Figure 3.7 Schéma du multiplixeur 4vers 1. Figure 3.8 Description comportementale du multiplixeur 4vers 1 (casewhen). savoir la porte XOR et la porte inverseuse. Exemple 2 : Description structurelle de l'additionneur : Cet exemple illustre la description structurale de l'additionneur. On suppose dans cet exemple que les composantes XOR_G, AND_G et OR_G sont 3.2. DESCRIPTION STRUCTURELLE 23 Figure 3.9 Schéma du Comparateur. Figure 3.10 Description structurelle du comparateur. des entités déclarées dans d'autres chiers, et pour lesquelles il existe des descriptions de leur comportement à l'aide d'architectures. Ces chiers doivent avoir été compilés dans une librairie qui est visible lors de la compilation du code de cet exemple. L'instanciation d'une composante doit inclure une étiquette (XOR1, XOR2, AND1, AND2 et OR dans l'exemple). Elle est suivie de l'identicateur de la composante, et de la liste des connexions à ses ports d'entrée et de sortie. L'assignation des connexions aux ports des composantes peut être faite par 24CHAPITRE 3. DIFFÉRENTS STYLES DE DESCRIPTION D'UN CIRCUIT position, c'est-à-dire dans le même ordre que pour la déclaration de la composante. Elles peuvent aussi être faites explicitement en spéciant les noms des ports de la composante et les noms des signaux qui y sont connectés, tel que montré dans cet exemple. LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY Full_adder IS PORT ( x,y,cin : IN std_logic ; Sum, cout : OUT std_logic) ; END Full_adder ; Architecture structurelle of Full_adder is Déclaration des types de composants component XOR_G portes XOR PORT ( X1,X2, : IN std_logic ; XO1 : OUT std_logic) ; END component ; component AND_G portes AND PORT ( A1,A2, : IN std_logic ; AO1 : OUT std_logic) ; END component ; componentor_g portes OR PORT ( O1, O2 : IN std_logic ; OO1 : OUT std_logic) ; END OR_G ; Signal S1, S2, S3 : std_logic ; déclaration des signaux begin XOR1 : XOR_G portmap(x, Y, S) ; XOR2 : XOR_G portmap(s1, Cin, Cout) ; AND1 : AND_G portmap (X, Y, S3) ; AND2 : AND_G portmap(s1, Cin, S2) ; OR : OR_ portmap(s2, S3, Cout) ; end structurelle 3.3. DESCRIPTION PAR FLOT DE DONNÉES Description par ot de données La description d'un circuit numérique à l'aide de ot de données est basées sur des équations booléennes (logiques) pour déterminer sa fonction sans nécessairement dénir sa structure. En général, cela signie que les valeurs des signaux et ports du circuit sont établies par des assignation concurrentes de valeurs. Pour les circuits combinatoires, les assignations concurrentes à des signaux utilisent souvent des opérateurs logiques qui sont des mots clés du langage : and, or, nand, nor, xor, xnor, not. On peut utiliser des parenthèses pour faire respecter la préséance requise dans les expressions. Exemple 1 : Comparateur L'exemple de la gure 3.11, présente la description de ot de données en VHDL du comparateur. Figure 3.11 Description de ot de données du comparateur. Exemple 2 : Demi-additionneur L'exemple de la gure 3.12, présente la description ot de données en VHDL du demi-additionneur. 26CHAPITRE 3. DIFFÉRENTS STYLES DE DESCRIPTION D'UN CIRCUIT Figure 3.12 Description de ot de données du demi-additionneur. 3.4 Descriptions mixtes Les trois types de descriptions (structurelles, fonctionnelles, procédurales) peuvent coexister dans une même architecture. La dénition sémantique de leurs actions sur les signaux les rendent compatibles entre elles. Chapitre 4 Testbench Un testbench applique des stimuli sur les entrées du circuit à tester, DUT (Design Under Test), et récupère la valeur des sorties pour validation (Figure 4.1). Les résultats sont visualisés sous forme de chronogrammes ou dans un chier. Comme le testbench est un programme en VHDL, il est portable et ne dépend pas de l'outil de simulation (portabilité). Le même testbench peut être utilisé pour tester le fonctionnement d'un module ayant plusieurs architectures Figure 4.1 Design Under Test (DUT). 4.1 Structure du testbench Comme nous pouvons le voir sur le schéma de la gure 4.2, l'entité du testbench est vide. Elle ne dispose ni d'entrées ni de sorties. Dans la partie déclarative de l'architecture, nous déclarons : le composant à tester en tant component les vecteurs de test en tant que signals 27 28 CHAPITRE 4. TESTBENCH Figure 4.2 Structure du testbencnh. Entre begin et end le nom de l'architecture , nous : générons les vecteurs de test à l'aide du process sans liste de sensibilité ferons l'instantiation du composant à tester à l'aide de la commande portmap 4.2 Exemples du testbench Testbench du demi-additionneur La gure 4.3 présente le programme VHDL du testbench du demi-additionneur. En début de ce programme, on déclare le composant à tester ainsi que les diérentes signaux qui vont servir à connecter le composant. La suite du programme testbench est présentée sur la gure 4.3. Elle concerne l'instantiation du composant à tester à l'aide de la commande Port map et la génération des vecteurs de tests à présenter à ses entrées à l'aide du Process. 4.2. EXEMPLES DU TESTBENCH 29 Figure 4.3 Déclaration du composant à tester et les signaux de test pour le demi-additionneur. Figure 4.4 Génération des vecteurs de test pour le demi-additionneur Testbench du diviseur de fréqu
Search Related
We Need Your Support
Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

Thanks to everyone for your continued support.

No, Thanks
SAVE OUR EARTH

We need your sign to support Project to invent "SMART AND CONTROLLABLE REFLECTIVE BALLOONS" to cover the Sun and Save Our Earth.

More details...

Sign Now!

We are very appreciated for your Prompt Action!

x