cours technologie vhdl we - v1.1

46
TechnologieVHDL Wajdi Elhamzi [email protected] 1 AU: 2013/2014 Conception Numérique FPGA/VHDL W.Elhamzi

Upload: wajdi-elhamzi

Post on 30-Sep-2015

257 views

Category:

Documents


0 download

DESCRIPTION

vhdl langage

TRANSCRIPT

  • TechnologieVHDL

    Wajdi Elhamzi [email protected]

    1 AU: 2013/2014 Conception Numrique FPGA/VHDL

    W.Elhamzi

    mailto:[email protected]
  • HDL

    Nouvelle mthode

    CAO

    S = .E+A

    A E S

    0 1 0

    1 0 1

    Mthode classique

    2 AU: 2013/2014 Conception Numrique FPGA/VHDL

    W.Elhamzi

    Introduction

  • VHDL signifie: VHSIC Hardware Description Language o VHSIC signifie Very High Speed Integrated Circuit

    Dfini vers 1980 par le dpartement de la dfense amricaine

    Accept comme standard en 1987 et tendu en 1993, 2001 et 2008.

    3 AU: 2013/2014 Conception Numrique FPGA/VHDL

    W.Elhamzi

    Prsentation de VHDL

  • 4 AU: 2013/2014 Conception Numrique FPGA/VHDL

    W.Elhamzi

    Historique du VHDL

    1980: Dbut du projet, financ par le DoD (400M $US) 1982: Contrat pour Intermetrics, IBM et Texas 1985: Version 7.2 dans le domaine public 1987: Standard IEEE 1076 (VHDL-87) 1993: Nouvelle version du standard (VHDL-93) 2001: Nouvelle version du standard (VHDL-2001) 2008: Nouvelle version du standard (VHDL-2008)

  • Langage de description des circuits numriques trs rpandu (avec Verilog);

    Permet la hirarchie (dcomposition);

    Offre plusieurs niveaux dabstraction;

    Supporte la concurrence, le timing et les horloges;

    Cest un langage simple comprendre et difficile matriser.

    5 AU: 2013/2014 Conception Numrique FPGA/VHDL

    W.Elhamzi

    Caractristiques

  • Le VHDL est un langage instructions concurrentes : Les instructions sont values en mme temps. Lordre dans lequel elles sont crites na aucune importance.

    Le langage VHDL ne fait pas de distinction entre majuscules et minuscules. En langage VHDL les commentaires sont prcds par -- et sarrtent au retour la ligne.

    Caractristiques du VHDL

    6 AU: 2013/2014 Conception Numrique FPGA/VHDL

    W.Elhamzi

  • Langage standardis: Disponibilit des outils

    Interface entre plusieurs outils

    Permet lcriture de code dcrivant des circuits complexes

    Permet de crer des bibliothques de modules rutilisables

    Chaque module peut tre valid sparment par simulation

    Description portable (indpendante de la technologie FPGA, ASIC)

    7 AU: 2013/2014 Conception Numrique FPGA/VHDL

    W.Elhamzi

    Avantages

  • 11/02/2015 8 Conception Numrique FPGA/VHDL

    W.Elhamzi

  • 11/02/2015 9 Conception Numrique FPGA/VHDL

    W.Elhamzi

  • 11/02/2015 10

  • 11/02/2015 11

  • 11/02/2015 12 Conception Numrique FPGA/VHDL

    W.Elhamzi

  • Description H. N.

    Synthse

    Netlist FPGA/ASIC

    P & R

    FPGA ASIC

    S I M U L A T I O N

    Description de haut niveau avec VHDL et

    validation de la syntaxe

    Simulation tous les niveaux dabstraction pour

    vrifier le fonctionnement

    Synthse: passage dun niveau dabstraction un

    autre

    Obtention dun netlist de la technologie cible :

    ASIC ou FPGA

    La validation et le test

    13 AU: 2013/2014 Conception Numrique FPGA/VHDL

    W.Elhamzi

    Flot de conception

  • Bibliothque: appel a des fonctions, types, paquetages comme en C/C++ (#include

    Entit: description des entres et sorties du circuit

    Architecture: description interne du fonctionnement du circuit

    Dclaration dentit

    Dclaration darchitecture

    14 AU: 2013/2014 Conception Numrique FPGA/VHDL

    W.Elhamzi

    Structure gnrale dun programme (1)

    Dclaration bibliothques

  • 11/02/2015 15

    A

    B

    S

    R

    Vue externe

    A

    B

    S

    R Cin

    Vue externe

    HALF ADDER

    Chaque circuit peut donc tre modlis comme le montre la figure: Un rectangle ou un symbole indiquant les entres et les sorties avec leurs noms, cest la vue externe.

    Entit: description des entres et sorties du circuit

    FULL ADDER

    Conception Numrique FPGA/VHDL W.Elhamzi

    Structure gnrale dun programme (2)

  • 11/02/2015 16

    Architecture: description interne du fonctionnement du circuit

    A

    B

    S

    R

    Vue interne

    A

    B

    S

    R Cin

    S= A xor B R= A and B

    Vue interne S= A xor B xor C

    R= (A and B) or ((A xor B) and Cin)

    Half ADDER

    Une quation pour chacune des sorties, ce qui dcrit le comportement de chaque circuit, cest la vue interne.

    FULL ADDER

    Conception Numrique FPGA/VHDL W.Elhamzi

    Structure gnrale dun programme (3)

  • 17 Langage de description VHDL

    B.ATTIA

    library IEEE; --Dfinie la bibliothque utilise

    use IEEE.STD_LOGIC_1164.all;

    --Dfinie lelement du bibliothque. Par exemple STD_LOGIC_1164 dfinie 1 comme tat logique haut et 0comme tat logique bas.

    Plusieurs bibliothques existent comme: IEEE.standard -- dfinition du type bit, vecteur de bit, etc IEEE.std_logic_1164 -- oprations signes ou non signes IEEE.numeric_std -- oprations signes ou non signes IEEE.std_logic_arith

    Dclaration du bibliothque

  • Le mot cl Entity est utilis pour dfinir les ports et les constantes gnriques

    Il sagit de la description de la boite noire

    Les ports peuvent tre des entres, sorties ou bidirectionnels

    Mode: in, out ou inout

    Entity Moncircuit is Port ( x,y: in bit; R: out bit_vector(3 downto 0)); End Moncircuit;

    18 AU: 2013/2014 Conception Numrique FPGA/VHDL

    W.Elhamzi

    Dclaration de lentit

    Moncircuit

    x

    y

    R

    3

    L'entit prcise : le nom du circuit Les ports d'entre-sortie : Leurs noms Leurs directions (in, out, inout,...) Leur type (bit, bit_vector, integer, std_logic,...) Les paramtres ventuels pour les modles gnriques

  • Architecture Mon_architecture of Moncircuit is Begin --description du circuit

    End Mon_architecture ;

    L'architecture est la description interne du circuit:

    Elle est toujours associe une entit.

    Une mme entit peut avoir plusieurs architectures.

    19 AU: 2013/2014 Conception Numrique FPGA/VHDL

    W.Elhamzi

    Dclaration de larchitecture (1)

  • 20 AU: 2013/2014 Conception Numrique FPGA/VHDL

    W.Elhamzi

    Dclaration de larchitecture (2)

    Dans le corps de larchitecture se trouvent les 3 types dinstructions concurrentes de VHDL. Elles peuvent tre crites dans nimporte quel ordre : Des processus avec le mot cl Process

    Des instructions concurrentes daffectation de signaux (

  • 21

    -- dclaration des ressources externes

    library NOM_DE_LA_BIBLIOTHEQUE ;

    use ELEMENT_DE_LA_BIBLIOTHEQUE ;

    -- description de lentit vue comme une boite noire avec des entres et des sorties

    entity NOM_DE_LENTITE is

    port(NOM_DE_Port_ENTREES_SORTIES : direction type, .

    NOM_DE_Port_ENTREES_SORTIES : direction type) ;

    end NOM_DE_LENTITE ;

    --description de larchitecture lintrieure de lentit

    architecture NOM_DE_LARCHITECTURE of NOM_DE_LENTITE is

    --Zone de dclaration (type, objet, signal, composant, constantes, fonctions);

    begin

    --Instruction concurrente --Instruction concurrente

    end NOM_DE_LARCHITECTURE ;

    Langage de description VHDL B.ATTIA

    Entity/Architecture

  • Library ieee;

    Use ieee.std_logic_1164.all;

    Entity and2port is

    Port( in1:in std_logic;

    in2:in std_logic;

    out: out std_logic);

    End and2port;

    Architecture arch of and2port is

    Begin

    out

  • Library ieee;

    Use ieee.std_logic_1164.all;

    Entity ou2port is

    Port( in1:in std_logic;

    in2:in std_logic;

    out: out std_logic);

    End ou2port;

    Architecture arch of ou2port is

    Begin

    out

  • library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity comparator_1 is port(A,B : in std_logic_vector(7 downto 0); CMP : out std_logic); end comparator_1; architecture archi of comparator_1 is begin CMP = B else '0'; end archi;

    24 AU: 2013/2014 Conception Numrique FPGA/VHDL

    W.Elhamzi

    Exemple : comparateur 8 bits non sign

  • Entity: dcrit la vue externe du circuit indpendamment de limplmentation

    Architecture: dcrit la vue interne (fonctionnement) du circuit

    Package: contient des informations commune plusieurs design (types, fonctions, procdures)

    Configuration: permet dassocier une architecture une entit

    25 AU: 2013/2014 Conception Numrique FPGA/VHDL

    W.Elhamzi

    Les 4 units de conception

  • VHDL est un langage fortement typ: toute donne doit tre dclar avant utilisation, en indiquant son type.

    Les types prdfinis sont: scalaire:

    integer,

    real,

    enumerated ,

    physical

    compos: array,

    record

    pointeur: acces

    I/O: file

    26 AU: 2013/2014 Conception Numrique FPGA/VHDL

    W.Elhamzi

    Les types en VHDL

  • VHDL est un langage fortement typ: toute donne doit tre dclar avant utilisation, en indiquant son type.

    Les types prdfinis sont: scalaire:

    integer,

    real,

    enumerated ,

    physical

    compos: array,

    record

    pointeur: acces

    I/O: file

    27 AU: 2013/2014 Conception Numrique FPGA/VHDL

    W.Elhamzi

    Les types en VHDL

  • 28 AU: 2013/2014 Conception Numrique FPGA/VHDL

    W.Elhamzi

    catgorie type

    ou sous-type

    source de la dfinition

    valeurs

    scalaires

    boolean type prdfini FALSE et TRUE bit type prdfini 0 et 1

    character type prdfini

    256 caractres de la norme ISO 8859-1, avec des abrviations reconnues et certaines qui sont propres VHDL

    Les 128 premiers sont les caractres ASCII.

    integer type prdfini plage minimale de 231 + 1 231 1

    natural sous-type prdfini

    0 231 1

    positive sous-type prdfini

    1 231 1

    real type prdfini typiquement 1.7014111E308 1.7014111E308

    std_logic Package

    std_logic_1164

    U : valeur inconnue, pas initialise

    X : valeur inconnue force

    0 : 0 forc

    1 : 1 forc

    Z : haute impdance (pas connect)

    W : inconnu faible

    L : 0 faible

    H : 1 faible

    - : peu importe (dont care)

    VHDL: types prdfinis et de base

  • 29 AU: 2013/2014 Conception Numrique FPGA/VHDL

    W.Elhamzi

    composs

    bit_vector type prdfini tableau de bit

    string type prdfini tableau de character

    std_logic_vector

    Package

    std_logic_1164 tableau de std_logic

    unsigned Package

    numeric_std

    tableau de std_logic, interprt comme un nombre binaire non sign

    signed Package

    numeric_std

    tableau de std_logic, interprt comme un nombre binaire sign en complment deux

    VHDL: types prdfinis et de base

  • Sous-types:

    Subtype nom is nomtype dbut to fin

    Subtype Chiffre is integer 0 to 9;

    Tableaux:

    Type tab is array (7 downto 0) of std_logic

    Types numrs:

    Type etat is (etat_0,etat_1,etat_2);

    Type lumiere is (allum,teint,clignotant);

    30 AU: 2013/2014 Conception Numrique FPGA/VHDL

    W.Elhamzi

    Types et sous-types

  • Une donne de type std_logic possde une valeur parmi neuf possibles:

    U : non initialis,

    X : niveau inconnu, forage fort,

    0 : niveau 0, forage fort,

    1 : niveau 1, forage fort,

    Z : haute impdance,

    W : niveau inconnu, forage faible,

    L : niveau 0, forage faible,

    H : niveau 1, forage faible,

    - : quelconque

    Pour une affectation, les valeurs utilises sont: 'X', '0', '1', 'Z'

    31 AU: 2013/2014 Conception Numrique FPGA/VHDL

    W.Elhamzi

    Le type std_logic

    VCC

    1

    0

    VCC

    Z

    VCC

    X

  • 32 AU: 2013/2014 Conception Numrique FPGA/VHDL

    W.Elhamzi

    catgorie oprateurs type de

    loprande de gauche

    type de loprande de

    droite type de lexpression

    logique and, 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 bit

    ou boolean integer

    comme loprande de gauche

    arithmtique

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

    mod (modulo), rem (reste)

    type numrique

    type numrique type

    numrique

    ** (exponentiation) integer

    concatnation & tableau ou type numr tableau

    VHDL: oprateurs

  • 33 AU: 2013/2014 Conception Numrique FPGA/VHDL

    W.Elhamzi

    Instructions et Architecture

    Dans le corps de larchitecture se trouvent les 3 types dinstructions concurrentes de VHDL. Elles peuvent tre crites dans nimporte quel ordre : Des processus avec le mot cl Process

    Des instructions concurrentes daffectation de signaux (

  • Architecture comp of RS is

    begin

    Q

  • En VHDL, les instructions squentielles ne sutilisent qu lintrieur des processus. Un processus est un groupe dlimit dinstructions, dot de trois caractristiques essentielles :

    Le processus sexcute chaque changement dtat dun des signaux auxquels il est dclar sensible.

    Les instructions du processus sexcutent squentiellement.

    Les modifications apportes aux valeurs de signaux par les instructions prennent effet la fin du processus.

    35 AU: 2013/2014 Conception Numrique FPGA/VHDL

    W.Elhamzi

    Fonctionnement squentiel: Process

  • Un processus est un bloc de commande dans une architecture

    Chaque processus excute ses instructions de manire squentielle

    Il y a un rebouclage implicite la fin du processus

    Plusieurs processus dfinissent des oprations qui se droulent en parallle dans un systme

    Les processus sont persistants et ne se terminent jamais

    36 AU: 2013/2014 Conception Numrique FPGA/VHDL

    W.Elhamzi

    Processus en VHDL

  • Liste de sensibilit statique Soit process (N1,N2,N3)

    Au dpart tous les processus sont excuts une fois

    Une fois le corps du processus excut, celui-ci attend un vnement sur le signal Nx pour sexcuter nouveau

    Les instructions du processus sont excutes si au moins UN des signaux de la liste est modifi

    Il est aussi possible dinterrompre un processus en utilisant linstruction wait ou wait on

    37 AU: 2013/2014 Conception Numrique FPGA/VHDL

    W.Elhamzi

    Processus en VHDL

  • Process (signal1,siganl2.,signalN) dclaration de type; dclaration de variable; dclaration de constante; dfinition de fonction; begin Instruction squentielle; Instruction squentielle; end process;

    38 AU: 2013/2014 Conception Numrique FPGA/VHDL

    W.Elhamzi

    Processus en VHDL

  • La partie excutable d'un processus n'est active que si un vnement (changement d'tat) survient sur au moins un signal dit sensible.

    Process (a,b,c) -- liste de sensibilit begin end process;

    process begin wait on a,b,c; -- liste de sensibilit end process;

    Liste de sensibilit

    39 AU: 2013/2014 Conception Numrique FPGA/VHDL

    W.Elhamzi

  • Instruction squentielle :instruction lintrieur dun process

    Instruction concurrente :instruction lextrieur des process.

    Rappel :les instructions se placent toujours uniquement entre le begin et le end de larchitecture

    40 AU: 2013/2014 Conception Numrique FPGA/VHDL

    W.Elhamzi

    Assignations concurrentes/squentielles

  • library ieee ; use ieee.std_logic_1164.all; entity dff is port( data_in: in std_logic; clock: in std_logic; data_out: out std_logic ); end dff; architecture behv of dff is begin

    process(data_in, clock) begin if (clock='1' and clock'event) then data_out

  • library ieee ; use ieee.std_logic_1164.all; entity D_latch is port( data_in: in std_logic; enable: in std_logic; data_out: out std_logic ); end D_latch; architecture behv of D_latch is begin

    process(data_in, enable) begin if (enable='1') then data_out

  • Les constantes et les gnriques : Une constante peut tre assimile un signal interne (au circuit) auquel est associe une valeur fixe et dfinitive.

    Les signaux : sont spcifiques la description matrielle. Ils servent modliser les informations qui passent sur les fils ou les bus.

    Les variables : capable de retenir une valeur pendant une dure limite. Elle ne peut tre employe qu lintrieur dun process.

    43 AU: 2013/2014 Conception Numrique FPGA/VHDL

    W.Elhamzi

    Les principaux objets manipuls

  • 44 AU: 2013/2014 Conception Numrique FPGA/VHDL

    W.Elhamzi

    Objets: 1. constant et generic

    Une constant (et un generic) peuvent contenir une valeur unique qui ne change pas.

    Un objet generic est une constante spciale permettant dappliquer un paramtre une entit lors de son instanciation.

    Un objet constant peut tre dfini pour une architecture ou un processus.

    library IEEE;

    use IEEE.STD_LOGIC_1164.all;

    entity vote is

    generic (

    W : positive := 4

    );

    port (

    lesvotes: in std_logic_vector(W - 1 downto 0);

    approbation : out std_logic

    );

    end vote;

    architecture comportementale3 of vote is

    constant nMin : natural := W / 2;

    begin

    process(lesvotes)

    variable compte : natural range 0 to lesvotes'length;

    begin

    compte := 0;

    for k in lesvotes'range loop

    if lesvotes(k) = '1' then

    compte := compte + 1;

    end if;

    end loop;

    if compte > nMin then

    approbation

  • 45 AU: 2013/2014 Conception Numrique FPGA/VHDL

    W.Elhamzi

    Objets: 2. signal et port Un signal est dclar dans

    la partie dclarative dune architecture et est visible partout dans celle-ci.

    Un signal reprsente peu prs un fil ou un groupe de fils dans un circuit.

    Un port dune entit est implicitement un signal dans toutes les architectures de cette entit. Un port de direction in est

    comme un signal qui ne peut pas tre crit.

    Un port de direction out est comme un signal qui ne peut pas tre lu.

    Pour assigner une valeur un port on utilise loprateur

  • 46 AU: 2013/2014 Conception Numrique FPGA/VHDL

    W.Elhamzi

    Objets: 3. variable

    Une variable peut contenir une valeur temporaire.

    Les variables ne peuvent tre utilises qu lintrieur des processus.

    Les objets variable sont utiles pour stocker des valeurs intrimaires dans les calculs.

    Pour assigner une valeur une variable on utilise loprateur :=

    library IEEE;

    use IEEE.STD_LOGIC_1164.all;

    entity vote is

    generic (

    W : positive := 4

    );

    port (

    lesvotes: in std_logic_vector(W - 1 downto 0);

    approbation : out std_logic

    );

    end vote;

    architecture comportementale3 of vote is

    constant nMin : natural := W / 2;

    begin

    process(lesvotes)

    variable compte : natural range 0 to lesvotes'length;

    begin

    compte := 0;

    for k in lesvotes'range loop

    if lesvotes(k) = '1' then

    compte := compte + 1;

    end if;

    end loop;

    if compte > nMin then

    approbation