Vous êtes sur la page 1sur 58

| 


  

O  

     

Chaque niveau d'abstraction définit un description de la circuit avec moins ou plus de


détails par rapport au niveaux inférieur ou supérieur
O  

  !
¢ Code comportemental Code structural décrit la
décrit les fonctionnalités niveau registres et porte
et le comportement de logique de circuit
la circuit
è  Behavioral
RTL
  Testbench

Tech. Simulation
Synthèse
Lib.

Gate
Level

Lay-out
Simulation
Placement/routage

Simui.
FPGA ASIC Lib.
¢ C͛est quoit VHDL?
VHSIC
Hardware
Description
Language
VHSIC ʹ Very High Speed Integrated Circuit

Fonctions Fonctions
concurrents séquentielles

— 
Description Modélisation
hiérarchique de temps
VHDL: concepts de base
¢ Structure générale
Votre fichier texte de
description: xxxë 

Mode transfert des


signaux de votre


 
VHDL: Les en-têtes de fichier
Library IEEE ;
Use IEEE.std_logic_11  .all;
Use IEEE.std_logic_arith.all;
͙.
͙

Le mot `  : indique quelle package de la librairie nous allons utiliser

Il faut pas utiliser Numeric_std et std_logic_arith en même temps pour ne pas avoir
conflit
VHDL: L͛entité
entity sequencement is
Port (
clock : in std_logic;
reset : in std_logic;
Q : out std_logic_vector (1 down to 0)
);
End sequencement ;

Clock

Q(1:0)
sequencement
reset
VHDL: Déclaration de l'architecture

Référence à
une entité

Nom de
l͛architecture
O  

    

2

2

| 

    
  
| 

O  

2

2

¢ Description compartmental ͙
If s=0, d0 passes sur la sortie f : f=d0
If s=1, d1 passes sur la sortie f=d1
O  

2

2

ÿ|| !"#$%
&'

(|
) ||
*+)| ,,
 )| | 
|  !"#$%
&
O  

2

2

a
  
  
2


2


O  

2
 

2
2

 

ÿ|| &- &!'



(|
*+ÿ   ÿ 
|  &- &!
O  

á  
m 
 
       
    
  
 




2

2

 
O  

The -to-1 Mux


2
2
2
2 
2 
2
2

2
 

ENTITY mux to1 IS


PORT( d0, d1, d2, d3, s0, s1 : IN STD_LOGIC;
f : OUT STD_LOGIC);
END mux to1;
O  

2

2

2

 

ENTITY mux to1 IS


PORT(w0, w1, w2, w3, sel0, sel1 :IN STD_LOGIC;
f :OUT STD_LOGIC);
END mux to1;

ARCHITECTURE structure OF mux to1 IS


SIGNAL I1, I2 :STD_LOGIC;
COMPONENT mux2to1
PORT(d0, d1, s :IN STD_LOGIC;
f :OUT STD_LOGIC);
END COMPONENT;
BEGIN
u1:mux2to1 PORT MAP(w0, w1, sel0, I1);
u2:mux2to1 PORT MAP(w2, w3, sel0, I2);
u3:mux2to1 PORT MAP(I1, I2, sel1, f);
END structure;
O  



¢ Un processus est une région de code VHDL qui


exécute séquentiellement

Existe à l'intérieur de l'architecture

Plusieurs processus s͛exécutent en


concurrence les uns avec les autres
O  



ENTITY orgate IS
PORT (a,b : in bit;
z : out bit);
END orgate;

ARCHITECTURE Behavior OR orgate IS


BEGIN
or_func: PROCESS (a,b)
BEGIN
IF (a='1' OR b='1') THEN
z <= '1';
ELSE
z <= '0';
END IF;
END PROCESS or_func;
END Behavior
O  

Back to the -to-1 Mux example͙

LIBRARY ieee;
USE ieee.std_logic_11  .all;
LIBRARY ieee;
ENTITY mux2to1 IS
USE ieee.std_logic_11  .all;
PORT (d0, d1, s :IN STD_LOGIC;

ë ` ë 
f :OUT STD_LOGIC);
END mux2to1;
ENTITY mux to1 IS
PORT(w0, w1, w2, w3, sel0, sel1 :IN STD_LOGIC;
ARCHITECTURE LogicFunc OF mux2to1 IS
f :OUT STD_LOGIC);
BEGIN
END mux to1;
f <= (d0 AND (NOT s)) OR (d1 AND s);
END LogicFunc;
ARCHITECTURE structure OF mux to1 IS
SIGNAL I1, I2 :STD_LOGIC;
R 
BEGIN

ë   ë 
u1:mux2to1 PORT MAP(w0, w1, sel0, I1);
u2:mux2to1 PORT MAP(w2, w3, sel0, I2);
  ` 

u3:mux2to1 PORT MAP(I1, I2, sel1, f);




 `
END structure;

   
 R
 
 

 R
 



 ` 
O  



|   
   O !

 " !
| a !

#$|m|
  è  
 #%&
 !
     

'|
 
| a
 !
O  

 

¢ Xhen an assignment is made to a signal,


the types on either side of the signal
assignment operator must match up
ENTITY fulladd IS
PORT (a,b,Cin : IN bit;
Sum, Carry : OUT bit);
END fulladd;

ARCHITECTURE Logic OF fulladd IS


BEGIN

` <=  XOR ;
END Logic;
O  




PACKAGE standard IS
TYPE boolean IS (true, false);
TYPE bit IS (͚0͛, ͚1͛)
TYPE character IS (-- ascii set)
TYPE integer IS range implementation_defined;
TYPE real IS range implementation_defined;
-- bit_vector, string, time
END standard;
O  

  

O  

G 
|||

¢ In general, std_logic should be used ALL OF


THE TIME
O  

ÿ 
O  

ÿ    


O  

ÿ    
O  

   


   
O  

ÿ 
ÿ  
ÿ  
O  

ÿ      


O  

ÿ      


O  

@ 

¢ Il existe 3 variétés d'opérateurs: logique, relationnel,


et arithmétique.

Les opérateurs logiques sont "et", "ou", etc

Les opérateurs relationnels sont utilisés pour


comparer les différentes valeurs

Les opérateurs arithmétiques sont utilisées pour


effectuer des fonction mathématiques
O  

@á  
@á

¢ Comprend ET, OU, NAND, NOR, XOR et NOT


¢ Tous ont la même priorité
¢ Exécuter de gauche à droite
¢ NOT a la plus grande priorité, et exécute donc avant
d'autres opérateurs dans une expression logique.
¢ Les opérations logiques ne peut être appliquée que à
des matrice du même type et de même longueur
¢ Correspondants des éléments dans des matrice se
fait par POSITION
O  

@á   
@á
O  

@á   
@á

()
O  

@á ÿ  
@á
O  

Déclarations séquentielle en VHDL

¢ Processes

¢ If-then-else

¢ Case
O  

Ô
O  

 G
O  

   

O  

 


¢ The order in which statements are written in the


IF-ELSIF structure is very important
¢ More than one of the conditions may be true
¢ The first true condition causes its set of
statements to be executed
O  



O  

  !G|G
O  

ÿ 
O  

 "
O  


  

   
   

O  


  
O  


  

ENTITY mux2to1 IS
PORT( d0, d1, s :IN STD_LOGIC;
f :OUT STD_LOGIC);
END mux2to1;

ARCHITECTURE behavior OF mux2to1 IS


BEGIN
XITH s SELECT
f <= d0 XHEN '0',
d1 XHEN OTHERS;
END behavior;


  
 ` 
 `


 


 ` 
O  

 |  || |!

ÿ 
       


   


 


O  

á ÿ

|  


  

  
   




 
O  

á ÿ

‰ 


  

  
      

O  

á ÿ

 
     
   

  
 

   
   

O  

# 

¢ A package contains a collection of definitions that


may be referenced by many designs at the same time

¢ Usage is similar to that of a component

¢ Separate design file that exists outside of the other


design units seen thus far, such as entities and
architectures
O  

m
 

¢ Types can also be defined by the user

¢ A user defined type is known as an ͞enumerated


type͟

¢ Types are most commonly defined inside a package,


architecture, or process

¢ Most synthesis tools are able to synthesize VHDL


containing enumerated types
O  

m
  

¢ Syntax for declaring a user defined type


O  

m
  

¢ Having defined a type, signals can be


defined of that type
¢ SIGNAL ͞state͟ cannot be assigned anything
which is not of type ͞my_state͟
O  

m
  

¢ Synthesis tools build logic from a signal which is of an


enumerated type
¢ Usually the minimum number of bits required to
represent the number of possible values