Vous êtes sur la page 1sur 18

VHDL exercises

Etude dadditionneur
P. Bakowski

bako@ieee.org

Additionneur binaire
Modliser et simuler l'additionneur binaire complet
(full adder).
a

cout

cin

a, b entres
s sortie
cin retenue dentre
cout retenue de sortie

s
P. Bakowski

Additionneur binaire - fonction


a

cout

cin
s

P. Bakowski

a
0
0
0
0
1
1
1
1

b
0
0
1
1
0
0
1
1

cin
0
1
0
1
0
1
0
1

s
0
1
1
0
1
0
0
1

cout
0
0
0
1
0
1
1
1
3

Additionneur binaire - entity


entity adder is
port (a,b,cin: in bit; s,cout: out bit);
end adder;
-- a,b,cin,s,cout sont des signaux

interface de ladditionneur

P. Bakowski

Additionneur binaire - architecture


architecture behavioral of adder is
begin
s <= (a xor b) xor cin after sum_del;
cout <= (a and b) or (cin and a) or (cin and b)
after carry_del;
end behavioral;
a

cout

cin

dlais daffectation

s
P. Bakowski

Additionneur binaire - architecture


architecture behavioral of adder is
begin
s <= (a xor b) xor cin after sum_del;
cout <= (a and b) or (cin and a) or (cin and b)
after carry_del;
end behavioral;
a

cout

cin

dlais daffectation dfinir


comme:
un littral
une constante
un paramtre

s
P. Bakowski

Additionneur binaire - architecture


entity adder is
generic sum_del: time:= 10 ns;
generic carry_del: time:= 20 ns;
port (a,b,cin: in bit; s,cout: out bit);
end adder;

cout

cin

dlais daffectation dfinir


comme:
un littral
une constante
un paramtre

s
P. Bakowski

Additionneur 4-bits
a(3) b(3)
cout

s(3)

a(2) b(2)

c(2)

s(2)

a(1) b(1)

c(1)

s(1)

a(0) b(0)

c(0)

cin

s(0)

entity adder4 is
port (a,b: in bit_vector(3 downto 0); cin: in bit;
s: out bit_vector(3 downto 0); cout: out bit);
end adder4;
P. Bakowski

adder4: architecture algorithmique


A partir de la description d'un additionneur binaire
crire un additionneur 4-bit en version
fonctionnelle - architecture algorithmique

Mots cls tudier:


process
variable
for.. loop

P. Bakowski

adder4: architecture algorithmique


architecture algorithmique of adder4 is
signal...
process (liste de sensibilit)
variable ...
begin
for i in ... loop
-- ici mettre l'opration de l'additionneur binaire
end loop;
end process;
end algorithmique ;
Attention: le seul endroit pour dclarer
une variable lintrieur du process
P. Bakowski

10

adder4: architecture algorithmique


architecture algorithmique of adder4 is
process (liste de sensibilit)
variable retenue: bit;
begin
retenue
..
end process;
cout <= retenue after 4*carry_del;
end algorithmique ;

a(i) b(i)

s(i)

La premire version de l'architecture algorithmique utilise


une variable interne pour le stockage de la valeur de la
retenue entre les tages de l'additionneur; le dlai entre
cin est cout est globalis
P. Bakowski

11

adder4: architecture algorithmique


architecture algorithmique of adder4 is
process
variable retenue: bit;
begin
retenue
..
wait for carry_del;
end process;
end algorithmique ;

a(i) b(i)

s(i)

La deuxime version de l'architecture algorithmique doit


utiliser l'instruction wait afin de modliser les dlais
locaux (e.g: wait on a,b,cin; wait for carry_del)
P. Bakowski

12

addern: architecture algorithmique


entity addern is
generic: taille integer:=4;
port (a,b: in bit_vector(taille-1 downto 0);
cin: in bit;
s: out bit_vector(taille-1 downto 0);
cout: out bit);
end addern;
La troisime version de l'architecture algorithmique est
gnrique : dans l'interface de cette version il faut
introduire le terme gnrique caractrisant la taille de
l'additionneur. Le module de l'architecture doit tre
modifie en consquence.
P. Bakowski

13

Architecture data flow


La version de l'architecture (additionneur 4 bits)
du type data flow ne contient que des affectations
type signal enchaines par les signaux internes:
architecture dataflow of adder4 is
signal c: bit_vector(3 downto 0);
begin
s(0) <= ..
after ..
c(0) <= ..
after ..
s(1) <= ..
after ..
c(1) <= ..
after ..
..
end dataflow;
P. Bakowski

14

Architecture structurelle
Une architecture structurelle est construite partir
des composants components.
Mots cls a tudier:
signal,
component,
port map,
generate, ..

instances de ladditionneur adder: composant


P. Bakowski

15

Architecture structurelle 1
architecture structurelle of adder4 is
signal c: bit_vector(3 downto 0);
component adder
port (...);
-- ici il faut copier le port de l'entity
end component;
begin
add1: adder port map(...);
add2: ...
...
end structurelle;
P. Bakowski

instances cbls

16

Architecture structurelle 2
Dans la deuxime version de l'architecture
structurelle doit utiliser le mcanisme de
gnration des instanciations:
generate
tudier:
boucle principale de gnration
for ..
conditions de gnration (instanciation)
if ..

P. Bakowski

17

Architecture structurelle 2
architecture structurelle of addern is
signal c: bit_vector(taille-1 downto 0);
component adder
..
begin
ADD: for i in 0 to taille-1 generate
INADD: if i=0 adder port map ()
end generate INADD;
ADDX : if i>0 adder port map ()
end generate ADDX;
end generate ADD;
...
end structurelle;
P. Bakowski

18

Vous aimerez peut-être aussi