Académique Documents
Professionnel Documents
Culture Documents
Module Technologies
des Systèmes Embarqués
Chapitre -4-
2ème année Cycle Ingénieur en GBM,
Objectifs du chapitre
Support prepare par : Slim Ben Othman, Ahmed Karim Ben Salem 1
Module Technologies des Systèmes Embarqués CI-GBM2, S1
H
• 1993 : Publication de VHDL-93, une mise à jour majeure introduisant des fonctionnalités
améliorées. compatible avec la synthèse de circuit
• Hardware • 2002 : VHDL-2002 est publié avec des améliorations de la convivialité et la compatibilité
avec VHDL-93.
• IEEE Standard 1164 rajoute la notion de forces sur les signaux et est souvent appelé MVL9
D
(multivalued logic, nine values).
• IEEE 1076.3 (Numeric Standard) pour la synthèse.
• IEEE 1076.4 : VITAL initiative (VHDL Initiative Toward ASIC Libraries) Pour la génération de modèles
• Description de timing.
• Depuis, VHDL continue d'évoluer avec des versions ultérieures.
VHDL
• Les systèmes VHDL sont orientés vers :
• la simulation (par exemple: Synopsys et Green Mountain VHDL), RTL
• la synthèse ou la paramétrisation de circuits (par exemple des FPGA).
Synthèse
Logique
Support prepare par : Slim Ben Othman, Ahmed Karim Ben Salem 2
Module Technologies des Systèmes Embarqués CI-GBM2, S1
Exemple de Code
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
STRUCTURE DU VHDL • Commentaires : use ieee.std_logic_unsigned.all;
-- Circuit décodeur
-- Deux vers quatre
Support prepare par : Slim Ben Othman, Ahmed Karim Ben Salem 3
Module Technologies des Systèmes Embarqués CI-GBM2, S1
• Les objets d’un programme VHDL sont tous typés. • Opérateur logique :
• Avant toute utilisation d’une constante, d’une variable ou d’un signal, il faut les and, or, nand, nor, xor, xnor, sll, srl, sra, rol, ror
déclarer. • Opérateur de comparaison :
=, /=, <, <=, >, >=
• Opérateur d’addition :
• La déclaration des objets s’effectue uniquement dans la partie déclarative +, -, &
du programme. • Opérateur mathématique :
*, /, mod, rem
• Opérateur de signe :
-
• Opérateur divers :
**, abs, not
Support prepare par : Slim Ben Othman, Ahmed Karim Ben Salem 4
Module Technologies des Systèmes Embarqués CI-GBM2, S1
Entité Entité
• L'entité définit les ports (vue externe) et leur mode (in, out, inout, buffer) • Exemple
• Paramétrer le modèle (paramètres génériques)
• Syntaxe: entity DECOD2_4 is
generic(
data_width: integer :=2
entity nom_de_l_entite is );
{generic(liste_des_parametres)} port(
• Modes:
{port(liste_des_port_avec_leur_mode)} Data_in: in std_logic_vector(data_width-1 downto 0);
end {nom_de_l_entite} Enable: in std_logic;
Data_out: out std_logic_vector((2**data_width)-1 downto 0)
);
end DECOD2_4;
Architecture Architecture
Support prepare par : Slim Ben Othman, Ahmed Karim Ben Salem 5
Module Technologies des Systèmes Embarqués CI-GBM2, S1
Déclaration de Types
Support prepare par : Slim Ben Othman, Ahmed Karim Ben Salem 6
Module Technologies des Systèmes Embarqués CI-GBM2, S1
Support prepare par : Slim Ben Othman, Ahmed Karim Ben Salem 7
Module Technologies des Systèmes Embarqués CI-GBM2, S1
Support prepare par : Slim Ben Othman, Ahmed Karim Ben Salem 8
Module Technologies des Systèmes Embarqués CI-GBM2, S1
Support prepare par : Slim Ben Othman, Ahmed Karim Ben Salem 9
Module Technologies des Systèmes Embarqués CI-GBM2, S1
Zone Séquentielle
ZONE SÉQUENTIELLE
Support prepare par : Slim Ben Othman, Ahmed Karim Ben Salem 10
Module Technologies des Systèmes Embarqués CI-GBM2, S1
• Assignation sélective : case • Couramment utilisées dans les descriptions destinées à la simulation,
• Les boucles doivent être considérées avec soin en synthèse, en s’assurant qu’elles ne risquent pas de
case <signal_de_slection> is provoquer la création de logique encombrante et superflue.
when <valeur_de_sélection> => <instructions>; • Boucle for :
[when others => <instructions>;]
end case; <etiquette> : for <variable_boucle> in <intervalle> loop
• Exemple <instructions>;
end loop;
case SEL is
when “000” => S1 <= E1; • Boucle while:
when “001” => S1 <= ‘0’;
when “010” | “011” => S1 <=’1’; <etiquette> : while <condition> loop
-- La barre | permet de réaliser un ou logique <instructions>;
when others => S1 <= ‘0’; end loop;
end case;
Support prepare par : Slim Ben Othman, Ahmed Karim Ben Salem 11
Module Technologies des Systèmes Embarqués CI-GBM2, S1
Support prepare par : Slim Ben Othman, Ahmed Karim Ben Salem 12
Module Technologies des Systèmes Embarqués CI-GBM2, S1
Processus en exécution
Processus en exécution
begin réveille
Process () Y <= A;
begin SIG B
M <= B;
SIG <= '0'; Z <= M;
SIG <= '1'; end process; Y
SIG <= '0'; Le
end process; SIG processu
s se M
réveille
Z
Support prepare par : Slim Ben Othman, Ahmed Karim Ben Salem 13
Module Technologies des Systèmes Embarqués CI-GBM2, S1
Les variables
• Conception d’un bloc et son utilisation dans un autre circuit: instantiation • Se fait dans la partie déclarative de l’architecture.
ou instantiation multiple • On utilise le mot clé « component »
• Exemple:
• Première étape: écrire l’entité et l’architecture du module
• Deuxième étape: introduire ce module au circuit appelant (ce module
s’appellera « component ») entity DEMI_ADD is component DEMI_ADD
port ( port (
• Troisième étape: instantiation du module A,B: in std_logic; A,B : in std_logic;
SUM,C: out std_logic); SUM,C: out std_logic);
end DEMI_ADD; end component;
Support prepare par : Slim Ben Othman, Ahmed Karim Ben Salem 14
Module Technologies des Systèmes Embarqués CI-GBM2, S1
entity DEMI_ADD is
U1: DEMI_ADD
component DEMI_ADD port (
port map (A => SIG_A,
port ( A,B: in std_logic;
B => SIG_B,
A,B : in std_logic; SUM,C: out std_logic);
SUM => SOMME,
SUM,C: out std_logic); ❶ C => RETENUE);
end DEMI_ADD;
architecture COMPORT of DEMI_ADD is
end component;
begin
U1: DEMI_ADD ❷ SUM <= A xor B;
port map (SIG_A,SIG_B, SOMME, RETENUE); C <= A and B;
end COMPORT;
Support prepare par : Slim Ben Othman, Ahmed Karim Ben Salem 15
Module Technologies des Systèmes Embarqués CI-GBM2, S1
Circuits Combinatoires :
Restrictions dans la description
• Un circuit combinatoire donne toujours les mêmes sorties quand l’entrée
est la même.
• Un process est combinatoire si les conditions suivantes sont toutes
respectées :
• le process comporte une liste de sensibilité
DESCRIPTION DE CIRCUITS LOGIQUES • la liste de sensibilité comprend tous les signaux lus
• tous les signaux doivent être affectés quelle que soit les entrées (Attention dans un
"if" ou dans un "case")
• toutes les variables doivent être affectées avant d'être lues
Support prepare par : Slim Ben Othman, Ahmed Karim Ben Salem 16
Module Technologies des Systèmes Embarqués CI-GBM2, S1
Support prepare par : Slim Ben Othman, Ahmed Karim Ben Salem 17
Module Technologies des Systèmes Embarqués CI-GBM2, S1
architecture A of REG is
begin
TAMPON : process (H,RAZ)
entity Reg is begin
port ( if RAZ = '0' then
E : in std_logic_vector(2 downto 0); S <= "000";
H,RAZ : in std_logic; elsif (H’event and H = ‘1’) then
S : out std_logic_vector(2 downto 0)); S <= E;
end Reg; end if;
end process;
end A;
Support prepare par : Slim Ben Othman, Ahmed Karim Ben Salem 18
Module Technologies des Systèmes Embarqués CI-GBM2, S1
Remarques Remarques
• Les instructions suivantes sont interdites dans une zone concurrente • Un seul « if » dans un process synchrone
A <= not A; process (CLK)
CMPT <= CMPT + 1; begin
REG <= REG (0) & REG(7 downto 1); if (CLK'event and CLK='1‘) then
process (CLK) Q <= D;
• On utilise
…... un process synchronisé sur un front begin end if;
if (CLK'event and CLK='1‘) then end process;
process (CLK) Q <= D;
begin end if; process (TOTO)
if rising_edge(CLK) then if (TOTO=‘1’) then if (TOTO=‘1’) then
A <= not A; … …
-- CMPT <= CMPT + 1; end if; end if;
end if; end process; end process;
end process;
Présentation
Support prepare par : Slim Ben Othman, Ahmed Karim Ben Salem 19
Module Technologies des Systèmes Embarqués CI-GBM2, S1
• La notion de temps ne s'utilise que pour spécifier l'ordre des événements. entity addit is
port ( VHDL Module
• Les seuls moyens d'avancer dans le temps sont : a,b,c: in bit;
• par un changement d'un signal en entrée s,r: out bit);
end addit; entity demo1 is
• par la commande wait for temps architecture addit of addit is end demo1; VHDL
• par la commande after temps begin architecture demo1 of demo1 is TestBench
s <= a xor b xor c; signal asig,bsig,csig,sum,carry : bit;
• sinon, les signaux sont tous stables et les process dorment tous. r <= ((a and b) or (c and (a xor b))); begin
end addit; asig <= not asig after 100 ns;
bsig <= not bsig after 200 ns;
csig <= not csig after 400 ns;
ad1: entity work.addit
port map (asig,bsig,csig,sum,carry);
end demo1;
Exemple de TestBench
process
• Ou encore: begin
wait for 5 ns;
s_en<='0','1' after 10 ns,'0' after 18 ns, '1' after 25 ns;
wait;
end process;
Support prepare par : Slim Ben Othman, Ahmed Karim Ben Salem 20