Vous êtes sur la page 1sur 2

ELN/FGEI/UMMTO

Partiel FPGA & VHDL


Master 1 Électronique des Systèmes Embarqués
04 Novembre 2020 - Durée 1h30mn

Exercice 1 : (8 pts) Compteur/décompteur BCD avec entrée de préchargement


On désire implémenter un compteur/décompteur avec entrée de préchargement et sortie 7 Segments (Voir
figure ci-dessous)
Ce système est composé d’un Compteur/décompteur BCD suivi d’un décodeur BCD 7 Segments.
Qin
a
CD
Compteur/ Décodeur f b
Load g
Décompteur BCD/
Hin BCD Qout 7Segments e c

d
Reset Hout

Figure 1: Compteur/décompteur BCD à sorties 7 Segments


Les entrées du système sont :
→ CD permet de de sélectionner le comptage (CD=1) ou décomptage (CD=0).
→ Load permet de charger le compteur avec la valeur présente sur l’entrée Qin.
→ Hin signal d’horloge du compteur
→ Reset entrée de mise à zéro asynchrone du compteur (indépendante de Hin)
Et ses sorties sont :
→ Hout est une sortie d’horloge qui génère un front montant à chaque fois que le comptage passe de 0 à 9
(cas du décomptage) ou de 9 à 0 (dans le cas du comptage).
→ S est la sortie servant à piloter un afficheur 7 segments.
1. Donnez la description VHDL de ce circuit en implémentant d’abord le compteur BCD et le décodeur
comme des composants.
2. En utilisant ce circuit, réaliser un compteur/décompteur à 4 Digits (allant de 0000 ↔ 9999) qui sera
utilisé pour une bobineuse. Un capteur optique permet d'avoir le nombre de tours effectué par la
bobineuse
Donner d’abord le schéma de brochage en considérant le circuit précédent comme un composant,
puis sa description VHDL.

Exercice 2 : (6 pts) Générateur de fréquences : T Q


• Donnez la description VHDL de la bascule T dont le
fonctionnement est le suivant : Bascule
T H Q T
H
0 | Q
1 | Q Figure 2: Bascule T
On souhaite implémenter un diviseur de fréquence à base de bascule T dont le circuit est donnée sur la
figure ci-dessous. Son fonctionnement est le suivant :
Le circuit recevra sur son entrée Clk un signal carrée de fréquence f.
Start

T Q T Q T Q S8
Bascule Bascule Bascule Fréq. f/8
T T T
Clk
H H H S4
Fréquence f Fréq. f/4
S2
Fréq. f/2
Figure 3: Diviseur de fréquence

1/2
ELN/FGEI/UMMTO
Partiel FPGA & VHDL
Master 1 Électronique des Systèmes Embarqués
04 Novembre 2020 - Durée 1h30mn

Si :
→ Start=0, les sorties restent inchangées
→ Start=1, chaque bascule divisera la fréquence du signal à son entrée H par 2. En sortie on aura alors S8
qui sera un signal carrée de fréquence f/8, S6 de fréquence f/4 et enfin S2 de fréquence f/2.
• Donnez la description VHDL de ce diviseur de fréquence en considérant la bascule T comme un
composant (déjà implémenté dans la première partie de l’exercice)

Exercice 1 : (6 pts)
→ Quelle est la fonction (détaillée) de la description VHDL suivante : Préciser les entrées sorties sur un
schéma bloc.
→ Quel est le rôle de chacune des sorties du circuit (ZERO, CARRY, ….)
LIBRARY IEEE;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

ENTITY MTH IS
PORT( X : IN UNSIGNED (7 DOWNTO 0);
Y : IN UNSIGNED (7 DOWNTO 0);
OP : IN UNSIGNED (2 DOWNTO 0);
QOUT : OUT UNSIGNED (7 DOWNTO 0);
ZERO : OUT STD_LOGIC ;
CARRY : OUT STD_LOGIC ;
UPPER : OUT STD_LOGIC ;
LOWER : OUT STD_LOGIC ;
EQUAL : OUT STD_LOGIC
);
END MTH;

ARCHITECTURE cal OF MTH IS


SIGNAL RESULT : UNSIGNED (8 DOWNTO 0);
BEGIN
PROCESS (X, Y, OP)
BEGIN
ZERO <= '1' WHEN RESULT(7 DOWNTO 0) = "00000000" ELSE '0';
IF X > Y THEN UPPER <= '1';
ELSE IF X=Y THEN EQUAL <= '1' ;
ELSE LOWER <= '1' ;
ENDIF ;
END IF ;
WITH OP SELECT RESULT <=
('0'& A ) + ('0'& B) WHEN "000",
('0'& A ) - ('0'& B) WHEN "001",
('0'& A ) * ('0'& B) WHEN "010",
('0'& A ) / ('0'& B) WHEN "011",
('0'& A ) AND ('0'& B) WHEN "100",
('0'& A ) OR ('0'& B) WHEN "101",
('0'& A ) XOR ('0'& B) WHEN "110",
NOT ('0'& A ) WHEN "111",
"000000000" WHEN others;
END PROCESS ;
QOUT <= RESULT (7 DOWNTO 0);
CARRY <= RESULT(8);
END cal;

2/2

Vous aimerez peut-être aussi