53
Laboratoire d’Informatique Systèmes et Télécommunications Universitè Abdelmalek Essaadi Dipl.-Ing Mohammed Bsiss Mohammed Bsiss Langage de programmation du matériel VHDL

Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Langage de programmation

du matériel VHDL

Page 2: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Répitition

VHDL est utilisé pour

• Décrire des circuits numériques

• Décrire des machines à états

• Préparer des signaux de test pour simuler le

component réalisé

Page 3: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Répitition

Une fois le programme en VHDL est écrit, il faut

maintenant le réaliser

• Synthèse logique : générer des fonctions

logiques à partir du programme

• Implémentation : adapter la logique synthétisée

à la cible (FPGA, CPLD)

• Génération : Générer un fichier binaire à télé-

charger sur le « device »

Page 4: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Répitition / Niveau d’abstraction

Comportementale

RTL

Logique

Layout

VHDL

Synthèse

Comportementale

Synthèse

logique

Placement

routage

Page 5: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Structure du VHDL

Il existe 5 catégories d’unité de conception

• L’entité (mot clé entity)

Décrit un système vu extérieur (boîte noire)

• L’architecture (mot clé architecture)

Décrit l’intérieur (le fonctionnement) d’une boîte noire.

• La configuration (mot clé configuration)

• La déclaration de paquetage (mot clé package)

• Le corps de paquetage (mot clé package body)

Circ

uit p

rincip

al

Pa

cka

ge

Page 6: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Le minimum design en VHDL

Deux unités obligatoires

• L’entité

• L’architecture

Page 7: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Le minimum design en VHDL

Page 8: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Le minimum design en VHDL / Résultat de la synthèse

Page 9: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Exemple simple

L’entité (entity) déclare la vue externe du circuit :

les ports d’entrée-sorties et leur mode et leur type.

Elle peut aussi déclarer des paramètres (generic).

Page 10: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Exemple simple en VHDL

Exemple: L’entité du circuit ci-contre qu’on

appellera « nand_gate»

Nom d‘entité Type de port

Semicolon

Nom du port

Mode de port

IN|OUT|INOUT|BUFFER

Page 11: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Exemple simple

L’architecture définit le fonctionnement du circuit.

Zone exécutable

Zone des déclarations

Page 12: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Exemple

On remarque l’opérateur d’affectation <=

Les opérateurs logiques "and", "or", "nor", "nand"

et "not » font parti des opérateurs connus du

langage.

On remarque aussi que -- est utilisé pour des

commentaires.

Il existe deux parties dans l’architecture

- avant begin : zone des déclarations

- Après begin : la partie « zone exécutable".

Page 13: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Exemple

Les signaux INP1, INP2 et INP3 sont des signaux

internes reliant les components logiques

Page 14: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Principe de concurrence

Tous les mêmes

Page 15: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Principe de concurrence

Dans une architecture, toutes les instructions sont

exécutées en parallèle : elles sont concurrentes et

non pas « séquentielles ».

La partie après "begin" dans une architecture est

une zone concurrente.

Page 16: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Décrire des délais

Dans des circuits réels, les portes logiques

présentent des délais.

operations concurrent

delays 2 ns 3 ns

Page 17: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Délai dans les affectations

Une affectation sera déclenchée quand un évènement

arrive (présence d’un changement)

• Un évènement est un changement de valeur d’un signal

• Pour l’instruction ci-dessous, cet évènement est le

passage de C de 0 à 1.

• Cependant, l’affectation se concrétise après 10 ns.

C

D

INP2

10 ns

Page 18: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Délai dans les affectations Synthèse

Attention: l’instruction d’affectation retardé est importante en

simulation, par contre n’a aucun effet en synthèse.

L‘outil de synthèse ignore « after »

Pour la synthèse :

Le circuit qui sera réalisé présentera un délai qui dépendra de

la technologie utilisé, longueur des câblage, etc.

Page 19: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

TD Realiser un Demi additionneur

Le demi additionneur est un circuit combinatoire qui permet

de réaliser la somme arithmétique de deux nombres A et B

chacun sur un bit.

A la sotie on va avoir la somme S et la retenu R ( Carry).

Demi-Additionneur

A

B

S

R

Page 20: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

TD Realiser un Demi additionneur

Pour trouver la structure ( le schéma ) de ce circuit

on doit en premier dresser sa table de vérité

A B R S

0 0 0 0

0 1 0 1

1 0 0 1

1 1 1 0

Page 21: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

demi additionneur en VHDL

Page 22: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Synthèse demi additionneur

Page 23: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Code VHDL non snythétisable

Pour tester un module VHDL, il faut lui associer un module

générateur de signaux (non synthétisable) : le testbench.

Le testbench est un module VHDL spécial (disponible dans la liste

des nouveaux modules lors de l’ajout de fichier source).

Il inclut le module à tester comme un composant et lui associe des

signaux.

L’écriture d’un testbench est automatisée avec Xilinx ISE.

Il reste ensuite à écrire un scénario de test animant les signaux

d’entrée du module en test.

On utilisera alors la même syntaxe qu’un module classique mais

avec des instructions spécifiques.

Page 24: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Testbench non snythétisable

Le VHDL n'est pas seulement utilisé dans la conception de la logique

dans les FPGA et les ASIC.

mais aussi pour la description et la fonction des environnements de

test dans les simulations, dits bancs d'essais « Testbench »

Comme ce code est toujours uniquement simulé et jamais synthétisé,

on peut ici utiliser tous les éléments de langage et les constructions de

VHDL.

Page 25: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Testbench non snythétisable

=1

résultats

attendus

Générateur

de stimulus

Device Under Test (DUT)

Testbench

OK

Page 26: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Testbench demi additionneur

Page 27: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Hiérarchie en VHDL

Un bloc conçu, testé, et fonctionnel peut être

réutilisé. On l’appelle component.

Dans un design qui utilise ce component

• On déclare entité du component

• On instancie un exemplaire de ce component

dans la zone concurrente

• On procède au câblage de ce component

Page 28: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Déclaration du component

instancie un exemplaire de ce

component dans la zone

concurrente

Déclarer l’entité

du component

procède au câblage

Instanciation du component

Page 29: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Instructions concurrentes ou séquentielles

En VHDL, il existe deux types d’instructions

• Instructions concurrentes

à écrire dans la zone concurrente de l’architecture

elles sont exécutées simultanément

l’ordre de l’écriture n’a pas d’importance

• Instruction séquentielles

à écrire dans les « process »

elles sont exécutées dans l’ordre

Page 30: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Les instructions du mode « concurrent »

Affectation conditionnelle :

Cette instruction modifie l’état d’un signal suivant le résultat d’une

condition logique entre un ou des signaux, valeurs, constantes.

SIGNAL <= expression when condition

[else expression when condition]

[else expression];

Y <= A when SEL = “00“ else

B when SEL = “01“ else

C when SEL = “10“ else

D;

condition

Page 31: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Exemple Affectation conditionnelle :

Remarque : l’instruction [else expression] n’est pas obligatoire mais elle

fortement conseillée, elle permet de définir la valeur du SIGNAL dans le

cas où la condition n’est pas remplie.

F prend la valeur de A quand B =’1’ sinon F prend la valeur ‘0’

F <= A when ( B = ‘1’) else ‘0’;

Page 32: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Instruction concurrente sélective

Cette instruction permet d’affecter différentes valeurs à un

signal, selon les valeurs prises par un signal dit de sélection.

with SIGNAL_DE_SELECTION select

SIGNAL <= expression when valeur_de_selection,

[expression when valeur_de_selection,]

[expression when others];

Remarque: l’instruction [expression when others] n’est pas obligatoire

mais fortement conseillée, elle permet de définir la valeur du SIGNAL

dans le cas où la condition n’est pas remplie.

Page 33: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Exemple Multiplexeur 4 vers 1

with SEL select

OUT2 <= IN1 when "00",

IN2 when "01",

IN3 when "10",

IN4 when "11",

'0' when others;

• La condition se fait sur un seul objet (comme le signal sel ci-dessous)

• Le mot clé others doit être utilisé pour couvrir les cas non spécifiés

Page 34: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Exemple Codeur sept-segment (with-select)

Page 35: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Les instructions du mode séquentiel

Un process est une partie de la description d’un circuit dans laquelle

les instructions sont exécutées séquentiellement c’est à dire les unes

à la suite des autres.

Il permet d’effectuer des opérations sur les signaux en utilisant les

instructions standard de la programmation structurée comme dans les

systèmes à microprocesseurs.

L’exécution d’un process est déclenchée par un ou des changements

d’états de signaux logiques. Le nom de ces signaux est défini dans la

liste de sensibilité lors de la déclaration du process.

[Nom_du_process :] process(Liste_de_sensibilité_nom_des_signaux)

Begin

-- instructions du process

end process [Nom_du_process] ;

Page 36: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Les instructions du mode séquentiel

Process est une instruction concurrente : donc à écrire dans une

architecture (après begin)

• Règles de fonctionnement d’un process :

1) L’exécution d’un process a lieu à chaque changement d’état d’un signal

de la liste de sensibilité.

2) Les instructions du process s’exécutent séquentiellement.

3) Les changements d’état des signaux par les instructions du process sont

pris en compte à la fin du process.

Page 37: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Les instructions du mode séquentiel Les deux principales structures utilisées dans un process.

L‘assignation conditionnelle L‘assignation sélective

if condition then

instructions

[elsif condition then instructions]

[else instructions]

end if ;

Exemple:

if (CLK=’1’) then Out <= ”0000”;

end if ;

case signal_de_slection is

when valeur_de_sélection =>

instructions

[when others => instructions]

end case;

Exemple:

case SEL is

when “000” => S1 <= E1;

when “001” => S1 <= ‘0’;

when “010” | “011” => S1 <=’1’;

-- La barre | permet de réaliser

-- un ou logique entre les deux

-- valeurs “010” et “011”

when others => S1 <= ‘0’;

end case;

Page 38: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Exemple Codeur sept-segment (case /when)

Page 39: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Déclaration d‘une bascule

entity BASCULE is

port (

D,CLK : in std_logic;

S : out std_logic);

end BASCULE;

architecture ArchBasc of BASCULE is

begin

PRO_BASCULE : process (CLK)

begin

if ( CLK’event and CLK = ‘1’ )then

S <= D;

end if;

end process PRO_BASCULE;

end ArchBasc;

D’après les règles de fonctionnement énoncées

précédemment, seul un changement d’état du signal

CLK va déclencher le process et par conséquent

évaluer les instructions de celui-ci.

Seul le signal CLK fait partie de la liste de

sensibilité.

Page 40: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Déclaration d‘une bascule

entity BASCULE is

port (

D,CLK : in std_logic;

S : out std_logic);

end BASCULE;

architecture ArchBasc of BASCULE is

begin

PRO_BASCULE : process (CLK)

begin

if ( CLK’event and CLK = ‘1’ )then

S <= D;

end if;

end process PRO_BASCULE;

end ArchBasc;

L’instruction if (CLK'event and CLK='1') then permet

de détecter un front montant du signal CLK. La

détection de front est réalisée par l’attribut event

appliqué à l’horloge CLK.

Si on veut un déclenchement sur un front

descendant, il faut écrire l’instruction suivante : if

(CLK'event and CLK='0').

-

Page 41: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Déclaration d‘une bascule

entity BASCULE is

port (

D,CLK : in std_logic;

S : out std_logic);

end BASCULE;

architecture ArchBasc of BASCULE is

begin

PRO_BASCULE : process (CLK)

begin

if ( rising_edge (CLK) )then

S <= D;

end if;

end process PRO_BASCULE;

end ArchBasc;

-Les bibliothèques IEEE possèdent deux instructions

permettant de détecter les fronts montants

rising_edge(CLK)

-ou descendants

falling_edge(CLK).

-

Si la condition est remplie alors le signal de sortie

S sera affecté avec la valeur du signal d’entrée D.

Page 42: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Instruction Loop

La boucle contient du code qui va être exécuté répétitivement un nombre de

fois qui dépend de sa condition d’arrêt.

Les boucles For, loop et while sont très pratique pour simplifier le code.

Le nombre d’itération doit être statique !

Elle existe trois formes :

La boucle infinie , la boucle for, la boucle while:

La boucle infinie :

La boucle infinie, comme son nom l’indique, ne s’arrête jamais (sauf exécution

de l’instruction exit).

La boucle for:

La boucle est contrôlée par un indice qui lui-même varie selon un schéma

donné en tête : il parcourt une étendue ( RANGE) qui est donnée

explicitement : 2 to 9 ; ou par référence à un type ou un objet : A’RANGE.

[Label:] for I in 1 to 10 loop …end loop;

[Label:] for I in 10 downto 1 loop …end loop;

[Label:] for I in A’RANGE loop …end loop;

Page 43: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Instruction Loop

PROCESS (clock)

VARIABLE max_cnt : INTEGER := 0;

BEGIN

FOR i IN counter'RANGE LOOP

IF counter(i) > max_cnt THEN

max_cnt := counter(i);

END IF;

END LOOP;

END PROCESS;

Le langage VHDL reconnait les attributs

sur les tableaux et les signaux.

‘LEFT

‘RIGHT

‘HIGH

‘LOW

‘LENGTH

‘RANGE

‘REVERSE

CLK’EVENT

Page 44: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Instruction Loop

TYPE BusData is bit_vector(7 DOWNTO 0);

TYPE MEM IS array (4 DOWNTO 0) OF BusData ;

SIGNAL BUSDataI: BusData ;

SIGNAL FIFO : MEM ;

BUSDataI 'LEFT : renvoie 7;

BUSDataI 'LENGTH : renvoie 8;

FIFO'RIGHT : renvoie 0;

FIFO'RANGE : renvoie 4 downto 0;

Les principaux attributs pour les tableaux

Les principaux attributs pour les signaux

CLK'EVENT : renvoie un BOOLEAN indiquant si le signal

CLK a changé.

Page 45: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Instruction Loop

La boucle while:

La boucle est contrôlée par l’évaluation d’une

condition. Tant que la condition est vraie, la

séquence d’instructions est exécutée. Si la

condition est fausse avant d’entrer dans la boucle,

la séquence n’est pas exécutée du tout.

[Label:] while condition loop…end loop;

Page 46: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Instructions contextuelles

Certaines instructions n’ont pas de sens que dans

certaines contextes: dans une boucle, ou dans un

sous-programme. On pourrait y ranger les instructions

wait et break qui ne peuvent pas exister dans une

fonction (une fonction s’exécute à temps de

simulation strictement nu, même pas un delta) et donc

non plus dans un procédural puisque sa définition fait

appel à une fonction équivalence.

Exit, ext label, exit when, next, next label, next when

Page 47: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Compteur à 3 bits synthétisable avec remise à zéro RESET (Remise à zéro

asynchrone / Synchrone)

Library ieee;

Use ieee.std_logic_1164.all;

Use ieee.numeric_std.all;

Use ieee.std_logic_unsigned.all;

entity CMP3BITS is

PORT (

CLOCK : in std_logic;

RESET : in std_logic;

Q : out std_logic_vector(2 downto 0));

end CMP3BITS;

architecture DESCRIPTION of CMP3BITS is

signal CMP: std_logic_vector (2 downto 0);

begin

process (RESET,CLOCK)

begin

if RESET ='1' then

CMP <= "000";

elsif ( rising_edge(CLOCK) then

CMP <= CMP + 1;

end if;

end process;

Q <= CMP;

end DESCRIPTION;

architecture DESCRIPTION of CMP3BITS is

signal CMP: std_logic_vector (2 downto 0);

begin

process (CLOCK)

Begin

if rising_edge(CLOCK) then

if RESET ='1' then

CMP <= "000";

else

CMP <= CMP + 1;

end if;

end if;

end process;

Q <= CMP;

end DESCRIPTION;

Page 48: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Syntaxe résumée du langage VHDL

Page 49: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Syntaxe résumée du langage VHDL

Page 50: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Syntaxe résumée du langage VHDL

Page 51: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Syntaxe résumée du langage VHDL

Page 52: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Syntaxe résumée du langage VHDL

Page 53: Langage de programmation du matériel VHDL Partie II FPGA.pdf · • Décrire des circuits numériques • Décrire des machines à états • Préparer des signaux de test pour simuler

Laboratoire d’Informatique Systèmes et Télécommunications

Universitè Abdelmalek Essaadi

Dipl.-Ing Mohammed Bsiss

Mohammed Bsiss

Travaux dirigés TD1

CLK_IN

Diviseur

CLK_OUT

CO

MPT

EU

R

BIN

AIR

EEN_COMPT

Décodeur

SEGMENT [6 : 0]

NOMBRE [3:0]

a

b

g

f

ce

d

RESET