Telechargé par ՏƛɏҒ ЄԀԀұп

.archVHDL iset gabes

publicité
VHDL
Présenté par :
LASSAAD TAYARI
Technologue en Informatique Industrielle à
l’Iset de Gabès
[email protected]
1
VHDL
Initiation à VHDL
Application à la
Logique Programmable
[email protected]
2
VHDL








Initiation à VHDL
Introduction
Le cadre de travail
La paire ENTITY/ARCHITECTURE
Niveaux de description
Fonctionnements parallèles et séquentiels
Opérateurs et instructions
Descriptions modulaires
Attributs spécifiques
[email protected]
3
VHDL

Introduction
Langage de description hardware développé au titre du
programme VHSIC (Very High Speed Integrated Circuit)
du DoD (Department of Defence).
VHDL = VHSIC Hardware Description Langage
[email protected]
4
VHDL

Objectif
fournir un environnement de développement hardware
complet et unifié (des spécifications à la réalisation en
passant par la simulation)
 améliorer l'intercommunication entre(spécificateurs,
concepteurs, utilisateurs, outils de développement,
etc.)
 rendre
les
réalisations
indépendantes
des
technologies et des systèmes-hôtes (portabilité,
pérennité, etc.)
[email protected]
5
VHDL


Standardisé en 1987 (IEEE1076), complété en 1993
(IEEE1076, IEEE1164)
Langage unique pour





Caractéristiques générales
la spécification, la documentation
la vérification (preuve formelle), la simulation
la synthèse : le langage sert d'entrée à des outils
intelligents qui permettent la réalisation de circuits
intégrés programmables (PALs, GALs, CPLDs, FPGAs)
Interprétable par l'homme et la machine
Indépendent des process et des technologies,
indépendent des systèmes-hôtes
[email protected]
6
VHDL

Entity et Architecture
La brique de base de toute description VHDL est la
paire ENTITY + ARCHITECTURE :


I1
Entity : déclaration de l'interface (Entrées/Sorties)
Architecture : description du fonctionnement
O1
I2
I3
I4

entity AZERTY is
port( I1, I2, I3, I4 : in bit;
O1, O2 : out bit);
end AZERTY;
O2
architecture XXX of AZERTY is
-- description du fonctionnement
end XXX;
La complexité du bloc décrit par le couple Entity +
Architecture est quelconque (système, carte, sousfonction, porte, etc.)
[email protected]
7
VHDL Commentaires Et Identificateurs


Les commentaires débutent par un double-tiret
signal CLK: bit;
-- horloge systeme a 50 MHz
Identificateurs (noms, étiquettes, etc.) :
une suite de lettres ou de chiffres (et
éventuellement le caractère '_') débutant par
une lettre :

A, DATA_8, SYS_CLK_50_OUT
VHDL ne fait pas de différence, pour les
identificateurs et les mots-clés, entre
majuscules et minuscules
[email protected]
8
VHDL
Littéraux
Les littéraux sont utilisés pour la représentation de valeurs
Les plus fréquents en synthèse logique :
entiers : 12 , 0
booléens : true ou false
bits : '0' ou '1'
chaînes de bits
"1111_1110" (le caractère _ est sans action)
x"FE" (notation hexadécimale), o"76" (octal)
caractères : 'Z' or '-'
chaînes de caractères : "CY7C372i-83JC"
caractères et chaines peuvent être concaténées :
'1' & "01" & '0' est équivalent à "1010"
"au " & "revoir" est équivalent à "au revoir"
"au" & "revoir" est équivalent à "aurevoir"
[email protected]
9
VHDL
a

Entity et Architecture
Toute description VHDL simple peut être faite sans
autre connaissance qu'Entity et Architecture
D'autres structures existent néanmoins, d'emploi optionnel
ou implicite :
Le package et ses components permettent de simplifier
l'accès à des descriptions fréquemment utilisées
La library est le lieu de stockage des éléments compilés
[email protected]
10
VHDL

package
Un PACKAGE permet de regrouper des
Entity/Architectures destinées à être partagées


certains packages sont livrés avec les outils de
développements
d'autres sont créés par les utilisateurs
[email protected]
11
VHDL
library
 Les 'unités de compilation' (entity, architecture,
package,...) sont conservées dans une LIBRARY
 Pour accéder aux éléments d'une LIBRARY, il suffit de
la nommer au préalable. Par exemple :
library LCD; --déclaration d'accès à la library LCD
 VHDL définit une LIBRARY par défaut (la LIBRARY
work), toujours accessible, qu'il n'est pas nécessaire de
nommer
 La compilation d'entity, architecture, etc. s'effectue par
défaut dans la library work ou, sur demande, dans une
library spécifique
[email protected]
12
VHDL
PROJET
ENTITYS
ARCHITECTURES
PACKAGES
(COMPONENTS)
Library WORK
Library X
[email protected]
Library Y
13
VHDL

L'Entity
L'ENTITY décrit une fonction, vue de l'extérieur :

Nom
rst
d[7:0]

Entrées/Sorties


q[7:0]
BOITE_NOIRE
clk
co
Les signaux d'Entrée/Sortie de l'ENTITY sont des PORTs
Chaque PORT possède un nom, un mode (sens), un type
(associé éventuellement à un ensemble de valeurs)
[email protected]
14
VHDL
PORTS : Modes
Le MODE correspond au sens de transfert :

IN
Entrée (monodirectionnelle)

OUT
Sortie (monodirectionnelle)

INOUT Entrée/Sortie bidirectionnelle

BUFFER Sortie rebouclée
[email protected]
15
VHDL

PORTS : Types
VHDL est un langage fortement typé, interdisant
l'interconnexion de signaux de types différents


Certains types sont prédéfinis par le langage :
integer, bit, bit_vector, boolean, etc.
VHDL permet d'étendre la liste des types de base
IEEE1164 (type std_logic, std_logic_vector)
Types
spécifiques, définis par les outils des fournisseurs
Types définis par l'utilisateur :


type énuméré, par ex. : type jour is (lu, ma, me, je, ve, sa, di);
(souvent utilisé pour les machines d'état)
sous-type : subtype octet is bit_vector(0 to 7);
[email protected]
16
VHDL



Type std_logic (IEEE1164)
Le type bit de VHDL peut prendre les valeurs '0' et '1'. Ce
type est insuffisant pour décrire des signaux logiques réels
(haute-impédance, forçage, etc.)
Le standard IEEE1164 définit des signaux multi-valeurs
répondant aux besoins de systèmes réels, et facilitant la
simulation
Le type std_logic (et std_logic_vector) possède 9 valeurs :
'0', '1', 'X', 'L', 'H', 'W', 'Z', 'U', '-'

L'emploi du type std_logic est possible via la library
IEEE1164
(cf. déclaration d'une Library) :
library ieee;
use ieee.std_logic_1164.all;
[email protected]
17
VHDL
Déclaration d'Entity
rst
d[7:0]
q[0:7]
boite_noire
LIBRARY ieee;
clk
USE ieee.std_logic_1164.all;
ENTITY boite_noire IS PORT (
clk, rst:IN
STD_LOGIC;
d: IN STD_LOGIC_VECTOR(7 DOWNTO 0);
MODE
TYPE
co
RANGE
q: OUT STD_LOGIC_VECTOR(0 TO 7);
co: OUT STD_LOGIC);
END boite_noire;
[email protected]
18
VHDL


ARCHITECTURE
L'ARCHITECTURE décrit le fonctionnement de la
boîte noire déclarée dans l'ENTITY
VHDL permet différents niveaux de description :



Haut niveau (comportemental) : description de la
fonctionnalité, sans référence au 'hardware' sous-jacent
Bas niveau (structurel) : description par utilisation et
interconnexion de 'components' (par ex. portes logiques),
comme pour un schéma
D'une manière générale les descriptions de haut niveau
favorisent la portabilité, les descriptions de bas niveau
l'efficacité
[email protected]
19
VHDL
Architecture :
exemple d'un comparateur
1- Description comportementale
A
C
B
Comparateur
architecture ARCH1 of COMPARATEUR is
begin
C <= '1' when (A=B) else '0';
end ARCH1;
[email protected]
20
VHDL
Architecture :
exemple d'un comparateur
2- Description comportementale (type data-flow)
A
B
C
Comparateur
architecture ARCH2 of COMPARATEUR is
begin
C <= not(A xor B);
end ARCH2;
[email protected]
21
VHDL
Architecture :
exemple d'un comparateur
3- Description structurelle de bas niveau
(interconnecte des composants élémentaires)
A
B
U0
xor2
S
U1
inv
use work.gatespkg.all;
architecture ARCH3 of COMPARATEUR is
signal S : bit;
Begin
Les signaux internes sont déclarés
U0 : xor2 port map (A,B,S); en tête de l'architecture (même déclaration
que les signaux d'entity, sans 'mode')
U1 : inv port map (S,C);
end ARCH3;
[email protected]
22
C
VHDL
Déclarations internes
L'en-tête d'architecture permet de déclarer les signaux
internes, variables, constantes, etc. :
 Exemple de déclaration de signal :
signal VCOMP : std_logic(4 to 7);

Exemple de déclaration de constante :

Exemple de déclaration de variable :
constant NEUF : std_logic_vector(3 downto 0) := "1011";
variable J : integer range 0 to 15 := 0;
[email protected]
23
VHDL
Architecture :
exemple d'un comparateur
4- Description mixte
A
entity COMPSYNC is
C
Comparateur
0
port (A,B,CLK,RST : in bit;
B
QC : out bit);
QC
end COMPSYNC;
CLK
use work.gatespkg.all;
RST
architecture ARCH of COMPSYNC is
Conclusion : les descriptions
signal C : bit;
comportementales sont
constant zero : bit := '0';
recommandées, sauf raison
begin
majeure de performance ou
C <= '1' when (A=B) else '0';
de densité :
U0 : dsrff port map (C,zero,RST,CLK,QC);
[email protected]
24
end ARCH;
VHDL

ARCHITECTURE
meilleure compacité : par exemple un comparateur 4 bits :
en comportemental :
aeqb <= '1' WHEN a = b ELSE '0';
en structurel bas niveau :
u0:
u1:
u2:
u3:
u4:


xnor2 PORT MAP (a(0), b(0), xnr(0));
xnor2 PORT MAP (a(1), b(1), xnr(1));
xnor2 PORT MAP (a(2), b(2), xnr(2));
xnor2 PORT MAP (a(3), b(3), xnr(3));
and4 PORT MAP (xnr(0), xnr(1), xnr(2), xnr(3), aeqb);
meilleure lisibilité
meilleure portabilité (indépendance vis-à-vis du
composant ciblé) [email protected]
25
VHDL

Logiques (définis pour le type bit)





Opérateurs VHDL standard
and, nand
or, nor
xor, xnor
not
Relationnels (bit, bit_vector, integer)






=
/=
<
<=
>
>=
(equal to)
(not equal to)
(less than)
(less than or equal to)
(greater than)
(greater than or equal to)
[email protected]
26
VHDL

Arithmétique unaire (integer)


-
(arithmetic negate)
Arithmétique (integer)




Opérateurs VHDL standard
+
*
(addition)
(subtraction)
(multiplication)
Concaténation (string, bit, bit_vector)

&
[email protected]
27
VHDL

Autres opérateurs VHDL
VHDL définit d'autres opérateurs, dont
l'usage est plus orienté vers le test ou la
simulation :




/ (division)
mod (modulus)
rem (remainder)
**
(exponentiation)
[email protected]
28
VHDL

Instructions en mode séquentiel (dans un
PROCESS)




Instructions VHDL courantes
Assignation (<=)
Assignation conditionnelle (IF)
Assignation sélective (CASE)
Instructions en mode concourant (hors d'un
process)



Assignation (<=)
Assignation conditionnelle (WHEN)
Assignation sélective (WITH)
[email protected]
29
VHDL

instruction when
Assignation conditionnelle, combinatoire :
library ieee;
instruction when
use ieee.std_logic_1164.all;
Multiplexeur 4-->1
a
4
b
4
c
4
d
4
4
s1 s0
e
entity MUX4 is
port( a,b,c,d : in std_logic_vector(3 downto 0);
e : out std_logic_vector(3 downto 0);
s1,s0 : in std_logic );
end MUX4;
architecture ARCHMUX4 of MUX4 is
begin
e <=
a when (s1 & s0) = "00" else
b when (s1 & s0) = "01" else
c when (s1 & s0) = "10" else
d;
end ARCHMUX4;
[email protected]
30
VHDL

instruction if
Assignation conditionnelle, séquentielle :
architecture ARCHDECODR of DECODR is
instruction if
Décodeur 2-->4
(registre en sortie)
s0
a(1)
s1
a(0)
s2
s3
begin
process begin
wait until (clk'event and clk='1');
if a="00" then s0 <= '0' else s0 <= '1' ; end if;
if a="01" then s1 <= '0' else s1 <= '1' ; end if;
if a="10" then s2 <= '0' else s2 <= '1' ; end if;
if a="11" then s3 <= '0' else s3 <= '1' ; end if;
end process;
end ARCHDECODR;
clk
[email protected]
31
VHDL

L'instruction CASE
Permet l'exécution
d'une opération (ou
d'une succession
d'opérations) en
fonction de la valeur
prise par une
expression
Décodeur 2-->4
(registre en sortie)
temp(0)
a(1)
temp(1)
a(0)
temp(2)
temp(3)
clk
x
s0
s1
s2
architecture ARCHDECODR of DECODR is
signal temp : std_logic_vector(0 to 3);
begin
process begin
wait until (clk'event and clk='1');
case (a) is
when "00" =>
temp <= "0111";
when "01" =>
temp <= "1011";
when "10" =>
temp <= "1101";
when others =>
temp <= "1110";
end case;
end process;
s0 <= temp(0); s1 <= temp(1); s2 <= temp(2); s3 <= temp(3);
end ARCHDECODR;
s3
[email protected]
32
VHDL
Conception modulaire et
hiérarchique
VHDL supporte et encourage la conception modulaire

Un niveau de description peut faire appel à des
modules compilés indépendamment, et les
interconnecter de manière structurelle
COMPONENT 2
COMPONENT 1


Les modules de niveaux inférieurs sont des
COMPONENTs
Si un COMPONENT est d'utilisation fréquente, il est
commode de le placer
dans un PACKAGE
[email protected]
33
VHDL
Conception modulaire et
hiérarchique
Description d'un comparateur 4 bits
1- Description comportementale (pour mémoire)A
B
entity CMP4 is port(
A,B : in bit_vector(0 to 3);
C : out bit);
end CMP4;
4
4
C
architecture ARCH_1 of CMP4 is
begin
C <= '1' when (A=B) else '0';
end ARCH_1;
[email protected]
34
VHDL
Conception hiérarchique
modulaire et
2 - Description structurelle 'à plat'
A
B
4
4
C
entity XNOR is port(x,y : in bit; xn : out bit);
end XNOR;
architecture ARCH of XNOR is
begin
xn <= not(x xor y);
end ARCH;
entity AND4 is port(a,b,c,d : in bit; e : out bit);
end AND4;
architecture ARCH of AND4 is
begin
e <= a and b and c and d ;
end ARCH;
entity CMP4 is port(
A,B : in bit_vector(0 to 3);
C : out bit);
end CMP4;
architecture ARCH_2 of CMP4 is
signal i : bit_vector(0 to 3);
begin
c0 : XNOR port map(A(0),B(0),i(0));
c1 : XNOR port map(A(1),B(1),i(1));
c2 : XNOR port map(A(2),B(2),i(2));
c3 : XNOR port map(A(3),B(3),i(3));
c4 : AND4 port map(i(0),i(1),i(2),i(3),C);
end ARCH_2;
[email protected]
35
VHDL
Conception modulaire et
hiérarchique
3 - Description modulaire, sans package
1- Les éléments de base sont décrits à part, et ré-utilisables
2- Instanciation des éléments externes dans l'architecture principale
entity XNOR is port(x,y : in bit; xn : out bit);
end XNOR;
architecture ARCH of XNOR is
begin
xn <= not(x xor y);
end ARCH;
entity AND4 is port(a,b,c,d : in bit; e : out bit);
end AND4;
architecture ARCH of AND4 is
begin
e <= a and b and c and d ;
end ARCH;
entity CMP4 is port(
A,B : in bit_vector(0 to 3);
C : out bit);
end CMP4;
architecture ARCH_2 of CMP4 is
signal i : bit_vector(0 to 3);
component XNOR port(x,y : in bit; xn : out bit);
end component;
component AND4 port(a,b,c,d : in bit; e : out bit);
end component;
begin
c0 : XNOR port map(A(0),B(0),i(0));
c1 : XNOR port map(A(1),B(1),i(1));
c2 : XNOR port map(A(2),B(2),i(2));
c3 : XNOR port map(A(3),B(3),i(3));
c4 : AND4 port map(i(0),i(1),i(2),i(3),C);
end ARCH_2;
[email protected]
36
VHDL
Conception modulaire et
hiérarchique
4 - Description modulaire avec package
package portes is
component XNOR port(x,y : in bit; xn : out bit);
end component;
component AND4 port(a,b,c,d : in bit; e : out bit);
end component;
end portes;
entity XNOR is port(x,y : in bit; xn : out bit);
end XNOR;
architecture ARCH of XNOR is
begin
xn <= not(x xor y);
end ARCH;
entity AND4 is port(a,b,c,d : in bit; e : out bit);
end AND4;
architecture ARCH of AND4 is
begin
e <= a and b and c and d ;
end ARCH;
1- Les components sont inclus dans un package
2- Déclaration d'accès aux éléments du package
entity CMP4 is port(
A,B : in bit_vector(0 to 3);
C : out bit);
end CMP4;
use work.portes.all;
architecture ARCH_3 of CMP4 is
signal i : bit_vector(0 to 3);
begin
c0 : XNOR port map(A(0),B(0),i(0));
c1 : XNOR port map(A(1),B(1),i(1));
c2 : XNOR port map(A(2),B(2),i(2));
c3 : XNOR port map(A(3),B(3),i(3));
c4 : AND4 port map(i(0),i(1),i(2),i(3),C);
end ARCH_3;
[email protected]
37
VHDL
Conception modulaire et
hiérarchique
Conclusions :
 Les descriptions modulaires de haut niveau facilitent la lecture,
la mise au point, la simulation, la fiabilité
 La conception modulaire permet d'utiliser les composants de bas
niveau eventuellement fournis avec les outils logiciels
 Elle permet également d'utiliser des modules VHDL
(développés par les fabricants d'outil ou par les utilisateurs) : on
peut alors parler de description 'structurelle de haut niveau'.
 La description structurelle est la traduction textuelle directe de
la représentation schematique
[email protected]
38
VHDL
Les outils Cypress :
Warp2
[email protected]
39
VHDL
Warp2
Report File
(modèles pour
simulation externe)
Aldec
(Config. file)
Simulation temporelle
.JED
VHDL Text
Galaxy
Synthèse
(Programmation)
FSM editor
(InSRkit)
[email protected]
40
VHDL
Warp2
Warp2 s'intègre également dans des environnements CAO généralistes
: Viewlogic, Exemplar, Mentor, Cadence, Synopsys, etc.
Exemple : Viewlogic
Viewdraw
Schematic Entry
VHDL Entry
SpeedWave or VCS
Source-level
Simulation
Viewlogic
Warp2
Warp
Synthesis
Warp
Fitting
Jedec/Jam
Programming File
ViewSim, SpeedWave
or VCS
[email protected]
VHDL, Verilog
or 3rd Party
Simulation models
41
Téléchargement