Vous êtes sur la page 1sur 8

Ministère de l’Enseignement Supérieur ‫وزارة التعليـم العالي و البحث العلمي‬

et de la Recherche Scientifique

Université de Carthage
‫جامعـة قرطاج‬

Ecole Nationale d’Ingénieurs de Carthage ‫المدرسـة الوطنية للمهندسين بقرطاج‬


Examen Principal de Circuits programmables et VHDL

Enseignant(es) :F. Ben Abdallah et Y. Lahbib Date : 11/01/2016 à 9h


Filière / Classe : 2 Ingénieur Mécatronique Durée : 1h30
Barème indicatif : Ex1 :4pts / Ex2 :8pts / Ex3 : 8pts Documents : aut. / non aut.
Nbre. de pages :2 Calculatrice : aut. / non aut.

Exercice I : Du code VHDL au circuit


entity transitm is Questions :
port (
hor, e : in bit ; I-1) Donner le circuit logique
s : out bit );
équivalent au code VHDL ci-
end transitm ;
contre.
architecture quasi_struct of transitm is
signal qa, qb : bit ;
begin
s <= qa xor qb ; I-2) Reprendre sur votre feuille
et compléter le chronogramme
schem : process (hor) ci-dessous
begin
if(hor’event and hor = '1')then
qa <= e ;
qb <= qa ;
end if;
end process schem ;
end quasi_struct ;

corr
2 points

2 points

1
Exercice II : Circuit de régulation de la température
Un capteur de température fournit la température ambiante sur 7 bits. Le but est de maintenir la
température d’une pièce à une consigne donnée. Une sortie sera appliquée (tout ou rien) à un circuit de
chauffage pour le faire fonctionner ou l’arrêter. On appellera CHAUF cette sortie (voir figure 1).
On veut concevoir une machine à 3 états finis qui opère comme suit :
Etat1- On mesure la température (appelée TEMP) et on la compare avec la consigne (appelée CONS).
Etat2- Dans le cas où une différence positive est constatée (consigne plus chaude que la pièce), on
envoie ‘1’ en sortie "CHAUF" pendant une durée de 2 minutes.
Etat3- A la fin de cette durée, on se met dans l’état attente pendant 4 minutes où la sortie reste à ‘0’ et
ensuite on repart à l’état1 où une nouvelle lecture de température sera faite.

L’interface externe du circuit de contrôle est la présentée en figure 1. Les ports MCLK,
EN_1SEC et CHAUF sont codés sur 1 bit. On suppose que l’entrée EN_1SEC est délivrée par un
temporisateur externe qui génère une impulsion de 1 cycle à chaque seconde, il sert pour le calcul des
durées des étapes 2 et 3.

Figure 1.
II-1) Donner la machine à état Finis du système.

3 points

II-2) Donner le code VHDL correspondant au système.

1 point

architecture FSM of temp_cntrl is


0.5 Point
type Tstate (Etat1,Etat2,Etat3) ;
signal etat_present, etat_suiv : Tstate ;
begin

process(MCLK)
begin
if MCLK’event and MCLK=’1’ then 1 Point
etat_present <= etat_suiv;
end if;
end process;
2
process(EN_1SEC)
variable diff : std_logic_vector(6 downto 0);
variable cmpt: integer;
begin
If EN_1SEC =’1’ then
case etat_present is
when Etat1=>
diff:= CONS-TEMP; 2.5 Points
if diff(6)=’0’ then
etat_suiv<= Etat2 ;
Else etat_suiv<= Etat1 ;
End if ;
When Etat2=>
CHAUF<=’1’;
Cmpt:=cmpt+1;
End if ;
If cmpt= 120 then
cmpt:= 0
etat_suiv<= Etat3 ;
Else etat_suiv<= Etat2 ;
End if ;
When Etat3=>
CHAUF<=’0’;
Cmpt:=cmpt+1;
End if;
If cmpt= 240 then
etat_suiv<= Etat1 ;
cmpt:= 0
Else etat_suiv<=3;
End if;
End case;
End if;
End process;
End FSM;
Exercice III : Codeur AMI d’une ligne de transmission
Dans les transmissions téléphoniques à grande distance, les informations transitent sous forme
numérique, transmises en série (un bit à la fois), au rythme d’une horloge. Le code binaire utilisé est
transformé en un code à 3 niveaux de tension sur la ligne (câble coaxial, par exemple) comme le montre
la figure 2.
 Un ZERO logique correspond toujours à une
tension nulle,
 Les niveaux logiques UN sont représentés par
des impulsions, qui durent une période de
l’horloge de transmission, alternativement
positives et négatives, d’où le nom du code
AMI.
 On notera que le système doit se « souvenir »
de la polarité de la dernière impulsion
transmise pour fonctionner correctement.
Figure 2.

La création des impulsions alternées passe par un changement de code : le codeur reçoit l’horloge
d’émission, hor, et les données à transmettre, din. Il fournit en sortie deux signaux binaires que nous
nommerons plus et moins, générés suivant l’algorithme ci-dessous :
 si din = ‘0’ : plus = ‘0’ , moins = ‘0’ ;
 si din = ‘1’ : plus = ‘1’ , moins = ‘0’ ou plus = ‘0’ , moins = ‘1’, en alternance.

3
On se propose d’étudier plusieurs solutions pour réaliser ce codeur. L’idée générale est de réaliser une
machine synchrone à quatre états, conformément à la figure 3.

Figure 3.
III-1) C’est une machine de Moore ou de Mealy ?
Moore, sorties en fonction de l’état uniquement
III-2) Proposer le code VHDL de ce codeur.
entity amicod is
port( hor, din : in std_logic ;
plus, moins : out STD_LOGIC ); 0.5 Points
end amicod ;

architecture sort_decode of amicod is


type ami is (etat0,etat1,etat2,etat3) ;
signal etat, etsuiv : ami ; 0.5 Points
begin

plus <= '1' when etat = etat0 else '0' ;


1 Point
moins <= '1' when etat = etat2 else '0' ;

reg :process(hor)
begin
if (hor’event and hor=’1’) then
etat <= etsuiv;
1 Point
end if;
end process reg ;

encode : process(din,etat)
begin
--default value
etsuiv <= etat0;

case etat is
when etat0 =>
if din=’0’ the etsuiv <= etat1;
else etsuiv <= etat2; end if;
when etat1 =>
if din=’1’ the etsuiv <= etat2; 2 Points
else etsuiv <= etat1; end if;
when etat2 =>
if din=’1’ the etsuiv <= etat0;
else etsuiv <= etat3; end if;
when etat3 =>
if din=’1’ the etsuiv <= etat0;
else etsuiv <= etat3; end if;
when others;
end case;
end process encode;

end sort_decode; --architecture

4
III-3) Si on utilise deux bascules pour représenter les 4 états, donner le circuit logique du circuit
électronique du codeur.

2 Points

5
6
7
8

Vous aimerez peut-être aussi