Académique Documents
Professionnel Documents
Culture Documents
Il existe deux façons distinctes de décrire une structure. L'une dite comportementale et l'autre structurelle.
Description comportementale
Dans ce type de description, le comportement de la structure est directement inscrit dans l'architecture à
l'aide d'instructions séquentielles ou sous forme de flow de données.
Description structurelle
Dans ce type de description, on relie entre eux des composants préalablement décrits en VHDL.
Les équations logiques régissant le comportement d’un additionneur complet sont données par :
Une description comportementale exploitant ces équations peut être directement obtenue par le
programme VHDL suivant :
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY fa IS PORT (
Ci, Xi, Yi: IN STD_LOGIC;
Ci1, Si: OUT STD_LOGIC);
END fa;
ARCHITECTURE Dataflow OF fa IS
BEGIN
Ci1 <= (Xi AND Yi) OR (Ci AND (Xi XOR Yi));
Si <= Xi XOR Yi XOR Ci;
END Dataflow;
L’additionneur complet décrit plus haut peut aussi être décrit de manière
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY Full_Adder IS
PORT (
xi: IN STD_LOGIC;
yi: IN STD_LOGIC;
cin: IN STD_LOGIC;
si: OUT STD_LOGIC;
cout OUT STD_LOGIC);
END Full_Adder;
Additionneur en cascade
L’additionneur complet permet d’additionner deux opérandes de 1 bit chacun. Lorsqu’il s’agit d’additionner
deux opérateurs de plus de 2 bits chacun, il devient plus intéressant de faire recours à l’additionneur en
cascade dont le principe est de mettre en série plusieurs additionneurs complets 1 bit.
Le schéma ci-dessous donne le principe d’un tel additionneur dans le cas de deux opérandes de quatre bits
chacun à savoir x 3 x 2 x 1 x 0 et y 3 y 2 y 1 y 0.
Une description structurelle de ce circuit peut être faite en dupliquant quatre fois le composant
additionneur complet préalablement défini. Ceci peut se faire en utilisant les instructions PORT MAP quatre
fois et FOR-GENERATE afin de générer automatiquement les quatre composants. L’instruction FOR k IN 3
DOWNTO 0 GENERATE spécifie le nombre de fois que l’instruction PORT MAP sera appelée.
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY Adder4 IS
PORT (
A, B: IN STD_LOGIC_VECTOR(3 DOWNTO 0);
Cout: OUT STD_LOGIC;
SUM: OUT STD_LOGIC_VECTOR (3 DOWNTO 0));
END Adder4;
ARCHITECTURE Structural OF Adder4 IS
COMPONENT FA PORT (
ci, xi, yi: IN STD_LOGIC;
co, si: OUT STD_LOGIC);
END COMPONENT;
SIGNAL Carryv: STD_LOGIC_VECTOR(4 DOWNTO 0);
BEGIN
Carryv(0) <= '0';
Adder: FOR k IN 3 DOWNTO 0 GENERATE
FullAdder: FA PORT MAP (Carryv(k), A(k), B(k), Carryv(k+1), SUM(k));
END GENERATE Adder;
Cout <= Carryv(4);
END Structural;