Proje Tv Hdl

Embed Size (px)

Citation preview

  • 7/25/2019 Proje Tv Hdl

    1/19

    G R O U P E

    Rapport

    Projet VHDL

    I4

    Novembre 2004

    Charles

    Sylvain

  • 7/25/2019 Proje Tv Hdl

    2/19

    Charles Sylvain Projet EL411

    ESIEE 2004/2005 2

    SOMMAIRE

    I. DESCRIPTION DU PROJET........................................................................................... 3

    A. LES ENTREES/SORTIES .................................................................................................... 3

    B. CONTRAINTES ET CARACTERISTIQUES ............................................................................ 3

    C. DESCRIPTION DU COMPOSANT .........................................................................................4

    II. PARTIE LOGIQUE...........................................................................................................5

    A. LE DETECTEUR DE FRONT ................................................................................................ 6

    B. LE COMPTEUR MODULO 30 .............................................................................................. 6

    C. LE COMPTEUR DE VITESSE ET LE BLOC SAUVEGARDE ET FIXATION............................ 7

    III.MACHINE DETAT .......................................................................................................... 8

    A. PROTOCOLE DE COMMUNICATION ................................................................................... 8

    B. PRINCIPE DE FONCTIONNEMENT ......................................................................................8

    IV.SIMULATION.................................................................................................................... 9

    A. DESCRIPTION DE LA SIMULATION ....................................................................................9

    B. EXEMPLES DE FONCTIONNEMENT .................................................................................. 10

    V. OPTIMISATION .............................................................................................................12

    A. SYNTHESE ..................................................................................................................... 12

    B. OPTIMISATION...............................................................................................................13

    C. CONTRAINTES DE TEMPS ............................................................................................... 13

    CONCLUSION....................................................................................................................... 15

    ANNEXE 1 : CODES SOURCES.........................................................................................16

  • 7/25/2019 Proje Tv Hdl

    3/19

    Charles Sylvain Projet EL411

    ESIEE 2004/2005 3

    EL411 - VHDL

    Rapport de projet

    Le but de ce projet de lunit de VHDL du dbut de la quatrime anne est de mettre en

    pratique les connaissances acquises pendant un mois et demi. Lexemple concret propos ici

    nous permet ainsi de raliser un circuit, du cahier des charges jusqu la simulation, sans

    oublier loptimisation du composant dans lventualit dune future implmentation.

    I. Description du projet

    Lobjectif du projet est de dterminer la vitesse dun moteur par comptage dimpulsions. Un

    capteur mont sur le stator du moteur met des impulsions raison de 30 impulsons par tour.

    Au bout des 30 impulsions, le systme envoie une valeur proportionnelle la vitesse du

    moteur.

    Pour raliser ce systme, nous avons dcid de crer un compteur qui, chaque fois que le

    moteur fait un tour, envoie sa valeur sur la sortie. Le compteur est incrment chaque front

    dhorloge.

    A. Les Entres/Sorties

    Le composant est dot de 4 entres sur 1 bit :

    - I : entre provenant du moteur sur laquelle on peut relever les impulsionscorrespondant aux tours du moteur. Impulsions comptes sur front montant.

    - Clk ou H : lhorloge du systme cadence 20 MHz.- Raz : Remise zro du composant. Actif ltat bas.- Rq : Request , ligne provenant dun systme externe informant le composant

    quune valeur de la vitesse veut tre lue.

    Le composant est dot de 1 sortie sur 1 bit et de 1 sortie sur 21 bits :

    - Ack : Acknowledge , informe le systme externe quune valeur peut tre lue.- V : bus sur 21 bits reprsentant la vitesse du moteur.

    B. Contraintes et Caractristiques

    1. La forme de limpulsion

    Pour que le composant puisse calculer correctement la vitesse du moteur, il faut que les

    impulsions aient une largeur au moins gale 40 ns ce qui correspond la priode de

  • 7/25/2019 Proje Tv Hdl

    4/19

    Charles Sylvain Projet EL411

    ESIEE 2004/2005 4

    lhorloge. En effet, le front montant de limpulsion est dtect en se calant sur les fronts

    dhorloge.

    De plus, le temps entre chaque impulsion doit galement tre gal 40 ns.

    On remarque sur le chronogramme ci-dessus que si limpulsion est plus courte que 40 ns alors

    elle ne sera pas dtecte et que si deux impulsions se suivent de moins de 40 ns alors, la

    deuxime impulsion sera ignore.

    2. Vitesse minimum

    La vitesse minimum souhaite est de 20 tours/s. Avec un bus de 21 bits, il est possible de

    descendre une vitesse minimum de 12 tours/s.

    20 tours par secondes => 1 tour toutes les 50 millisecondes.

    La vitesse de lhorloge tant de 25 MHz, en 50 ms, le compteur a atteint la valeur de

    1 250 000. Il faut donc un bus dau minimum 21 bits pour atteindre cette valeur.

    Avec 21 bits, on peut mme compter jusqu 2 097 152, ce qui reprsente 0,08 secondes par

    tour, cest dire 12 tours par secondes.

    3. Vitesse maximum

    La vitesse maximum du moteur pouvant tre calcule est directement lie avec la forme de

    limpulsion. La dure dune impulsion tant au minimum de 40 ns et le temps entre chaque

    impulsion tant galement de 40 ns, au maximum, on peut avoir 1 tour toutes les 2 400 ns, ce

    qui correspond 416 666 tours par seconde. Physiquement, ce rsultat na pas beaucoupdimportance tellement sa valeur est grande mais cela montre que la frquence de lhorloge

    est largement suffisante pour calculer la vitesse de rotation de moteurs trs rapides.

    C. Description du composant

    Le systme se spare en en deux parties trs distinctes, une partie logique, qui gnre la valeur

    correspondant la vitesse du moteur et une partie machine dtat qui gre linterface avec le

    systme externe.

    Le seul lien quil y ait entre la machine dtat et la partie logique est le signal Stop qui permetde bloquer la valeur de sortie V pendant sa lecture par le systme externe.

  • 7/25/2019 Proje Tv Hdl

    5/19

    Charles Sylvain Projet EL411

    ESIEE 2004/2005 5

    Structure interne simplifi du composant

    La valeur de V est mise jour chaque fois que le moteur fait 1 tour si Stop = 0, sinon, ds

    que Stop repasse ltat bas.

    II. Partie Logique

    La partie combinatoire est compose de 4 blocs distincts :

    Un dtecteur de front montant pour dtecter les impulsions en provenance du moteur Un compteur modulo 30 qui compte le nombre dimpulsions du moteur

    Un compteur sur 21 bits correspondant la vitesse du moteur et remis zro lorsquele moteur a fait 1 tours.

    Un bloc qui sauvegarde et fige la valeur de la vitesse sur le bus V

    Partie Combinatoire

  • 7/25/2019 Proje Tv Hdl

    6/19

    Charles Sylvain Projet EL411

    ESIEE 2004/2005 6

    A. Le dtecteur de front

    Voici le schma logique du dtecteur de front montant.

    Dtecteur de front montant

    Le principe du dtecteur de front est de comparer deux instants successifs ( par rapport

    lhorloge ) et de comparer si le signal est pass de ltat bas haut. Ainsi, lorsquun front est

    dtect, la sortie I_f passe 1 pendant 1 cycle dhorloge. I_f est ensuite branch sur le

    compteur qui comptabilise le nombre de front dtect.

    B. Le compteur modulo 30

    Le compteur modulo 30 a pour rle de compter 30 impulsions venant du moteur par

    lintermdiaire de I_f. Une fois les 30 impulsions atteintes, le compteur gnre un signal

    cmpt30 pendant une priode de lhorloge qui indique au compteur de vitesse de sauvegarder

    sa valeur et de recommencer zro.

    Voici le schma du compteur modulo 30 :

    Compteur modulo 30

    Le bloc CMPest un comparateur qui teste si cmptest gal 29. Si cest le cas, cmpt30 est

    gnr et le compteur de vitesse remis zro.

  • 7/25/2019 Proje Tv Hdl

    7/19

    Charles Sylvain Projet EL411

    ESIEE 2004/2005 7

    C. Le compteur de vitesse et le bloc sauvegarde et fixation

    Schma logique 3 tages : Compteur, Sauvegarde, Fixation

    Le compteur de vitesse est un simple compteur qui sincrmente chaque top dhorloge et qui

    est remis zro, soit par le raz global du circuit, soit par cmpt30 provenant du compteur

    modulo 30.Ensuite, il est ncessaire de faire un tage de sauvegarde de la valeur de la vitesse chaque

    fois que le moteur fait 1 tour. Cest un simple multiplexeur avec une bascule qui permet de

    faire cet tage pour chaque bit du registre.

    Enfin, ltage de fixation permet de fixer la valeur de sortie pendant que le systme externe la

    lit. Cette fixation se fait grce au signal Stop qui est activ par la machine dtat. Ainsi,

    lorsque le systme externe demande une lecture avec la ligneRq(Request), la machine dtat

    bloque la sortie avec le signal Stoppuis autorise la lecture avec la ligneAck(Acknowledge).

    Le systme a galement t ralis de manire ce que, si la valeur de V_intchange alors que

    Stopest activ, V ne change que lorsque Stop repasse 0.

    Chronogramme schmatique

    Sur le chronogramme ci-dessus, on peut voir que le V nest mis jour que lorsque Stop

    repasse zro.

    Cependant, on aurait pu faire abstraction de ltage de sauvegarde. On pourrait ainsi

    conomiser, sachant que V est un bus de 21 bits, 21 bascules D et 21 multiplexeurs 2 vers 1.

    Le problme de cette solution est que si V_tempchange pendant que la fixation est bloque

    par Stop, alors la valeur est perdue et il faut donc attendre 1 tour supplmentaire pour avoir la

    nouvelle valeur. Le choix de la solution dpend donc de la politique adopte, cest dire si

    lon veut un systme qui prend trs peu de place ou si lon veut un systme qui ragit trs vite

    La solution pourrait dpendre galement de la vitesse du moteur. Si le moteur est trs lent, la

    solution 3 tages parat la plus adapte. Si le moteur est trs rapide, on peut considrerquattendre 1 tour est ngligeable et donc privilgier la solution 2 tages.

  • 7/25/2019 Proje Tv Hdl

    8/19

    Charles Sylvain Projet EL411

    ESIEE 2004/2005 8

    III. Machine dEtat

    A. Protocole de communication

    Pour communiquer notre vitesse V au systme externe qui nutilise pas la mme horloge, nous

    utilisons un protocole de communication asynchrone nomm handshaking. Le fonctionnement

    de ce systme est le suivant, lorsque le systme externe veut lire la valeur de V, il envoie une

    requte en mettant la ligne Rq (Request) du composant ltat haut. Notre composant dtecte

    cette requte et fixe la valeur de V pour sassurer que cette valeur ne sera pas modifier avant

    la fin de la lecture, puis envoie lautorisation de lecture via la ligne Ack (Acknowledge).

    Quand le systme externe a fini de lire il remet la ligne Request 0. Enfin lorsque notre

    composant a dtect la fin de la lecture, il remet Acknowledge 0 pour indiquer quil est prt

    accepter une nouvelle requte.

    Ce principe de fonctionnement peut tre rsum par le chronogramme suivant :

    Chronogramme schmatique du protocole de communication

    La solution retenue pour raliser ce protocole de communication est dutiliser une machinedtat qui pourra ainsi grer les lignes Request, Acknowledge et le signal Stop pour figer la

    valeur de V.

    B. Principe de fonctionnement

    La machine dtat gre 3 signaux :

    - Request : Entre indiquant au composant quune valeur veut tre lue.- Acknowledge : Sortie indiquant au systme externe quune valeur peut tre lue- Stop : Signal interne permettant dassurer la stabilit de la sortie V lors de sa lecture

    (actif haut).

    Pour effectuer la gestion du protocole de communication, nous avons besoin de 3 tats :

    - Attente : Cest ltat initial, cest dire quil ny a aucune requte en cours, donc lesignal Acknowledge est 0. De plus lorsque lon est dans cet tat, la valeur de V peut

    changer, donc le signal Stop est 0. Lorsquune requte est dtecte, la machine dtat

    passe dans ltat suivant Request.

    - Request : Cest ltat qui met en place les conditions ncessaires la lecture de V parle systme externe, cest dire que lon garantit la stabilit de V en mettant Stop 1.

    La ligne Acknowlege reste 0 pour laisser le temps V de se stabiliser. La machine

    dtat passe ensuite systmatiquement ltat suivant, Acknowledge

    - Acknowledge : La machine dtat continue assurer la stabilit de V en gardant Stop 1 et la ligne Acknowledge passe 1 pour indiquer que la lecture est possible. Le

  • 7/25/2019 Proje Tv Hdl

    9/19

    Charles Sylvain Projet EL411

    ESIEE 2004/2005 9

    passage ltat suivant se fait lors de la dtection du passage de la ligne Request 0

    ce qui indique la fin de la lecture. La machine dtat retourne donc dans ltat Attente.

    Voici la reprsentation de la machine dtat :

    Machine dEtat

    Attention :

    - Le protocole est asynchrone mais cela ne veut pas dire que notre machine dtat estasynchrone, donc tous les changements dtats se font sur front montant dhorloge.

    - La machine dtat comporte un reset asynchrone qui la met dans ltat Attente.

    IV. Simulation

    A. Description de la simulation

    Afin de tester la description du projet, nous avons simul le fonctionnement du systme

    externe grce un fichier VHDL de simulation Sim.vhd. Ce fichier nous permet de simuler le

    comportement de Mvitesse (lentit de notre projet) en rponse aux signaux extrieurs

    Request, Impulsion, Horloge, et RAZ. Ces signaux sont dcrits manuellement pour simuler

    un fonctionnement rel, par exemple lhorloge est dcrite comme un signal carr de demi-

    priode 40ns (frquence de 25Mhz).

    clk

  • 7/25/2019 Proje Tv Hdl

    10/19

    Charles Sylvain Projet EL411

    ESIEE 2004/2005 10

    Pour observer le comportement du circuit nous observons les chronogrammes des signaux

    externes (clk, acknowledge, impulsion, raz, request, vitesse), mais nous observons aussi

    certains signaux internes qui nous permettent de suivre plus facilement le droulement de la

    simulation, par exemple la sortie des compteurs ou encore les tats de la machine dtat.

    B. Exemples de fonctionnement

    Premier chronogramme (cf page suivante)

    La ligne I reprsente les impulsions envoyes par le moteur, V est la sortie du composant

    reprsentant la vitesse. Vers 3700 ns le moteur a effectu son premier tour car le compteur

    dimpulsion arrive 29. cmpt30passe donc 1 pendant un cycle dhorloge afin dindiquer

    quil faut afficher la nouvelle valeur de V. V_intqui sauvegarde la valeur de la vitesse est mis

    la nouvelle valeur de la vitesse, cest dire la valeur du compteur V_temp. Au coup

    dhorloge suivant V affiche la nouvelle valeur de la vitesse qui est 93 dans notre cas. Les

    compteurs de vitesse et dimpulsions sont remis zro. On peut vrifier que le compteur

    modulo 30 est bien incrment chaque impulsion I. De mme le compteur qui indique la

    vitesse par tour est compte chaque front montant de lhorloge.

    Pendant ce temps la machine dtat est reste ltat dattente car il ny a pas eu de demande

    de lecture. On simule 4000 ns unRequestdu systme extrieur. Deux coups dhorloge plus

    tard (le temps de certifier que V est fixe en passant par ltat Request de notre machine

    dtat), Ack passe 1 pour indiquer quune lecture est possible. Lorsque la lecture a t

    effectue (Rqpasse zro),Ackrepasse zro pour indiquer au systme extrieur quil peut

    nouveau demander une lecture.

    Deuxime chronogramme

    Pour vrifier que Vest bien bloqu lorsquil y a une lecture on r effectue une simulation mais

    en demandant une lecture (cest dire Request 1) avant la fin du premier tour du moteur

    (passage de 0 106 de V). La valeur de V doit rester fixe et ne changer qu la fin du Request

    en prenant la nouvelle valeur. Ltage de sauvegarde de la partie logique nest utile que dans

    cette ventualit.

    On remarque effectivement que sur le chronogramme, la fin du premier tour du moteur vers

    3700 ns, V ne change pas. En effet sa valeur est garantie stable car il y a une lecture en cours.Stop est 1 et bloque le changement de V. On peut observer que V_int a pris la nouvelle

    valeur de la vitesse mais quelle nest pas affecte V. Ds que la lecture est termine, Stop

    repasse 0 et V prend la nouvelle valeur de la vitesse qui avait t sauvegarde dans V_int.

    Le fonctionnement est conforme nos attentes.

  • 7/25/2019 Proje Tv Hdl

    11/19

    Charles Sylvain Projet EL411

    ESIEE 2004/2005 11

  • 7/25/2019 Proje Tv Hdl

    12/19

    Charles Sylvain Projet EL411

    ESIEE 2004/2005 12

    V. Optimisation

    Le logiciel BuildGates permet une optimisation des circuits dcrits en VHDL pour un gain de

    place et/ou de vitesse du circuit une fois implments.

    Le rapport de loptimisation permet dans certains cas de dtecter des erreurs de conception

    pour un circuit. La prsence de latch non voulues par exemple, ou dun nombre plus important

    de bascules que prvu indiquent des erreurs non dtectes la compilation.

    Pour vrifier que le nombre de bascules correspond notre description du systme, nous

    avons calcul manuellement le nombre de bascules prvues pour notre circuit :

    Machine dtat : 2 bascules (Pour avoir 3 tats).

    Process dtecteur de fronts : 2 bascules.

    Process Compteur modulo 30 : 5 bascules pour le compteur, 1 pour le signal cmpt30 donc 6

    bascules.

    Process Compteur de tours : 21 bascules car il y a une bascule par bits du bus.

    Process Sauvegarde du nombre de tours : 21 bascules.

    Process Sortie : 21 bascules.

    Ce qui fait un total de 73 bascules.

    A. Synthse

    La commande do_build_generic fait la synthse du VHDL et donne dans le rapport leslments squentiels du circuit.

    +------------------------------------------------------------------------------------+

    | Sequential Elements |

    |------------------------------------------------------------------------------------|

    | Module | File | Line | Name | Type | Width | AS | AR | SS | SR |

    +--------+--------------------+------+------------+------+-------+----+----+----+----+

    | unit1 | /nfs/user/eleve/i4 | 26 | I_1_reg | FF | 1 | N | Y | N | N |

    | | /cuenods/VHDL/unit | | | | | | | | |

    | | 1.vhd | | | | | | | | |

    | unit1 | /nfs/user/eleve/i4 | 26 | I_2_reg | FF | 1 | N | Y | N | N |

    | | /cuenods/VHDL/unit | | | | | | | | |

    | | 1.vhd | | | | | | | | |

    | unit1 | /nfs/user/eleve/i4 | 37 | cmpt30_reg | FF | 1 | N | Y | N | N |

    | | /cuenods/VHDL/unit | | | | | | | | |

    | | 1.vhd | | | | | | | | |

    | unit1 | /nfs/user/eleve/i4 | 37 | cmpt_reg | FF | 5 | N | Y | N | N |

    | | /cuenods/VHDL/unit | | | | | | | | |

    | | 1.vhd | | | | | | | | |

    | unit1 | /nfs/user/eleve/i4 | 51 | V_temp_reg | FF | 21 | N | Y | N | N |

    | | /cuenods/VHDL/unit | | | | | | | | |

    | | 1.vhd | | | | | | | | |

    | unit1 | /nfs/user/eleve/i4 | 62 | V_int_reg | FF | 21 | N | Y | N | N |

    | | /cuenods/VHDL/unit | | | | | | | | |

    | | 1.vhd | | | | | | | | |

    | unit1 | /nfs/user/eleve/i4 | 72 | V_reg | FF | 21 | N | Y | N | N |

    | | /cuenods/VHDL/unit | | | | | | | | |

    | | 1.vhd | | | | | | | | |

    +------------------------------------------------------------------------------------+

  • 7/25/2019 Proje Tv Hdl

    13/19

    Charles Sylvain Projet EL411

    ESIEE 2004/2005 13

    +-------------------------------------------------------------------------------------+

    | Sequential Elements |

    |-------------------------------------------------------------------------------------|

    | Module | File | Line | Name | Type | Width | AS | AR | SS | SR |

    +--------+--------------------+------+-------------+------+-------+----+----+----+----+

    | mde | /nfs/user/eleve/i4 | 34 | present_reg | FF | 2 | N | Y | N | N |

    | | /cuenods/VHDL/mde. | | | | | | | | |

    | | vhd | | | | | | | | |

    +-------------------------------------------------------------------------------------+

    Le total des bascules utilises correspond au calcul manuel prcdent de 73 bascules. Bien

    que ceci ne garantisse pas forcement un fonctionnement correct, cela permet de faire une

    vrification de notre description et le rsultat est conforme nos attentes. De plus, on

    remarque dans la colonne Typequil ny a pas de bascules Latch.

    B. Optimisation

    Ensuite nous ralisons loptimisation de notre circuit avec les paramtres par dfaut pour quil

    prenne le moins de surface possible et ait une vitesse de fonctionnement satisfaisante. Lersultat la commandedo_optimizedonne la taille prise par le composant, mais ne calcul pas le

    temps de propagation maximum (worst slack) car nous navons pas encore mis de contrainte

    de temps.

    +-----------------------------------------------------------------------+

    | Mvitesse |

    |-----------------------------------------------------------------------|

    | Cell area | Total area | Worst slack | Local slack | CPU(s) Mem(M) |

    |-------------+-------------+-------------+-------------+---------------|

    | 913.50 | 913.50 | +INF | | 29 60 |

    +-----------------------------------------------------------------------+

    La commande report_areapermet dobtenir le dtail des surfaces en fonction des blocs.

    +----------------------------------------------------------------+

    | Module | Wireload | Cell Area | Net Area | Total Area |

    |------------+------------+------------+------------+------------|

    | Mvitesse | B0X0 | 913.50 | 0.00 | 913.50 |

    | mde | B0X0 | 26.00 | 0.00 | 26.00 |

    | unit1 | B0X0 | 887.50 | 0.00 | 887.50 |

    | AWDP_INC_0 | B0X0 | 99.00 | 0.00 | 99.00 |

    +----------------------------------------------------------------+

    C. Contraintes de temps

    Nous dfinissons des contraintes temporelles pour sassurer que notre circuit aura un temps de

    rponse suffisamment rapide. Pour cela nous dfinissons notre horloge une priode de 40 ns

    comme prcis dans le cahier des charges. Nous dfinissons aussi un temps de dlai par

    rapport lhorloge de 5 ns pour les entres et de 25 ns pour les sorties afin de sassurer que le

    circuit sera fonctionnel au maximum avec ces dlais. Les valeurs sont choisies pour tre

    cohrentes avec la frquence de lhorloge, mais le cahier des charges ne prcisant pas ces

    paramtres, les valeurs ne sont quindicatives.

    set_input_delay -clock horloge 5 {Rq I}

    set_external_delay -clock horloge 25 {V Ack}

  • 7/25/2019 Proje Tv Hdl

    14/19

    Charles Sylvain Projet EL411

    ESIEE 2004/2005 14

    Avec les contraintes temporelles, lorsque lon refait loptimisation, le rsultat donne en plus

    de la surface le temps maximum de propagation. Ici la surface ne varie pas avec

    loptimisation prcdente car les contraintes de temps ne sont pas trs leves. Le temps de

    worst slackest de 14,0689 ns ce qui est largement infrieur la priode de lhorloge de 40 ns,

    donc il ny a pas de conflit.

    +-----------------------------------------------------------------------+

    | Mvitesse |

    |-----------------------------------------------------------------------|

    | Cell area | Total area | Worst slack | Local slack | CPU(s) Mem(M) |

    |-------------+-------------+-------------+-------------+---------------|

    | 913.50 | 913.50 | 14.0689 | | 83 65 |

    +-----------------------------------------------------------------------+

  • 7/25/2019 Proje Tv Hdl

    15/19

    Charles Sylvain Projet EL411

    ESIEE 2004/2005 15

    Conclusion

    Le projet prsent a t fini dans les temps et rpond au cahier des charges. La simulation

    montre un fonctionnement correct du circuit et loptimisation ne rvle aucune erreur.

    Cependant, mme si tout semble fonctionner correctement, rien ne nous assure que leprogramme une fois implment dans un FPGA fonctionnera galement. Pour cela, il aurait

    fallu, dans la continuit de notre simulation, faire une simulation post-fit qui prend en compte

    les temps de propagation et de commutation des bascules (dpendante du composant choisit)

    et enfin implmenter rellement le programme dans un FPGA pour effectuer des tests.

    Malheureusement, le temps impartit pour ce projet ne nous a pas permis darriver jusqu' la

    partie finale du dveloppement dun circuit.

  • 7/25/2019 Proje Tv Hdl

    16/19

    Charles Sylvain Projet EL411

    ESIEE 2004/2005 16

    ANNEXE 1 : CODES SOURCES

    Entit principalelibrary ieee;

    use ieee.std_logic_1164.all;

    entity Mvitesse is

    port (

    --Entrees

    clk : in std_logic;

    Raz : in std_logic;

    I : in std_logic;

    Rq : in std_logic;

    --Sorties

    V : out std_logic_vector(20 downto 0);Ack : out std_logic);

    begin

    end entity;

    architecture cool of Mvitesse is

    signal Stop : std_logic; --Bloque la sortie

    begin

    -- Machine dtat

    mde : entity work.mde(cool)

    port map (clk=>clk, Raz=>Raz, Rq=>Rq, Ack=>Ack, Stop=>Stop);

    -- Gnration Vitesse

    cmpts : entity work.unit1(cool)

    port map (clk=>clk, Raz=>Raz, I=>I, V=>V, Stop=>Stop);

    end architecture;

    Machine dtat

    library ieee;

    use ieee.std_logic_1164.all;

    use ieee.numeric_std.all;

    entity mde is

    port (

    --Entrees

    clk : in std_logic;

    Raz : in std_logic;

    Rq : in std_logic;

    --Sorties

    Ack : out std_logic;

    Stop : out std_logic); --Bloque la sortie

    end entity mde;

    architecture cool of mde is

    type state is (Attente, Request, Acknowledge);

    signal present, futur : state;

    begin

  • 7/25/2019 Proje Tv Hdl

    17/19

    Charles Sylvain Projet EL411

    ESIEE 2004/2005 17

    evolution: process(present, Rq)

    begin

    case present is

    when Attente => futur

  • 7/25/2019 Proje Tv Hdl

    18/19

    Charles Sylvain Projet EL411

    ESIEE 2004/2005 18

    I_f

  • 7/25/2019 Proje Tv Hdl

    19/19

    Charles Sylvain Projet EL411

    end architecture cool;

    Fichier de simulation

    library ieee;

    use ieee.std_logic_1164.all;

    entity Sim is

    begin

    end entity;

    architecture cool of Sim is

    --Entrees fictives

    signal clk : std_logic := '0';

    signal Raz : std_logic;

    signal I : std_logic := '0';

    signal Rq : std_logic := '0';

    --Sorties fictivessignal V : std_logic_vector(20 downto 0);

    signal Ack : std_logic;

    begin

    Mvitesse : entity work.Mvitesse(cool)

    port map (clk=>clk, Raz=>Raz, Rq=>Rq, Ack=>Ack, V=>V, I=>I);

    clk