0% ont trouvé ce document utile (0 vote)
253 vues12 pages

TD FPGA

Transféré par

dbmariem8
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
253 vues12 pages

TD FPGA

Transféré par

dbmariem8
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF ou lisez en ligne sur Scribd
Prototypage SoC sur FPGA Exercicel: Tl nous faut un circuit pour réaliser la forme donde ci-dessous: Donner d'abord l'entité de ce circuit et puis architecture. 2 pirodes 3 pétiodes > + cK mv FLL [| I ae SIG_OUT FPGA [> CLK IN SIG OUT Exercice2: On désire réaliser une fonction dont la sortie $ recopie l'état logique présent sur son entrée E sicelle-ci est restée stable aprés 2 coups d’horloge successifs. L’entrée RAZ a été rajoutée afin que l'état initial du systéme soit défini. De facon plus générale, un systéme séquentiel doit toujours étre initialisé, de plus cette initialisation doit étre asynchrone. HOR RAZ QF2 |S E 4) Donner la représentation du diagramme de transition. 2) Donner le couple entité architecture. ‘Scanné avec CamScanner Exercice3: _ . . Réalisons un systme séquentiel détectant Je début et la fin d'une impulsion. Le chronogramme désiré est le suivant : sds sfs Le bilan des entrées et sorties est décrit ci-dessous, on y a ajouté la possibilité d’un reset avec Pentrée rst. . SS [+> sds rst =| [> sfs clk -—---————» 1) Donner la représentation en machine a états fini de type Moore et la description ‘VHDL correspondante, 2) Donner la représentation en machine a états fini de type Mealy et la description VHDL correspondante. Exerei Nous allons considérer la situation ou il y a une machine qui vend les films pour SDT. L'usager a le droit de mettre des pices de IDT ou de 2DT et des que le montant arrive a SD ou plus, il y aun film qui sort. I! est aussi possible de I’usager mette 6DT et dans ce cas, la ‘machine donne un film et remet aussi la monnaie, Nous voulons faire une machine de Moore et done, les sorties ne dépendent que le 'état. Une information de plus est que, si la personne mettait de l’argent pendant que le film sort, Irargent sera perdu, Avec cette description, il devrait déja étre possible de déterminer quelques entrées et sorties. Puisque est une machine & ¢tats, il doit y avoir une horloge, On peut soit insérer IDT, 2DT ‘ou rien, done on va avoir une entrée pour chaque type de monnaie. A la sortie, on peut soit donner un film ou soit donner un film et de la monnaie, 1) Décrire l"entté de cette machine a étas, ‘Scanné avec CamScanner 2) Compléter le diagramme de la machine a états en utilisant précisant les conditions de transition et les valeurs des ports de sortie & chaque état. 3) Donner la description VHDL adéquate en utilisant 2 processus (Get F combiné) et M. 2 ‘Scanné avec CamScanner Exercicel: Tl nous faut un circuit pour réaliser la forme donde ci-dessous: Donner d'abord lentité de ce circuit et puis l'architecture, 2plhiodes pnd cre Ngee tela eppledg elated Le ela ux IN —{rca + ‘iG oT Asbrary see use IEEE. std_logic_1164.al1; entity mealy is port (elk : in std_logic: output : out std_logic 1; end wealy: architecture behavioral of wealy is type state type i (init,s0,s1,s2,s3,s4); ~-type of state machine. signal curfent_s,next_s: state type: --current and next state declaration, begin process (clk) begin 42 (elk!event and elk='0') then current_s <= next_s? --state change. end 42; end process; process (current_s) begin ease current_s is ‘vhen init => scuhen current state is "s0” next_s <= 50; ourput <= '0'; vnen 20 => ccwhen current state is "s0” next_s <= sir oucpue <= 11+; when 91 => s-uhen current stace is "si" oucput <= 114; next_s <= 92; when 32 *> s-uhen current state is "s2" oucput <= '0'; next_s <= 937 when 33=> scuhen current state is "33" output <= 10"; next_s <* 847 when 94 => -vhen current state is output <= '0'; next_s <* 90; 3" end behavioral; ‘Scanné avec CamScanner Exereice2: On désire réaliser une fonction dont la sortie § recopie I’ état logique présent sur son entrée E si celle-ci est resiée stable aprés 2 coups d’horloge successifs. L'entrée RAZ a été rajoutée afin que |’état initial du systéme soit défini. De fagon plus générale, un systéme séquentie! doit toujours étre initialisé, de plus cette initialisation doit tre asynchrone. HOR >» RAZ ——> QF2. -—>S E—> 4) Donner la représentation du diagramme de transition, 2) Donner le couple entité architecture. DESCRIPTION EN VHDL library i use leve.std_logle_1164.ALL; entity MAE Is ~MAE = Machine A Etat port (E.RSTHOR : In STD_LOGIC; S: out STD_LOGIC ); end MAE; ‘Scanné avec CamScanner architecture COMPORTEMENT of MAE is. ‘signal REG_ETAT : STD_LOGIC_VECTOR(2 downto 0); process (HOR,RST) begin WRST=0' then REG_ETAT <= "000"; elsif (HOR’event and HOR=") then case REG_ETAT is when "000" => S WE="t' then REG_ETAT <= "001"; else REG_ETAT <= "000"; end if; when "001" => S="0'; iE ="1 then REG_ETAT <= "010%; ‘else REG_ETAT <= "000"; end if; when “010"=>S="0'; ifE="t' then REG_ETAT <= "011"; else REG_ETAT <= "0007; end if; when “011"=>S="1"; “t'then REG_ETAT <= "011%; ifE="1' then REG_ETAT <= "011"; else REG_ETAT <= "101"; cond if; when “101"=>S="0'; HE="t' then REG_ETAT <="011%; ‘else REG_ETAT <= "000"; end if; ‘when others => REG_ETAT<="00%; end case; end if; ‘end process ‘end COMPORTEMENT ; Exercice3: Réalisons un systéme séquentiel détectant le début et la fin d'une impulsion, Le chronogramme désiré est le suivant : s — sds sfs Le bilan des ends et sores est eri cdessous on aut a possbit un eset aveo ‘Scanné avec CamScanner Serr > sds rst [> sfs clk 1) Donner la représentation en machine & états fini de type Moore et la description VHDL correspondante. 2) Donner la représentation en machine 4 états fini de type Mealy et la: description VHDL correspondante, 4) Machine de Moore. Voici la machine de Moore répondant au cahier des charges ci-dessus : sds ‘Scanné avec CamScanner Library ieee? use deee.std_logic_1164.a11/ entity moorel 19 port( clk,rst : in std_logic: 3 1 in std_logic? ads,sts : Gut std_logic): end moore; architecture archnoore1 of moorel is type states is (s0,si,s2,33): signal state : states:=s0; begin moore: process (rst, clk) begin if (rste'a') then state <= 50; elsif ((clk'event) and (elk='1')) then case stare is vhen sO => if (s='1') then state <= 1; else state <= 0; end if; vhen #1 => state <= s2; hen s2 => if (s='0') then state <= 53; else state <= 52; end it? vhen s3 => state <= 0; end process: sds <= '1! WHEN (state=s1) else '0': sto <= '1' UHEN (state=23) else '0'? end archnoorel: 1) Machine de Mealy. Reprenons le méme probléme en le décrivant avec une machine de Mealy. Le graphe de cette machine est décrit ci-dessous : Is sfs Voi¢i la description vhdl correspondante : ‘Scanné avec CamScanner library ieee: use ieee.std_logic_1164.al1; entity mealyl is port( clk,rst : in std_logic; 8: in std_logic; sds,sts : out atd_logic); end mealyi; library ieee; use ieee.std_logic_1164.a11; architecture archmealy1 of mealyi is type states is (s0,si); begin nealy:process(rst,clk,s) variable state : states:=s0 ; begin if (rst=!1') then state : elsif ((clk'event) and (clk case state is vhen £0 => if (s=! else state := 50; end if; vhen #1 => if (s='0') then state := 50; 30; 1) then ') then state := st: else state := si: end if; end case; end it: == envoi des sorties if (state=s0) and (s='1') then sds <= '1'; else sds <= 'O'; end f7 if (statersi) and (s='0") then sfs <= '1'; else sfs <= ‘0's end if7 end process: end archwealyi; La machine d’état présentée a une structure différente de la machine de Moore. Ici ’état est mémorisé dans une variable appartenant au process. ( Et non plus l’architecture comme dans le cas précédent. ) Les évolutions de la machine d’état sont prises en compte en donnant une valeur la variable state par l’opérateur d'affectation : Les sorties sont done gérées & l'intérieur du process en fonction de la valeur de la variable Gat. Exercice4 Nous allons considérer Ia situation ow il y a une machine qui vend les films pour SDT. L'usager a le droit de mettre des pidees de IDT ou de 2DT et des que le montant arrive a SD ou plus, il y a un film qui sort. II est aussi possible de I'usager mette 6DT et dans ce cas, la machine donne un film et remet aussi la monnaic, Nous voulons faire une machine de Moore et done, les sorties ne dépendent que le I’état, Une information de plus est que, si la personne mettait de I’argent pendant que le film sort, argent sera perdu. Avec cette description, il devrait déja étre possible de déterminer quelques entrées et sorties. Puisque c’est une machine a états, il doit y avoir une horloge. On peut soit insérer IDT, 2DT 6 ‘Scanné avec CamScanner ou rien, donc on va avoir une entrée pour chaque type de monnaie, A la sortie, on peut soit donner un film ou soit donner un film et de la monnaie. 1) Décrire entité de cette machine a états. 2) Compléter le diagramme de la machine & états en utilisant précisant les conditions de transition et les valeurs des ports de sortie & chaque état. 3) Donner la description VHDL adéquate en utilisant 2 processus (Get F combing) et M. ° y library ieee: use ieee.std_logic_1164.a11; entity FSH 15 Port( elk,rat,Pi,P2 + in std logics filmmonaie : out std_logic wv end FSH: 2) ‘Scanné avec CamScanner ‘Scanné avec CamScanner COMB_G_F: process(present_state,P1,P2) begin case present_state is when Zero => filme='0' ;monnaie<*!0' if Pi =!1' then next_stacece uns elsif P2='1' then next_state<= deux; else next_state<= zeros end if; when un => film<='0! smonnate film<='0' ;monnate<=' 0": if Pi *!1' then next_statec= trois: elsif P2='1' then next_state<= quatre: else next_state<= deux? end it; vhen trois => film<='0! ;monnate<='0"; if Pi =!1' then next_state<= quatre; elsif P2='1' chen next_state<= cing? else next_state<= trois; end if; vhen quatre => £ilm<='0' :wonnaie<#! 0"; if Pl ='1' then next_state filmc=! 1! smonnate filmc=!1! ;monnatece!1!; next_state<= zero; end case; end process: end Moore; ‘Scanné avec CamScanner

Vous aimerez peut-être aussi