Serie TD4 Bis
Serie TD4 Bis
Serie TD4 Bis
Département d’Electronique
Modélisation et Synthèse des Circuits Logiques
Exercice 3
Donner le schéma d'un registre 3 bits Utiliser des bascules D synchrones à front
programmable, à écriture et lecture en série par montant. Écrire le programme VHDL
décalage à droite ou à gauche, circulaire ou non. correspondant.
Prévoir deux entrées de programmation P1 et P2,
et donner le code de programmation choisi.
Exercice 4- Registere à décalage universel
Solution incomplète
1- Etablir le code vhdl d’un registre univesel Library ieee;
decrit ci-après use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.numeric_bit.all;
entity univ_shiftreg1 is port(
clk, il, ir : in bit; s: in bit_vector(1 downto 0);
i : in bit_vector(3 downto 0);
q : out bit_vector(3 downto 0));
end univ_shiftreg1;
architecture beh1 of univ_shiftreg1 is
signal qtmp : bit_vector(3 downto 0);
begin
process(clk)
begin if (clk = '1' and clk'event) then
case s is
when "00" => qtmp <= qtmp;
initialisation (INIT) when "01" => qtmp <= i;
lecture série ou parallèle (SSD, SSG, ou Qi) when "10" => qtmp<=qtmp(2 downto 0) & ir;
décalage à droite et à gauche (SENS) when "11" => qtmp<=il & qtmp(3 downto 1);
chargement série ou parallèle (MODE, ESD, when others => null;
ESG, Ei) end case;
2- En déduire le schéma logique. end if;
3- Donner une description structurelle à end process;
base de D Flip Flop q <= qtmp;
END beh1;
Les compteurs
Exercice 8 Compteur synchrone
1.Réaliser un compteur sur 4 bits par description comportementale.
2.Rajouter une entrée de remise à zéro asynchrone, puis synchrone.
4-bit up-counter with synchronous reset 4-bit up-counter with asynchronous reset
library ieee ; use ieee.std_logic_1164.all ; library ieee ;
use ieee.std_logic_unsigned.all ; use ieee.std_logic_1164.all ;
entity upcount is use ieee.std_logic_unsigned.all ;
port ( clear, clock : in std_logic ; entity upcount_ar is
q : out std_logic_vector(3 downto 0) ) ; port ( clock, resetn, enable : in std_logic ;
end upcount ; q : out std_logic_vector (3 downto 0)) ;
architecture behavioral of upcount is end upcount_ar ;
signal count : std_logic_vector(3 downto 0); architecture behavioral of upcount _ar is
begin signal count : std_logic_vector (3 downto 0) ;
upcount: process ( clock ) begin process ( clock, resetn )
if rising_edge(clock) then begin
if clear = '1' then if resetn = '0' then
count <= "00OO" ; else count <= "0000" ;
count <= count + 1 ; elsif rising_edge(clock) then
end if ; if enable = '1' then
end if; count <= count + 1 ;
end process; end if ; end if ;
q <= count; end process ;
end behavioral; q <= count ;
end behavioral ;
3- Donne une description structurelle de ce compteur à base de bascules D
Schéma de compteur 4 bits COMPONENT calcul
PORT( s,sb : IN bit_vector(3 DOWNTO 0);
compter : IN bit;
d : OUT bit_vector(3 DOWNTO 0);
END COMPONENT;
SIGNAL d, s, sb : bit_vector(3 DOWNTO 0);
BEGIN
B0: bascule PORT MAP (h, d(0), raz, s(0), sb(0));
B1: bascule PORT MAP (h, d(1), raz, s(1), sb(1));
B3: bascule PORT MAP (h, d(3), raz, s(3), sb(3));
B2: bascule PORT MAP (h => h, d =>d(2), raz => raz, s => s(3),
ARCHITECTURE structurelle OF compteur4 IS combi:calcul PORT MAP (s, sb, compter,d, plein);
COMPONENT bascule sb => sb(3));
PORT( h,d,raz : IN bit; END structurelle;
s,sb : OUT bit);
END COMPONENT; Le composant Calcul doit décrire les équations des
entrées de bascules du compteur