104
Conception des circuits numériques Langage VHDL

cours master SSI.pdf

Embed Size (px)

Citation preview

  • Conception des circuits numriques Langage VHDL

  • VHDL est un langage de description matriel destin reprsenter le comportement

    ainsi que l'architecture dun systme lectronique numrique

    VHDL a t normalis en 1987 par lIEEE, sous la norme IEEE 1076-87.

    Une importante volution est parue en 1993, sous la norme IEEE 1076-93.

    Cest cette version du langage qui est majoritairement supporte par les outils

    du march.

    Dautre rvision de la norme sont parues depuis, mais ce sont dvolutions

    mineures , et pas forcement supports par les logiciels.

    1. Introduction

  • Le VHDL est un langage de description matriel, ce nest absolument un

    langage software comme le C ou le Java .

    L'intrt d'une telle description rside dans son caractre excutable : une

    spcification dcrite en VHDL peut tre vrifie par simulation, avant que la

    conception dtaille ne soit termine.

    En outre, les outils de conception assiste par ordinateur permettant de passer

    directement d'une description fonctionnelle en VHDL un schma en porte

    logique ont rvolutionn les mthodes de conception des circuits numriques,

    ASIC ou FPGA.

    1. Introduction

  • Ce langage permet daller dun niveau dabstraction trs leve, par une

    description algorithmique, jusqu' un niveau proche du matriel, o lon

    dcrit le systme par un ensemble de porte logique et dinterconnexion

    ( gate level ).

    Entre les deux, se trouve le niveau RTL (Register Transfer Level), qui

    permet de dfinir le systme par une architecture de type machine de

    Moore ou Mealy.

    1. Introduction

  • Lavantage du code RTL est quil est indpendant des technologies utilises

    dans la cible programmer, alors quau niveau gate , il faut prendre en

    compte la technologie du circuit cible, car tout nest pas permis.

    A partir de ce langage, on peut dfinir un systme par une structure hirarchique

    de fonctions, par une structure matrielle, en encore par une modlisation

    temporelle (mme si elle nest pas utilisable pour faire du code synthtisable).

    1. Introduction

  • Cest le niveau RTL que lon utilise de plus, quand on fait de la synthse.

    En effet, le niveau algorithmique nest pas forcement synthtisable, il est

    plutt utilis pour faire du testbench ou de la simulation.

    La syntaxe du VHDL est tire du langage Ada, dont les mots clefs ont t

    adapts la conception matrielle.

    L'une des particularits du VHDL provient du fait qu'il est possible

    d'exprimer facilement le paralllisme prsent l'intrieur d'un circuit.

    1. Introduction

  • L'tape de synthse consiste de passer dune description matrielle pour

    obtenir un composant ralisant les fonctions dsires, l'aide d'lments

    logiques concrets (portes logiques, bascules ou registres).

    Ceux-ci seront implments, selon la technologie utilise, soit directement

    en transistors (dans le cas d'un ASIC), ou en se basant sur les lments

    programmables des FPGA.

    Ces deux oprations doivent prendre en compte les ressources disponibles

    sur l'ASIC (surface) ou dans le FPGA (units programmables).

    1. Introduction

  • Le VHDL ayant une double fonction (simulation et synthse), une partie

    seulement du VHDL est synthtisable, l'autre existant uniquement pour faciliter

    la simulation (criture de modles comportementaux et de test benches).

    Selon le support matriel et le logiciel de synthse utiliss, cette partie pourra

    tre plus ou moins tendue.

    De manire obtenir du VHDL synthtisable et portable, il est donc ncessaire

    de se limiter des constructions simples, dont la transcription en portes et

    bascules est simple raliser.

    La norme 1076.6 a t initie pour tenter de dfinir un sous-ensemble de

    VHDL de synthse .

    1. Introduction

  • 1. Introduction

  • Autres langages proches

    Verilog concurrent et plus ancien. La syntaxe est proche de celle

    du langage C.

    VHDL-AMS Langage de modlisation mixte numrique-

    analogique IEEE.1076.1-1999. Il est entirement compatible

    avec VHDL. Uniquement pour la modlisation.

    HDL assimilable aux langages logiciels de haut niveau

    1. Introduction

  • Historique Fin des annes 70 : lancement du programme VHSIC par le ministre

    de la dfense amricaine

    1981 : Premires rflexions sur le VHDL

    1987 : IEEE 1076 : Dfinition dun langage unique pour . La description . La modlisation . La simulation . La synthse . La documentation

    1993 : IEEE 1164 : Normalisation des signaux logiques multivaleurs

    MVL9 (multivalued logic, nine values).

    1996 : IEEE 1076.3 : Normalisation pour la synthse. Implantation

    d un nombre sign

    1. Introduction

  • Modlisation et synthse

    Limites actuelles du VHDL

    12

  • Modlisation et synthse

    13

    Modlisation

    Tout le langage: Logique + Temporel Un modle peut tre comportemental, structurel ou de type data-flow Exemple: cre des programmes de test

    Synthse

    Langage simplifi. Le style dcriture anticipe une primitive circuit. La synthse demande une bonne connaissance du circuit et de la technologie.

  • Les avantages de VHDL :

    indpendant du constructeur

    indpendant de la technologie

    indpendant de la dmarche

    indpendant du niveau de conception

    14

    Portabilit

    Modlisation et synthse

  • Dfinition: Lunit de conception (design unit) est le plus petit module compilable sparment.

    Units de conception

    15

  • Units de conception

    16

    VHDL offre cinq types dunits de conception :

    La dclaration dentit (entity declaration);

    Le corps darchitecture (architecture body), ou plus simplement architecture;

    La dclaration de configuration (configuration declaration);

    La dclaration de paquetage (package declaration);

    Le corps de paquetage (package body).

  • Units de conception

    Entit et architecture:

    En VHDL, une structure logique est dcrite l'aide d'une entit et d'une architecture de la faon suivante :

    17

  • Units de conception

    Dclaration de lentit:

    Entit=vue externe= boite noire

    18

  • Units de conception

    Exemple:

    19

  • Units de conception

    Dclaration de larchitecture:

    Architecture=Vue interne= intrieur de la boite

    20

  • Units de conception

    Trois descriptions darchitectures sont possibles:

    Description comportementale : ce que fait lentit

    Algorithme

    le temps peut intervenir

    21

  • Units de conception

    22

    Description comportementale:

  • Units de conception

    Description structurelle : comment elle le fait

    dcrit la structure de la fonction ralise

    dcrit un schma, des connexions entre composants

    23

  • Units de conception

    24

    Description structurelle:

  • Units de conception

    Dclaration et instanciation dun composant:

    25

  • Units de conception

    Exemple de description structurelle:

    26

  • Units de conception

    Description flot de donns: Data Flow Exprime le flot de donnes sortant par rapport au flot entrant

    27

  • La configuration permet, comme son nom l'indique, de configurer l'entit laquelle elle est associe.

    Pour qu'une description soit portable, c'est--dire synthtisable ou simulable sur des outils diffrents et pour des composants cibles diffrents, il est prfrable de n'avoir qu'une seule architecture par entit.

    Units de conception

    Configuration

    28

  • Units de conception Configuration Si l'entit A est utilise au sein de l'architecture arch_princ de l'entit princ, et si on

    a plusieurs architectures pour cette entit A. Lors de la synthse ou de la simulation de l'entit princ, il va tre ncessaire de spcifier quelles sont les architectures utiliser. Cette spcification peut tre faite grce l'utilisation d'une configuration.

    Configuration conf_princ of Princ is

    for arch_princ

    for U1 : A use entity work.A(arch_A2)

    end for;

    end for;

    end conf_princ; 29

  • Package: Dans le langage VHDL, il est possible de crer des package

    et package body dont les rles sont de permettre le

    regroupement de donnes, variables, fonctions, procdures,

    etc., que l'on souhaite pouvoir utiliser ou appeler partir

    d'architectures.

    Units de conception

    30

  • Units de conception

    Package: Dcrit une vue externe (boite noire)

    Regroupement de dclaration de type et/ou sous programme. Construction dune bibliothque. Possibilit de lexportation de lun de ces objets. Le contenu de la dclaration du paquetage est visible de lextrieur. Dclar avant lentit.

    Package Body:

    Dcrit une vue interne (comment de la boite noire)

    Contient lcriture proprement dites des fonctions et des procdures dclares au niveau du paquetage. Le corps du package nest pas toujours ncessaire.

    31

  • Units de conception

    32

    package PACK is

    -- dclarations de types, sous types, signaux, composants

    -- constantes, sous programmes (sans code)

    -- aucune variable

    end PACK;

    Package body PACK is

    -- dclarations identiques (sauf signaux)

    -- corps des SP de la partie dclarative

    end PACK;

    Package:

    Package Body:

  • use work.geometrie.pi;

    use work.geometrie.aire_cercle;

    ..........

    calc: process(h)

    variable aire, perim :real ;

    begin

    .....

    aire_cercle (rayon,aire);

    perim := 2*pi*rayon;

    .....

    end process calc;

    .......

    Units de conception Exemple:

    33

  • 1. Introduction Environnement de dveloppement intgr

    Les principaux fabricants de circuits logiques programmables proposent une version gratuite mais limit de leurs outils.

    diteur Produit Licence Synthtiseur Simulateur Remarques

    Xilinx ISE Webpack4 Propritaire, gratuite,

    illimit Oui Oui Simulateur ModelSim XE Starter gratuit

    Altera Quartus II Web

    Edition5

    Propritaire, gratuite, 6

    mois renouvelable Oui Oui Simulateur ModelSim Altera Edition gratuit

    Lattice ispLever starter6 Propritaire, gratuite, 6

    mois renouvelable Oui Non

    Actel Libero7 Propritaire, gratuite, 1

    an renouvelable Oui Oui

    Synthtiseur : Synplify Actel Edition (gratuit),

    Simulateur ModelSim Actel Edition gratuit

    Simulateurs uniquement

    Aldec Active-HDL

    Student Edition8

    Propritaire, gratuite, 1

    an Tiers partie Oui

    Mentor

    Graphics

    ModelSim PE

    Student Edition9 Propritaire, gratuite Non Oui

    http://fr.wikipedia.org/wiki/Xilinxhttp://fr.wikipedia.org/wiki/VHDLhttp://fr.wikipedia.org/wiki/Alterahttp://fr.wikipedia.org/wiki/VHDLhttp://fr.wikipedia.org/wiki/Latticehttp://fr.wikipedia.org/wiki/VHDLhttp://fr.wikipedia.org/wiki/Actelhttp://fr.wikipedia.org/wiki/VHDLhttp://fr.wikipedia.org/w/index.php?title=Aldec&action=edit&redlink=1http://fr.wikipedia.org/wiki/VHDLhttp://fr.wikipedia.org/w/index.php?title=Mentor_Graphics&action=edit&redlink=1http://fr.wikipedia.org/w/index.php?title=Mentor_Graphics&action=edit&redlink=1http://fr.wikipedia.org/wiki/VHDL

  • 2. Elments de base

    . Entity/Architecture : Brique de base de complexit trs variable

    Fonctionnement interne

    Interface externe

    . Configuration : Possibilit dassocier plusieurs architectures une seule entit Une architecture ddie la simulation et une pour la synthse

    . Package : - Pour une conception modulaire et hirarchique

    - Les entits/architectures rutiliser sont places dans des packages

    . Library : - Possibilit dutiliser le concept de bibliothques

    - Bibliothque work : bibliothque de travail

    - Les bibliothques work et std sont implicites

  • 2. lments de base : Entit et Architecture

    Bloc A In 1 Out 1

    In 2

    In 3 Out 2

    Vue externe : Dfinition de l'entit

    Bloc B

    Bloc D Bloc E

    Bloc A

    Out 1

    Out 2

    In 1

    In 2

    In 3

    Bloc C

    Vue interne : Dfinition de l'architecture

  • 2.1 Entit (Entity)

    . Port : . Signal d interface entre lentit et lextrieur . Chaque port est associ un nom, un mode et un type . Ordre de la dclaration des diffrents signaux : aucune importance . Ordre conserv lors dune utilisation un plus haut niveau de cette entit - Instanciation d'un composant (component)

  • 2.1 Entit (Entity)

    . Mode : . Dfinition du sens du signal . VHDL interdit lassociation de deux ports de mode contre nature . 4 modes sont dfinis - in : Signal dentre monodirectionnel - out : Signal de sortie monodirectionnel - inout : Signal dentre/sortie bidirectionnel - buffer : Signal de sortie/entre monodirectionnel

    . Utile lorsquil y a rebouclage (sortie considre comme une

    entre)

    . Peu utilis (remplac par une sortie associe un signal

    interne)

  • 2.1 Entit (Entity)

    . Mode : 4 modes de ports . Out

    Erreur

    Mmoire

    Donnes

    . Inout

    R/W

    Adresse

    CS

    . In

    Busy

    . Buffer

  • 2.1 Entit (Entity)

    . Dclaration :

    ENTITY nom_entite IS

    GENERIC (parametres_generiques : type := valeur_par_defaut);

    PORT ( entrees : IN type_entrees;

    sorties : OUT type_sorties;

    entreessorties : INOUT type_entreessorties;

    entreessorties_buffer : BUFFER type_entreessorties_buffer);

    END nom_entite;

  • ENTITY adder_pip IS

    PORT( clk : IN bit;

    a,b : IN bit_vector(7 DOWNTO 0);

    cin : IN bit;

    s : OUT bit_vector(7 DOWNTO 0);

    cout : OUT bit);

    END adder_pip;

    2.1 Entit (Entity)

    . Exemple :

  • 2.2. Architecture . Spcification de la fonctionnalit. . Plusieurs architectures peuvent tre dfinies pour le mme modle. . Dclaration

    ARCHITECTURE nomdelarchitecture OF nomdelentit IS dclarations de procdures, de types, de constantes, de composants, de signaux. BEGIN dfiniton de processus et/ou d'instances de composants, ... END nomdelarchitecture;

  • ARCHITECTURE comportementale OF adder_pip IS

    BEGIN

    PROCESS(clk)

    VARIABLE carry : bit;

    VARIABLE sum : bit_vector (7 DOWNTO 0);

    BEGIN

    IF (CLK = '1') THEN

    carry := cin;

    FOR i IN 0 TO a'length-1 LOOP

    sum(i) := a(i) XOR b(i) XOR carry;

    carry := (a(i) AND b(i)) OR (a(i) AND carry) OR (b(i) AND carry);

    END LOOP;

    cout

  • 2.2. Architecture

    . 3 Types de description : . Description comportementale - Description purement fonctionnelle du circuit

    - Portabilit, lisibilit, maintenance, volutivit

    - Description flot de donnes pour traduire une table de vrit

  • Description structurelle La description structurelle d'un circuit complexe en vhdl prsente de nombreux avantages :

    Une architecture hirarchique comprhensible : il est plus simple de sparer un circuit en un ensemble de blocs plus petits, ayant des fonctions bien identifies. Ces blocs pourront alors tre dcrits sous forme comportementale, ou bien leur tour tre spars en blocs encore plus simples. Une synthse logique efficace : la synthse est un processus lent (en terme de temps de calcul). Plus un bloc est gros et complexe, plus sa synthse prendra du temps. Il vaut donc mieux travailler sur des blocs plus petits, plus simples synthtiser, et rassembler le tout la fin.

    2.2. Architecture

  • Description mixte - Au sein dune mme architecture, il est possible d utiliser des

    modules dcrits de manire comportementale ou structurelle

    2.2. Architecture

  • ARCHITECTURE bas_niveau OF adder IS BEGIN S(0)
  • 2.2.1 Architecture : Description comportementale

    . Exemple : Description comportementale d'une bascule D sur niveaux

    HorlogeD

    Q

    Q

    H D Q

    0

    1

    0

    1

    X X Q-1

  • LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_arith.all; ENTITY basculed IS PORT ( d,clk : IN bit; q: OUT bit); END basculed; ARCHITECTURE comportementale OF basculed IS BEGIN PROCESS(clk) BEGIN IF (clk='1') THEN q
  • 2.2.2 Architecture : Description structurelle . Traduction d'une reprsentation schmatique

    ARCHITECTURE structurelle OF adder IS COMPONENT xor2 port(e1,e2 : in bit;s : out bit); end COMPONENT COMPONENT and2 port(e1,e2 : in bit;s : out bit); end COMPONENT SIGNAL inter1,inter2 :bit; BEGIN

    u1 : xor2 PORT MAP (e1=>A(0),e2=>B(0),s=>S(0));

    u2 : xor2 PORT MAP (e1=>A(1),e2=>B(1),s=>inter1);

    u3 : and2 PORT MAP (e1=>A(0),e2=>B(0),s=>inter2);

    u4 : xor2 PORT MAP (e1=>inter1,e2=>inter2,s=>S(1)); end structurelle;

    VHDL A(0) B(0)

    A(1) B(1)

    A(0) B(0)

    S(1)

    S(0)

  • 2.2.3 Architecture : Description mixte . Au sein d'une mme architecture, il est possible d'utiliser du comportemental et du structurel

    ENTITY integration IS PORT( a : IN bit_vector(0 to 1); reset,clk : IN bit; s : OUT bit_vector(0 to 1)); END integration ARCHITECTURE mixte OF integration IS SIGNAL b,s_inter :bit_vector(0 to 1); COMPONENT adder PORT(a,b : IN bit_vector(0 to 1); s : OUT bit_vector(0 to 1)); END COMPONENT; BEGIN PROCESS(clk) IF rising_edge(clk) THEN IF reset = 1 THEN b

  • 3. Types

    . Types : .VHDL interdit lassociation de 2 signaux de type diffrent . Types disponibles

    - Scalaires (Scalar)

    . Entiers (integer)

    . Flottants (Real)

    . Enumrs (Enumerated)

    . Physiques (Physical)

    - Composs (Composite)

    . Tableaux (Array)

    - Collection dobjets de mme type

    . Enregistrements (Record)

    - Collection dobjets de type diffrent - Access et File . Types pour la manipulation de fichiers ou sur les pointeurs

  • . Sous-types : . Association entre 2 types diffrents est interdite . But : Faire face cette interdiction . Restrictions :

    . 2 sous-types prdfinis

    . Association dun sous-type au type partir duquel il a t dfini : autoris . Association entre 2 sous-types diffrents issus du mme type : autoris

    3. Types

    SUBTYPE chiffre IS integer RANGE 0 TO 9;

    SUBTYPE octet IS bit_vector(0 TO 7);

    SUBTYPE natural IS integer RANGE 0 TO higher_integer;

    SUBTYPE positive IS integer RANGE 1 TO higher_integer;

  • 3. Types . Sous-types : Exemples

    ARCHITECTURE subtype_test OF test IS SUBTYPE data IS bit_vector(31 DOWNTO 0); SUBTYPE operand IS data; TYPE x_int IS RANGE 1 to 50; TYPE y_int IS RANGE 1 to 30; SUBTYPE z_int IS x_int RANGE 1 TO 30; SUBTYPE a_int IS x_int RANGE 3 TO 32; SUBTYPE b_int IS z_int RANGE 5 TO 20; SIGNAL x : x_int := 1; SIGNAL y : y_int := 2; SIGNAL z : z_int := 3; SIGNAL a : a_int := 4; SIGNAL b : b_int := 5; BEGIN z 30 a

  • 3.1 Types : Scalaires . Types entiers : -231 + 1 entier 231 - 1

    Notations de valeurs 147 -154 2#01010111# (binaire) 16#3FFF# hxadcimal

    . Types flottants : Approximation discrte de l'ensemble des rels dans un intervalle donn -1E38 Flottant 1E38

    TYPE chiffre_ascendant IS RANGE 0 TO 9;

    TYPE chiffre_descendant IS RANGE 9 DOWNTO 0;

    TYPE tension IS RANGE 0 TO 5;

  • 3.1 Types : Scalaires

    . Types numrs :

    Ensemble de valeurs dsignes par des identificateurs ou des caractres

    TYPE boolean IS (false, true);

    TYPE bit IS ('0','1');

    TYPE std_logic IS ('U', Z', X', O', 1' W', L', H' , -');

    TYPE jour IS (lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche);

    Remarques :

    . Chaque caractre ou chane de caractres au sein d'un mme type

    doit tre distinct

    . Possibilit d'utiliser le mme caractre dans 2 types distincts

  • 3.1 Types : Scalaires

    . Types physiques :

    Valeurs numriques de quantits physiques

    TYPE resistance IS RANGE 0 TO 1E8;

    UNITS

    ohms

    kohms = 1000 ohms;

    Mohms = 1E6 ohms;

    END UNITS;

  • 3.2 Types : Composs .

    Types tableaux

    Bornes fixes la dfinition du type

    TYPE octet IS ARRAY (7 DOWNTO 0) OF bit;

    TYPE memoire IS ARRAY (0 TO 255) OF octet;

    Bornes fixes chaque dclaration d'un objet de type tableau

    TYPE vecteur IS ARRAY (integer RANGE ) OF real;

    - dclaration : vecteur(1 TO 20)

    L'indice peut-tre un type entier dfini par dclaration

    TYPE adresse IS RANGE 0 TO 255;

    TYPE memoire IS ARRAY (adresse) OF octet;

    Tableaux prdfinis

    TYPE std_logic_vector IS ARRAY (natural RANGE ) OF std_logic;

    TYPE string IS ARRAY (positive RANGE ) OF character;

  • 3.2 Types : Composs

    . Types enregistrements . Ensemble d'lments nomms avec des types pouvant tre diffrents

    TYPE instruction IS

    RECORD

    code_operatoire : operation;

    addresse : octet;

    operande1, operande2 : integer RANGE 0 TO 15;

    END RECORD;

    . Accs un champ particulier instruction.code_operatoire := soustraction;

  • .

    3.3 Types : Classes

    Types et sous-types :

    . 3 classes

    - Types prdfinis

    . Standard VHDL initial IEEE.1076

    - Types complmentaires

    . Standard VHDL initial IEEE.1164

    - Types dfinis par lutilisateur

  • 3.3 Types : Classe - les Prdfinis

    Time

    Prdfinis

    Integer bit Boolean Real

    Natural Positive Bit-vector

    Remarque : Synthse logique - time : non - real : non - integer : Favoriser les entiers borns

  • 3.3 Types : Classe - les complmentaires

    . Standard IEEE 1164 - les signaux multivaleurs (package std_logic_1164) - std_ulogic et std_ulogic_vector . Std_ulogic se caractrise par 9 valeurs - U : non initialis - X : niveau inconnu (conflit fort) - 0 : niveau bas - 1 : niveau haut - Z : haute impdance - W : niveau inconnu (conflit faible) - L : niveau bas - H : niveau haut - - : niveau quelconque

    . Std_logic : SUBTYPE std_logic IS RESOLVED std_ulogic; - VHDL interdit la connexion d'une entre plusieurs sorties Possibilit d'interconnecter plusieurs sorties ensemble . IEEE 1076.3 - la synthse logique et les traitements arithmtiques - signed et unsigned

  • 3.3 Types : Classe - les dfinis par l'utilisateur

    . Types dfinis une application dun type ou dun sous-type

    TYPE memoire IS ARRAY (integer ) OF octet;

    VARIABLE ma_memoire : memoire (15 DOWNTO 0);

    SUBTYPE octet IS std_logic_vector (0 TO 7);

    adresse : IN octet;

    . Types dfinis une application dun sous-type

  • 4. Objets : Constantes, Variables, Signaux

    . Utilisation des constantes et des variables : proche des langages traditionnels . Utilisation des signaux : spcification au langage de description du matriel . Constantes (Constant) . Objets internes valeurs fixes et dfinitives . Synthse : Mise VCC ou au GND Surface nulle . Dclaration : constant nom : type := valeur; . Exemple : .

    CONSTANT pi : real:=3.141592 ;

  • Variables (Variable)

    . Objets permettant de conserver une valeur pendant un certain temps

    . Utilisable qu'au sein d'un processus (dfinition dans le process)

    . Peu utilis en synthse logique

    . Exemple:

    4. Objets : Constantes, Variables, Signaux

    VARIABLE octet1 : std_logic_vector(0 TO 7) := "00000001";

  • 4. Objets : Constantes, Variables, Signaux

    . Signaux (signal)

    . Utilisation en mode concurrent et squentiel

    . Dclaration dans une "zone" concurrente

    . Signaux internes, temporaires

    . Synthse (reprsentation matrielle : un fil ou une mmoire)

    . Absence de mode

    . Synthse d'une VARIABLE Synthse d'un SIGNAL

    . Une valeur courante et une valeur future

  • 4. Objets : Constantes, Variables, Signaux

    . Signaux (signal) . Synthse d'une VARIABLE Synthse d'un SIGNAL ARCHITECTURE ex_sig OF exemple IS BEGIN PROCESS(a,b,c) VARIABLE tmp : bit; BEGIN

    tmp := a and b; y

  • 5. Attributs

    . Informations supplmentaires sur les types et objets . Utilisation : toto'att avec toto un objet ou un type et att un attribut . Attributs d'un scalaire T'left -> Limite gauche de T

    T'right -> Limite droite de T

    T'low -> Limite basse de T

    T'high -> Limite haute de T . Attributs d'un ensemble discret T'pos(X) -> Numro de la position de X dans T T'val(N) -> Valeur la position N dans T T'leftof(X) -> Valeur une position gauche de X dans T T'rightof(X) -> Valeur une position droite de X dans T T'pred(X) -> Valeur une position au dessous de X dans T T'succ(X) -> Valeur une position au dessus de X dans T

  • 5. Attributs

    . Exemples - Attributs d'un scalaire Type adr is integer range 7 downto 0; adr left = 7 adr right = 0 adr low = 0 adr high = 7 . Exemples - Attributs d'un ensemble discret

    Type MVL4 is ( U , 0 , 1 , Z );

    MVL4'pos( 1 ) = 2 MVL4'val(0) = U MVL4 rightof( 1 ) = Z MVL4 leftof( 1 ) = 0 MVL4 succ(2) = Z MVL4 prec(2) = 0

  • 5. Attributs

    . Attributs d'un tableau A'left(N) -> Limite gauche de l'intervalle des indices de la dim. N de A

    A'right(N) -> Limite droite de l'intervalle des indices de la dim. N de A

    A'low(N) -> Limite basse de l'intervalle des indices de la dim. N de A

    A'highof(N) -> Limite haute de l'intervalle des indices de la dim. N de A

    A'range(N) -> Intervalle des indices de la dim. N de A

    A'reverse_range(N) -> Intervalle inverse des indices de la dim. N de A

    A'length(N) -> Longueur de l'intervalle des indices de la dim. N de A

  • exemples : type MOT is bit_vector(7 downto 0); type TAB is array (4 downto 0) of MOT; signal NOM : MOT; signal TABLEAU : TAB; MOT'LEFT renvoie 7; MOT'LENGTH renvoie 8; TABLEAU'RIGHT renvoie 0; TABLEAU'RANGE renvoie 4 downto 0;

    5. Attributs

    . Attributs d'un signal S'stable(t)-> Renvoie une valeur boolenne true si S est constant depuis

    au moins t S'event -> Renvoie une valeur boolenne true si S changer depuis

    le dernier cycle de simulation

  • 5. Attributs

    . Exemples : Attributs d'un tableau type word is bit_vector(31 downto 0);

    type memory is array(7 downto 0) of word;

    variable mem:memory; mem'left = 7

    mem'left(3) = 31

    mem'right = 0

    mem'low = 0

    mem'high = 7

    mem high(5) = 31

    mem'range = 7 downto 0

    mem range(3) = 31 downto 0

    mem'reverse_range = 0 to 7

    mem'length = 8 memlength(3) = 32

  • 6. Excution parallle et squentielle

    . Excution parallle . Excution par dfaut . Les instructions au sein d'une architecture sont excutes en parallle ou de manire concurrente . Excution concurrente = Excution combinatoire . Chaque opration dans une architecture est excute chaque instant

    . Excution squentielle . Ncessit d'utiliser un PROCESS . Le process est excut chaque fois qu'un signal dclar dans sa liste de sensibilit change de valeur. . Les instructions sont excutes squentiellement . Les modifications des signaux (signal) sont effectives la fin du process

    . particularit du VHDL : Excution parallle ou squentielle

  • 6. Excution parallle et squentielle

    . Excution mixte . Possibilit d'associer dans une mme architecture des modules excution parallle et squentielle . Exemple : Comparateur synchrone une horloge clk

    LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY comp_synch IS PORT ( a, b, clk, reset : IN std_logic; qs : OUT std_logic); END comp_synch; ARCHITECTURE archi_mixte OF comp_synch IS SIGNAL q : std_logic; BEGIN q

  • 7. Instructions

    . Deux types d'excution : Deux familles d'instructions

    . Instructions rserves au mode d'excution parallle ou concurrente - Toutes les oprations sont excutes simultanment

    - L'ordre d'criture n'a aucune importance

    I1 I2 I3 I1

    I2

    I3 . Instructions rserves au mode d'excution squentielle - Chaque opration est effectue l'une aprs l'autre

    - L'ordre d'criture a une grande importance

  • 7.1 Instructions de type parallle

    . Assignation conditionnelle signal

  • 7.1 Instructions de type parallle

    . Assignation slective WITH slecteur SELECT signal

  • 7.1 Instructions de type parallle

    . Assignation d'un composant label : nom_du_composant PORT MAP (association des ports)

    ARCHITECTURE arch_full OF full_adder IS SIGNAL inter : bit; COMPONENT half_adder PORT (a,b,cin : IN bit; cout,s : OUT bit); END COMPONENT; BEGIN u1 : half_adder PORT MAP (a=>a(0),b=>b(0),cin=>cin,cout=>inter,s=>s(0)); u2 : half_adder PORT MAP (a(1),b(1),inter,cout,s(1)); END arch_full;

    . Instruction GENERATE label : FOR variable_boucle IN val_iniale TO val_finale GENERATE {instructions parallles} END GENERATE label

  • Said najah___________________________________________________

    LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY quisuisje IS GENERIC(N : integer := 4); PORT( a,b : IN std_logic_vector(N DOWNTO 1); cin : IN std_logic; s : OUT std_logic_vector(N DOWNTO 1); cout : OUT std_logic); END quisuisje ARCHITECTURE structurel OF quisuisje IS COMPONENT ADDER PORT(a,b,cin : IN std_logic;s,cout : OUT std_logic); END COMPONENT SIGNAL carry : std_logic_vector(N-1 DOWNTO 1); BEGIN gene : FOR i IN 1 TO N GENERATE ls_bit : IF i=1 GENERATE ls_cell : adder PORT MAP(a(1),b(1),cin,s(1), carry(1)); END GENERATE ls_bit; middle_bit : IF (i>1 and i

  • . Instruction PROCESS - Toutes les instructions comprises dans le PROCESS sont excutes squentiellement - Instruction concurrente : possibilit d'en utiliser plusieurs - Tous les PROCESS sont excuts en parallle - Activation d'un PROCESS : 2 possibilits

    [label] : PROCESS(liste_signaux) -- Partie dclarative du process BEGIN -- Corps du process END PROCESS [label]

    [label] : PROCESS -- Partie dclarative du process BEGIN WAIT UNTIL (liste_signaux) -- Corps du process END PROCESS [label]

    7.2. Instructions de type squentiel

  • . Instruction PROCESS : Attribut event

    . But : Savoir si le signal auquel il est associ a t modifi

    . Trs utile dans un PROCESS dclenchable par plusieurs signaux distincts

    . Exemples :

    . Standard IEEE 1164 : Dfinition de deux fonctions rising_edge(CLK) et falling_edge(CLK)

    IF CLK'event THEN excution; END IF;

    - Excution si CLK passe 0 ou 1

    IF CLK'event AND CLK='1' THEN excution; END IF;

    - Dclenchement sur front montant

    7.2. Instructions de type squentiel

  • Exemple :

    Dans l'exemple suivant, a,b,c sont des signaux et x une variable.

    Enfin de processus, a et b vont prendre la valeur a+1 aprs un delta-

    cycle

    alors que c prendre la valeur a aprs un delta-cycle. process (a) variable x : std_logic; begin x := a+1; a

  • 7.2. Instructions de type squentiel

    . Ces instructions sont uniquement utilises dans un Process . Assignation inconditionnelle de variables et de signaux Mme traitement que pour le mode parallle

    . Instruction IF IF expresssion_booleenne THEN instructions_sequentielles END IF;

    IF up_down = 1 THEN s

  • 7.2. Instructions de type squentiel

    . Instruction CASE CASE expresssion is {WHEN valeur_expression => instructions_sequentielles}; {WHEN OTHERS => instructions_sequentielles}; END CASE;

    CASE selection IS WHEN '0' => s s NULL; END CASE;

    . Instruction LOOP instruction_pour_iteration LOOP instructions_sequentielles END LOOP;

    VARIABLE indice,resultat : INTEGER := 0; Boucle1 : WHILE indice < 10 LOOP indice := indice + 1; resultat := resultat + adresse(indice); END LOOP boucle1;

    VARIABLE indice,resultat : INTEGER; Boucle2 : FOR indice IN 0 TO 9 LOOP resultat := resultat + adresse(indice); END LOOP boucle2;

  • 7.2. Instructions de type squentiel

    . Instruction NEXT NEXT label_boucle WHEN condition

    VARIABLE indice, resultat : integer := 0; Boucle1 : WHILE indice < 10 LOOP indice := indice + 1; NEXT Boucle1 WHEN indice = 5; resultat := resultat + adresse(indice); END LOOP boucle1;

    VARIABLE indice, resultat : integer; Boucle2 : FOR indice IN 0 TO 9 LOOP NEXT Boucle2 WHEN indice = 5; resultat := resultat + adresse(indice); END LOOP boucle2;

    . Instruction EXIT EXIT label_boucle WHEN condition

    VARIABLE indice,resultat : integer := 0; Boucle1 : WHILE indice < 10 loop indice := indice1 + 1; EXIT Boucle1 WHEN indice = 5; resultat := resultat + adresse(indice); END LOOP boucle1;

    VARIABLE indice,resultat : integer; Boucle2 : FOR indice IN 0 to 9 LOOP EXIT Boucle2 WHEN indice = 5; resultat := resultat + adresse(indice); END LOOP boucle2;

  • 7.2. Instructions de type squentiel

    . Instruction NULL Instruction sans aucun effet

    CASE commande_moteur IS WHEN avant => marche_avant; WHEN arriere => marche_arriere; WHEN statuquo => NULL; END CASE;

    . Instruction ASSERT Vrification d'une condition spcifique Information d'une ventuelle violation de cette condition ASSERT condition REPORT message SEVERITY {note/warning/error/Failure}

    PROCESS(clk) BEGIN IF clk='1' THEN ASSERT d'STABLE(15 ns); REPORT "setup non respect" SEVERITY warning; END IF; END PROCESS;

  • 7.3. Instructions : Exemple

    . Multiplexeur 8 bits : 4 vers 1 1re phase : dfinition des entre/sorties (ENTITY)

    Multiplexeur 8 bits 4 vers 1 Sorties Entres

    Multiplexeur 8 bits 4 vers 1

    8 Entree1

    8 Entree4

    Sel1 Sel2

    8 Sortie

    8 Entree2

    8 Entree3

  • 7.3. Instructions : Exemple

    . Multiplexeur 8 bits : 4 vers 1 2me phase : dfinition du fonctionnement ou de la structure (ARCHITECTURE)

    - Solution 1 : Instruction IF

    - Solution 2 : Instruction CASE

  • 7.3. Instructions : Exemple

    . Multiplexeur 8 bits : 4 vers 1 - Solution 1 : Instruction IF

    LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY mux41 IS PORT(entree1,entree2,entree3,entree4: IN std_logic_vector(0 TO 7); sel: IN std_logic_vector(0 to 1); sortie : OUT std_logic_vector(7 DOWNTO 0)); END mux41; ARCHITECTURE comportementale OF mux41 IS BEGIN PROCESS(sel) BEGIN IF (sel="00") THEN sortie

  • 7.3. Instructions : Exemple . Multiplexeur 8 bits : 4 vers 1

    - Solution 2 : Instruction CASE

    LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY mux41 IS PORT(entree1,entree2,entree3,entree4: IN std_logic_vector(0 TO 7); sel: IN std_logic_vector(0 to 1); sortie : OUT std_logic_vector(7 DOWNTO 0)); END mux41; ARCHITECTURE comportementale OF mux41 IS BEGIN PROCESS(sel) BEGIN CASE sel IS WHEN "00" => sortie sortie sortie sortie

  • 8. Oprateurs standards

    . Remarque : Le VHDL est un langage dvelopp initialement pour la modlisation et la simulation, par consquent certains oprateurs sont dconseiller en synthse

    . Oprateurs logiques

    And Nand Or Nor Xor Xnor Not

    Et Non et

    Ou Non ou

    Ou exculsif Egal Non

    Signification Nom Type oprandes

    Boolean Bit ou Bit_vector

  • 8. Oprateurs standards

    . Oprateurs logiques

    g d

    f e

    c(0) a(0)

    b(0)

    c(0) a(0)

    b(0)

    . Exemple 2

    SIGNAL d, e, f, g : bit; g

  • 8. Oprateurs standards

    . Oprateurs relationnels

    = /= < >=

    Egal Non gal Infrieur

    Infrieur ou gal Suprieur

    Suprieur ou gal

    Signification Nom Type oprandes

    Entres : Tout scalaire Sortie : Boolean

    . Exemple

    SIGNAL a,b : bit_vector(1 DOWNTO 0); SIGNAL s : bit; IF a > b THEN s

  • 8. Oprateurs standards

    . Oprateurs de dcalages

    Sll Srl Rol Ror

    A gauche A droite

    Circulaire gauche Circulaire droit

    Signification Nom Type oprandes

    Bit_vector

    SIGNAL a,b : BIT_VECTOR(0 TO 3); ... b

  • 8. Oprateurs standards

    Oprateurs arithmtiques

    Autres oprateurs

    & Concatnation Signification Nom Type oprandes

    Bit, Bit_vector

    + - * /

    abs **

    Incrmentation de 1 ou addition Dcrmentaion de 1 ou soustraction

    Multiplication Division

    Valeur absolue Exponentiel

    Signification Nom Type oprandes

    Integer, Real rem Reste

    mod Modulo Integer

  • . Exemple : addition

    S = (A + B) + (C - 1) T = ((A + B) + C - 1)

    Synthse

    . Exemple : multiplication

    . Opration de multiplication "*" permet d'utiliser le type INTEGER . Diffrents rsultats de synthse - Contraintes

    - Nature des entres (puissance de 2)

    - Bibliothques de composants disponibles (Package standard de synthse)

    - 1

    A

    B

    C S

    8. Oprateurs standards

    - 1

    A

    B

    C T

  • . Oprateur de concatnation

    & Concatnation Signification Nom Type oprandes

    Bit, Bit_vector

    8. Oprateurs standards

    ARCHITETCURE ... SIGNAL A : BIT_VECTOR(2 DOWNTO 0 ); SIGNAL B : BIT; SIGNAL C : BIT_VECTOR(5 DOWNTO 0 ); BEGIN C

  • 9. Description hirarchique

    . Descriptions plus simples

    . Rapidit de simulation et donc rapidit de mise au point

    . Fiabilit accrue

    . Rutilisation de sous-ensembles

    . Concepts : COMPONENT, GENERIC, PACKAGE,

    PROCEDURE ET FONCTION

    LIBRARY, CONFIGURATION

    . Amlioration de la modularit

    . Utilisation d'un objet dcrit l'extrieur de la description utilisatrice - 2 fichiers VHDL distincts . Compilation distincte : - le composant - l'entit utilisatrice de ce composant . Entit compile : Stockage dans la bibliothque WORK

  • 9.1 Description hirarchique : Component

    . Description structurelle

    . Utilisation de composants

    2 phases : - Dclaration

    - Instanciation

    Adder1.vhd

    ENTITY full_adder IS PORT( a,b : IN bit_vector(1 DOWNTO 0); cin : IN bit; cout : OUT bit; s : out bit_vector(1 DOWNTO 0)); END full_adder ARCHITECTURE arch_full OF full_adder IS SIGNAL inter : bit; COMPONENT half_adder PORT (a,b,cin : IN bit; cout,s : OUT bit); END COMPONENT; BEGIN u1:half_adder PORT MAP (a(0),b(0),cin,inter,s(0)); u2:half_adder PORT MAP (a(1),b(1),inter,s(1)); END arch_full;

    Adder2.vhd

    ENTITY full_adder IS PORT( a,b : IN bit_vector(1 DOWNTO 0); cin : IN bit; cout : OUT bit; s : out bit_vector(1 DOWNTO 0)); END full_adder ARCHITECTURE arch_full OF full_adder IS SIGNAL inter : bit; COMPONENT half_adder PORT (a,b,cin : IN bit; cout,s : OUT bit); END COMPONENT; BEGIN u1:half_adder PORT MAP (a(0),b(0),cin,inter,s(0)); u2:half_adder PORT MAP (a(1),b(1),inter,s(1)); END arch_full;

    ENTITY half_adder IS PORT( a,b,cin : IN bit; cout,s : OUT bit); END half_adder ARCHITECTURE arch_half OF half_adder IS BEGIN s

  • 9.2 Description hirarchique : Generic

    . Possibilit d'utiliser un mme objet plusieurs fois avec des tailles diffrentes

    . Paramtres dfinir lors de l'instanciation

    . Possibilit d'instancier des entits/architectures fonctionnellement identiques mais de taille diffrente

    . Dclaration d'un additionneur

    ENTITY adder is

    GENERIC (largeur : integer :=8); -- valeur par dfaut

    PORT( a,b: IN signed_vector(largeur-1 DOWNTO 0);

    s : OUT signed_vector(largeur DOWNTO 0);

    END adder;

    ARCHITECTURE arch_adder OF adder IS BEGIN s

  • 9.3 Description hirarchique : Package

    . Regroupement d'objets divers : - types - sous-types - constantes - sous-programmes - composants,

    . Accessibilit ou visibilit : le package se nomme mon_package et a t compil et stock dans la bibliothque librairie1

    . Possibilit d'utiliser plusieurs packages dans une mme description

    . Les standards IEEE 1164 et IEEE 1076.3 sont accessibles via des packages

    LIBRARY librairie1

    USE librairie1.mon_package.all

  • File Package Library Contents: maxplus2.vhd maxplus2 altera MAX+PLUS II primitives, macrofunctions, and selected megafunctions supported by VHDL. megacore.vhd megacore altera Pre-tested megafunctions consisting of several different design files. std1164.vhd std_logic_1164 ieee Standard for describing interconnection data types for std1164b.vhd VHDL modeling, and the STD_LOGIC and STD_LOGIC _VECTOR types. lpm_pack.vhd lpm_components lpm LPM megafunctions supported by VHDL. arith.vhd std_logic_arith ieee SIGNED and UNSIGNED types, arithmetic and arithb.vhd comparison functions for use with SIGNED and UNSIGNED types, and the conversion functions CONV_INTEGER, CONV_SIGNED, and CONV_UNSIGNED. signed.vhd std_logic_signed ieee Functions that allow MAX+PLUS II to use STD_LOGIC signedb.vhd _VECTOR types as if they are SIGNED types types as if they are SIGNED types. unsigned.vhd std_logic_unsigned ieee Functions that allow MAX+PLUS II to use unsignedb.vhd STD_LOGIC_VECTOR types as if they are UNSIGNED types.0

    9.3 Description hirarchique : Package

  • 9.3 Description hirarchique : Package

    . 2 parties : . Partie dclarative (spcification) - Dclarations des lments visibles l'utilisateur du package . Corps du package (implantation) - Chaque lment dfini dans la partie dclarative est visible du corps

    PACKAGE data_types IS SUBTYPES address is bit_vector(24 DOWNTO 0); SUBTYPES data is bit_vector(15 DOWNTO 0); CONSTANT vector_table_loc : address; FUNCTION data_to_int(value : data) RETURN integer; FUNCTION int_to_data(velue:integer) RETURN data; END data_types; PACKAGE BODY data_types is CONSTANT vector_table_loc : address := X"FFFF00"; FUNCTION data_to_int(value : data) RETURN integer IS; --body of data_to_int END data_to_int; FUNCTION int_to_data(velue:integer) RETURN data IS; --body of int_to_data END int_to_data; end data_types;