You are on page 1of 18

VHDL exercises

Etude dadditionneur
P. Bakowski

bako@ieee.org

Additionneur binaire
Modliser et simuler l'additionneur binaire complet (full adder). a cout b cin a, b entres s sortie cin retenue dentre cout retenue de sortie

s
P. Bakowski
2

Additionneur binaire - fonction


a cout s b cin 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

P. Bakowski

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 b cin dlais daffectation

s
P. Bakowski
5

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 b cin dlais daffectation dfinir comme: un littral une constante un paramtre

s
P. Bakowski
6

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; dlais daffectation dfinir comme: un littral une constante un paramtre

a cout

b cin

s
P. Bakowski
7

Additionneur 4-bits
a(3) b(3) cout a(2) b(2) a(1) b(1) a(0) b(0) cin

c(2)

c(1)

c(0)

s(3)

s(2)

s(1)

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
8

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

You might also like