cours 2

34
Décrire un circuit numérique avec VHDL Cours N˚2

Upload: othmane-froukh

Post on 30-Sep-2015

220 views

Category:

Documents


3 download

DESCRIPTION

cours VHDL

TRANSCRIPT

  • Dcrire un circuit numrique avec VHDL

    Cours N2

  • Variables boolennes

    la base des systmes numriques on retrouve la logique boolenne. Dans un systme numrique, tous les signaux sont effectivement des variables

    boolennes. Une variable boolenne peut prendre une seule de deux valeurs: vrai ou faux. On peut interprter ces deux valeurs de diffrentes faons selon le contexte.

    2

    valeurlogique

    quivalentnumrique ex. : lampe ex : tension ex : alarme

    vrai 1 allume leve activefaux 0 teinte basse dsactive

  • Fonctions boolennes, symboles et tables de vrit

    Il y a trois fonctions boolennes de base linversion le ET logique; et, le OU logique.

    Plusieurs fonctions peuvent tre drives de ces trois fonctions de base, commele NON-OU, le NON-ET, le OU-exclusif et lquivalence.

    3

  • Diffrentes portes logiques

    4

  • Un exemple de design

    Un comit compos de quatre personnes a besoin dun mcanisme de votesecret pour les amendements sur la constitution du comit. Un amendementest approuv si au moins 3 personnes votent pour.

    Concevoir un circuit logique qui accepte 4 entres reprsentant les votes. Lasortie du circuit doit indiquer si lamendement est accept.

    5

  • Donner la table de vrit, lquation et le circuit logique

    6

    # vote1 (A) vote2 (B) vote3 (C) vote4 (D) amendementapprouv (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

    ABCABDACDBCDABCABDACDBCD

    DDABCCCABDBBACDAABCDABCDABCDABCDDABCABCDCDABABCDBCDA

    ABCDABCDDABCCDABBCDAF

    +++=+++=

    +++++++=+++++++=

    ++++=

    )1()1()1()1()'()'()'()'(

    ''''''''

    quivalence entre les trois reprsentations

  • Langages de description matrielle

    Pour dcrire un circuit logique, les schmas sont peu adquats. Limite aux circuits les plus simples. Il est difficile de dessiner un circuit complexe avec un schma de portes logiques. Il

    est encore plus difficile de le modifier. Un simple changement dans une quation boolenne du circuit se rpercute par une

    grande quantit de connexions corriger. Il est difficile, voire impossible, dutiliser des variables en guise de paramtres dun

    circuit reprsent par un schma. Les langages de description matrielle (Hardware Description Language HDL)

    ont vu le jour au dbut des annes 1980 lorsque la complexit des circuits concevoir a rendu impossible lutilisation exclusive de schmas.

    Les avantages des HDL par rapport aux schmas sont : les HDL permettent de dcrire des systmes complexes complets; les HDL favorisent la dcomposition en modules paramtrables; les HDL facilitent ltablissement de spcifications et dinterfaces clairement

    dfinies; les HDL normalisent lchange dinformations.

    7

  • Langages de description matrielle

    Les HDL peuvent servir trois choses : la modlisation de circuits (surtout numriques); la description de circuits en vue de leur synthse (i.e. leur ralisation matrielle); 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

    matriser. VHDL est plus vaste, bien que plusieurs des particularits pour lesquelles Verilog

    na pas dquivalent soient rarement utilises. Quand on connat lun des deux langages, il est relativement ais de passer

    lautre. Un troisime langage, SystemC, est populaire pour la modlisation plus haut

    niveau.

    8

  • VHDL

    Lacronyme VHDL signifie Very High Speed Integrated Circuit (VHSIC) HardwareDescription Language (HDL).

    VHDL est un langage de programmation complet. Le langage a t dvelopppour le compte du gouvernement amricain pour documenter la conceptiondASIC. Il est fortement inspir du langage ADA.

    Rapidement, des simulateurs de VHDL sont apparus, puis des synthtiseurscapables de traduire un programme VHDL en une liste dinterconnexions entredes portes logiques (netlist) pouvant tre ralise sur un ASIC.

    Le langage VHDL est normalis par lIEEE. La premire norme remonte 1987.Des mises jour ont eu lieu en 1993, 2000, 2002 et 2008. La norme plus rcenteest prsentement mal supporte par les outils de conception.

    9

  • Circuit combinatoire en VHDL

    Entit: interface avec le monde extrieur Architecture: partie dclarative et corps Principe de la concurrence

    10

    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

  • Trois styles de description dun circuit

    11

    noncs concurrents Style de description du circuitAssignations de signaux concurrentes, choisies et conditionnelles Par flot de donnesInstanciations de composantes StructuraleProcessus Comportementale

  • Description par flot de donnes

    12

    Le modle dun circuit numrique par flot de donnes dcrit sa fonction sans ncessairement dfinirsa structure. En gnral, cela signifie que les valeurs des signaux et ports du circuit sont tablies pardes assignation concurrentes de valeurs (concurrent signal assignment).

    Pour les circuits combinatoires, les assignations concurrentes des signaux utilisent souvent desoprateurs logiques qui sont des mots cls du langage: and, or, nand, nor, xor, xnor, not. On peututiliser des parenthses pour faire respecter la prsance requise dans les expressions.

  • Description par flot de donnes

    13

    architecture flotDeDonnees2 of combinatoire1 issignal entree : std_logic_vector(2 downto 0);begin

    entree

  • Description structurale

    14

    Un circuit numrique peut tre dfini par sa structure, c'est--dire par unassemblage de blocs.

    Une description structurale correspond une description par schma, o lesinstanciations de composantes et leurs interconnexions sont numres avecdu texte.

    Une description structurale est approprie pour relier entre eux diffrents sous-systmes dun systme numrique.

    En gnral, il est prfrable dutiliser un diteur de schma pour dcrire un telcircuit, et laisser un outil gnrer automatiquement le code VHDL structural.

  • Description structurale

    15

    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

  • Description comportementale

    16

    En VHDL, la description comportementale dun systme numrique est faite laide dnoncs similaires ceux dun langage procdural comme C et Java,incluant les structures de condition et de rptition.

    La possibilit dutiliser une description comportementale est un outil trspuissant aux concepteurs de circuits numriques. En effet, il est alors possibledabstraire le comportement du circuit un trs haut niveau, et donc de dfinirun systme complexe en peu de temps, de faon concise, paramtrable etfacilement modifiable.

    Cependant, comme une description comportementale peut prendre multiplesformes, il faut garder en tte la nature du circuit dsir et linventaire decomposantes matrielles disponibles pour sassurer que la description puissetre synthtise en un circuit de complexit acceptable.

    Les descriptions comportementales en VHDL se font laide de lnoncprocess lintrieur dune architecture. Un processus dcrit une partie ducircuit qui sexcute de faon concurrente dautres processus et desassignations concurrentes de signaux.

  • Description comportementale porte ET, ex. 1

    17

    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

  • Description comportementale porte ET, ex. 2

    18

    library IEEE;use IEEE.STD_LOGIC_1164.ALL;

    entity porteET isgeneric (

    W : positive := 8 -- le nombre d'entres 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

  • VHDL: quelques dtailsEspaces, littraux, commentaires

    19

    Il ny a pas de diffrence entre les espaces, tabulations et retours de chariot,prsents seuls ou en groupe.

    Le langage nest pas sensible la casse. Littraux:

    Un littral compos dun caractre unique est plac entre apostrophes : a, 5. Un littral compos dune chane de caractres est plac entre guillemets :

    "bonjour", "123ABC". Un littral numrique peut tre spcifi avec sa base, avec le format

    base#chiffres[.chiffres]#[exposant], o les crochets indiquent des lmentsfacultatifs. La base doit tre entre 2 et 16, inclusivement. Par exemple, les nombressuivants ont tous la mme valeur : 10#33# = 10#3.3#E1 = 2#10001# = 16#21# =7#45#.

    Un littral compos de bits peut tre exprim en bases 2, 8 ou 16, avec lesspcificateurs de base B, O et X, respectivement : B"11111111", O"377", X"FF".

    Tout texte plac aprs deux tirets et jusqu la fin dune ligne est uncommentaire, ce qui est semblable au // de C. Il ny a pas de commentaires enbloc (/* */) en VHDL.

  • VHDL: quelques dtailsObjets

    20

    Ici, objet na pas le mme sens que dans un langage orient objet. Il y a quatre catgories dobjets en VHDL :

    constant (et generic) : peut contenir une valeur unique qui ne change pas; un objetgeneric est une constante spciale permettant dappliquer un paramtre uneentit lors de son instanciation;

    variable: peut contenir une valeur temporaire; les objets variable sont utiles pourstocker des valeurs intrimaires dans les calculs;

    signal (et port) : peut contenir une liste de valeurs dans le temps; un objet signalcorrespond en gnral un fil dun circuit; un port dune entit est implicitement unsignal pour cette entit;

    file: un objet dans lequel on peut crire et lire des valeurs, et qui correspond unfichier du systme dexploitation.

    Lors de la dclaration dun objet, on spcifie sa catgorie, son identificateur etson type. On peut aussi lui assigner une valeur initiale.

  • VHDL: quelques dtailsIdentificateurs

    21

    Un identificateur de base lgal est compos de lettres, chiffres et/ou dusoulignement.

    Le premier caractre doit tre une lettre, le dernier ne peut pas tre lesoulignement, et on ne peut utiliser deux soulignements de suite.

    Un identificateur ne peut pas tre lun des mots rservs du langage.

  • VHDL: quelques dtailsTypes prdfinis

    22

    catgorie typeou sous-typesource

    de la dfinition valeurs

    scalaires

    boolean type prdfini FALSE et TRUEbit type prdfini 0 et 1

    character type prdfini

    256 caractres de la norme ISO 8859-1, avec des abrviations reconnues etcertaines qui sont propres VHDLLes 128 premiers sont les caractresASCII.

    integer type prdfini plage minimale de 231 + 1 231 1natural sous-type prdfini 0 231 1positive sous-type prdfini 1 231 1real type prdfini typiquement1.7014111E308 1.7014111E308

    std_logic Packagestd_logic_1164

    U : valeur inconnue, pas initialiseX : valeur inconnue force0 : 0 forc1 : 1 forcZ : haute impdance (pas connect)W : inconnu faibleL : 0 faibleH : 1 faible- : peu importe (dont care)

    composs

    bit_vector type prdfini tableau de bitstring type prdfini tableau de character

    std_logic_vector Packagestd_logic_1164 tableau de std_logic

    unsigned Packagenumeric_stdtableau de std_logic, interprtcomme un nombre binaire non sign

    signed Packagenumeric_stdtableau de std_logic, interprtcomme un nombre binaire signen complment deux

  • VHDL: quelques dtailsOprateurs

    23

    catgorie oprateurs

    type deloprande de

    gauche

    type deloprande de

    droite

    type delexpression

    logiqueand, or, nand, nor, xor,

    xnor, not bit, boolean

    relation =, /=, = scalaire ou tableau boolean

    dcalage

    sll (dc. logique gauche),srl (dc. logique droite),

    sla (dc. arithmtique gauche),sra (dc. arithmtique droit),

    rol (rotation gauche),ror (rotation droite)

    tableau de bitou boolean integer

    commeloprande de

    gauche

    arithmtique

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

    mod (modulo),rem (reste) typenumrique

    typenumrique type

    numrique

    ** (exponentiation) integer

    concatnation & tableau ou type numr tableau

  • Un exemple de design

    Un comit compos de quatre personnes a besoin dun mcanisme de votesecret pour les amendements sur la constitution du comit. Un amendementest approuv si au moins 3 personnes votent pour.

    Concevoir un circuit logique qui accepte 4 entres reprsentant les votes. Lasortie du circuit doit indiquer si lamendement est accept.

    24

  • Donner la table de vrit, lquation et le circuit logique

    25

    # vote1 (A) vote2 (B) vote3 (C) vote4 (D) amendementapprouv (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

    ABCABDACDBCDABCABDACDBCD

    DDABCCCABDBBACDAABCDABCDABCDABCDDABCABCDCDABABCDBCDA

    ABCDABCDDABCCDABBCDAF

    +++=+++=

    +++++++=+++++++=

    ++++=

    )1()1()1()1()'()'()'()'(

    ''''''''

    quivalence entre les trois reprsentations

  • Code VHDLune solution possible

    26

    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 vrit rduitearchitecture flotdonnees1 of vote isbegin

    with lesvotes selectapprobation

  • Code VHDLune Bascule D

    Bascule D sans signal dinitialisation Bascule D avec signal dinitialisation

    un comportement asynchrone; un comportement synchrone.

    loquet D (D-latch)

  • VHDL: quelques dtailsObjets

    Ici, objet na pas le mme sens que dans un langage orient objet.

    Il y a quatre catgories dobjets en VHDL :

    constant (et generic) : peut contenir une valeur unique qui nechange pas; un objet generic est une constante spciale permettantdappliquer un paramtre une entit lors de son instanciation;

    variable: peut contenir une valeur temporaire; les objets variable sontutiles pour stocker des valeurs intrimaires dans les calculs;

    signal (et port) : peut contenir une liste de valeurs dans le temps; un objetsignal correspond en gnral un fil dun circuit; un port dune entit estimplicitement un signal pour cette entit;

    file: un objet dans lequel on peut crire et lire des valeurs, et qui correspond un fichier du systme dexploitation.

  • VHDL: quelques dtailsDfinition de nouveaux types

    avec le mot cl type, et des sous-types avec le mot cl subtype .

    Type compos record :

    type entiers_sous_20 is range 0 to 19;type matrice_reelle_1_par_10 is array (1 to 10) of real;type tableauSLV3 is array (natural range ) of std_logic_vector(2 downto 0);constant vecteurs : tableauSLV3 :=

    ("000", "001", "010", "011", "100", "101", "110", "111");type nom_de_mois is (janvier, fvrier, mars, avril, mai, juin, juillet, aout, septembre,octobre, novembre, dcembre);type date is recordjour : integer range 1 to 31;mois : nom_de_mois;anne : positive range 1 to 3000;end record;constant confederation : date := (1, juillet, 1867);

  • VHDL: quelques dtailsStructures de rptition et de slection

    forfor identificateur in gammeDeValeurs loop

    noncs;end loop;

    whilewhile ( condition de rptition ) loop

    noncs;end loop;

    lnonc next interrompt le flot de la boucle et passe litration suivante, etl nonc exit termine la boucle compltement .

  • VHDL: quelques dtailsStructures de rptition et de slection

    On peut utiliser deux types de structures de slection lintrieur dun processus :if-then-else et case,-- nonc if-then-elseif ( condition ) then

    noncs;elsif ( condition ) then

    noncs;else

    noncs;end if;

    -- nonc casecase ( expression ) is

    when ( choix unique, plusieurs spars par |, ou gamme de valeurs ) =>noncs;

    when ( choix unique, plusieurs spars par |, ou gamme de valeurs ) =>noncs;

    when others =>noncs;

    end case;

  • VHDL: quelques dtailsSous-programmes : fonctions et procdures

    Fonctions:function porteET(V: std_logic_vector) return std_logic isvariable resultat : std_logic := '1';beginfor k in V'range loopresultat := resultat and V(k);end loop;return resultat;end;

  • VHDL: quelques dtailsPackage

    En VHDL, un package est un fichier contenant des dclarations pouvant treutiliss dans dautres fichiers.

    Un package contient deux parties : une dclaration et un corps.library IEEE;use IEEE.STD_LOGIC_1164.ALL;package NUMERIC_STD is

    type UNSIGNED is array (NATURAL range ) of STD_LOGIC;type SIGNED is array (NATURAL range ) of STD_LOGIC;function "abs" (ARG: SIGNED) return SIGNED; -- autres declarations

    end NUMERIC_STD;package body NUMERIC_STD is

    function "abs" (ARG: SIGNED) return SIGNED isvariable RESULT: SIGNED(ARG_LEFT downto 0);

    beginif ARG'LENGTH < 1 then return NAS; end if;return RESULT;

    end "abs";-- autres dfinitions ...end NUMERIC_STD;

  • VHDL: quelques dtailsLibrary

    En VHDL, une librairie (library) est un endroit o le compilateur entreposelinformation ncessaire pour un design en particulier ;

    Le nom de la librairie par dfaut est work, mais les outils de design suiventsouvent leur propre convention. Par exemple, avec Active-HDL, le nom de lalibrairie par dfaut est le mme que le nom du design.