TD Composantsl Logiques Programmables

Télécharger au format docx, pdf ou txt
Télécharger au format docx, pdf ou txt
Vous êtes sur la page 1sur 41

Master EEAII Semester7 Année universitaire 

: 2021/2022

Travaux dirigés 
Composants logiques programmables –langage de description de matériel
VHDL

Encadré Par : Réalisé Par :


Pr A.WAHBI Nada
Meryem
Saida ABOUFARASS

Hanane

Abd Hamid
Partie 1 : description comportementale et structurelle des circuits logiques combinatoires

Additionneur Complet 1 bit

1. Table de vérité

ENTRE SORTIES
ES

A B C S R

0 0 0 0 0

0 0 1 1 0

0 1 0 1 0

0 1 1 0 1

1 0 0 1 0

1 0 1 0 1

1 1 0 0 1

1 1 1 1 1

2. Fonction
3. Schéma

4. Code VHDL

Library ieee ;

Use ieee.std-logic-

1164.all ; Entity ADD is

Port (A, B, C : in .std-logic ; S, R : out .std-

logic) ; end ADD ;

Architecture Additionneurof ADD

is begin

S <= (A xor B) xor C ;

R <= C and ((A xor B)) or (A and

B)) ; end Additionneur ;

Additionneur Complet 2 bit


1. Table de vérité

Enteés Sortie
Ci=1
Ci=0
B1 B0 A1 A0 CY S1 S0 CY S1 S0
0 0 0 0 0 0 0 0 0 1

0 0 0 1 0 0 1 0 1 0
0 0 1 0 0 1 0 0 1 1
0 0 1 1 0 1 1 1 0 0

0 1 0 0 0 0 1 0 1 0

0 1 0 1 0 1 0 0 1 1

0 1 1 0 0 1 1 1 0 0

0 1 1 1 1 0 0 1 0 1

1 0 0 0 0 1 0 0 1 1

1 0 0 1 0 1 1 1 0 0

1 0 1 0 1 0 0 1 1 0

1 0 1 1 1 0 1 1 1 0
1 1 0 0 0 1 1 1 0 0

1 1 0 1 1 0 0 1 0 1

1 1 1 0 1 0 1 1 1 0

1 1 1 1 1 1 0 1 1 1

2. Function

3. Schema

4.Code VHDL
Library ieee;

Use ieee.std_logique_1164.all

Use ieee.std_logic_arith.all

Use ieee.std_logic_unsigned.all
Entity full_add is

Port(a:instd_logic_vector(1down to 0);

Architecture Behavioral of full_add is

COMPONENT add2

Port( a:in std_logic;

b:in std_logic;

ci:instd_logic;

s:out std_logic;

co:outstd_logic);

End COMPONANT ;

signal c_sig:std_logic;

begin

bit0:add2 port map(

a=>a(0),

b=>b(0),

s=>s(0),

ci=>’0’,

co=>c_sig

);

bit1:add2 port map(

a=>a(1),

b=>b(1),

s=>s(1),

ci=>c_sig,
co=>cy

);

end Behavioral

.Comparateur sur un bit

1.Table de vérité

ENTREES : SORTIES :

A B S I E

0 0 0 0 1

0 1 0 1 0

1 0 1 0 0

1 1 0 0 1

2. Fonction

3. Schéma
4.Code VHDL

Library ieee ;

Use ieee.std-logic-1164.all ; Entity COMPARATEUR is

Port (A, B : in .std-logic ; S, I, E: out .std-logic) ; end COMPARATEUR ;

Architecture COMPARATEURRR of COMPARATEUR is begin

1. S <= A and not (B) ; I <= not (A) and B ;

E <= A xnor B ;

end COMPARATEURRR ;

Multiplexeur 4 vers 1 bit chacun

1. Table de vérité

ADRESSE SELEC validation


TION

A1 A0 S v
0 0 E0 0

0 1 E1 0

1 0 E2 0

1 1 E3 0

X X 0 1

2. Fonction

3. Schéma

4.Code VHDL
Library ieee ;

Use ieee.std-logic-1164.all ; Use

ieee.std-logic-osith.all ; Use

ieee.std-logic-Ansigned.all ;

Entity MULTIPLEXEUR is

Port (E0, E1, E2, E3 : in .std-logic ; Sel: in .std-logic-vector(1 downto 0) ;

S : out .std-logic ) ;

end MULTIPLIXEUR ;

Architecture MULTIPLEXEURRR of MULTIPLIXEUR is

begin

Process ( E0, E1, E2, E3, Sel)

begin

VN <= Not V

Y <=E0 When A « 00 » else

E1 When A« 01 » else ;

E2When A « 10 » Else;

E3When A « 11» Else” 0”;

S<=y when VN=”1” Else “0”;

end MULTIPLEXEURRR;
Multiplexeur 4 vers 2 bit chacun

1. Table de vérité

Entrées Sorties
Adresse Vali Donneespoidsfaible Vali Donneespoidsfort MS LS
d d B B
A1 AO V0 E30 E20 E10 E00 V1 E31 E21 E11 E01 S1 so
X X 1 X X X X X X X X X 0 0
X X X X X X X 1 X X X X 0 0
0 0 0 X X X 0 0 X X X 0 0 0
0 0 0 X X X 1 0 X X X 1 1 1
0 1 0 X X 0 X 0 X X 0 X 0 0
0 1 0 X X 1 X 0 X X 1 X 1 1
1 0 0 X 0 X X 0 X 0 X X 0 0
1 0 0 X 1 X X 0 X 1 X X 1 1
1 1 0 0 X X X 0 0 X X 0 0 0
1 1 0 1 X X X 0 1 X X 1 1 1

2. Fonction
S0=V 0(E00* A 1* A 0+E10* A 1*A0+E20*A1* A 0+E30*A1*A0)

S1=V 1(E01* A 1* A 0+E11* A 1*A0+E21*A1* A 0+E31*A1*A0)


3. Code VHD
Library ieee;

Use ieee.std_logic_1164.all;

entity mux4to1_2bits is

port (E00, E01, E10, E11, E20, E21, E30, E31, V0, V1:in std_logic;

A0, A1:in std_logic;

S0, S1:out std_logic);

endmux4to1;

architecture arch_mux4to1_2bitsof mux4to1_2bits is

signal VN0: std_logic

signal VN1: std_logic

signal YN0: std_logic

signal YN0: std_logic

begin

VN0<= not V0;

VN1<= not V1;

YN0<= E00 when A0=’0’ and A1=’0’ else

E10 when A0=’1’ and A0=’0’ else

E20 when A0=’0’ and A0=’1’ else

E30 when A0=’1’ and A0=’1’ else ‘0’;

YN1<= E01 when A0=’0’ and A1=’0’ else

E11 when A0=’1’ and A0=’0’ else

E21 when A0=’0’ and A0=’1’ else

E31 when A0=’1’ and A0=’1’ else ‘0’;

S0<=YN0 when VN0=’1’ else ‘0’;

S1<=YN1 when VN1=’1’ else ‘0’;

end arch_mux4to1_2bits;
Démultiplexeur 1 vers 4

1. Table de vérité

ADRESSE : SELECTION : VALIDATION

A1 A2 S0 S1 S2 S3 V

0 0 E 0 0 0 0

0 1 0 E 0 0 0

1 0 0 0 E 0 0

1 1 0 0 0 E 0

X X 0 0 0 0 1

2 .Fonction

3.Shéma
4. Code VHDL

Library ieee ;

Use ieee .std-logic-1164.all ;

Entity DEMULTIPLEXEUR is

porte ( E, A0, A1 : in .std-logic ; S3, S2, S1, S0 : out .std-logic ) ;

end DEMULTIPLEXEUR ;

architecture DEMULTIPLEXEURRR of DEMULTIPLEXEUR is

begin

Process (E, A0, A1) is

begin

if (A0= ‘0’ and A1= ‘0’ ) then S0 = E ;

else if (A0= ‘0’ and A1= ‘1’ ) then S1 =

E ; else if (A0= ‘1’ and A1= ‘0’ ) then S2

= E ; else S3 <= E ;

end if ;

end process ;

Encodeur 1 vers 2
1. Table vérité

ENTREES SORTIES

A0 A1 A2 A3 S0 S1

0 0 0 0 0 0

1 X X X 0 0

0 1 X X 0 1

0 0 1 X 1 0

0 0 0 1 1 1

2. Fonction

3.shé

ma

4. Code VHDL
Library ieee ;

Use ieee .std-logic-1164.all ;

entity ENCODEUR is

port ( A: in std_logic_vector( 3 downto 0);

S0 : out std_logic_vector(1 downto 0);

end ENCODEUR ;

architecture ENCODEURRR of ENCODEUR is

begin

process (A) is

begin

case A is

when

“1000”=>S<=”00”;

when

“0100”=>S<=”01”;

when

“0010”=>S<=”10”;

when

“0001”=>S<=”11”;

when others”=>S<=”XX”;

Décodeur 2 vers 4

1. Table vérite
ENTREES SORTIES

E1 E0 S0 S1 S2 S3

0 0 1 0 0 0

0 1 0 1 0 0

1 0 0 0 1 0

1 1 0 0 0 1

2. Fonction

3. Schema

4. Code VHDL
Library ieee ;

Use ieee.std-logic-1164.all ;

Entity DECODEUR is

Port (E : in .std-logic-vector (1 downto 0) ; S : out .std-logic-vector

(3 down to 0)) ;

end DECODEUR ;

Architecture DECODEURRR of DECODEUR is

Signal S0, S1, S2, S3 : std-logic ;

begin

S0 <= not (E(0) and not (E(1)) ;

S1 <= (E(0) and not (E(1)) ;

S2 <= not (E(0) and (E(1)) ;

S3 <= E(0) and (E(1)) ;

S <= S3 & S2 & S1 & S0 ;

end DECODEEURRR ;

Partie II: description comportementale et structurelle des circuits logiques séquentiels

Bascule D

1. Table de vérité

D Q

0 0

1 1

2. Fonction
Q=D

3. Schéma
4. Code VHDL

Library ieee ;

Use ieee .std-logic-

1164.all ; entity BASCULE

D;

port ( D, CLK : in .std-logic ; S = out .std-logic)

; end BASCULE D ;

Architecture BASC D of BASCULE

D is begin

process

(CLK) begin

if (CLK=’1’ and CLK ‘event’)

then Q <= D

; end if ;

end process ;
Bascule D avec SET et RESET

1. Schéma

2.Code VHDL

Library ieee;

Use ieee.std_logic_1164.all;

Use ieee.numeric_std.all;

Use ieee.std_logic_unsigned.all;

entity BASCULEDSRA is

port (

D,CLK,SET,RESET : in std_logic;

S : out std_logic);

end BASCULEDSRA;

architecture DESCRIPTION of BASCULEDSRA is

begin

PRO_BASCULEDSRA : process (CLK,RESET,SET)

Begin

if (RESET =’1’) then


S <= ‘0’;

elsif (SET =’1’)then

S <= ‘1’;

elsif (CLK'event and CLK ='1') then

S <= D;

end if;

end process PRO_BASCULEDSRA;

end DESCRIPTION;

Remarque

L’entrée RESET est prioritaire sur l’entrée SET qui est à son tour prioritaire sur le front

montant de l’horloge CLK. Cette description est asynchrone car les signaux d’entrée SET et

RESET sont mentionnés dans la liste de sensibilité du process.

COMPTEUR SUR 4 bits

1. Schéma

2. Code VHL
Library ieee ;

Use ieee .std-logic-

1164.all ; Use ieee .std-

logic-arith.all ;

Use ieee .std-logic-

unsigned.all ; entity compt

is ;

port ( CLK : in std-logic ; raz : in std-logic;q:out std-logic_vector(3 downto

0) ; end compt ;

Architecture Behavioral of compt is

Signal sig:std_logic_vector(3 downto

0); begin

process

(CLK,raz) begin

if (raz=’1’ ) then sig<=”0000”;

elsif(clk’ event and clk =’1’) then sig<=sig+1;

end if ;

end process

; q<=sig;

end Behavioral ;
Partie simulation

1. Simulation à partir du code VHDL (Additionneur complet)

 Etape 1 : ouvrir un nouveau projet et choisir « Spartan-3E Starter Board»


 Etape 2 : sélection de source et choisir « VHDL Module»

 Etape 3 : définir les entrées et les sorties du circuit


 Etape 4 : Ecrire le programme concernant le circuit

 Etape 5 : Vérification du syntax VHDL




 Etape 6 : Création de schéma électrique

Etape 7: sélectionner new source et choisir « VHDL Test Bench »

Etape 8: sélectionner « simulation » et vérifier le syntaxe


Etape 9: Affichage du chronogramme
2. Comparateur

a. Code VHDL

b. Circuit électrique
c. Chronogramme

3. Multiplexeur
a. Code VHDL
b. Circuit électrique

c. Chronogramme
4. Démultiplexeur
a. Code VHDL

b. Schéma électrique
c. Chronogramme

5. Encodeur 4 vers 2
a. Code VHDL
b. Schéma électrique

c. Chronogramme
6. Décodeur
a. Code VHDL

b. Schéma électrique
c. Chronogramme

7. Bascule D
a. Code VHDL
b. Schéma électrique

c. Chronogramme
8. Bascule D avec SET et RESET

a. Code VHDL

b. Chronogramme
9 .Compteur
c. Code VHDL

d. Schéma électrique
b. Chronogramme

Vous aimerez peut-être aussi