Compléments VHDL - R.WEBER - Polytech'Orleans

Slides:



Advertisements
Présentations similaires
PL/SQL : Le Langage PL/SQL est une extension du SQL, qui offre
Advertisements

LYCEE MAGHREB ARABE TECHNIQUE
14 - Adresse IP et interfaces. Plan détude 1)Adresse IP dune interface 1)Résolution de nom vers IP statique 1)Service DNS 1)Spécification des interfaces.
Ing Mohamed MASMOUDI Cours VHDL Ing Mohamed MASMOUDI
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
MACHINE DE MOORE SYNCHRONE SIMPLIFIÉE Professeur à l'UHP / ESIAL
Cours #6 Conception d’unités de contrôle
2 - Introduction à VHDL-AMS (1 à 23 = 1h45)
Cours #8 Flot de conception d’un circuit numérique
Plan de l’exposé Introduction Revue de littérature Méthodologie
Historique de SystemC Regroupe 4 courants didées: SCENIC Project : Synopsys+UC Irvine Philips System-Level Data Types, VSIA SLD DWG IMEC, Hardware-Software.
Cours #4 Éléments à mémoire et circuits séquentiels synchrones de base
CSI3525: Concepts des Languages de Programmation
IFT 6800 Atelier en Technologies d’information
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Plan 1-Introduction. 2-Standard VHDL-AMS. Modélisations:
Cours #7 Vérification d’un modèle VHDL
Cours #5 Conception de chemins des données
Chapitre 9 Les sous-programmes.
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
COMPOSANTS PROGRAMMABLES
Modélisation des opérations Spécifier les transformations détat que lon attend des services de la machine Létat dune machine entièrement déterminée par.
2.1 - Historique Chapitre 2 : Introduction au langage C++
Modélisation VHDL d’un chemin des données
Décodeurs et encodeurs : sujets de ce thème
O-notation 1. Introduction 2. O-notation 3. Opérations 3.1 Somme 3.2 Produit 4. Règles générales 5. Exemple 6.Analyse des algorithmes récursifs 6.1 Dilatation.
Banc d’essai pour un circuit combinatoire
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Synthèse d’un circuit.
Modélisation VHDL du chemin des données d’un processeur à usage général Sujets de ce thème
Packages et Types De la Spécification Formelle A l'implémentation Ada.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Analyse de machines.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Description d’un circuit.
La notion de type revisitée en POO
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Entrées et sorties par.
Advanced Boolean Equation Language
JavaScript.
INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel Langages de description architecturale.
Méthodologie de conception Outils de conception
Algorithmique et programmation en
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Vérification de circuits.
Chapitre 6.2 Les curseurs Cours SGBD 3A Mme hkimi Jihène
Créer des packages.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Arithmétique entière.
Un survol du language C.
Mise au point de systèmes mixtes et évaluation de puissance : Un exemple d’application Anne-Marie TRULLEMANS- ANCKAERT FTFC’03 UCL-DICE, Place du Levant.
Concepts intermédiaires de VHDL
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Modélisation VHDL de.
Synthèse et implémentation d’un circuit combinatoire
Journées d'études Faible Tension Faible Consommation 14, 15, 16 mai Gwenolé CORRE, Nathalie JULIEN, Eric SENN, Eric MARTIN LESTER, Université de.
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Banc d’essai pour un.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Objets des catégories.
Chapitre 5 : Les circuits séquentiels
Introduction au VHDL - R.WEBER - Polytech'Orleans
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Tests exhaustifs.
Architecture et technologie des ordinateurs II
Cours LCS N°4 Présenté par Mr: LALLALI
Algorithmique et programmation en
Les FPGA « Field Programmable Gate Array »
Implémentation de la division sur FPGA
VHDL pour circuits séquentiels
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Flot de conception de.
ELE6306 : Test de systèmes électroniques Adaptation d’une interface de communication pour implants en vue du test Laurent Aubray, Dominique Pâquet-Ferron.
Conception avancée de circuits numériques (VHDL)
Le VHDL Programmation des CPLD et FPGA avec Quartus II ENSET d'Oran / IUFM Aix Marseille - mai
Description d’un circuit combinatoire en VHDL
Arithmétique entière en VHDL
Chapitre 01: Structure d'un module VHDL
VALMEM Traduction automatique d'une description comportementale VHDL + annotations temporelles en automates temporisés A. Bara, E. Encrenaz LIP6 VALMEM.
MINISTÈRE DE L’ENSEIGNEMENT SUPÉRIEUR ET DE LA RECHERCHE SCIENTIFIQUE
Transcription de la présentation:

Compléments VHDL - R.WEBER - Polytech'Orleans 2006-2007 Polytech'Orléans Filière ESI MODULE Conception Numérique avancée Complements VHDL FASCICULE DE COURS ANNÉE 2006-2007 SPE 4 Option “SE” Dr. Rodolphe WEBER 2006-2007 Compléments VHDL - R.WEBER - Polytech'Orleans Compléments VHDL - R.WEBER - Polytech'Orleans

Compléments VHDL - R.WEBER - Polytech'Orleans 2006-2007 Compléments VHDL Faire du code générique Compilation conditionnelle Les testbenchs Les règles de conception Les machines d'états 2006-2007 Compléments VHDL - R.WEBER - Polytech'Orleans Compléments VHDL - R.WEBER - Polytech'Orleans

Compléments VHDL - R.WEBER - Polytech'Orleans Rappel 2006-2007 Structure d’un fichier VHDL Permet d’accéder à d’autres descriptions définies dans des diverses librairies. Rem. : Plusieurs couples entity/architecture sont possibles au sein d ’un même fichier. Les clauses library et use ne sont pas globales. Leur effet s’arrête dès la déclaration d’une nouvelle entity. D'office il y a Standard et Work library ieee; use ieee.std_logic_1164.all; entity essai is port (a,b : in std_logic; c : out integer); end essai; architecture archi1 of essai is Signal s1, s2 : std_logic; begin . end archi1; Description de l’interface Description du comportement de l’entité. Pour une même entité plusieurs architectures sont possibles. a c s1 s2 b 2006-2007 Compléments VHDL - R.WEBER - Polytech'Orleans Compléments VHDL - R.WEBER - Polytech'Orleans

Compléments VHDL - R.WEBER - Polytech'Orleans Code Générique 2006-2007 Les paramètres génériques Ils sont déclarés dans l'entity Ils permettent de paramétrer des composants une valeur par défaut peut être définie (":=") l'instanciation se fait grâce à "generic map(…)" entity mux is generic (width : integer :=8); port (sel :in std_logic; a,b : in std_logic_vector (width-1 downto 0); c : out std_logic_vector (width-1 downto 0)); end mux; architecture behav of mux is begin c<=a when sel='0' else b; end behav; comp1 : mux generic map ( 4) port map(sel=>seldata, a=> dataa, b=> datab, c=>data); comp2 : mux port map (sel=>seladr, a=>adra, b=> adrb, c=>adr); 2006-2007 Compléments VHDL - R.WEBER - Polytech'Orleans Compléments VHDL - R.WEBER - Polytech'Orleans

Compléments VHDL - R.WEBER - Polytech'Orleans Code Générique 2006-2007 Utilistation d’attributs Ils permettent de récupérer de l'information sur la nature des objets type etat is (lundi, mardi, mercredi, jeudi, vendredi); signal indice : integer range 0 to 255; signal tab : std_logic_vector (3 downto 0); signal clk : std_logic; à éviter 2006-2007 Compléments VHDL - R.WEBER - Polytech'Orleans Compléments VHDL - R.WEBER - Polytech'Orleans

Compléments VHDL - R.WEBER - Polytech'Orleans Code Générique 2006-2007 Les fonctions Appel d'une fonction x <= fonction(a,b) ou x:=fonction(a,b) Elle doit être spécifiée au préalable dans un package, une entity ou une architecture. Elle peut ne rien générer, comme générer de la logique. Une fonction dont le nom est entre " devient un opérateur. La surcharge est possible. Il existe des fonctions toutes faites : exemple : la librairie ieee.std_logic_1164 : 9 états possibles (1,0,Z,'-',…) fonctions logiques (and,nand, or,nor…) détection de front : rising_edge,falling_edge function maxval (in1,in2 :signed) return signed is variable resultat : signed (in1'range) ; begin … return resultat; end maxval; 2006-2007 Compléments VHDL - R.WEBER - Polytech'Orleans Compléments VHDL - R.WEBER - Polytech'Orleans

Compléments VHDL - R.WEBER - Polytech'Orleans Code Générique 2006-2007 Les Procédures Appel d'une procédure procedure(a,b,c,d) Elle doit être spécifiée au préalable dans un package, une entity ou une architecture. procedure Nom_proc ({<class> Nom_para: <mode> <type_spec>}) is --<class>: signal | variable | constant --<mode>: in | inout | out begin -- description de la procédure end; -- example: adder procedure ADD (signal A0, A1, B0, B1: in STD_LOGIC; signal C0, C1: out STD_LOGIC) is variable X, Y: STD_LOGIC; begin x := B0 and A0; Y := B1 xor A1; C0 <= (B0 and not A0) or ( not B0 and A0); C1 <= (Y and not X) or (not Y and X); end; 2006-2007 Compléments VHDL - R.WEBER - Polytech'Orleans Compléments VHDL - R.WEBER - Polytech'Orleans

Compléments VHDL - R.WEBER - Polytech'Orleans Code Générique 2006-2007 Les Packages package unité de compilation permettant de regrouper constant, type, signal, component, function et procedure package nom_du_package is -- description du package -- vue externe end package nom_du package; package body nom_du_package is -- description interne end package body nom_du_package; Le package est compilé à part soit dans une librairie spécifique soit dans la librairie courante work. On peut l'utiliser par la clause use : use work.nom_du_package.all; library tutu; use tutu.nom_du_package.all; 2006-2007 Compléments VHDL - R.WEBER - Polytech'Orleans Compléments VHDL - R.WEBER - Polytech'Orleans

Compléments VHDL - R.WEBER - Polytech'Orleans Compilation conditionnelle 2006-2007 Duplication de composants ou d'équations Forme générale : label : for indice in val_debut to val_fin generate … end generate label; Possibilité d'insérer des conditions dans la boucle : if condition then generate … end generate; pas de else ni de elsif. architecture archi of essai is signal temp : std_logic_vector( 0 to 31); signal vcc : std_logic ; begin vcc <= '1'; boucle : for i in 0 to 31 generate premier : if i=0 generate dffa: DFF port map ( SI,CLK,reset,vcc,temp(0)); end generate; autres : if i>0 generate dffb: DFF port map ( temp(i-1),CLK,reset,vcc,temp(i)); po<=temp; end archi; -- constant vcc : std_logic :='1'; 2006-2007 Compléments VHDL - R.WEBER - Polytech'Orleans Compléments VHDL - R.WEBER - Polytech'Orleans

Compléments VHDL - R.WEBER - Polytech'Orleans Compilation conditionnelle 2006-2007 Configuration configuration permet d'établir la correspondance avec un composant existant : Pour cibler un composant seul for label: composant_cible use entity librairie.composant_source(nom_architecture); end for; Pour cibler une famille de composant for all composant_cible use entity librairie.composant_source(nom_architecture); end for; Pour cibler le reste for others composant_cible use entity librairie.composant_source(nom_architecture); end for; Mis en œuvre : directe dans la partie déclarative de l'architecture par le biais d'un bloc configuration : configuration tutu of composant_cible is -- description des configurations end; Possibilité de hiérarchiser les configurations : for label: composant_cible use configuration librairie.nom_configuration end for; 2006-2007 Compléments VHDL - R.WEBER - Polytech'Orleans Compléments VHDL - R.WEBER - Polytech'Orleans

Compléments VHDL - R.WEBER - Polytech'Orleans Les Testbenchs 2006-2007 Les Testbenchs Pour générer des stimulis et valider le design vhdl. Possibilité ( nécessité) d'utiliser des ressources VHDL non synthétisable, description uniquement fonctionnelle Vérification manuelle sur chronogramme : fastidieux, voire impossible si design complexe taux de couverture ? stimuli Vhdl à tester Vérification automatique : Efficace mais validité du modèle comportementale ? Vitesse ? stimuli Vhdl à tester Comparaison Des résultats Modèle comportementale Fichier stimuli Modèle C, Matlab, Scilab…. Fichier Résultat Comparaison Des résultats Vérification automatique : Très efficace lecture stimuli Vhdl à tester Ecriture Résultat 2006-2007 Compléments VHDL - R.WEBER - Polytech'Orleans Compléments VHDL - R.WEBER - Polytech'Orleans

Compléments VHDL - R.WEBER - Polytech'Orleans Les Testbenchs 2006-2007 Génération d’un chronogramme la durée s'exprime avec un type physique : fs, ps, ns, us, ms now représente le temps courant (sous modelsim) signal <= valeur after durée absolue, valeur after durée absolue ,… ; H <= "00", "01" after 10 NS, "10" after 20 NS; clk<= not clk after 50 ns; -- génération d’une horloge à 10 MHz, attention initialiser clk à la déclaration label : wait on liste_signal until condition for durée; -- dans des process wait on : attente sur évènements wait until : attente de conditions (s’il a eu un événement sinon la condition n’est pas testée) wait for : attente pour un certains temps -- méthode simple mais lourde constant Period: TIME := 25 NS; ... Stimulus: process begin A <= "0000"; B <= "0000"; wait for Period; A <= "1111"; B <= "1111"; wait; end process; wait on clk until now=1ms ; --attente synchrone d’une durée de simulation wait until now=1ms ; wait for 10 ns ; wait until clk=‘1’ ; -- attente d’un front montant 2006-2007 Compléments VHDL - R.WEBER - Polytech'Orleans Compléments VHDL - R.WEBER - Polytech'Orleans

Compléments VHDL - R.WEBER - Polytech'Orleans Testbench 2006-2007 Les assertions Les assertions permettent d'avoir des informations dynamiques sur la simulation : assert test report message severity action si le test est négatif on affiche le message avec arrêt ou non de la simulation Action Effets NOTE poursuite néant WARNING écriture sur fichier .log ERROR écriture sur écran FAILURE arrêt écriture sur fichier Arrêter le simulateur : assert false severity failure ; Afficher un message : assert false report " Fin OK" severity note; ou report "Fin Ok" severity note exemple : assert (now< 10 ms) report " Fin de simu" severity failure 2006-2007 Compléments VHDL - R.WEBER - Polytech'Orleans Compléments VHDL - R.WEBER - Polytech'Orleans

Compléments VHDL - R.WEBER - Polytech'Orleans Les Testbenchs 2006-2007 Le Package TEXTIO (VHDL 93) process file F : TEXT open WRITE_MODE is "testout.txt"; variable L: line; begin while true loop -- on peut tester une durée NOW < finsimu write(L,NOW,LEFT,10); -- NOW = temps de simulation write(L,to_integer(a)); writeline(F,L); wait until clk='1'; end loop; end process; use std.textio.all; Les modes peuvent être : READ_MODE, WRITE_MODE, APPEND_MODE Cadrage possible avec WRITE : LEFT, + taille minimum du chanp RIGHT,+ taille minimum du chanp les types standards sont utilisés : TIME, INTEGER CHARACTER STRING BIT et BIT_VECTOR REAL avec use ieee.std_logic_textio.all, on peut utiliser STD_LOGIC et STD_LOGIC_VECTOR lire et écrire de l'hexa ou octal : HREAD et HWRITE OREAD et OWRITE 0 ns 0 25 ns 0 75 ns 1 125 ns 2 process file G : TEXT open READ_MODE is "test.txt"; variable L: line; variable bvar,cvar : integer range 0 to 7; variable dvar : real; begin while not ENDFILE(G) loop wait until clk='1'; readline(G,L); read(L,bvar); -- on ne lit que des variables read(L,cvar); read(L,dvar); b <= bvar; c <= cvar; d <= dvar; end loop; wait; -- fin end process; 2 5 1.1 7 3 5e3 1 4 4.2e-1 4 2 2.3 2006-2007 Compléments VHDL - R.WEBER - Polytech'Orleans Compléments VHDL - R.WEBER - Polytech'Orleans

Vision comportementale Règles de Conception 2006-2007 Rappels d’électronique numérique Système combinatoire (asynchrone) : [b2,b1,b0]=f(a3,a2,a1,a0) [b2,b1,b0] [a3,a2,a1,a0] mémoire f(a3,a2,a1,a0) ≈ Fonctionnellement Vision comportementale Niveaux logiques 1 2 3 a0 and b0 a1 delay or mult b1 a2 a3 xor not b2 Mais temporellement : a b si niveaux logiques  alors delay  Mauvaise performance en temps Difficultés pour mettre au point Difficultés pour tester tous les cas 2006-2007 Compléments VHDL - R.WEBER - Polytech'Orleans Compléments VHDL - R.WEBER - Polytech'Orleans

Design Synchrone Améliore les performances en vitesse Règles de Conception 2006-2007 Design Synchrone clk1 (Registre = flip-flop = bascule D = Z-1) « Q=D au front de clk1, sinon Q=Q » registre D Q Feed-back combinatoire logique combinatoire logique combinatoire logique combinatoire a b c d e f g logique combinatoire clk2 a(n-1) b(n-1) c(n)=b(n-1) d(n) e(n+1)=d(n)) f(n+1) g(n+2)) ^ Améliore les performances en vitesse Simplifie la vérification fonctionnelle  Autorise des analyses statiques du timing Assure une parfaite testabilité Architectures des composants calquent cette vision (cf. architecture virtex) 2006-2007 Compléments VHDL - R.WEBER - Polytech'Orleans Compléments VHDL - R.WEBER - Polytech'Orleans

Compléments VHDL - R.WEBER - Polytech'Orleans Règles de Conception 2006-2007 Règles de conception Systèmes synchrones(simu fonctionnelle simplifiée et puissante, analyse temporelle statique possible,) : 1 SEULE horloge (broche globale du composant) Si plusieurs domaines d horloges, il faut des FIFOs tampons resynchroniser tous les signaux asynchrones pour éviter la métastabilité exemple :Synchronisation du reset, actif de manière asynchrone et inactif de manière synchrone : 2006-2007 Compléments VHDL - R.WEBER - Polytech'Orleans Compléments VHDL - R.WEBER - Polytech'Orleans

Compléments VHDL - R.WEBER - Polytech'Orleans Règles de Conception 2006-2007 Règles de conception Four-input LUT Any 4-input logic function Or 16-bit x 1 sync RAM Or 16-bit shift register Adopter une démarche qualité (dénomination, hierarchisation, testbench…) Attention aux assignations incomplètes (mémorisation implicite) Attention à l’utilisation des variables Penser implantation (orienter le compilateur) : il faut connaître l’architecture du composant Ecrire un registre à décalage 32 bits à partir de l’architecture ci-contre Proposer un schéma pour la fonction suivante : sortie= (a+b) ou (c+d) Trouver le bon compromis entre ressources et vitesses en choisissant le bon degré de parallélisation (pas compact mais rapide) ou de sérialisation (compact mais lent) : cf. transparent suivant 2006-2007 Compléments VHDL - R.WEBER - Polytech'Orleans Compléments VHDL - R.WEBER - Polytech'Orleans

Compléments VHDL - R.WEBER - Polytech'Orleans Règles de Conception 2006-2007 Exemple : implantation d’un filtre d’ordre 2 2006-2007 Compléments VHDL - R.WEBER - Polytech'Orleans Compléments VHDL - R.WEBER - Polytech'Orleans

Compléments VHDL - R.WEBER - Polytech'Orleans Les machines d’états 2006-2007 Machines d’états Autre concept s(2) s(1) s(0) E0 1 E1 E2 E3 E4 2006-2007 Compléments VHDL - R.WEBER - Polytech'Orleans Compléments VHDL - R.WEBER - Polytech'Orleans

Compléments VHDL - R.WEBER - Polytech'Orleans Les machines d’états 2006-2007 ENTITY machine IS PORT ( clk, rst : in bit ; cond : in bit-vector(2 DOWNTO O) ; sortie: out bit-vector(2 DOWNTO 0)) ; END machine ; ARCHITECTURE arch OF machine IS TYPE etats is (etatO, etatl, etat2, etat3, etat4) ; SIGNAL etat: etats ; BEGIN PROCESS(clk, rst) IF rst='l' THEN etat <= etat0 ; ELSIF ( clk ' EVENT and clk= ' l' ) then CASE etat IS WHEN etat0 => etat <= etatl ; WHEN etatl => IF cond = "OOO" THEN etat <= etat0 ; ELSIF cond = "001" THEN etat <= etat4 ; ELSIF cond = "010" THEN etat <= etat3 ; ELSIF cond = "011" THEN etat <= etat2 ; ELSE etat <= etatl ; END IF ; WHEN etat2 => etat <= etat3 ; WHEN etat3 => IF cond = "110" THEN etat <= etat0 ; ELSE etat <= etat4 ; WHEN OTHERS => etat <= etat0 ; END CASE; END IF; END PROCESS; sortie <= "001" WHEN (etat=etat0) ELSE "110" WHEN (etat=etat1) ELSE "001" WHEN (etat=etat2) ELSE "010" WHEN (etat=etat3) ELSE "101" ; END ARCH; Machine à états codés Gestion des états des sorties Gestion version synchronisée 2006-2007 Compléments VHDL - R.WEBER - Polytech'Orleans Compléments VHDL - R.WEBER - Polytech'Orleans

Compléments VHDL - R.WEBER - Polytech'Orleans Les machines d’états 2006-2007 ENTITY machine IS PORT ( clk, rst : in std_logic ; cond : in std_logic_vector(2 DOWNTO O) ; sortie: out std_logic_vector(2 DOWNTO 0)) ; END machine ; ARCHITECTURE arch OF machine IS CONSTANT etat0 : std_logic_vector(4 DOWNTO 0) := "00001"; CONSTANT etat1 : std_logic_vector(4 DOWNTO 0) := "00010"; CONSTANT etat2 : std_logic_vector(4 DOWNTO 0) := "00100"; CONSTANT etat3 : std_logic_vector(4 DOWNTO 0) := "01000"; CONSTANT etat4 : std_logic_vector(4 DOWNTO 0) := "10000"; SIGNAL etat: std_logic_vector(4 DOWNTO 0) ; BEGIN PROCESS(clk, rst) IF rst='l' THEN etat <= etat0 ; ELSIF ( clk ' EVENT and clk= ' l' ) then CASE etat IS WHEN etat0 => etat <= etatl ; WHEN etatl => IF cond = "OOO" THEN etat <= etat0 ; ELSIF cond = "001" THEN etat <= etat4 ; ELSIF cond = "010" THEN etat <= etat3 ; ELSIF cond = "011" THEN etat <= etat2 ; ELSE etat <= etatl ; END IF ; WHEN etat2 => etat <= etat3 ; WHEN etat3 => IF cond = "110" THEN etat <= etat0 ; ELSE etat <= etat4 ; WHEN OTHERS => etat <= "-----" ; END CASE; END IF; END PROCESS; sortie <= "001" WHEN (etat=etat0) ELSE "110" WHEN (etat=etat1) ELSE "001" WHEN (etat=etat2) ELSE "010" WHEN (etat=etat3) ELSE "101" ; END ARCH; Machine à états décodés Gestion des états 2 versions du One-Hot Encoding : One-Hot-One : chaque état correspond à un bit One-Hot-Zero : idem sauf pour l’état de repos qui correspond à tous les bits à 0 (gain de 1 bit) des sorties Gestion 2006-2007 Compléments VHDL - R.WEBER - Polytech'Orleans Compléments VHDL - R.WEBER - Polytech'Orleans

Compléments VHDL - R.WEBER - Polytech'Orleans Les machines d’états 2006-2007 ENTITY machine IS PORT ( clk, rst : in std_logic ; cond : in std_logic_vector(2 DOWNTO O) ; sortie: out std_logic_vector(2 DOWNTO 0)) ; END machine ; ARCHITECTURE arch OF machine IS CONSTANT etat0 : std_logic_vector(3 DOWNTO 0) := "0001"; CONSTANT etat1 : std_logic_vector(3 DOWNTO 0) := "0110"; CONSTANT etat2 : std_logic_vector(3 DOWNTO 0) := "1001"; CONSTANT etat3 : std_logic_vector(3 DOWNTO 0) := "0010"; CONSTANT etat4 : std_logic_vector(3 DOWNTO 0) := "0101"; SIGNAL etat: std_logic_vector(4 DOWNTO 0) ; BEGIN PROCESS(clk, rst) IF rst='l' THEN etat <= etat0 ; ELSIF ( clk ' EVENT and clk= ' l' ) then CASE etat IS WHEN etat0 => etat <= etatl ; WHEN etatl => IF cond = "OOO" THEN etat <= etat0 ; ELSIF cond = "001" THEN etat <= etat4 ; ELSIF cond = "010" THEN etat <= etat3 ; ELSIF cond = "011" THEN etat <= etat2 ; ELSE etat <= etatl ; END IF ; WHEN etat2 => etat <= etat3 ; WHEN etat3 => IF cond = "110" THEN etat <= etat0 ; ELSE etat <= etat4 ; WHEN OTHERS => etat <= etat0; END CASE; END IF; END PROCESS; sortie <= etat(2 downto 0); END ARCH; Machine à états codés avec les sorties Gestion des états 2006-2007 Compléments VHDL - R.WEBER - Polytech'Orleans Compléments VHDL - R.WEBER - Polytech'Orleans