projet VHDL

download projet VHDL

of 19

Transcript of projet VHDL

  • 8/14/2019 projet VHDL

    1/19

  • 8/14/2019 projet VHDL

    2/19

    Charles Sylvain Projet EL411

    ESIEE 2004/2005 2

    SOMMAIRE

    I. DESCRIPTION DU PROJET........................................................................................... 3 A. L ES ENTREES /SORTIES .................................................................................................... 3B. C ONTRAINTES ET CARACTERISTIQUES ............................................................................ 3C. D ESCRIPTION DU COMPOSANT .........................................................................................4

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

    A. L E DETECTEUR DE FRONT ................................................................................................ 6B. L E COMPTEUR MODULO 30 .............................................................................................. 6C. L E COMPTEUR DE VITESSE ET LE BLOC SAUVEGARDE ET FIXATION ............................ 7

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

    A. P ROTOCOLE DE COMMUNICATION ................................................................................... 8B. P RINCIPE DE FONCTIONNEMENT ...................................................................................... 8

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

    A. D ESCRIPTION DE LA SIMULATION .................................................................................... 9B. E XEMPLES DE FONCTIONNEMENT .................................................................................. 10

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

    A. S YNTHESE ..................................................................................................................... 12B. O PTIMISATION ............................................................................................................... 13C. C ONTRAINTES DE TEMPS ............................................................................................... 13

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

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

  • 8/14/2019 projet VHDL

    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 enpratique les connaissances acquises pendant un mois et demi. Lexemple concret propos icinous permet ainsi de raliser un circuit, du cahier des charges jusqu la simulation, sansoublier 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. Uncapteur 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 dumoteur.

    Pour raliser ce systme, nous avons dcid de crer un compteur qui, chaque fois que lemoteur fait un tour, envoie sa valeur sur la sortie. Le compteur est incrment chaque frontdhorloge.

    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

  • 8/14/2019 projet VHDL

    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 frontsdhorloge.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 alorselle ne sera pas dtecte et que si deux impulsions se suivent de moins de 40 ns alors, ladeuxime impulsion sera ignore.

    2. Vitesse minimum

    La vitesse minimum souhaite est de 20 tours/s. Avec un bus de 21 bits, il est possible dedescendre 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 partour, cest dire 12 tours par secondes.

    3. Vitesse maximum

    La vitesse maximum du moteur pouvant tre calcule est directement lie avec la forme delimpulsion. La dure dune impulsion tant au minimum de 40 ns et le temps entre chaqueimpulsion tant galement de 40 ns, au maximum, on peut avoir 1 tour toutes les 2 400 ns, cequi correspond 416 666 tours par seconde. Physiquement, ce rsultat na pas beaucoupdimportance tellement sa valeur est grande mais cela montre que la frquence de lhorlogeest 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 valeurcorrespondant la vitesse du moteur et une partie machine dtat qui gre linterface avec lesystme 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.

  • 8/14/2019 projet VHDL

    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, dsque 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 lorsque

    le moteur a fait 1 tours. Un bloc qui sauvegarde et fige la valeur de la vitesse sur le bus V

    Partie Combinatoire

  • 8/14/2019 projet VHDL

    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 estdtect, la sortie I_f passe 1 pendant 1 cycle dhorloge. I_f est ensuite branch sur lecompteur 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 parlintermdiaire de I_f . Une fois les 30 impulsions atteintes, le compteur gnre un signalcmpt30 pendant une priode de lhorloge qui indique au compteur de vitesse de sauvegardersa valeur et de recommencer zro.

    Voici le schma du compteur modulo 30 :

    Compteur modulo 30

    Le bloc CMP est un comparateur qui teste si cmpt est gal 29. Si cest le cas, cmpt30 estgnr et le compteur de vitesse remis zro.

  • 8/14/2019 projet VHDL

    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 quiest 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 chaquefois que le moteur fait 1 tour. Cest un simple multiplexeur avec une bascule qui permet defaire cet tage pour chaque bit du registre.Enfin, ltage de fixation permet de fixer la valeur de sortie pendant que le systme externe lalit. 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 ligne Rq (Request), la machine dtatbloque la sortie avec le signal Stop puis autorise la lecture avec la ligne Ack (Acknowledge).Le systme a galement t ralis de manire ce que, si la valeur de V_int change alors queStop est 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 ainsiconomiser, 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_temp change pendant que la fixation est bloquepar Stop , alors la valeur est perdue et il faut donc attendre 1 tour supplmentaire pour avoir lanouvelle valeur. Le choix de la solution dpend donc de la politique adopte, cest dire silon veut un systme qui prend trs peu de place ou si lon veut un systme qui ragit trs viteLa solution pourrait dpendre galement de la vitesse du moteur. Si le moteur est trs lent, lasolution 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.

  • 8/14/2019 projet VHDL

    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, nousutilisons un protocole de communication asynchrone nomm handshaking. Le fonctionnementde ce systme est le suivant, lorsque le systme externe veut lire la valeur de V, il envoie unerequte en mettant la ligne Rq (Request) du composant ltat haut. Notre composant dtectecette requte et fixe la valeur de V pour sassurer que cette valeur ne sera pas modifier avantla 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 notrecomposant 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 lavaleur 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 le

    signal Acknowledge est 0. De plus lorsque lon est dans cet tat, la valeur de V peutchanger, donc le signal Stop est 0. Lorsquune requte est dtecte, la machine dtatpasse 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 machinedtat 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

  • 8/14/2019 projet VHDL

    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 0ce 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 est

    asynchrone, 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 systmeexterne grce un fichier VHDL de simulation Sim.vhd. Ce fichier nous permet de simuler lecomportement de Mvitesse (lentit de notre projet) en rponse aux signaux extrieursRequest, Impulsion, Horloge, et RAZ. Ces signaux sont dcrits manuellement pour simulerun fonctionnement rel, par exemple lhorloge est dcrite comme un signal carr de demi-priode 40ns (frquence de 25Mhz).

    clk

  • 8/14/2019 projet VHDL

    10/19

    Charles Sylvain Projet EL411

    ESIEE 2004/2005 10

    Pour observer le comportement du circuit nous observons les chronogrammes des signauxexternes (clk, acknowledge, impulsion, raz, request, vitesse), mais nous observons aussicertains signaux internes qui nous permettent de suivre plus facilement le droulement de lasimulation, 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 composantreprsentant la vitesse. Vers 3700 ns le moteur a effectu son premier tour car le compteurdimpulsion arrive 29. cmpt30 passe donc 1 pendant un cycle dhorloge afin dindiquerquil faut afficher la nouvelle valeur de V . V_int qui sauvegarde la valeur de la vitesse est mis la nouvelle valeur de la vitesse, cest dire la valeur du compteur V_temp . Au coupdhorloge suivant V affiche la nouvelle valeur de la vitesse qui est 93 dans notre cas. Lescompteurs de vitesse et dimpulsions sont remis zro. On peut vrifier que le compteurmodulo 30 est bien incrment chaque impulsion I . De mme le compteur qui indique lavitesse 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 demandede lecture. On simule 4000 ns un Request du systme extrieur. Deux coups dhorloge plustard (le temps de certifier que V est fixe en passant par ltat Request de notre machinedtat), Ack passe 1 pour indiquer quune lecture est possible. Lorsque la lecture a teffectue ( Rq passe zro), Ack repasse zro pour indiquer au systme extrieur quil peut

    nouveau demander une lecture.

    Deuxime chronogramme

    Pour vrifier que V est bien bloqu lorsquil y a une lecture on r effectue une simulation maisen 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 Requesten prenant la nouvelle valeur. Ltage de sauvegarde de la partie logique nest utile que danscette 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 nouvellevaleur de la vitesse mais quelle nest pas affecte V. Ds que la lecture est termine, Stoprepasse 0 et V prend la nouvelle valeur de la vitesse qui avait t sauvegarde dans V_int.Le fonctionnement est conforme nos attentes.

  • 8/14/2019 projet VHDL

    11/19

    Charles Sylvain Projet EL411

    ESIEE 2004/2005 11

  • 8/14/2019 projet VHDL

    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 deplace et/ou de vitesse du circuit une fois implments.

    Le rapport de loptimisation permet dans certains cas de dtecter des erreurs de conceptionpour un circuit. La prsence de latch non voulues par exemple, ou dun nombre plus importantde bascules que prvu indiquent des erreurs non dtectes la compilation.

    Pour vrifier que le nombre de bascules correspond notre description du systme, nousavons 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 6bascules.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 | | | | | | | | |+------------------------------------------------------------------------------------+

  • 8/14/2019 projet VHDL

    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. Bienque ceci ne garantisse pas forcement un fonctionnement correct, cela permet de faire unevrification de notre description et le rsultat est conforme nos attentes. De plus, onremarque dans la colonne Type quil ny a pas de bascules Latch.

    B. Optimisation

    Ensuite nous ralisons loptimisation de notre circuit avec les paramtres par dfaut pour quilprenne le moins de surface possible et ait une vitesse de fonctionnement satisfaisante. Lersultat la commande do_optimize donne la taille prise par le composant, mais ne calcul pas letemps de propagation maximum ( worst slack ) car nous navons pas encore mis de contraintede temps.

    +-----------------------------------------------------------------------+| Mvitesse ||-----------------------------------------------------------------------|| Cell area | Total area | Worst slack | Local slack | CPU(s) Mem(M) ||-------------+-------------+-------------+-------------+---------------|| 913.50 | 913.50 | +INF | | 29 60 |+-----------------------------------------------------------------------+

    La commande report_area permet 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 derponse suffisamment rapide. Pour cela nous dfinissons notre horloge une priode de 40 nscomme prcis dans le cahier des charges. Nous dfinissons aussi un temps de dlai parrapport lhorloge de 5 ns pour les entres et de 25 ns pour les sorties afin de sassurer que lecircuit sera fonctionnel au maximum avec ces dlais. Les valeurs sont choisies pour trecohrentes avec la frquence de lhorloge, mais le cahier des charges ne prcisant pas cesparamtres, les valeurs ne sont quindicatives.

    set_input_delay -clock horloge 5 {Rq I}

    set_external_delay -clock horloge 25 {V Ack}

  • 8/14/2019 projet VHDL

    14/19

    Charles Sylvain Projet EL411

    ESIEE 2004/2005 14

    Avec les contraintes temporelles, lorsque lon refait loptimisation, le rsultat donne en plusde la surface le temps maximum de propagation. Ici la surface ne varie pas avecloptimisation prcdente car les contraintes de temps ne sont pas trs leves. Le temps deworst slack est 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 |+-----------------------------------------------------------------------+

  • 8/14/2019 projet VHDL

    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 simulationmontre 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 auraitfallu, dans la continuit de notre simulation, faire une simulation post-fit qui prend en compteles 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' lapartie finale du dveloppement dun circuit.

  • 8/14/2019 projet VHDL

    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 isport (

    --Entreesclk : 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);beginend entity;

    architecture cool of Mvitesse issignal Stop : std_logic; --Bloque la sortiebegin

    -- Machine dtatmde : entity work.mde(cool)

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

    -- Gnration Vitessecmpts : 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 isport (

    --Entreesclk : in std_logic;Raz : in std_logic;Rq : in std_logic;--SortiesAck : out std_logic;Stop : out std_logic); --Bloque la sortie

    end entity mde;

    architecture cool of mde istype state is (Attente, Request, Acknowledge);signal present, futur : state;begin

  • 8/14/2019 projet VHDL

    17/19

    Charles Sylvain Projet EL411

    ESIEE 2004/2005 17

    evolution: process(present, Rq)begincase present iswhen Attente => futur

  • 8/14/2019 projet VHDL

    18/19

    Charles Sylvain Projet EL411

    ESIEE 2004/2005 18

    I_f

  • 8/14/2019 projet VHDL

    19/19

    Charles Sylvain Projet EL411

    end architecture cool;

    Fichier de simulation

    library ieee;use ieee.std_logic_1164.all;

    entity Sim isbeginend entity;

    architecture cool of Sim is--Entrees fictivessignal 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