cypress semiconductor vhdl training - labo systèmes...

41
VHDL [email protected] 1 Présenté par : LASSAAD TAYARI Technologue en Informatique Industrielle à l’Iset de Gabès

Upload: nguyentruc

Post on 12-Sep-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

VHDL

[email protected] 1

Présenté par :

LASSAAD TAYARI

Technologue en Informatique Industrielle à l’Iset de Gabès

VHDL

[email protected] 2

Initiation à VHDL

Application à laLogique Programmable

VHDL

[email protected] 3

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

Initiation à VHDL

VHDL

[email protected] 4

Introduction

VHDL = VHSIC Hardware Description Langage

Langage de description hardware développé au titre duprogramme VHSIC (Very High Speed Integrated Circuit)du DoD (Department of Defence).

VHDL

[email protected] 5

fournir un environnement de développement hardwarecomplet et unifié (des spécifications à la réalisation enpassant par la simulation)

améliorer l'intercommunication entre(spécificateurs,concepteurs, utilisateurs, outils de développement,etc.)

rendre les réalisations indépendantes destechnologies et des systèmes-hôtes (portabilité,pérennité, etc.)

Objectif

VHDL

[email protected] 6

Caractéristiques générales

Standardisé en 1987 (IEEE1076), complété en 1993 (IEEE1076, IEEE1164)

Langage unique pour

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

VHDL

[email protected] 7

Entity et Architecture

La brique de base de toute description VHDL est la paire ENTITY + ARCHITECTURE : Entity : déclaration de l'interface (Entrées/Sorties)

Architecture : description du fonctionnement

La complexité du bloc décrit par le couple Entity + Architecture est quelconque (système, carte, sous-fonction, porte, etc.)

I1

I2

I3

I4

O1

O2

entity AZERTY is

port( I1, I2, I3, I4 : in bit;

O1, O2 : out bit);

end AZERTY;

architecture XXX of AZERTY is

-- description du fonctionnement

end XXX;

VHDL

[email protected] 8

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

Commentaires Et Identificateurs

VHDL

[email protected] 9

Les littéraux sont utilisés pour la représentation de valeursLes plus fréquents en synthèse logique :

entiers : 12 , 0booléens : true ou falsebits : '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"

Littéraux

VHDL

[email protected] 10

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

Toute description VHDL simple peut être faite sans autre connaissance qu'Entity et Architecture

Entity et Architecturea

VHDL

[email protected] 11

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

VHDL

[email protected] 12

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

VHDL

[email protected] 13

PROJET

Library WORK Library X Library Y

ENTITYS

ARCHITECTURES

PACKAGES

(COMPONENTS)

VHDL

[email protected] 14

L'Entity

L'ENTITY décrit une fonction, vue de l'extérieur :

Nom

Entrées/SortiesBOITE_NOIRE

rst

d[7:0]

clk

q[7:0]

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)

VHDL

[email protected] 15

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

VHDL

[email protected] 16

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);

VHDL

[email protected] 17

Type std_logic (IEEE1164)

Le type bit de VHDL peut prendre les valeurs '0' et '1'. Cetype est insuffisant pour décrire des signaux logiques réels(haute-impédance, forçage, etc.)

Le standard IEEE1164 définit des signaux multi-valeursrépondant aux besoins de systèmes réels, et facilitant lasimulation

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 libraryIEEE1164

(cf. déclaration d'une Library) :

library ieee;

use ieee.std_logic_1164.all;

VHDL

[email protected] 18

Déclaration d'Entity

boite_noire

rst

d[7:0]

clk

q[0:7]

coLIBRARY ieee;

USE ieee.std_logic_1164.all;

ENTITY boite_noire IS PORT (

clk, rst:IN STD_LOGIC;

d: IN STD_LOGIC_VECTOR(7 DOWNTO 0);

q: OUT STD_LOGIC_VECTOR(0 TO 7);

co: OUT STD_LOGIC);

END boite_noire;

MODE TYPE RANGE

VHDL

[email protected] 19

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é

VHDL

[email protected] 20

Architecture : exemple d'un comparateur

1- Description comportementale

Comparateur

A

B

C

architecture ARCH1 of COMPARATEUR is

begin

C <= '1' when (A=B) else '0';

end ARCH1;

VHDL

[email protected] 21

2- Description comportementale (type data-flow)

architecture ARCH2 of COMPARATEUR is

begin

C <= not(A xor B);

end ARCH2;

Architecture : exemple d'un comparateur

Comparateur

A

B

C

VHDL

[email protected] 22

3- Description structurelle de bas niveau (interconnecte des composants élémentaires)

use work.gatespkg.all;

architecture ARCH3 of COMPARATEUR is

signal S : bit;

Begin

U0 : xor2 port map (A,B,S);

U1 : inv port map (S,C);

end ARCH3;

A

B

Cxor2 inv

SU0 U1

Les signaux internes sont déclarés

en tête de l'architecture (même déclaration

que les signaux d'entity, sans 'mode')

Architecture :exemple d'un comparateur

VHDL

[email protected] 23

Déclarations internes

Exemple de déclaration de signal :

signal VCOMP : std_logic(4 to 7);

Exemple de déclaration de constante :constant NEUF : std_logic_vector(3 downto 0) := "1011";

Exemple de déclaration de variable :variable J : integer range 0 to 15 := 0;

L'en-tête d'architecture permet de déclarer les signaux internes, variables, constantes, etc. :

VHDL

[email protected] 24

4- Description mixte

entity COMPSYNC is

port (A,B,CLK,RST : in bit;

QC : out bit);

end COMPSYNC;

use work.gatespkg.all;

architecture ARCH of COMPSYNC is

signal C : bit;

constant zero : bit := '0';

begin

C <= '1' when (A=B) else '0';

U0 : dsrff port map (C,zero,RST,CLK,QC);

end ARCH;

Comparateur

A

B

C

QC

CLK

RST

0

Architecture :exemple d'un comparateur

Conclusion : les descriptions comportementales sont recommandées, sauf raison majeure de performance ou de densité :

VHDL

[email protected] 25

ARCHITECTURE

meilleure compacité : par exemple un comparateur 4 bits :

en comportemental :aeqb <= '1' WHEN a = b ELSE '0';

en structurel bas niveau :u0: xnor2 PORT MAP (a(0), b(0), xnr(0));

u1: xnor2 PORT MAP (a(1), b(1), xnr(1));

u2: xnor2 PORT MAP (a(2), b(2), xnr(2));

u3: xnor2 PORT MAP (a(3), b(3), xnr(3));

u4: and4 PORT MAP (xnr(0), xnr(1), xnr(2), xnr(3), aeqb);

meilleure lisibilité

meilleure portabilité (indépendance vis-à-vis du composant ciblé)

VHDL

[email protected] 26

Opérateurs VHDL standard

Logiques (définis pour le type bit) 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)

VHDL

[email protected] 27

Opérateurs VHDL standard

Arithmétique unaire (integer) - (arithmetic negate)

Arithmétique (integer)

+ (addition)

- (subtraction)

* (multiplication)

Concaténation (string, bit, bit_vector) &

VHDL

[email protected] 28

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)

VHDL

[email protected] 29

Instructions VHDL courantes

Instructions en mode séquentiel (dans un PROCESS) Assignation (<=) Assignation conditionnelle (IF) Assignation sélective (CASE)

Instructions en mode concourant (hors d'un process) Assignation (<=) Assignation conditionnelle (WHEN) Assignation sélective (WITH)

VHDL

[email protected] 30

instruction when

Assignation conditionnelle, combinatoire : instruction when

Multiplexeur 4-->1

library ieee;

use ieee.std_logic_1164.all;

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;

a

b

c

d

e

s1 s0

4

4

4

4

4

VHDL

[email protected] 31

instruction if

Assignation conditionnelle, séquentielle : instruction if architecture ARCHDECODR of DECODR is

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;

Décodeur 2-->4

(registre en sortie)

a(1)

a(0)

s0

s1

s2

s3

clk

VHDL

[email protected] 32

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;

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)

a(1)

a(0)

s0

s1

s2

s3

clk

temp(0)

temp(1)

temp(2)

temp(3)

x

VHDL

[email protected] 33

Conception modulaire et hiérarchique

Un niveau de description peut faire appel à des modules compilés indépendamment, et les interconnecter de manière structurelle

Les modules de niveaux inférieurs sont des COMPONENTs

Si un COMPONENT est d'utilisation fréquente, il estcommode de le placer dans un PACKAGE

COMPONENT 1COMPONENT 2

VHDL supporte et encourage la conception modulaire

VHDL

[email protected] 34

Conception modulaire et hiérarchique

Description d'un comparateur 4 bits

1- Description comportementale (pour mémoire)

entity CMP4 is port(

A,B : in bit_vector(0 to 3);

C : out bit);

end CMP4;

architecture ARCH_1 of CMP4 is

begin

C <= '1' when (A=B) else '0';

end ARCH_1;

AB

C

4

4

VHDL

[email protected] 35

Conception hiérarchique modulaire et

2 - Description structurelle 'à plat'

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;

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;

A

B

C

4

4

VHDL

[email protected] 36

Conception modulaire et hiérarchique

3 - Description modulaire, sans package

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;

1- Les éléments de base sont décrits à part, et ré-utilisables

2- Instanciation des éléments externes dans l'architecture principale

VHDL

[email protected] 37

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;

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;

1- Les components sont inclus dans un package

2- Déclaration d'accès aux éléments du package

VHDL

[email protected] 38

Conception modulaire et hiérarchique

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

Conclusions :

VHDL

[email protected] 39

Les outils Cypress :

Warp2

VHDL

[email protected] 40

Warp2

VHDL Text Galaxy

Report File

.JED

Synthèse

(Programmation)

(Config. file) Aldec

Simulation temporelle

FSM editor

(modèles pour

simulation externe)

(InSRkit)

VHDL

[email protected] 41

Warp2Warp2 s'intègre également dans des environnements CAO généralistes

: Viewlogic, Exemplar, Mentor, Cadence, Synopsys, etc.

Exemple : ViewlogicVHDL Entry

Viewdraw

Schematic Entry

SpeedWave or VCS

Source-level

Simulation

Warp

Synthesis

Warp

Fitting

Jedec/Jam

Programming FileViewSim, SpeedWave

or VCS

VHDL, Verilog

or 3rd Party

Simulation models

Viewlogic

Warp2