Introduction à la Synthèse logique V.H.D.L. · modèle choisit) le projet en portes logiques et...

Click here to load reader

  • date post

    16-Sep-2018
  • Category

    Documents

  • view

    236
  • download

    0

Embed Size (px)

Transcript of Introduction à la Synthèse logique V.H.D.L. · modèle choisit) le projet en portes logiques et...

  • Introduction la Synthse logique

    V.H.D.L.

    Lyce Julliot de la Morandire GRANVILLE 2001Philippe LECARDONNEL & Philippe LETENNEUR

  • SOMMAIRE

    I) INTRODUCTION. .................................................................................................... 2

    II) RELATION ENTRE UNE DESCRIPTION VHDL ET LES CIRCUITS LOGIQUESPROGRAMMABLES. ................................................................................................. 3

    II.1) SCHMA FONCTIONNEL DIMPLANTATION DE DESCRIPTIONS VHDL DANS UN CIRCUIT LOGIQUEPROGRAMMABLE. ................................................................................................................................... 3II.2) LAFFECTATION DES BROCHES DENTRES SORTIES. ........................................................................ 3II.3) ORGANISATION FONCTIONNELLE DE DVELOPPEMENT DUN PLD. ..................................................... 4

    III) STRUCTURE DUNE DESCRIPTION VHDL SIMPLE. ......................................... 5III.1) DCLARATION DES BIBLIOTHQUES. ............................................................................................... 6III.2) DCLARATION DE LENTIT ET DES ENTRES / SORTIES (I/O)............................................................ 6

    III.2.1) Le NOM_DU_SIGNAL. ............................................................................................................ 7III.2.2) Le SENS du signal. ................................................................................................................ 7III.2.3) Le TYPE................................................................................................................................7III.2.4) Affectation des numros de broches en utilisant des attributs supplmentaires: ................. 8III.2.5) Exemples de description dentits:........................................................................................ 9

    III.3) DCLARATION DE LARCHITECTURE CORRESPONDANTE LENTIT :DESCRIPTION DU FONCTIONNEMENT....................................................................................................... 10

    IV) LES INSTRUCTIONS DE BASE (MODE CONCURRENT ), LOGIQUECOMBINATOIRE...................................................................................................... 12

    IV.1) LES OPRATEURS. ....................................................................................................................... 13IV.1.1) Laffectation simple :

  • Introduction la Synthse logique - VHDL

    S.T.S. GRANVILLE P.L.s page 2

    I) Introduction.

    Pourquoi avoir cr un langage de description de structures lectroniques (H.D.L.Hardware Description language) VHDL ?

    Labrviation VHDL signifie VHSIC Hardware Description Language (VHSIC : VeryHigh Speed Integrated Circuit). Ce langage a t crit dans les annes 70 pour raliser lasimulation de circuits lectroniques. On la ensuite tendu en lui rajoutant des extensionspour permettre la conception (synthse) de circuits logiques programmables (P.L.D. Pro-grammable Logic Device).

    Auparavant pour dcrire le fonctionnement dun circuit lectronique programmableles techniciens et les ingnieurs utilisaient des langages de bas niveau (ABEL, PALASM,ORCAD/PLD,..) ou plus simplement un outil de saisie de schmas.

    Actuellement la densit de fonctions logiques (portes et bascules) intgre dans lesPLDs est telle (plusieurs milliers de portes voire millions de portes) quil nest plus possibledutiliser les outils dhier pour dvelopper les circuits daujourdhui.

    Les socits de dveloppement et les ingnieurs ont voulu saffranchir des contrain-tes technologiques des circuits. Ils ont donc cr des langages dits de haut niveau savoirVHDL et VERILOG. Ces deux langages font abstraction des contraintes technologies descircuits PLDs.

    Ils permettent au code crit dtre portable, cest dire quune description crite pourun circuit peut tre facilement utilise pour un autre circuit.

    Il faut avoir lesprit que ces langages dits de haut niveau permettent de matrialiserles structures lectroniques dun circuit.

    En effet les instructions crites dans ces langages se traduisent par une configura-tion logique de portes et de bascules qui est intgre lintrieur des circuits PLDs. Cestpour cela que je prfre parler de description VHDL ou VERILOG que de langage.

    Dans ce polycopi, je mintresserai seulement VHDL et aux fonctionnalits debase de celui-ci lors des phases de conception ou synthse (cest dire la conception dePLDs).

  • Introduction la Synthse logique - VHDL

    S.T.S. GRANVILLE P.L.s page 3

    II) Relation entre une description VHDL et les circuits logiques program-mables.

    Dcrire le fonctionnement dun circuit logique programmable cest bien, mais com-ment faire le lien avec la structure de celui-ci ?

    Limplantation dune ou de plusieurs descriptions VHDL dans un PLD va dpendrede laffectation que lon fera des broches dentres / sorties et des structures de base ducircuit logique programmable.

    II.1) Schma fonctionnel dimplantation de descriptions VHDL dans un circuit logiqueprogrammable.

    BLOCVHDL N1

    BLOCVHDL N5Synchro

    BLOCVHDL N2

    BLOCVHDL N3

    BLOCVHDL N4

    E1

    E2

    E3

    E4 (CLK)

    S1

    S2

    S3

    S4

    Ci-dessus le schma reprsente un exemple dimplantation de descriptions VHDL oude blocs fonctionnels implants dans un PLD. Lors de la phase de synthse chaque blocsera matrialis par des portes et/ou des bascules. La phase suivante sera dimplanter lesportes et les bascules lintrieur du circuit logique.

    Cette tche sera ralise par le logiciel placement/routage ( Fitter ), au cours delaquelle les entres et sorties seront affectes des numros de broches.

    On peut remarquer sur le schma la fonction particulire du bloc VHDL N5. En effetdans la description fonctionnelle dun PLD on a souvent besoin dune fonction qui sert cadencer le fonctionnement de lensemble, celle-ci est trs souvent ralise par une ma-chine dtats synchronise par une horloge.

    II.2) Laffectation des broches dentres sorties.Elle peut se faire de plusieurs manires :1) Laffectation automatique.On laisse le synthtiseur et le Fitter du fabriquant ( Fondeur : Xilinx, Lattice, Al-tra, Cypress...) du circuit implanter la structure correspondant la descriptionVHDL. Les numros de broches seront choisis de faon automatique.

    2) Laffectation manuelle.On dfinit les numros de broches dans la description VHDL ou sur un schma blocdfinissant les liaisons entre les diffrents blocs VHDL ou dans un fichier texte pro-pre au fondeur. Les numros de broches seront affects suivant les consignes don-nes. (voir page N 8).

  • Introduction la Synthse logique - VHDL

    Entre schmatique

    Vde

    VHDL

    Il convecible (Cmodleportes bases. De plusdes conpar exefonctio

    Pd

    SYNTHETISEURS CONNUS:

    - FPGA Expres (Synosys). - EXEMPLAR (Exemplar). - SYNPLICITY (Synplicity).

    Outils de placement et routage interne au circuit. Cet outil est propre chaque fabriquant

    La programmation du circuit peut se faire soit: - En utilisant un programmateur. - En tlchargement le code JEDEC directement sur lobjet technique (JTAG ou ISP)

    II.3) Organisation fonctionnelle de dveloppement dun PLD.

    VERT1

    U32

    INV

    1 2

    Q3

    U38

    AND4

    1

    2

    3

    4

    5

    U26

    NAND2

    1

    23

    67

    Q0A

    U20

    NAND3

    1

    2

    3

    4

    76

    D

    U19

    INV

    1 2

    3

    U17

    OB11

    1 2

    77

    U35

    OB11

    1 2

    U24

    OB11

    1 2

    U10

    IB11

    1 2

    5

    U29

    INV

    1 2

    Q1

    D

    ORANGE2

    COMPTEUR

    COMPTEURP

    CLK

    Q0

    Q1

    Q2

    Q3

    C

    U23

    OB11

    1 2

    C

    78

    U22

    NAND2

    1

    23

    12

    6

    D

    U25

    NAND2

    1

    23

    ORANGE1

    D

    U30

    OB11

    1 2

    B

    A

    B

    U18

    OB11

    1 2

    C

    A

    U27

    NAND2

    1

    23

    13

    U36

    OB11

    1 2

    U15

    OB11

    1 2

    B

    U28

    INV

    1 2

    U16

    OB11

    1 2

    ROUGE2

    C

    B

    VERT211

    D

    4

    ROUGE1

    U31

    OB11

    1 2

    Q2

    U21

    NAND2

    1

    23

    B

    U37

    AND4

    1

    2

    3

    4

    5

    CLK

    C

    START='1'

    START='0'RESET='1'

    END_CYCLE OPEN_GATE

    IDLE

    GATE

  • Introduction la Synthse logique - VHDL

    S.T.S. GRANVILLE

    III) Structure dune description VHDL simple.Une description VHDL est compose de 2 parties indissociables savoir :- Lentit (ENTITY), elle dfinit les entres et sorties.- Larchitecture (ARCHITECTURE), elle contient les instructions VHDL permettant

    de raliser le fonctionnement attendu.

    Exemple : Un dcodeur 1 parmi 4.

    library ieee;Use ieee.std_logic_1164.all;Use ieee.numeric_std.all;

    -- dcodeur-- Un parmi quatre

    entity DECOD1_4 isport(IN0, IN1: in std_logic; D0, D1, D2, D3: out std_logic);

    end DECOD1_4;

    architecture DESCRIPTION of DECOD1_4 isbegin

    D0

  • Introduction la Synthse logique - VHDL

    S.T.S. GRANVILLE P.L.s page 6

    III.1) Dclaration des bibliothques.

    Toute description VHDL utilise pour la synthse a besoin de bibliothques. LIEEE(Institut of Electrical and Electronics Engineers) les a normalises et plus particulirement labibliothque IEEE1164. Elles contiennent les dfinitions des types de signaux lectroni-ques, des fonctions et sous programmes permettant de raliser des oprations arithmti-ques et logiques,...

    Library ieee;Use ieee.std_logic_1164.all;Use ieee.numeric_std.all;Use ieee.std_logic_unsigned.all;-- cette dernire bibliothque est souvent utilise pour lcriture de compteurs

    La directive Use permet de slectionner les bibliothques utiliser.

    III.2) Dclaration de lentit et des entres / sorties (I/O).

    Elle permet de dfinir le NOM de la description VHDL ainsi que les entres et sortiesutilises, linstruction qui les dfinit cest port :

    Syntaxe:entity NOM_DE_L_ENTITE is

    port ( Description des signaux dentres /sorties );

    end NOM_DE_L_ENTITE;

    Exemple :entity SEQUENCEMENT isport (

    CLOCK : in std_logic;RESET : in std_logic;Q : out std_logic_vector(1 downto 0)

    );end SEQUENCEMENT;

    Remarque : Aprs la dernire dfinition de signal de linstruction port il ne faut ja-mais mettre de point virgule.

  • Introduction la Synthse logique - VHDL

    S.T.S. GRANVILLE P.L.s page 7

    Linstruction port .

    Syntaxe: NOM_DU_SIGNAL : sens type;

    Exemple: CLOCK: in std_logic;BUS : out std_logic_vector (7 downto 0);

    On doit dfinir pour chaque signal : le NOM_DU_SIGNAL, le sens et le type.

    III.2.1) Le NOM_DU_SIGNAL.Il est compos de caractres, le premier caractre doit tre une lettre, sa longueurest quelconque, mais elle ne doit pas dpasser une ligne de code. VHDL nest passensible la casse , cest dire quil ne fait pas la distinction entre les majusculeset les minuscules.

    III.2.2) Le SENS du signal.- in : pour un signal en entre.- out : pour un signal en sortie.- inout : pour un signal en entre sortie- buffer : pour un signal en sortie mais utilis comme entre dans la des-

    cription.

    III.2.3) Le TYPE.Le TYPE utilis pour les signaux dentres / sorties est :- le std_logic pour un signal.- le std_logic_vector pour un bus compos de plusieurs signaux.

    Par exemple un bus bidirectionnel de 5 bits scrira :LATCH : inout std_logic_vector (4 downto 0) ;O LATCH(4) correspond au MSB et LATCH(0) correspond au LSB.

    Les valeurs que peuvent prendre un signal de type std_logic sont :- 0 ou L : pour un niveau bas.- 1 ou H : pour un niveau haut.- Z : pour tat haute impdance.- - : Quelconque, cest dire nimporte quelle valeur.

    out

    inout

    buffer

    in

  • Introduction la Synthse logique - VHDL

    S.T.S. GRANVILLE P.L.s page 8

    III.2.4) Affectation des numros de broches en utilisant des attributs suppl-mentaires:La dfinition des numros de broches par la dfinition dattributs supplmentaires

    dpend du logiciel utilis pour le dveloppement.

    Exemples :

    Avec Warp de Cypress :

    entity AFFICHAGE is port(CLK, RESET, DATA: in std_logic;S: buffer std_logic_vector(9 downto 0));

    -- Cest la ligne ci-dessous qui dfinit les numros de brochesattribute pin_numbers of AFFICHAGE:entity is "S(9):23 S(8):22 S(7):21S(6):20 S(5):19 S(4):18 S(3):17 S(2):16 S(1):15 S(0):14";

    end AFFICHAGE;

    Avec Express dOrcad :

    entity DECODAGE isport (

    ADRESSE : in std_logic_vector (15 downto 10);RAM0 : out std_logic;RAM1 : out std_logic;RAM2 : out std_logic;RAM3 : out std_logic;ROM : out std_logic;INTER1 : out std_logic;INTER2 : out std_logic;INTER3 : out std_logic);

    -- Ce sont les lignes ci-dessous qui dfinissent les numros de --broches-- Assignation manuelle des broches PAL16V8

    attribute PLDPIN:string; attribute PLDPIN of ADRESSE: signal is "7,6,5,4,3,2";

    -- Attention : LSB en premier !attribute PLDPIN of RAM0: signal is "19";

    attribute PLDPIN of RAM1: signal is "18"; attribute PLDPIN of RAM2: signal is "17"; attribute PLDPIN of RAM3: signal is "16"; attribute PLDPIN of ROM: signal is "15"; attribute PLDPIN of INTER1: signal is "14"; attribute PLDPIN of INTER2: signal is "13"; attribute PLDPIN of INTER3: signal is "12";

    end DECODAGE;

  • Introduction la Synthse logique - VHDL

    S.T.S. GRANVILLE P.L.s page 9

    III.2.5) Exemples de description dentits:

    entity COUNT isport(CLK, RST: in std_logic; CNT: inout std_logic_vector(2 downto 0));

    end COUNT;

    entity MAGNITUDE isport( A, B: in std_logic_vector(7 downto 0);AGRB: buffer std_logic));

    end MAGNITUDE;

    entity 7SEG isport (

    A : in std_logic;B : in std_logic;C : in std_logic;D : in std_logic;SA : out std_logic;SB : out std_logic;SC : out std_logic;SD : out std_logic;SE : out std_logic;SF : out std_logic;SG : out std_logic );

    end 7SEG;

    entity IMAGE3 isport (CLK : in std_logic; S,I : out std_logic);

    end IMAGE3;

    entity COMP4BIT isport (A,B :in std_logic_vector(3 downto 0);PLUS,MOINS,EGAL :out std_logic);

    end COMP4BIT;

    entity COMPT_4 isport (H,R :in std_logic;Q :out std_logic_vector(3 downto 0));

    end COMPT_4;

    entity DECAL_D isport (H,R,IN_SERIE :in std_logic;OUT_SERIE :out std_logic);

    end DECAL_D;

  • Introduction la Synthse logique - VHDL

    S.T.S. GRANVILLE P.L.s page 10

    III.3) Dclaration de larchitecture correspondante lentit : description du fonction-nement.

    Larchitecture dcrit le fonctionnement souhait pour un circuit ou une partie du cir-cuit.

    En effet le fonctionnement dun circuit est gnralement dcrit par plusieurs modulesVHDL. Il faut comprendre par module le couple ENTITE/ARCHITECTURE. Dans le cas desimples PLDs on trouve souvent un seul module.

    Larchitecture tablit travers les instructions les relations entre les entres et lessorties. On peut avoir un fonctionnement purement combinatoire, squentiel voire les deuxsquentiel et combinatoire.

    Exemples :-- Oprateurs logiques de baseentity PORTES is

    port (A,B :in std_logic;Y1,Y2,Y3,Y4,Y5,Y6,Y7:out std_logic);

    end PORTES;

    architecture DESCRIPTION of PORTES isbegin

    Y1

  • Introduction la Synthse logique - VHDL

    S.T.S. GRANVILLE P.L.s page 11

    -- Dcodage dadressesLibrary ieee;Use ieee.std_logic_1164.all;Use ieee.numeric_std.all;

    entity DECODAGE isport (

    A15, A14, A13, A12, A11, A10 : in std_logic;RAM0 : out std_logic;RAM1 : out std_logic;RAM2 : out std_logic;RAM3 : out std_logic;ROM : out std_logic;INTER1 : out std_logic;INTER2 : out std_logic;INTER3 : out std_logic);

    end DECODAGE;

    architecture DESCRIPTION of DECODAGE is

    signal ADRESSE: std_logic_vector(15 downto 0);

    begin

    ADRESSE

  • Introduction la Synthse logique - VHDL

    S.T.S. GRANVILLE P.L.s page 12

    IV) Les instructions de base (mode concurrent ), logique combina-toire.

    Quest ce que le mode concurrent ? Pour une description VHDL toutes les ins-tructions sont values et affectent les signaux de sortie en mme temps. Lordre dans le-quel elles sont crites na aucune importance. En effet la description gnre des structureslectroniques, cest la grande diffrence entre une description VHDL et un langage informa-tique classique.

    Dans un systme microprocesseur, les instructions sont excutes les unes lasuite des autres.

    Avec VHDL il faut essayer de penser la structure qui va tre gnre par le syn-thtiseur pour crire une bonne description, cela nest pas toujours vident.

    Exemple : Pour le dcodeur 1 parmi 4 de la page 5, lordre dans lequel seront cri-tes les instructions na aucune importance.

    architecture DESCRIPTION of DECOD1_4 isbeginD0

  • Introduction la Synthse logique - VHDL

    S.T.S. GRANVILLE P.L.s page 13

    IV.1) Les oprateurs.IV.1.1) Laffectation simple :

  • Introduction la Synthse logique - VHDL

    S.T.S. GRANVILLE P.L.s page 14

    IV.1.2) Oprateur de concatnation : &.Cet oprateur permet de joindre des signaux entre eux .Exemple :-- Soit A et B de type 3 bits et S1 de type 8 bits-- A = "001" et B ="110" S1

  • Introduction la Synthse logique - VHDL

    S.T.S. GRANVILLE P.L.s page 15

    IV.1.4) Oprateurs arithmtiques.

    Oprateur VHDLADDITION +

    SOUSTRACTION -MULTIPLICATION *

    DIVISION /

    Remarque N1 : Pour pouvoir utiliser les oprateurs ci-dessus il faut rajouter les bi-bliothques suivantes au dbut du fichier VHDL:Use ieee.numeric_std.all ;Use ieee.std_logic_arith.all ;

    Exemples :S1

  • Introduction la Synthse logique - VHDL

    S.T.S. GRANVILLE P.L.s page 16

    VI.1.5) Oprateurs relationnels.

    Ils permettent de modifier ltat dun signal ou de signaux suivant le rsultat dun testou dune condition. En logique combinatoire ils sont souvent utiliss avec les instructions :

    - when else - with . Select .Voir ci-dessous.

    Oprateur VHDLEgal =

    Non gal /=Infrieur =

  • Introduction la Synthse logique - VHDL

    S.T.S. GRANVILLE P.L.s page 17

    IV.2) Les instructions du mode concurrent .

    IV.2.1) Affectation conditionnelle :Cette instruction modifie ltat dun signal suivant le rsultat dune condition logique

    entre un ou des signaux, valeurs, constantes.

    SIGNAL

  • Introduction la Synthse logique - VHDL

    S.T.S. GRANVILLE P.L.s page 18

    IV.2.2) Affectation slective :Cette instruction permet daffecter diffrentes valeurs un signal, selon les valeurs

    prises par un signal dit de slection.

    with SIGNAL_DE_SELECTION selectSIGNAL

  • Introduction la Synthse logique - VHDL

    S.T.S. GRANVILLE P.L.s page 19

    Exemple N2 : Affectation slective avec les autres cas forcs 0.Library ieee;Use ieee.std_logic_1164.all;Use ieee.numeric_std.all;Use ieee.std_logic_unsigned.all;entity TABLE1 is

    port (E1,E2 : in std_logic;SEL : in std_logic_vector(1 downto 0);S2 : out std_logic);

    end TABLE1;architecture DESCRIPTION of TABLE1 isbegin

    with SEL selectS2

  • Introduction la Synthse logique - VHDL

    S.T.S. GRANVILLE P.L.s page 20

    Exemple N4 :Affectation slective avec les autres cas forcs une valeur quel-conque -.

    Library ieee;Use ieee.std_logic_1164.all;Use ieee.numeric_std.all;Use ieee.std_logic_unsigned.all;entity TABLE3 is

    port (E1,E2 : in std_logic;SEL : in std_logic_vector(1 downto 0);S2 : out std_logic);

    end TABLE3;architecture DESCRIPTION of TABLE3 isbegin

    with SEL selectS2

  • Introduction la Synthse logique - VHDL

    S.T.S. GRANVILLE P.L.s page 21

    V) Les instructions du mode squentiel.

    V.1) Dfinition dun PROCESS.Un process est une partie de la description dun circuit dans laquelle les instructions

    sont excutes squentiellement cest dire les unes la suite des autres.Il permet deffectuer des oprations sur les signaux en utilisant les instructions stan-

    dard de la programmation structure comme dans les systmes microprocesseurs.Lexcution dun process est dclenche par un ou des changements dtats de si-

    gnaux logiques. Le nom de ces signaux est dfini dans la liste de sensibilit lors de la d-claration du process.

    [Nom_du_process :] process(Liste_de_sensibilit_nom_des_signaux)Begin

    -- instructions du processend process [Nom_du_process] ;

    Remarque: Le nom du process entre crochet est facultatif, mais il peut tre trs utile pourreprer un process parmi dautres lors de phases de mise au point ou de simulations.

    Rgles de fonctionnement dun process :1) Lexcution dun process a lieu chaque changement dtat dun signal de la liste

    de sensibilit.2) Les instructions du process sexcutent squentiellement.3) Les changements dtat des signaux par les instructions du process sont pris en

    compte la fin du process.

    V.2) Les deux principales structures utilises dans un process.

    Lassignation conditionnelle Lassignation slective

    if condition theninstructions

    [elsif condition then instructions][else instructions]end if ;

    Exemple:if (RESET=1) then SORTIE instructions[when others => instructions]

    end case;

    Exemple:case SEL is

    when 000 => S1 S1 S1 S1 (implique) et

  • Introduction la Synthse logique - VHDL

    S.T.S. GRANVILLE P.L.s page 22

    V.3) Exemples de process :

    Exemple N1 : Dclaration dune bascule D.Library ieee;Use ieee.std_logic_1164.all;Use ieee.numeric_std.all;Use ieee.std_logic_unsigned.all;entity BASCULED is

    port (D,CLK : in std_logic;S : out std_logic);

    end BASCULED;architecture DESCRIPTION of BASCULED isbegin

    PRO_BASCULED : process (CLK)begin

    if (CLK'event and CLK ='1') thenS

  • Introduction la Synthse logique - VHDL

    S.T.S. GRANVILLE P.L.s page 23

    Exemple N2 : Mme exemple que prcdemment mais avec des entres de prslec-tions de mise zro RESET prioritaire sur lentre de mise un SET, toutes les deuxsont synchrones de lhorloge CLK.

    Library ieee;Use ieee.std_logic_1164.all;Use ieee.numeric_std.all;Use ieee.std_logic_unsigned.all;

    entity BASCULEDSRS isport (

    D,CLK,SET,RESET : in std_logic;S : out std_logic);

    end BASCULEDSRS;

    architecture DESCRIPTION of BASCULEDSRS isbegin

    PRO_BASCULEDSRS : process (CLK)Begin

    if (CLK'event and CLK ='1') thenif (RESET =1) then

    S

  • Introduction la Synthse logique - VHDL

    S.T.S. GRANVILLE P.L.s page 24

    Exemple N3 : Mme exemple que prcdemment mais avec des entres de prslec-tions, de mise zro RESET prioritaire sur lentre de mise un SET, toutes les deuxsont asynchrones de lhorloge CLK.

    Library ieee;Use ieee.std_logic_1164.all;Use ieee.numeric_std.all;Use ieee.std_logic_unsigned.all;

    entity BASCULEDSRA isport (

    D,CLK,SET,RESET : in std_logic;S : out std_logic);

    end BASCULEDSRA;

    architecture DESCRIPTION of BASCULEDSRA isbegin

    PRO_BASCULEDSRA : process (CLK,RESET,SET)Begin

    if (RESET =1) thenS

  • Introduction la Synthse logique - VHDL

    S.T.S. GRANVILLE P.L.s page 25

    Exemple N4 : Bascule T.

    Library ieee;Use ieee.std_logic_1164.all;Use ieee.numeric_std.all;Use ieee.std_logic_unsigned.all;

    entity BASCULET isport (

    D,CLK : in std_logic;S : out std_logic);

    end BASCULET;

    architecture DESCRIPTION of BASCULET issignal S_INTERNE : std_logic; -- Signal internebegin

    PRO_BASCULET : process (CLK)Begin

    if (CLK'event and CLK ='1') thenif (D =1) then

    S_INTERNE

  • Introduction la Synthse logique - VHDL

    S.T.S. GRANVILLE P.L.s page 26

    Remarque : Si on souhaite ne pas utiliser de variable interne on peut dclarer le signal Sde type buffer ou inout.

    Ce qui donne pour descriptions :

    Avec S de type inout Avec S de type bufferLibrary ieee;Use ieee.std_logic_1164.all;Use ieee.numeric_std.all;Use ieee.std_logic_unsigned.all;

    entity BASCULET isport (

    D,CLK : in std_logic;S : inout std_logic);

    end BASCULET;

    architecture DESCRIPTION of BASCULET isbegin

    PRO_BASCULET : process (CLK)Begin

    if (CLK'event and CLK='1') thenif (D=1) then

    S

  • Introduction la Synthse logique - VHDL

    S.T.S. GRANVILLE P.L.s page 27

    V.4) Les compteurs :

    Ils sont trs utiliss dans les descriptions VHDL. Lcriture dun compteur peut tretrs simple comme trs complique. Ils font appels aux process.

    V.4.1) Compteur simple :

    Library ieee;Use ieee.std_logic_1164.all;Use ieee.numeric_std.all;Use ieee.std_logic_unsigned.all;

    entity CMP4BITS isPORT (

    CLOCK : in std_logic;Q : inout std_logic_vector(3 downto 0));

    end CMP4BITS;

    architecture DESCRIPTION of CMP4BITS isbegin process (CLOCK) begin if (CLOCK ='1' and CLOCK'event) then Q

  • Introduction la Synthse logique - VHDL

    S.T.S. GRANVILLE P.L.s page 28

    Un signal peut prendre comme valeur les tats 1 ou 0 et un busnimporte quelle valeur, du moment quelle est crite entre deux guillemets"1010" ou X"A" ou o"12", mais pas une valeur comme par exemple1,2,3,4. Ces valeurs dcimales sont interprtes par le synthtiseurcomme des valeurs entires (integer), on ne peut pas par dfaut addi-tionner un nombre entier 1 avec un bus de type lectronique(st_logic_vector), cest pour cela que lon rajoute dans la partie dcla-ration des bibliothques les lignes :

    Use ieee.numeric_std.all;Use ieee.std_logic_unsigned.all;Ces deux bibliothques ont des fonctions de conversions de types et

    elles permettent dassocier un entier avec des signaux lectroniques. Ellespermettent dcrire facilement des compteurs, dcompteurs, additionneurs,soustracteurs, ..

    Remarque : Il ne faut pas oublier de les rajouter dans les descriptions.

    Le signal Q est dclar dans lentit de type inout, cela est logique car ilest utilis la fois comme entre et comme sortie pour permettrelincrmentation du compteur. Ce type dcriture est peu utilis car elle nepermet pas au code dtre portable, on prfra utiliser un signal interne,celui-ci peut tre la fois une entre et une sortie.

    Mme description en utilisant un bus interne:

    Library ieee;Use ieee.std_logic_1164.all;Use ieee.numeric_std.all;Use ieee.std_logic_unsigned.all;

    entity CMP4BITS isPORT (

    CLOCK : in std_logic;Q : out std_logic_vector (3 downto 0));

    end CMP4BITS;

    architecture DESCRIPTION of CMP4BITS issignal Q_BUS_INTERNE : std_logic_vector(3 downto 0));begin process (CLOCK) begin if (CLOCK ='1' and CLOCK'event) then Q_BUS_INTERNE

  • Introduction la Synthse logique - VHDL

    S.T.S. GRANVILLE P.L.s page 29

    V.4.2) Compteur mise un SET et mise zro RESET :

    V.4.2.1) Compteur 3 bits avec remise zro asynchrone.Library ieee;Use ieee.std_logic_1164.all;Use ieee.numeric_std.all;Use ieee.std_logic_unsigned.all;entity CMP3BITS isPORT (

    CLOCK : in std_logic;RESET : in std_logic;Q : out std_logic_vector(2 downto 0));

    end CMP3BITS;architecture DESCRIPTION of CMP3BITS issignal CMP: std_logic_vector (2 downto 0);begin process (RESET,CLOCK) begin if RESET ='1' then CMP

  • Introduction la Synthse logique - VHDL

    S.T.S. GRANVILLE P.L.s page 30

    V.4.3) Compteur / Dcompteur entre de prchargement :

    Library ieee;Use ieee.std_logic_1164.all;Use ieee.numeric_std.all;Use ieee.std_logic_unsigned.all;

    entity CMP4BITSLUD isPORT (

    RESET, CLOCK, LOAD, UP: in std_logic;DATA : in std_logic_vector (3 downto 0);

    Q : out std_logic_vector (3 downto 0));end CMP4BITSLUD;

    architecture DESCRIPTION of CMP4BITSLUD issignal CMP: std_logic_vector (3 downto 0);begin process (RESET,CLOCK) begin if RESET ='1' then CMP

  • Introduction la Synthse logique - VHDL

    S.T.S. GRANVILLE P.L.s page 31

    V.4.4) Les erreurs classiques avec lutilisation de process :

    Exemple : compteur avec retenue (fonctionnement incorrect).Library ieee;Use ieee.std_logic_1164.all;Use ieee.numeric_std.all;Use ieee.std_logic_unsigned.all;entity CMP4BITSRET isPORT (

    RESET, CLOCK : in std_logic;RET : out std_logic;Q : out std_logic_vector (3 downto 0));

    end CMP4BITSRET;architecture DESCRIPTION of CMP4BITSRET issignal CMP: std_logic_vector (3 downto 0);begin process (RESET,CLOCK) begin if RESET ='1' then

    CMP

  • Introduction la Synthse logique - VHDL

    S.T.S. GRANVILLE P.L.s page 32

    Comment faire pour pallier ce problme ? deux solutions :

    1) Il faut anticiper dun coup dhorloge, on valide la retenue quand la valeur ducompteur vaut 14, cest dire n-1.

    Library ieee;Use ieee.std_logic_1164.all;Use ieee.numeric_std.all;Use ieee.std_logic_unsigned.all;entity CMP4BITSRET isPORT (

    RESET, CLOCK : in std_logic;RET : out std_logic;Q : out std_logic_vector (3 downto 0));

    end CMP4BITSRET;architecture DESCRIPTION of CMP4BITSRET issignal CMP: std_logic_vector (3 downto 0);begin process (RESET,CLOCK) begin if RESET ='1' then CMP

  • Introduction la Synthse logique - VHDL

    S.T.S. GRANVILLE P.L.s page 33

    2) Le test de validation de la retenue est effectue en dehors du process.

    Library ieee;Use ieee.std_logic_1164.all;Use ieee.numeric_std.all;Use ieee.std_logic_unsigned.all;entity CMP4BITSRET isPORT (

    RESET, CLOCK : in std_logic;RET : out std_logic;Q : out std_logic_vector (3 downto 0));

    end CMP4BITSRET;architecture DESCRIPTION of CMP4BITSRET issignal CMP: std_logic_vector (3 downto 0);begin process (RESET,CLOCK) begin if RESET='1' then CMP

  • Introduction la Synthse logique - VHDL

    S.T.S. GRANVILLE P.L.s page 34

    V.4.5) Compteur BCD deux digits :

    Library ieee;Use ieee.std_logic_1164.all;Use ieee.numeric_std.all;Use ieee.std_logic_unsigned.all;

    entity CMP_BCD8 isPORT (

    RESET, CLK : in std_logic;Q : out std_logic_vector (7 downto 0));

    end CMP_BCD8;

    architecture DESCRIPTION of CMP_BCD8 issignal DIGIT_MSB, DIGIT_LSB: std_logic_vector (3 downto 0);begin process (RESET,CLK) begin if RESET ='1' then DIGIT_LSB '0'); DIGIT_MSB '0'); elsif (CLK ='1' and CLK'event) then

    if DIGIT_LSB < 9 then DIGIT_LSB

  • Introduction la Synthse logique - VHDL

    S.T.S. GRANVILLE P.L.s page 35

    VI) Syntaxe rsume du langage VHDL.

    Ces deux pages prsentent de manire trs condense la syntaxe du langage VHDL. Il est fortementconseill de se reporter au document complet pour plus de dtails.

    -- Nom des auteurs-- Description du rle du fichier VHDL-- Circuit logique programmable utilis

    library ieee ;use ieee.std_logic_1164.all;use ieee.numeric_std.all;use ieee.std_logic_unsigned.all;-- librairie additionnelle pour les oprations arithmtiques

    entity NOMENTITE is-- Description des signaux dentre et de sortie port (

    ENTREE : in std_logic; -- signal simpleSORTIE : out std_logic; -- signal simpleENTREESORTIE : inout std_logic; -- signal simpleBUFFER : buffer std_logic; -- signal simpleBUS : in std_logic_vector (3 downto 0); -- signaux regroups en un busA,B : in std_logic_vector (3 downto 0); -- 2 bus 4 bits en entreC,D,E,F : out std_logic -- 4 signaux de mme type PAS DE POINT VIRGULE ! );

    -- En plus des lignes prcdentes, il est ncessaire de spcifier le brochage-- retenu pour le circuit utilis.-- La syntaxe suivante est propre OrCad Express pour un SPLD-- La dfinition du brochage doit respecter les possibilits du circuit :-- IN CLOCK IO OUT

    -- Affectation automatiqueattribute pldtype : string; -- dfinition de lattribut Type de broche attribute pldtype of HORLOGE : signal is "CLOCK"; -- ne pas confondre avec INattribute pldtype of ENTREE : signal is "IN";attribute pldtype of SORTIE : signal is "OUT";attribute pldtype of ENTREESORTIE : signal is "IO"; -- ne pas confondre avec INOUTattribute pldtype of VALIDATION : signal is "EN";attribute pldtype of A,B,C : signal is "IN"; -- signaux simples ou bus de mme typeattribute pldtype of D,E,F : signal is "IO"; -- signaux simples ou bus de mme type

    -- Affectation manuelleattribute pldpin : string; -- dfinition de lattribut Numro de broche attribute pldpin of NOMSIGNAL: signal is "1"; -- une seule brocheattribute pldpin of NOMBUS: signal is "23,22,21,20"; -- LSB en premier !

    end NOMENTITE;

    Commentaires relatifs au fichier VHDL

    Dfinition des librairies utilises

    Description de lentit : interface externe.NOMENTITE permet didentifier lentit

    Dbut de la description dessignaux

    Fin de la description des signaux

    Affectation automatique des broches dun SPLD

    Affectation manuelle des broches dun SPLD

    Fin de lentit : NOMENTITEcorrespond au nom donn dansla dclaration

  • Introduction la Synthse logique - VHDL

    S.T.S. GRANVILLE P.L.s page 36

    architecture NOMARCHITECTURE of NOMENTITE is

    signal NOMAUX : STD_LOGIC_VECTOR (3 downto 0);

    begin

    -- partie CombinatoireNOMBUS