Vous êtes sur la page 1sur 7

UNIVERSITE DE GABES ‫جــامعة قابس‬

Institut Supérieur de l’Informatique


de Médenine ‫المعهد العالي لإلعالمية بمدنين‬

Matière : Architecture des Systèmes Programmables


Enseignante : Dr Intissar TOIHRIA
Filière : MR Electronique et Système de Communication
A.U. : 2019/2020

Travaux Dirigés 3 : Les circuits logiques séquentielles

Correction Exercice 1 : Réalisation des bascules


A. Réalisation d’une bascule D synchrone avec RAZ asynchrone
Réaliser en langage VHDL une bascule D synchrone, sensible sur le front montant du signal
d’horloge CLK, avec remise à zéro asynchrone RAZ (active à zéro). Expliquez, quel est le
signal prioritaire: CLK ou RAZ.
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use ieee.std_logic_unsigned.all;
entity BASCULE_D_RAZ is
port (
D, CLK, RESET : in std_logic;
Q : out std_logic);
end BASCULE_D_RAZ
architecture DESCRIPTION of BASCULE_D_RAZ is
begin
PRO_BASCULE_D_RAZ : process (CLK, RESET)
Begin
if (RESET =’1’) then
Q <= ‘0’;
elsif (CLK'event and CLK ='1') then
Q <= D;
end if;
end process PRO_BASCULE_D_RAZ;
end DESCRIPTION;
B. Réalisation d’une bascule T (synchrone)
Réaliser en langage VHDL une bascule T (toggle) synchrone, sensible sur le front montant du
signal d’horloge CLK.
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use ieee.std_logic_unsigned.all;
entity BASCULE_T is
port (
T,CLK : in std_logic;
Q : inout std_logic);
end BASCULE_T;
architecture DESCRIPTION of BASCULE_T is
begin
PRO_BASCULET : process (CLK)
Begin
if (CLK'event and CLK ='1') then
if (T=’1’) then
Q <= not (Q);
end if;
end if;
end process PRO_BASCULET;
end DESCRIPTION;
C. Réalisation d’une bascule JK (synchrone)
Réaliser en langage VHDL une bascule JK synchrone, sensible sur le front descendant du
signal d’horloge CLK.
Exercice 2 : Réalisation des registres
A. Réalisation d’un registre de 8 bits
L’exemple suivant décrit un registre 8 bits :
library IEEE;
use IEEE.std_logic_1164.all;
entity reg is
port ( D : in std_logic_vector(7 downto 0);
clear : in std_logic;
load : in std_logic;
clk : in std_logic;
Q : out std_logic_vector(7 downto 0)
);
End reg;
Architecture comporte of reg is
Begin
Process(clk, clear)
Begin
if (clear ='1') then
Q <= (others => '0'); -- tous les bits de Q à 0
elsif (clk 'event and clk ='1') then
if (load ='1') then
Q <= D;
end if;
end if;
end process;
end comporte ;

B. Réalisation d’un registre synchrone de 8 bits avec la remise à zéro


Réaliser en langage VHDL un registre synchrone de 8 bits, sensible sur le front montant du
signal d’horloge CLK. L’écriture dans le registre est autorisée si le signal ENABLE est égal
à un. Le signal RAZ doit être actif à un.

C. Réalisation d’un registre à décalage


Réaliser en langage VHDL un registre à décalage, sensible sur le front montant du signal
d’horloge CLK, avec un signal CLEAR asynchrone (active à niveau haut), en utilisant une
boucle for

Le registre à décalage est à peine plus compliqué à décrire que le registre simple. Il nécessite
l’utilisation d’une boucle for :
library IEEE;
use IEEE.std_logic_1164.all;
entity shift is
port ( CLK : in std_logic ;
CLEAR : in std_logic;
CE : in std_logic;
Din : in std_logic;
Q : out std_logic_vector(7 downto 0));
end shift;
architecture RTL of shift is
signal Qint : std_logic_vector(Q'range);
begin
process(CLK, CLEAR)
begin
if (CLEAR='1') then
Qint <= (others => '0');
elsif (CLK'event and CLK='1') then
if (ce = '1') then
for i in 1 to 7 loop
Qint(8-i) <= Qint(7-i);
end loop;
Qint (0) <= Din;
end if;
end if;
end process;
Q <= Qint;

End RTL ;

Exercice 3 : Réalisation d’une mémoire


Réalisation d’une mémoire c’est un jeu de 4 registres synchrones de 8 bits
Réaliser en langage VHDL une mémoire composée de 4 registres synchrones de 8 bits
sensible sur le front montant du signal d’horloge CLK. Ecriture dans la mémoire est autorisée
avec le niveau zéro du signal N_WR.

Exercice 4 : Réalisation d’un diviseur de fréquence par deux


Il s’agit de créer une entité permettant de diviser la fréquence d’horloge CLK par deux. Le
schéma de cette unité basée sur une bascule D est présenté sur la Figure ci-dessous.
Exercice 5 : Réalisation des compteurs
Réaliser un compteur GRAY sur 3 bits
library IEEE;
use IEEE.std_logic_1164.all;
ENTITY cmpt-Gray IS
PORT ( clock: IN BIT;
q : OUT BIT_VECTOR(2 DOWNTO 0)
);
END cmpt-Gray;
ARCHITECTURE cmpt OF cmptGray IS
SIGNAL s_q : BIT_VECTOR(2 DOWNTO 0);
BEGIN
PROCESS (clock)
BEGIN
IF clock'EVENT AND clock='1' THEN
CASE s_q IS style
case when
WHEN "000" => s_q <="001";
WHEN "001" => s_q <="011";
WHEN "011" => s_q <="010";
WHEN "010" => s_q <="110";
WHEN "110" => s_q <="111";
WHEN "111" => s_q <="101";
WHEN "101" => s_q <="100";
WHEN OTHERS => s_q <="000";
END CASE;
END IF;
END PROCESS;
q <= s_q;
END cmpt;

Réaliser le code VHDL d’un compteur connecte à un afficheur 7 Segments

Vous aimerez peut-être aussi