Compteur
Circuit logique qui fait le comptage de 0 à 9 pour les unaire, les dizaines, les centaines
et ainsi de suite. Les bascules sont les éléments de base pour fabriquer les compteurs. Plusieurs
application sont basé sur les compteurs telle que, les microcontrôleurs, les circuits
temporisateur. Les figures suivantes présentent les schémas de base des compteurs.
Q0 Q1 Q2 Q3
D0 Q0 D1 Q1 D2 Q2 D3 Q3
clk clk Q2 clk
clk clk Q0 Q1 Q3
R R R R
Figure 1 : Décompteur 4 bits à base de bascule D.
Q0 Q1 Q2 Q3
D0 Q0 D1 Q1 D2 Q2 D3 Q3
clk clk Q2 clk
clk clk Q0 Q1 Q3
R R R R
Figure 1 : Compteur 4 bits à base de bascule D.
+ D Q
1
Clk
R
Figure 2 : Compteur 4 bits à base d’un additionneur.
Afin d’examiner les fonctionnalités du circuit, nous donnons le chronogramme suivant :
1. Programmation VHDL
[Link]
-- Counter
Library ieee ;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use ieee.std_logic_unsigned.all;
ENTITY counter IS
PORT (CLOCK_50 : IN STD_LOGIC;
KEY : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
q : OUT STD_LOGIC_VECTOR(0 TO 7));
END ;
ARCHITECTURE Behavior OF counter IS
SIGNAL M : STD_LOGIC_VECTOR(7 DOWNTO 0);
BEGIN
Process(CLOCK_50) is
begin
if( KEY = '0') then
M <= "00000000" ;
elsif (CLOCK_50'event and CLOCK_50 = '1') then
M <= M + 1 ;
end if;
End process;
q <= M ;
END Behavior;
Circuit logique : RTL Viewer
Chronogramme : Simulation Waveform Editor
Compteur asynchrone.
process (RESET,CLOCK)
begin
if RESET ='1' then CMP <= "000";
elsif (CLOCK ='1' and CLOCK'event) then
CMP <= CMP + 1;
end if;
end process;
Compteur synchrone.
process (CLOCK)
begin
if (CLOCK ='1' and CLOCK'event) then
if RESET ='1' then
CMP <= "000";
else CMP <= CMP + 1;
end if;
end if;
end process;
Quelle différence entre les deux descriptions ?
Dans la deuxième le signal RESET n’est plus dans la liste de sensibilité, par conséquence le process ne
sera déclenché que par le signal CLOCK. La remise à zéro ne se fera que si un front montant sur
CLOCK a lieu.