28
INF3500 : Conception et implémentation de systèmes numériques http://creativecommons.org/licenses/by-nc- sa/2.5/ca/ Pierre Langlois Décrire un circuit numérique avec VHDL Références: notes de cours, chap. 2, 4 et 10

INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Décrire un circuit numérique

Embed Size (px)

Citation preview

Page 1: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Décrire un circuit numérique

INF3500 : Conception et implémentation de systèmes numériques

http://creativecommons.org/licenses/by-nc-sa/2.5/ca/

Pierre Langlois

Décrire un circuit numérique avec VHDL

Références: notes de cours, chap. 2, 4 et 10

Page 2: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Décrire un circuit numérique

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

valeurlogique

équivalent numérique

ex. : lampe ex : tension ex : alarme

vrai 1 allumée élevée activéefaux 0 éteinte basse désactivée

(notes, section 10.1)

Page 3: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Décrire un circuit numérique

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– l’inversion– 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

X + Y(OU, OR)

X

Y

XY(ET, AND)

X

Y

X + Y(OU-exclusif, différence, OUX, XOR)

X

Y

X

Y

X

Y

X

Y

X X(identité)

X

(X + Y)’(NON-OU, NOR)

(XY)’(NON-ET, NAND)

(X + Y)’(coïncidence, équivalence)

X’(inversion, NON, NOT)

(notes, section 10.2)

Page 4: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Décrire un circuit numérique

INF3500 : Conception et implémentation de systèmes numériques

Différentes portes logiques

4

X’ + YX

Y

X’ + Y’X

Y

X

Y

X

Y

(X’Y)’

(X’Y’)’

AB

ABCDCD

AB A+B+CC

AB (A+B+C)'C

AB (ABC)'C

(notes, section 10.6)

Page 5: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Décrire un circuit numérique

INF3500 : Conception et implémentation de systèmes numériques 5

Un exemple de design

• Un comité composé de quatre personnes a besoin d’un 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 l’amendement est accepté.

Page 6: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Décrire un circuit numérique

INF3500 : Conception et implémentation de systèmes numériques 6

Donner la table de vérité, l’équation et le circuit logique

# vote1 (A) vote2 (B) vote3 (C) vote4 (D)amendement approuvé (F)

0 0 0 0 0 01 0 0 0 1 02 0 0 1 0 03 0 0 1 1 04 0 1 0 0 05 0 1 0 1 06 0 1 1 0 07 0 1 1 1 18 1 0 0 0 09 1 0 0 1 0

10 1 0 1 0 011 1 0 1 1 112 1 1 0 0 013 1 1 0 1 114 1 1 1 0 115 1 1 1 1 1

ABCABDACDBCD

ABCABDACDBCD

DDABCCCABDBBACDAABCD

ABCDABCDABCDDABCABCDCDABABCDBCDA

ABCDABCDDABCCDABBCDAF

)1()1()1()1(

)'()'()'()'(

''''

''''

Équivalence entre les trois représentations

Page 7: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Décrire un circuit numérique

INF3500 : Conception et implémentation de systèmes numériques 7

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, d’utiliser des variables en guise de paramètres d’un

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 l’utilisation 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 d’interfaces clairement définies; – les HDL normalisent l’échange d’informations.

(notes, section 2.1)

Page 8: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Décrire un circuit numérique

INF3500 : Conception et implémentation de systèmes numériques 8

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

n’a pas d’équivalent soient rarement utilisées.• Quand on connaît l’un des deux langages, il est relativement aisé de passer à

l’autre.• Un troisième langage, SystemC, est populaire pour la modélisation à plus haut

niveau.

(notes, section 2.1)

Page 9: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Décrire un circuit numérique

INF3500 : Conception et implémentation de systèmes numériques 9

VHDL

• L’acronyme 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 d’ASIC. 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 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 à 1987. Des mises à jour ont eu lieu en 1993, 2000, 2002 et 2008. La norme plus récente est présentement mal supportée par les outils de conception.

(notes, section 2.1)

Page 10: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Décrire un circuit numérique

INF3500 : Conception et implémentation de systèmes numériques 10

Circuit combinatoire en VHDL

• Entité: interface avec le monde extérieur• Architecture: partie déclarative et corps• Principe de la concurrence

library IEEE;use IEEE.STD_LOGIC_1164.ALL;

entity add3bits isport (

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 issignal 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;

X

Y

CinS

Cout

T1

T2

T3

(notes, section 2.2)

Page 11: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Décrire un circuit numérique

INF3500 : Conception et implémentation de systèmes numériques 11

Trois styles de description d’un circuit

Énoncés concurrents Style de description du circuitAssignations de signaux concurrentes, choisies et conditionnelles Par flot de donnéesInstanciations de composantes StructuraleProcessus Comportementale

(notes, section 2.3)

Page 12: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Décrire un circuit numérique

INF3500 : Conception et implémentation de systèmes numériques 12

Description par flot de données

• Le modèle d’un 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)

Page 13: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Décrire un circuit numérique

INF3500 : Conception et implémentation de systèmes numériques 13

Description par flot de données

architecture flotDeDonnees2 of combinatoire1 issignal 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;

A

B

C

F

library ieee;use ieee.std_logic_1164.all;

entity combinatoire1 isport (

A : in std_logic;B : in std_logic;C : in std_logic;F : out std_logic

);end combinatoire1;

architecture flotDeDonnees1 of combinatoire1 isbegin

F <= not(A and (B xor not(C)));end flotDeDonnees1;

architecture flotDeDonnees3 of combinatoire1 isbegin

F <= '1' when (A = '0' or B /= C) else '0';end flotDeDonnees3;

(notes, section 2.3)

Page 14: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Décrire un circuit numérique

INF3500 : Conception et implémentation de systèmes numériques 14

Description structurale

• 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 d’un système numérique.

• En général, il est préférable d’utiliser 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)

Page 15: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Décrire un circuit numérique

INF3500 : Conception et implémentation de systèmes numériques 15

Description structurale

architecture structurale of combinatoire1 is

component INV -- inverseurport (I : in std_logic; O : out std_logic);

end component;

component NAND2port (I0, I1 : in std_logic; O : out std_logic);

end component;

component XOR2port (I0 : in std_logic; I1 : in std_logic; O : out std_logic);

end component;

signal NET18 : std_logic;signal NET37 : std_logic;

beginU1 : 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 isport (I : in std_logic; O : out

std_logic);end INV;

architecture arch of INV isbeginO <= not I;end arch;

entity NAND2 is…

entity XOR2 is…

A

B

C

Flibrary ieee;use ieee.std_logic_1164.all;

entity combinatoire1 isport (

A : in std_logic;B : in std_logic;C : in std_logic;F : out std_logic

);end combinatoire1;

(notes, section 2.3)

Page 16: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Décrire un circuit numérique

INF3500 : Conception et implémentation de systèmes numériques 16

Description comportementale

• En VHDL, la description comportementale d’un système numérique est faite à l’aide d’énoncés similaires à ceux d’un langage procédural comme C et Java, incluant les structures de condition et de répétition.

• La possibilité d’utiliser une description comportementale est un outil très puissant aux concepteurs de circuits numériques. En effet, il est alors possible d’abstraire 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 l’inventaire de composantes matérielles disponibles pour s’assurer que la description puisse être synthétisée en un circuit de complexité acceptable.

• Les descriptions comportementales en VHDL se font à l’aide de l’énoncé process à l’intérieur d’une architecture. 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.

(notes, section 2.3)

Page 17: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Décrire un circuit numérique

INF3500 : Conception et implémentation de systèmes numériques 17

Description comportementale – porte ET, ex. 1

library ieee;use ieee.std_logic_1164.all;

entity porteET4 isport (

I : in std_logic_vector(3 downto 0);F : out std_logic

);end porteET4;

architecture flotDeDonnees of porteET4 isbegin

F <= I(3) and I(2) and I(1) and I(0);end flotDeDonnees;

architecture comportementale of porteET4 isbegin

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)

Page 18: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Décrire un circuit numérique

INF3500 : Conception et implémentation de systèmes numériques 18

Description comportementale – porte ET, ex. 2

library IEEE;use IEEE.STD_LOGIC_1164.ALL;

entity porteET isgeneric (

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 isbegin

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)

Page 19: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Décrire un circuit numérique

INF3500 : Conception et implémentation de systèmes numériques 19

VHDL: quelques détailsEspaces, littéraux, commentaires

• Il n’y a pas de différence entre les espaces, tabulations et retours de chariot, présents seuls ou en groupe.

• Le langage n’est pas sensible à la casse.• Littéraux:

– Un littéral composé d’un caractère unique est placé entre apostrophes : ‘a’, ‘5’.– Un littéral composé d’une 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"11111111", O"377", X"FF".

• Tout texte placé après deux tirets et jusqu’à la fin d’une ligne est un commentaire, ce qui est semblable au ‘//’ de C. Il n’y a pas de commentaires en bloc (/* … */) en VHDL.

(notes, section 2.5)

Page 20: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Décrire un circuit numérique

INF3500 : Conception et implémentation de systèmes numériques 20

VHDL: quelques détailsObjets

• Ici, ‘objet’ n’a pas le même sens que dans un langage orienté objet.• Il y a quatre catégories d’objets en VHDL :

– constant (et generic) : peut contenir une valeur unique qui ne change pas; un objet generic est une constante spéciale permettant d’appliquer 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 d’un circuit; un port d’une 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 d’exploitation.

• Lors de la déclaration d’un objet, on spécifie sa catégorie, son identificateur et son type. On peut aussi lui assigner une valeur initiale.

(notes, section 2.5)

Page 21: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Décrire un circuit numérique

INF3500 : Conception et implémentation de systèmes numériques 21

VHDL: quelques détailsIdentificateurs

• 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 l’un des mots réservés du langage.

(notes, section 2.5)

Page 22: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Décrire un circuit numérique

INF3500 : Conception et implémentation de systèmes numériques 22

VHDL: quelques détailsTypes prédéfinis

(notes, section 2.5)

catégorie typeou sous-type

sourcede la définition valeurs

scalaires

boolean type prédéfini FALSE et TRUEbit type prédéfini ‘0’ et ‘1’

character type prédéfini

256 caractères de la norme ISO 8859-1, avec des abréviations reconnues et certaines qui sont propres à VHDL

Les 128 premiers sont les caractères ASCII.

integer type prédéfini plage minimale de –231 + 1 à 231 – 1natural sous-type prédéfini 0 à 231 – 1positive sous-type prédéfini 1 à 231 – 1

real type prédéfini typiquement–1.7014111E±308 à 1.7014111E±308

std_logicPackage

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 (don’t care)

composés

bit_vector type prédéfini tableau de bitstring type prédéfini tableau de character

std_logic_vectorPackage

std_logic_1164tableau de std_logic

unsignedPackage

numeric_stdtableau de std_logic, interprété comme un nombre binaire non signé

signedPackage

numeric_std

tableau de std_logic, interprété comme un nombre binaire signéen complément à deux

Page 23: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Décrire un circuit numérique

INF3500 : Conception et implémentation de systèmes numériques 23

VHDL: quelques détailsOpérateurs

(notes, section 2.5)

catégorie opérateurs

type de l’opérande de

gauche

type de l’opérande de

droite

type de l’expression

logiqueand, 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

integercomme

l’opérande de gauche

arithmétique

+, -, *, /,abs (valeur absolue),

mod (modulo),rem (reste)

typenumérique

typenumérique type

numérique

** (exponentiation) integer

concaténation & tableau ou type énuméré tableau

Page 24: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Décrire un circuit numérique

INF3500 : Conception et implémentation de systèmes numériques

Flot de conception de circuits numériques

24

code HDL

schéma

diagramme d’états

génération de code

HDL

synthèse implémentationgénération du

fichier de configuration

vérification par simulationannotationdes délais

Extraction statique des métriques d’implémentation(ressources, délai, puissance)

contraintes (temps et espace)

vérification de la puce

puce

(notes, section 4.2)

Page 25: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Décrire un circuit numérique

INF3500 : Conception et implémentation de systèmes numériques 25

Un exemple de design

• Un comité composé de quatre personnes a besoin d’un 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 l’amendement est accepté.

Page 26: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Décrire un circuit numérique

INF3500 : Conception et implémentation de systèmes numériques 26

Donner la table de vérité, l’équation et le circuit logique

# vote1 (A) vote2 (B) vote3 (C) vote4 (D)amendement approuvé (F)

0 0 0 0 0 01 0 0 0 1 02 0 0 1 0 03 0 0 1 1 04 0 1 0 0 05 0 1 0 1 06 0 1 1 0 07 0 1 1 1 18 1 0 0 0 09 1 0 0 1 0

10 1 0 1 0 011 1 0 1 1 112 1 1 0 0 013 1 1 0 1 114 1 1 1 0 115 1 1 1 1 1

ABCABDACDBCD

ABCABDACDBCD

DDABCCCABDBBACDAABCD

ABCDABCDABCDDABCABCDCDABABCDBCDA

ABCDABCDDABCCDABBCDAF

)1()1()1()1(

)'()'()'()'(

''''

''''

Équivalence entre les trois représentations

Page 27: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Décrire un circuit numérique

INF3500 : Conception et implémentation de systèmes numériques

Code VHDLune solution possible

27

library IEEE;use IEEE.STD_LOGIC_1164.all;

entity vote isport (

lesvotes: in std_logic_vector(3 downto 0);approbation : out std_logic

);end vote;

-- table de vérité réduitearchitecture flotdonnees1 of vote is begin

with lesvotes selectapprobation <=

'1' when "0111",'1' when "1011",'1' when "1101",'1' when "1110",'1' when "1111",'0' when others;

end flotdonnees1;

Page 28: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Décrire un circuit numérique

INF3500 : Conception et implémentation de systèmes numériques

Notions à retenir et maîtriser Importance relative

1. Expliquer l’utilité des HDL et les origines de VHDL 52. Expliquer le rôle d’une entité et d’une architecture en VHDL. 103. Décrire un module en VHDL par une description par flot de données, structurale et comportementale 20

4. Expliquer et utiliser le principe de la concurrence en VHDL. 155. Décrire une fonction logique à l’aide d’un processus 156. Décrire un module en VHDL en utilisant correctement la syntaxe de base du langage: commentaires, identificateurs, types prédéfinis, opérateurs 20

7. Illustrer par un schéma et décrire le flot de conception d’un circuit numérique 15Total 100

Résumé: VHDL de base

28