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 Décrire un circuit numérique.

Présentations similaires


Présentation au sujet: "INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Décrire un circuit numérique."— Transcription de la présentation:

1 INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Décrire un circuit numérique avec VHDL Références: notes de cours, chap. 2, 4 et 10

2 INF3500 : Conception et implémentation de systèmes numériques Variables booléennes À la base des systèmes numériques on retrouve la logique booléenne. Dans un système numérique, tous les signaux sont effectivement des variables booléennes. Une variable booléenne peut prendre une seule de deux valeurs: vrai ou faux. On peut interpréter ces deux valeurs de différentes façons selon le contexte. 2 valeur logique équivalent numérique ex. : lampeex : tensionex : alarme vrai1 alluméeélevéeactivée faux0 éteintebassedésactivée (notes, section 10.1)

3 INF3500 : Conception et implémentation de systèmes numériques Fonctions booléennes, symboles et tables de vérité Il y a trois fonctions booléennes de base – linversion – le ET logique; et, – le OU logique. Plusieurs fonctions peuvent être dérivées de ces trois fonctions de base, comme le NON-OU, le NON-ET, le OU-exclusif et léquivalence. 3 (notes, section 10.2)

4 INF3500 : Conception et implémentation de systèmes numériques Différentes portes logiques 4 (notes, section 10.6)

5 INF3500 : Conception et implémentation de systèmes numériques Un exemple de design Un comité composé de quatre personnes a besoin dun mécanisme de vote secret pour les amendements sur la constitution du comité. Un amendement est approuvé si au moins 3 personnes votent pour. Concevoir un circuit logique qui accepte 4 entrées représentant les votes. La sortie du circuit doit indiquer si lamendement est accepté. 5

6 INF3500 : Conception et implémentation de systèmes numériques Donner la table de vérité, léquation et le circuit logique 6 #vote1 (A)vote2 (B)vote3 (C)vote4 (D) amendement approuvé (F) Équivalence entre les trois représentations

7 INF3500 : Conception et implémentation de systèmes numériques Langages de description matérielle Pour décrire un circuit logique, les schémas sont peu adéquats. – Les schémas sont limités aux circuits les plus simples. – Il est difficile de dessiner un circuit complexe avec un schéma de portes logiques. Il est encore plus difficile de le modifier. – Un simple changement dans une équation booléenne du circuit peut se répercuter par une grande quantité de connexions à corriger. – Il est difficile, voire impossible, dutiliser des variables en guise de paramètres dun circuit représenté par un schéma. Les langages de description matérielle (Hardware Description Language – HDL) ont vu le jour au début des années 1980 lorsque la complexité des circuits à concevoir a rendu impossible lutilisation exclusive de schémas. Les avantages des HDL par rapport aux schémas sont : – les HDL permettent de décrire des systèmes complexes complets; – les HDL favorisent la décomposition en modules paramétrables; – les HDL facilitent létablissement de spécifications et dinterfaces clairement définies; – les HDL normalisent léchange dinformations. 7 (notes, section 2.1)

8 INF3500 : Conception et implémentation de systèmes numériques Langages de description matérielle Les HDL peuvent 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. Les deux HDL de loin les plus populaires sont Verilog et VHDL. Verilog ressemble un peu à C, et VHDL ressemble à ADA. Les deux langages sont relativement faciles à apprendre, mais difficiles à maîtriser. VHDL est plus vaste, bien que plusieurs des particularités pour lesquelles Verilog na pas déquivalent soient rarement utilisées. Quand on connaît lun des deux langages, il est relativement aisé de passer à lautre. Un troisième langage, SystemC, est populaire pour la modélisation à plus haut niveau. 8 (notes, section 2.1)

9 INF3500 : Conception et implémentation de systèmes numériques VHDL Lacronyme VHDL signifie Very High Speed Integrated Circuit (VHSIC) Hardware Description Language (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 dASIC. Il est fortement inspiré du langage ADA. Rapidement, des simulateurs de VHDL sont apparus, puis des synthétiseurs capables de traduire un programme VHDL en une liste dinterconnexions entre des portes logiques (netlist) pouvant être réalisée sur un ASIC. Le langage VHDL est normalisé par lIEEE. La première norme remonte à Des mises à jour ont eu lieu en 1993, 2000, 2002 et La norme plus récente est présentement mal supportée par les outils de conception. 9 (notes, section 2.1)

10 INF3500 : Conception et implémentation de systèmes numériques Circuit combinatoire en VHDL Entité: interface avec le monde extérieur Architecture: partie déclarative et corps Principe de la concurrence 10 library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity add3bits is port ( Cin : in std_logic; X : in std_logic; Y : in std_logic; Cout : out std_logic; S : out std_logic ); end add3bits; architecture flotDeDonnees of add3bits is signal T1 : std_logic; signal T2 : std_logic; signal T3 : std_logic; begin S <= T1 xor Cin; Cout <= T3 or T2; T1 <= X xor Y; T2 <= X and Y; T3 <= Cin and T1; end flotDeDonnees; (notes, section 2.2)

11 INF3500 : Conception et implémentation de systèmes numériques Trois styles de description dun circuit 11 Énoncés concurrentsStyle de description du circuit Assignations de signaux concurrentes, choisies et conditionnellesPar flot de données Instanciations de composantesStructurale ProcessusComportementale (notes, section 2.3)

12 INF3500 : Conception et implémentation de systèmes numériques Description par flot de données 12 Le modèle dun circuit numérique par flot de données décrit sa fonction sans nécessairement définir sa structure. En général, cela signifie que les valeurs des signaux et ports du circuit sont établies par des assignation concurrentes de valeurs (concurrent signal assignment). 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. (notes, section 2.3)

13 INF3500 : Conception et implémentation de systèmes numériques Description par flot de données 13 architecture flotDeDonnees2 of combinatoire1 is signal entree : std_logic_vector(2 downto 0); begin entree <= (A, B, C); with entree select F <= '1' when "000", '1' when "001", '1' when "010", '1' when "011", '0' when "100", '1' when "101", '1' when "110", '0' when "111", '0' when others; end flotDeDonnees2; library ieee; use ieee.std_logic_1164.all; entity combinatoire1 is port ( A : in std_logic; B : in std_logic; C : in std_logic; F : out std_logic ); end combinatoire1; architecture flotDeDonnees1 of combinatoire1 is begin F <= not(A and (B xor not(C))); end flotDeDonnees1; architecture flotDeDonnees3 of combinatoire1 is begin F <= '1' when (A = '0' or B /= C) else '0'; end flotDeDonnees3; (notes, section 2.3)

14 INF3500 : Conception et implémentation de systèmes numériques Description structurale 14 Un circuit numérique peut être défini par sa structure, c'est-à-dire par un assemblage de blocs. Une description structurale correspond à une description par schéma, où les instanciations de composantes et leurs interconnexions sont énumérées avec du texte. Une description structurale est appropriée pour relier entre eux différents sous- systèmes dun système numérique. En général, il est préférable dutiliser un éditeur de schéma pour décrire un tel circuit, et laisser un outil générer automatiquement le code VHDL structural. (notes, section 2.3)

15 INF3500 : Conception et implémentation de systèmes numériques Description structurale 15 architecture structurale of combinatoire1 is component INV -- inverseur port (I : in std_logic; O : out std_logic); end component; component NAND2 port (I0, I1 : in std_logic; O : out std_logic); end component; component XOR2 port (I0 : in std_logic; I1 : in std_logic; O : out std_logic); end component; signal NET18 : std_logic; signal NET37 : std_logic; begin U1 : NAND2 port map(I0 => NET37, I1 => A, O => F); U2 : XOR2 port map(I0 => NET18, I1 => B, O => NET37); U3 : INV port map(I => C, O => NET18); end architecture structurale; entity INV is port (I : in std_logic; O : out std_logic); end INV; architecture arch of INV is begin O <= not I; end arch; entity NAND2 is … entity XOR2 is … library ieee; use ieee.std_logic_1164.all; entity combinatoire1 is port ( A : in std_logic; B : in std_logic; C : in std_logic; F : out std_logic ); end combinatoire1; (notes, section 2.3)

16 INF3500 : Conception et implémentation de systèmes numériques Description comportementale 16 En VHDL, la description comportementale dun système numérique est faite à laide dénoncés similaires à ceux dun langage procédural comme C et Java, incluant les structures de condition et de répétition. La possibilité dutiliser une description comportementale est un outil très puissant aux concepteurs de circuits numériques. En effet, il est alors possible dabstraire le comportement du circuit à un très haut niveau, et donc de définir un système complexe en peu de temps, de façon concise, paramétrable et facilement modifiable. Cependant, comme une description comportementale peut prendre multiples formes, il faut garder en tête la nature du circuit désiré et linventaire de composantes matérielles disponibles pour sassurer que la description puisse être synthétisée en un circuit de complexité acceptable. Les descriptions comportementales en VHDL se font à laide de lénoncé process à lintérieur dune architecture. Un processus décrit une partie du circuit qui sexécute de façon concurrente à dautres processus et à des assignations concurrentes de signaux. (notes, section 2.3)

17 INF3500 : Conception et implémentation de systèmes numériques Description comportementale – porte ET, ex library ieee; use ieee.std_logic_1164.all; entity porteET4 is port ( I : in std_logic_vector(3 downto 0); F : out std_logic ); end porteET4; architecture flotDeDonnees of porteET4 is begin F <= I(3) and I(2) and I(1) and I(0); end flotDeDonnees; architecture comportementale of porteET4 is begin process (I) variable sortie : std_logic; begin sortie := '1'; for k in 3 downto 0 loop sortie := sortie and I(k); end loop; F <= sortie; end process; end comportementale; (notes, section 2.3)

18 INF3500 : Conception et implémentation de systèmes numériques Description comportementale – porte ET, ex library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity porteET is generic ( W : positive := 8 -- le nombre d'entrées de la porte ET ); port ( I : in std_logic_vector(W - 1 downto 0); F : out std_logic ); end porteET; architecture comportementale of porteET is begin process (I) variable sortie : std_logic; begin sortie := '1'; for k in W - 1 downto 0 loop sortie := sortie and I(k); end loop; F <= sortie; end process; end comportementale; (notes, section 2.3)

19 INF3500 : Conception et implémentation de systèmes numériques VHDL: quelques détails Espaces, littéraux, commentaires 19 Il ny a pas de différence entre les espaces, tabulations et retours de chariot, présents seuls ou en groupe. Le langage nest pas sensible à la casse. Littéraux: – Un littéral composé dun caractère unique est placé entre apostrophes : a, 5. – Un littéral composé dune chaîne de caractères est placé entre guillemets : "bonjour", "123ABC". – Un littéral numérique peut être spécifié avec sa base, avec le format base#chiffres[.chiffres]#[exposant], où les crochets indiquent des éléments facultatifs. La base doit être entre 2 et 16, inclusivement. Par exemple, les nombres suivants ont tous la même valeur : 10#33# = 10#3.3#E1 = 2#10001# = 16#21# = 7#45#. – Un littéral composé de bits peut être exprimé en bases 2, 8 ou 16, avec les spécificateurs de base B, O et X, respectivement : B" ", O"377", X"FF". Tout texte placé après deux tirets et jusquà la fin dune ligne est un commentaire, ce qui est semblable au // de C. Il ny a pas de commentaires en bloc (/* … */) en VHDL. (notes, section 2.5)

20 INF3500 : Conception et implémentation de systèmes numériques VHDL: quelques détails Objets 20 Ici, objet na pas le même sens que dans un langage orienté objet. Il y a quatre catégories dobjets en VHDL : – constant (et generic) : peut contenir une valeur unique qui ne change pas; un objet generic est une constante spéciale permettant dappliquer un paramètre à une entité lors de son instanciation; – variable: peut contenir une valeur temporaire; les objets variable sont utiles pour stocker des valeurs intérimaires dans les calculs; – signal (et port) : peut contenir une liste de valeurs dans le temps; un objet signal correspond en général à un fil dun circuit; un port dune entité est implicitement un signal pour cette entité; – file: un objet dans lequel on peut écrire et lire des valeurs, et qui correspond à un fichier du système dexploitation. Lors de la déclaration dun objet, on spécifie sa catégorie, son identificateur et son type. On peut aussi lui assigner une valeur initiale. (notes, section 2.5)

21 INF3500 : Conception et implémentation de systèmes numériques VHDL: quelques détails Identificateurs 21 Un identificateur de base légal est composé de lettres, chiffres et/ou du soulignement. Le premier caractère doit être une lettre, le dernier ne peut pas être le soulignement, et on ne peut utiliser deux soulignements de suite. Un identificateur ne peut pas être lun des mots réservés du langage. (notes, section 2.5)

22 INF3500 : Conception et implémentation de systèmes numériques VHDL: quelques détails Types prédéfinis 22 (notes, section 2.5) catégorie type ou sous-type source de la définition valeurs scalaires boolean type prédéfiniFALSE et TRUE bit type prédéfini0 et 1 character type prédéfini 256 caractères de la norme ISO , avec des abréviations reconnues et certaines qui sont propres à VHDL Les 128 premiers sont les caractères ASCII. integer type prédéfiniplage minimale de – à 2 31 – 1 natural sous-type prédéfini0 à 2 31 – 1 positive sous-type prédéfini1 à 2 31 – 1 real type prédéfini typiquement – E±308 à E±308 std_logic Package std_logic_1164 U : valeur inconnue, pas initialisée X : valeur inconnue forcée 0 : 0 forcé 1 : 1 forcé Z : haute impédance (pas connecté) W : inconnu faible L : 0 faible H : 1 faible - : peu importe (dont care) composés bit_vector type prédéfini tableau de bit string type prédéfini tableau de character std_logic_vector Package std_logic_1164 tableau de std_logic unsigned Package numeric_std tableau de std_logic, interprété comme un nombre binaire non signé signed Package numeric_std tableau de std_logic, interprété comme un nombre binaire signé en complément à deux

23 INF3500 : Conception et implémentation de systèmes numériques VHDL: quelques détails Opérateurs 23 (notes, section 2.5) catégorieopérateurs type de lopérande de gauche type de lopérande de droite type de lexpression logique and, or, nand, nor, xor, xnor, not bit, boolean relation =, /=,, >= scalaire ou tableau boolean décalage sll (déc. logique gauche), srl (déc. logique droite), sla (déc. arithmétique gauche), sra (déc. arithmétique droit), rol (rotation gauche), ror (rotation droite) tableau de bit ou boolean integer comme lopérande de gauche arithmétique +, -, *, /, abs (valeur absolue), mod (modulo), rem (reste) type numérique ** (exponentiation) integer concaténation & tableau ou type énumérétableau

24 INF3500 : Conception et implémentation de systèmes numériques Flot de conception de circuits numériques 24 (notes, section 4.2)

25 INF3500 : Conception et implémentation de systèmes numériques Un exemple de design Un comité composé de quatre personnes a besoin dun mécanisme de vote secret pour les amendements sur la constitution du comité. Un amendement est approuvé si au moins 3 personnes votent pour. Concevoir un circuit logique qui accepte 4 entrées représentant les votes. La sortie du circuit doit indiquer si lamendement est accepté. 25

26 INF3500 : Conception et implémentation de systèmes numériques Donner la table de vérité, léquation et le circuit logique 26 #vote1 (A)vote2 (B)vote3 (C)vote4 (D) amendement approuvé (F) Équivalence entre les trois représentations

27 INF3500 : Conception et implémentation de systèmes numériques Code VHDL une solution possible 27 library IEEE; use IEEE.STD_LOGIC_1164.all; entity vote is port ( lesvotes: in std_logic_vector(3 downto 0); approbation : out std_logic ); end vote; -- table de vérité réduite architecture flotdonnees1 of vote is begin with lesvotes select approbation <= '1' when "0111", '1' when "1011", '1' when "1101", '1' when "1110", '1' when "1111", '0' when others; end flotdonnees1;

28 INF3500 : Conception et implémentation de systèmes numériques Notions à retenir et maîtriser Importance relative 1. Expliquer lutilité des HDL et les origines de VHDL5 2. Expliquer le rôle dune entité et dune architecture en VHDL Décrire un module en VHDL par une description par flot de données, structurale et comportementale Expliquer et utiliser le principe de la concurrence en VHDL Décrire une fonction logique à laide dun processus15 6. Décrire un module en VHDL en utilisant correctement la syntaxe de base du langage: commentaires, identificateurs, types prédéfinis, opérateurs Illustrer par un schéma et décrire le flot de conception dun circuit numérique15 Total100 Résumé: VHDL de base 28


Télécharger ppt "INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Décrire un circuit numérique."

Présentations similaires


Annonces Google