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 CamScannerExercice3: _ . .
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 CamScanner2) 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 CamScannerExercicel:
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 CamScannerExereice2:
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 CamScannerarchitecture 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 CamScannerSerr > 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 CamScannerLibrary 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 CamScannerlibrary 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 CamScannerou 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 CamScannerCOMB_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