La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Cours #4 Éléments à

Présentations similaires


Présentation au sujet: "INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Cours #4 Éléments à"— Transcription de la présentation:

1 INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Cours #4 Éléments à mémoire et circuits séquentiels synchrones de base

2 INF3500 : Conception et implémentation de systèmes numériques Un exemple pour commencer 2 Système de contrôle sans état. Système de contrôle avec état.

3 INF3500 : Conception et implémentation de systèmes numériques Circuits séquentiels synchrones Un circuit séquentiel comporte: – une partie combinatoire; et – des éléments à mémoire. Les éléments à mémoire entreposent létat présent du circuit. La partie combinatoire calcule le prochain état du système ainsi que ses sorties. Un circuit séquentiel a normalement des entrées et des sorties. Un circuit séquentiel est mené par un signal dhorloge et devrait avoir un signal de réinitialisation. Ces signaux sont des entrées spéciales. 3 (notes, section 6.1)

4 INF3500 : Conception et implémentation de systèmes numériques Circuits séquentiels synchrones Il y a deux types de circuits séquentiels : les circuits de Moore et de Mealy. – Dans une machine de Moore, les sorties ne sont fonctions que de létat présent. – Dans une machine de Mealy, les sorties sont fonctions de létat présent ainsi que des entrées. 4 (notes, section 6.1)

5 INF3500 : Conception et implémentation de systèmes numériques Élément à mémoire – loquet SR Un loquet SR (S-R latch) est un élément à mémoire simple mais fondamental. Il peut rester dans un état tant quon lalimente, et sa sortie dépend non seulement des entrées présentes, mais aussi des entrées passées. 5 S(t)R(t)Q(t)Q(t + 1) mode mémoire reset set interdit (notes, section 10.9)

6 INF3500 : Conception et implémentation de systèmes numériques Élément à mémoire – loquet D Le loquet D (D latch) est le type de loquet le plus commun. Il a deux entrées : – un signal de données D; et, – un signal de contrôle G (Gate). Il a deux états : – transparent (quand G = 1); et, – mémoire (quand G = 0). 6 G(t)D(t)Q(t)Q(t + 1)mode mémoire transparent (notes, section 10.9)

7 INF3500 : Conception et implémentation de systèmes numériques Loquet D: code VHDL Un loquet D peut-être modélisé en VHDL par un énoncé if-then à lintérieur dun processus. Le processus doit avoir dans sa liste de sensitivité le signal de contrôle G et le signal de donnée D. Le signal D est assigné à la sortie Q quand le signal de contrôle G est actif (mode transparent) 7 library ieee; use ieee.std_logic_1164.all; entity loquetD is port ( G : in STD_LOGIC; -- contrôle D : in STD_LOGIC;-- donnée Q : out STD_LOGIC ); end loquetD; architecture loquetD of loquetD is begin process(G, D) is begin if (G = '1') then Q <= D; --else-- implicite, infère élément à mémoire ---- ne pas changer Q end if; end process; end loquetD; (notes, section 2.4) Patron de code spécial reconnu par les synthétiseurs pour signifier un loquet.

8 INF3500 : Conception et implémentation de systèmes numériques Exercice: un loquet ou pas? 8 (notes, section 4.5.6) library ieee; use ieee.std_logic_1164.all; entity mystere1 is port (a, b, c: in std_logic; s : in std_logic_vector (1 downto 0); o : out std_logic); end mystere1; architecture archi of mystere1 is Begin process (a, b, c, s) begin if (s = "00") then o <= a; elsif (s = "01") then o <= b; elsif (s = "10") then o <= c; end if; end process; end archi; library ieee; use ieee.std_logic_1164.all; entity mystere2 is port (a, b, c: in std_logic; s : in std_logic_vector (1 downto 0); o : out std_logic); end mystere2; architecture archi of mystere2 is Begin process (a, b, c, s) begin if (s = "00") then o <= a; elsif (s = "01") then o <= b; elsif (s = "10") then o <= c; else o <= c; end if; end process; end archi;

9 INF3500 : Conception et implémentation de systèmes numériques Un loquet ou pas? Les outils de synthèse reconnaissent des patrons de code spéciaux pour inférer des composantes matérielles correspondantes. La documentation dun outil de synthèse spécifie quelle structure de langage utiliser pour obtenir le type délément à mémoire désiré. À lintérieur dun processus, un élément à mémoire est inféré en général si un objet des catégories signal ou variable se voit assigner une valeur dans un énoncé if-else et que certains cas ne sont pas couverts. Les cas non couverts impliquent que lobjet doit conserver sa valeur, et donc un loquet est inféré. 9 (notes, section 4.5.6)

10 INF3500 : Conception et implémentation de systèmes numériques Test: chronogramme du loquet Le loquet D a deux états : – transparent (quand G = 1); et, – mémoire (quand G = 0). 10 (notes, section 10.9) library ieee; use ieee.std_logic_1164.all; entity loquetD is port ( G : in STD_LOGIC; -- contrôle D : in STD_LOGIC;-- donnée Q : out STD_LOGIC ); end loquetD; architecture loquetD of loquetD is begin process(G, D) is begin if (G = '1') then Q <= D; --else-- implicite, infère élément à mémoire ---- ne pas changer Q end if; end process; end loquetD;

11 INF3500 : Conception et implémentation de systèmes numériques Élément à mémoire – bascule D La bascule D (D flip-flop) est le type délément à mémoire le plus commun. Elle a deux entrées : – un signal de données D; et, – une horloge CLK (clock). Lentrée D est saisie sur une transition de lhorloge: – soit de 0 à 1 (le cas par défaut) – ou bien de 1 à 0 (indiqué par une bulle sur le signal CLK) Les changements sur D entre les transitions dhorloge sont sans effet. 11 (notes, section 10.9)

12 INF3500 : Conception et implémentation de systèmes numériques Élément à mémoire – bascule D fonctionnement interne La bascule D peut être construite en cascadant deux loquets D avec des versions complémentaires dun signal dhorloge. 12 (notes, section 10.9)

13 INF3500 : Conception et implémentation de systèmes numériques Bascule D: code VHDL Pour modéliser une bascule, il est nécessaire de pouvoir décrire le fait que le changement détat se produit sur une transition dun signal dhorloge et non sur sa valeur. Pour ce faire, on peut utiliser les attributs dévénement (event attribute) définis en VHDL. LExemple démontre lutilisation de lattribut event sur le signal CLK, dénoté par CLKevent. La condition CLK = 1 dénote alors un front montant. 13 library ieee; use ieee.std_logic_1164.all; entity basculeD is port ( CLK : in STD_LOGIC; -- horloge D : in STD_LOGIC;-- entrée Q : out STD_LOGIC-- sortie ); end basculeD; architecture basculeD of basculeD is begin process(CLK) is begin if (CLK = '1' and CLK'event) then Q <= D; end if; end process; end basculeD; (notes, section 2.4) Patron de code spécial reconnu par les synthétiseurs pour signifier une bascule

14 INF3500 : Conception et implémentation de systèmes numériques Parenthèse: attributs en VHDL En VHDL, les attributs permettent dobtenir de linformation à propos de types, signaux, variables, etc. VHDL inclut des attributs prédéfinis, et on peut en définir de nouveaux. Quelques attributs prédéfinis utiles: 14 Utilisation de lattributRésultat Aleft, ArightIndex le plus à gauche, le plus à droite du vecteur A Alow, AhighIndex le plus bas, le plus haut du vecteur A ArangeLa gamme des index du vecteur A AlengthLe nombre déléments du vecteur A Tleft, Tright, Tlow, ThighLa valeur la plus à gauche, la plus à droite, la plus basse, la plus élevée du type T TImage(x)La représentation textuelle de la valeur x dans le type T. TValue(s)La valeur dans le type T de la chaîne de caractères s. SeventVrai si un événement sest produit sur le signal S. (pas dans les notes)

15 INF3500 : Conception et implémentation de systèmes numériques Bascule D: code VHDL Spécification du front dhorloge désiré Le package std_logic_1164 contient aussi deux fonctions qui combinent ces conditions, rising_edge() et falling_edge(). Ces deux fonctions retournent des valeurs booléennes. 15 Comportement désiréoption 1option 2 front montant CLKevent and CLK = 1rising_edge(CLK) front descendant CLKevent and CLK = 0falling_edge(CLK) (notes, section 2.4)

16 INF3500 : Conception et implémentation de systèmes numériques Exercice: donner le circuit correspondant à ce module 16 library IEEE; use IEEE.std_logic_1164.all; entity cctsequentielex4 is port ( clk, reset : in STD_LOGIC; A, B, C: in STD_LOGIC; U, V, W, X, Y, Z : out STD_LOGIC ); end cctsequentielex4; architecture arch of cctsequentielex4 is begin U <= CLK or reset; V <= A and B; process(CLK, reset) is begin if (reset = '0') then W <= '0'; X <= '1'; elsif (rising_edge(CLK)) then W <= A xor B; X <= not(B); end if; end process; process(A, C) is begin if (A = '0') then Y <= C nor B; Z <= not(B); else Z <= B nand C; end if; end process; end arch;

17 INF3500 : Conception et implémentation de systèmes numériques Bonne pratiques pour FPGAs Utiliser des bascules: – Les éléments à mémoire dun FPGA peuvent implémenter une bascule ou un loquet. – Il ny a pas davantage à utiliser des loquets. – Pour le reste du cours, nous allons utiliser exclusivement des bascules. Le signal dhorloge CLK est spécial: – En principe, on mène toutes les bascules avec le même signal dhorloge CLK. – On ne fait pas dopérations logiques sur le signal CLK. Le signal de réinitialisation reset est spécial: – Les circuits séquentiels doivent pouvoir être placés dans un état de départ connu. – En principe, on mène toutes les bascules avec le même signal de réinitialisation. – Certaines bascules peuvent être initialisées à 0, dautres à 1. – On ne fait pas dopérations logiques sur le signal de réinitialisation. 17

18 INF3500 : Conception et implémentation de systèmes numériques Bascule D: code VHDL Deux types de signaux dinitialisation 18 library IEEE; use IEEE.std_logic_1164.all; entity basculeDR is port ( reset : in STD_LOGIC;-- signal de remise à zéro CLK : in STD_LOGIC; -- signal d'horloge D : in STD_LOGIC;-- entrée Q : out STD_LOGIC-- sortie ); end basculeDR; architecture basculeDRasynch of basculeDR is begin process(CLK, reset) is begin if (reset = '0') then Q <= '0'; elsif (rising_edge(CLK)) then Q <= D; end if; end process; end basculeDRasynch; architecture basculeDRsynch of basculeDR is begin process(CLK, reset) is begin if (rising_edge(CLK)) then if (reset = '0') then Q <= '0'; else Q <= D; end if; end process; end basculeDRsynch; (notes, section 2.4) Initialisation asynchrone: condition reset = 0 à lextérieur de la vérification du front dhorloge Initialisation synchrone: condition reset = 0 à lintérieur de la vérification du front dhorloge

19 INF3500 : Conception et implémentation de systèmes numériques Exercice: Compléter le chronogramme du circuit suivant 19 (notes, section 6.3)

20 INF3500 : Conception et implémentation de systèmes numériques Exercice: Décrire le circuit suivant en VHDL 20 (notes, section 6.3)

21 INF3500 : Conception et implémentation de systèmes numériques Description dun circuit séquentiel synchrone en VHDL à partir dun schéma 21 (notes, section 6.3) library IEEE; use IEEE.std_logic_1164.all; entity cctsequentielex1 is port ( reset : in STD_LOGIC; CLK : in STD_LOGIC; X : in STD_LOGIC; Z : out STD_LOGIC ); end cctsequentielex1; architecture arch1 of cctsequentielex1 is signal A : STD_LOGIC; -- bascule A signal B : STD_LOGIC; -- bascule B begin process(CLK, reset) is begin if (reset = '1') then A <= '0'; B <= '0'; elsif (rising_edge(CLK)) then A <= A xor B; B <= x or not(B); end if; end process; -- signal de sortie z <= not(A or B); end arch1; Un processus peut modéliser plusieurs bascules simultanément. Les signaux dentrée des bascules peuvent être des expressions complexes. Les signaux qui ne sont pas mis en mémoire doivent être décrits séparément. Le signal dinitialisation nest pas indiqué sur le schéma.

22 INF3500 : Conception et implémentation de systèmes numériques Réseaux pré-diffusés programmables (par lutilisateur): Field-Programmable Gate Arrays (FPGA) Un FPGA est composé à la base de : – un réseau de blocs de logique programmable (Configurable Logic Block CLB); – un réseau dinterconnexions programmables entre les blocs; et, – des blocs dentrée et de sortie avec le monde extérieur (Input/Output Block – IOB). 22 Ici: 12 IOBs, 3 × 5 CLBs XC5VLX50TFFG1136C: 480 IOBs, 120 × 30 CLBs

23 INF3500 : Conception et implémentation de systèmes numériques Virtex 5: tranche de type L (SLICEL) 23 Quatre tables de correspondance à 6 entrées: - fonction logique - mémoire ROM Quatre éléments à mémoire, bascule ou loquet. Des multiplexeurs pour router les signaux. Quelques portes logiques pour laddition rapide. Xilinx inc., Virtex-5 FPGA User Guide (ug190 v. 5.4), March 2012

24 INF3500 : Conception et implémentation de systèmes numériques Bloc de logique programmable simplifié (~ une tranche du Virtex 2 Pro) 24 Deux tables de correspondance à 4 entrées: - fonction logique - mémoire RAM - mémoire ROM - décalage Deux éléments à mémoire, bascule ou loquet. Des multiplexeurs pour router les signaux.

25 INF3500 : Conception et implémentation de systèmes numériques Exercice: Implémenter le circuit suivant sur un FPGA 25

26 INF3500 : Conception et implémentation de systèmes numériques Compétences à avoir en INF3500 concernant les circuits séquentiels synchrones 26 Code VHDL Schéma du circuit Implémentation sur FPGA Spécification textuelle Diagramme détats

27 INF3500 : Conception et implémentation de systèmes numériques Registre à chargement parallèle Un registre est lélément à mémoire de base pour des données. Un registre est utilisé pour entreposer une information, encodée sur un groupe de bits, comme par exemple un octet de mémoire dans un ordinateur ou le contenu de laccumulateur dune calculatrice. Un registre est composé dun groupe de bascules contrôlées par une horloge commune et dont les entrées et sorties partagent un identificateur commun. Chaque bascule du registre est différenciée des autres par un indice unique. Un registre à chargement parallèle comporte un signal de chargement qui permet de moduler le signal dhorloge. Quand ce signal est actif, le contenu du registre est modifié sur une transition de lhorloge. Dans le cas contraire, le contenu du registre reste inchangé. 27 (notes, section 5.4)

28 INF3500 : Conception et implémentation de systèmes numériques Registre à chargement parallèle 28 library IEEE; use IEEE.STD_LOGIC_1164.all; entity registre is generic ( W : integer := 8 ); port( reset : in STD_LOGIC; CLK : in STD_LOGIC; charge : in STD_LOGIC; D : in STD_LOGIC_VECTOR(W - 1 downto 0); Q : out STD_LOGIC_VECTOR(W - 1 downto 0) ); end registre; architecture arch of registre is Begin process (CLK, reset) begin if reset='0' then Q '0'); elsif CLK='1' and CLK'event then if charge='1' then Q <= D; end if; end process; end arch; (notes, section 5.4)

29 INF3500 : Conception et implémentation de systèmes numériques Sommaire: modélisation dun circuit séquentiel synchrone en VHDL 29 library IEEE; use IEEE.std_logic_1164.all; entity machineMooreMealy is port ( reset : in STD_LOGIC; CLK : in STD_LOGIC; entrees : in std_logic; sortiesMoore : out STD_LOGIC; sortiesMealy : out STD_LOGIC ); end machineMooreMealy; architecture arch of machineMooreMealy is signal etatpresent : std_logic; signal etatprochain : std_logic; begin -- éléments à mémoire process(CLK, reset) is begin if reset='0' then etatpresent <= '0'; elsif rising_edge(clk) then etatpresent <= etatprochain; end if; end process; -- calcul du prochain etat process(etatpresent, entrees) begin -- fonction de l'état présent et des entrées etatprochain <= etatpresent xor entrees; end process; -- calcul des sorties de Moore process(etatpresent) begin -- fonction de l'état présent seulement sortiesMoore <= not(etatpresent); end process; -- calcul des sorties de Mealy process(etatpresent, entrees) begin -- fonction de l'état présent et des entrées sortiesMealy <= etatpresent and entrees; end process; end arch;

30 INF3500 : Conception et implémentation de systèmes numériques La vérification dans le flot de conception de circuits numériques 30 (notes, section 4.2)

31 INF3500 : Conception et implémentation de systèmes numériques Vérification: rappel La vérification est un processus par lequel on vérifie quun design rencontre bien ses spécifications. La vérification complète dun circuit est normalement un problème très difficile. Dans lindustrie de la conception numérique, on considère en général que le processus de vérification nécessite autant defforts que le processus de conception lui-même. La vérification dun circuit est un art qui repose sur la maîtrise de trois principes: – la compréhension de la spécification; – le contrôle des entrées et de signaux internes du circuit à vérifier; et, – lobservation des sorties, des signaux internes et de létat du circuit à vérifier. 31 (notes, section 7.1)

32 INF3500 : Conception et implémentation de systèmes numériques Vérification par banc dessai Un banc dessai permet dappliquer des vecteurs de test à un circuit et dobserver sa sortie dans le but de vérifier quil rencontre ses spécifications. Un banc dessai doit effectuer les tâches suivantes : – instancier le circuit à vérifier; – générer des vecteurs de test et les appliquer aux ports dentrée du circuit; – [utile]: générer automatiquement des réponses attendues aux vecteurs de test; – [utile]: comparer les réponses du circuit aux réponses attendues, et indiquer toute différence entre les deux par une condition derreur. – + (pour circuit séquentiel): générer un signal dhorloge et un signal de réinitialisation 32 (notes, section 7.10)

33 INF3500 : Conception et implémentation de systèmes numériques Vérification par banc dessai La génération dun signal dhorloge périodique et dun signal de réinitialisation peut être faite de façon très efficace par deux énoncés concurrents dans larchitecture du banc dessai. Lhorloge se voit assigner une valeur initiale dans sa déclaration, puis dans larchitecture elle bascule entre deux états à chaque demi-période. 33 (notes, section 7.10) -- partie du banc dessai -- dans la partie déclarative de larchitecture signal clk : std_logic := '0'; constant periode : time := 10 ns; dans larchitecture clk <= not clk after periode / 2; reset <= '0' after 0 ns, '1' after periode / 4;

34 INF3500 : Conception et implémentation de systèmes numériques Circuit séquentiel synchrone à vérifier 34 library IEEE; use IEEE.std_logic_1164.all; entity cctsequentielex1 is port ( reset : in STD_LOGIC; CLK : in STD_LOGIC; X : in STD_LOGIC; Z : out STD_LOGIC ); end cctsequentielex1; architecture arch1 of cctsequentielex1 is signal A : STD_LOGIC; -- bascule A signal B : STD_LOGIC; -- bascule B begin process(CLK, reset) is begin if (reset = '0') then A <= '0'; B <= '0'; elsif (rising_edge(CLK)) then A <= A xor B; B <= x or not(B); end if; end process; -- signal de sortie z <= not(A or B); end arch1;

35 INF3500 : Conception et implémentation de systèmes numériques Exemple de vérification dun circuit séquentiel par banc dessai 35 (notes, section 7.10) library ieee; use ieee.std_logic_1164.all; use std.textio.all; entity cctsequentielex1TB is end cctsequentielex1TB; architecture arch1a of cctsequentielex1TB is signal reset : std_logic := '0'; signal clk : std_logic := '0'; signal X : std_logic := 'X'; signal Z : std_logic := 'X'; constant periode : time := 10 ns; begin clk <= not clk after periode / 2; reset <= '0' after 0 ns, '1' after periode / 4; UUT : entity cctsequentielex1(arch1) port map (reset, clk, X, Z); process (clk) constant vecteurX : std_logic_vector := " "; variable compte : natural range 0 to vecteurX'length := 0; variable tampon : line; -- pointeur vers objet de type string begin if (falling_edge(clk)) then -- *** front différent de l'UUT *** write(tampon, "temps: "); write(tampon, now, unit => ns); write(tampon, ", x: " & std_logic'image(x)); write(tampon, ", z: " & std_logic'image(z)); write(tampon, ", compte: " & integer'image(compte)); writeline(output, tampon); -- écriture à la console if compte = vecteurX'length then report "simulation terminée" severity failure; else X <= vecteurX(compte); compte := compte + 1; end if; end process; end arch1a; Le processus est contrôlé par le signal dhorloge dans sa liste de sensitivité: pas dénoncé wait. Les vecteurs de test sont encodés dans un tableau de constantes. Application du signal dentrée sur un front différent dhorloge que celui de lUUT. Pas de vérification automatisée des réponses dans cet exemple. Écriture formatée à la console à laide de procédures du package std.textio.all.

36 INF3500 : Conception et implémentation de systèmes numériques Comparaison avec un banc dessai de circuit combinatoire 36 La clause wait suspend lexécution, force les signaux à se propager dans lUUT, permet dobserver la réponse. architecture arch2 of add3bitsTB is component add3bits -- déclaration du module à vérifier port (Cin, X, Y : in std_logic; Cout, S : out std_logic); end component; -- signaux pour les vecteurs de tests signal Cin, X, Y : std_logic; -- signaux pour les réponses signal Cout, S : std_logic; type tableauSLV3 is array (natural range <>) of std_logic_vector(2 downto 0); constant vecteurs : tableauSLV3 := ("000", "001", "010", "011", "100", "101", "110", "111"); begin -- instanciation du module à vérifier UUT : add3bits port map (Cin, X, Y, Cout, S); process -- application des vecteurs de test emmagasinés dans le tableau begin for k in vecteurs'low to vecteurs'high loop (Cin, Y, X) <= vecteurs(k); wait for 10 ns; end loop; end process; end arch2;

37 INF3500 : Conception et implémentation de systèmes numériques Parenthèse: Formatage de texte Écriture à la console avec la procédure writeline – cible: objet output de catégorie file, défini dans le package textio – source: objet de type line, défini dans le package textio Le type line est un pointeur (catégorie access) vers un objet de type string. Composition du message avec la procédure write. La procédure writeline libère le pointeur à la fin de son exécution. Formatage de texte avec lattibut image. 37 process (clk) constant vecteurX : std_logic_vector := " "; variable compte : natural range 0 to vecteurX'length := 0; variable tampon : line; -- pointeur vers objet de type string begin if (falling_edge(clk)) then -- *** front différent de l'UUT *** write(tampon, "temps: "); write(tampon, now, unit => ns); write(tampon, ", x: " & std_logic'image(x)); write(tampon, ", z: " & std_logic'image(z)); write(tampon, ", compte: " & integer'image(compte)); writeline(output, tampon); -- écriture à la console if compte = vecteurX'length then report "simulation terminée" severity failure; else X <= vecteurX(compte); compte := compte + 1; end if; end process; (pas dans les notes)

38 INF3500 : Conception et implémentation de systèmes numériques Parenthèse: Extrait du package TEXTIO Texte complet disponible: 38 package TEXTIO is type LINE is access STRING; -- A LINE is a pointer to a STRING value. type TEXT is file of STRING; -- A file of variable-length ASCII records. -- … type SIDE is (RIGHT, LEFT); -- For justifying output data within fields. subtype WIDTH is NATURAL; -- For specifying widths of output fields. -- … file INPUT: TEXT open READ_MODE is "STD_INPUT"; file OUTPUT: TEXT open WRITE_MODE is "STD_OUTPUT"; -- … procedure WRITELINE (file F: TEXT; L: inout LINE); procedure WRITE (L: inout LINE; VALUE: in BIT; JUSTIFIED: in SIDE:= RIGHT; FIELD: in WIDTH := 0); procedure WRITE (L: inout LINE; VALUE: in BIT_VECTOR; JUSTIFIED: in SIDE:= RIGHT; FIELD: in WIDTH := 0); procedure WRITE (L: inout LINE; VALUE: in BOOLEAN; JUSTIFIED: in SIDE:= RIGHT; FIELD: in WIDTH := 0); procedure WRITE (L: inout LINE; VALUE: in CHARACTER; JUSTIFIED: in SIDE:= RIGHT; FIELD: in WIDTH := 0); procedure WRITE (L: inout LINE; VALUE: in INTEGER; JUSTIFIED: in SIDE:= RIGHT; FIELD: in WIDTH := 0); procedure WRITE (L: inout LINE; VALUE: in REAL; JUSTIFIED: in SIDE:= RIGHT; FIELD: in WIDTH := 0; DIGITS: in NATURAL:= 0); procedure WRITE (L: inout LINE; VALUE: in STRING; JUSTIFIED: in SIDE:= RIGHT; FIELD: in WIDTH := 0); procedure WRITE (L: inout LINE; VALUE: in TIME; JUSTIFIED: in SIDE:= RIGHT; FIELD: in WIDTH := 0; UNIT: in TIME:= ns); -- … end TEXTIO; (pas dans les notes) Le package inclut aussi des procédure read()

39 INF3500 : Conception et implémentation de systèmes numériques Parenthèse: Types physiques en VHDL En VHDL, un type physique contient une valeur qui représente une mesure dune quantité physique, comme le temps, la longueur, la tension ou le courant. Les valeurs de ce type sont exprimés comme des multiples entiers dune unité de base. Les littéraux de types physiques sont exprimés par un entier ou une valeur à virgule flottante suivie dune unité. La déclaration dun type physique inclut: – une gamme de valeurs exprimées dans lunité de base – lunité de base – des unités secondaires avec leur facteur multiplicatif entier de lunité de base ou dune autre unité secondaire déjà définie 39 (pas dans les notes)

40 INF3500 : Conception et implémentation de systèmes numériques Parenthèse: Déclaration du type physique time Extrait du package STANDARD. Texte complet disponible: 40 type TIME is range implementation_defined units fs; -- femtosecond ps = 1000 fs; -- picosecond ns = 1000 ps; -- nanosecond us = 1000 ns; -- microsecond ms = 1000 us; -- millisecond sec = 1000 ms; -- second min = 60 sec; -- minute hr = 60 min; -- hour end units; subtype DELAY_LENGTH is TIME range 0 fs to TIME'HIGH; (pas dans les notes)

41 INF3500 : Conception et implémentation de systèmes numériques Modèle de producteur/consommateur 41 (pas dans les notes)

42 INF3500 : Conception et implémentation de systèmes numériques Notions à retenir et maîtriser Importance relative 1. Énumérer les composantes et signaux qui distinguent un circuit séquentiel dun circuit combinatoire; distinguer les circuits de Moore et de Mealy Expliquer le comportement temporel du loquet D et de la bascule D, et donner leur code VHDL. À partir dun code VHDL, identifier les bascules et loquets Donner le code VHDL correspondant au schéma dun circuit séquentiel, et donner le schéma dun circuit séquentiel correspondant à un code VHDL Donner le chronogramme dun circuit séquentiel décrit par un schéma ou du code VHDL Sur un diagramme de FPGA simplifié, montrer comment implémenter un module décrit en VHDL Composer un banc dessai pour stimuler un modèle VHDL dun circuit séquentiel. Donner le chronogramme résultant de lexécution dun banc dessai. 15 Total100 Résumé: éléments à mémoire et circuits synchrones de base 42


Télécharger ppt "INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Cours #4 Éléments à"

Présentations similaires


Annonces Google