Vous êtes sur la page 1sur 121

VHDL

Support cours 5ITR


Prof. D. Mohammed BOUSMAH bousmah@gmail.com

Copyright bousmah@gmail.com

Sommaire

1. Introduction VHDL 2. Le langage VHDL


lments de syntaxe Les objets du langage Les instructions Structures d'un programme.

3. Modlisation l'aide du langage VHDL 4. Simulation fonctionnelle et temporelle du code VHDL 5. Implmentation de code VHDL

Copyright bousmah@gmail.com

Quest ce que VHDL?

Introduction VHDL

Copyright bousmah@gmail.com

Introduction VHDL
Dvelopp dans les annes 80 aux tats-Unis, le langage de description VHDL est ensuite devenu une norme IEEE numro 1076 en 1987. Rvise en 1993 pour supprimer quelques ambiguts et amliorer la portabilit du langage, cette norme est vite devenue un standard en matire d'outils de description de fonctions logiques. A ce jour, on utilise le langage VHDL pour : Concevoir des ASIC (Application Specific Integrated Circuit). Programmer des composants programmables du type PLD, CPLD et FPGA( Field Programmable Gate Array) Concevoir des modles de simulations numriques ou des bancs de tests.

Copyright bousmah@gmail.com

Introduction VHDL

Copyright bousmah@gmail.com

Introduction VHDL
Pourquoi un langage de description ?
Premirement: Il est plus facile de dcrire un circuit numrique en utilisant loutil de description VHDL quun schma ou logigramme. Deuximement: cest un langage de description de haut niveau car il fait abstraction lobjet auquel ou pour lequel il est crit (Portabilit des descriptions VHDL).

Copyright bousmah@gmail.com

Introduction VHDL
Pourquoi un langage de description ?

Copyright bousmah@gmail.com

Introduction VHDL Les limites actuelles


Cration de modles de simulations :NORME IEEE VHDL La totalit de la norme peut tre utilise pour raliser des modles de simulations. Cration d'un circuit intgr :NORME IEEE VHDL Seule une partie de la norme peut tre utilise pour raliser des circuits.

Copyright bousmah@gmail.com

Introduction VHDL Les limites actuelles

Copyright bousmah@gmail.com

Introduction VHDL Caractristiques VHDL

Copyright bousmah@gmail.com

Le langage VHDL

Exemple:

Copyright bousmah@gmail.com

Le langage VHDL

Copyright bousmah@gmail.com

Le langage VHDL
Toute dclaration VHDL utilise pour la synthse utilise des bibliothques. L'IEEE (Institute of Electrical and Electronics Engineers) produit des normes, et a donc cre la norme IEEE 1164 qui contient la dfinition des signaux lectroniques, fonctions et sous programmes permettant d'effectuer des oprations, .

Copyright bousmah@gmail.com

Le langage VHDL
Elle permet de dfinir le NOM de la description VHDL ainsi que les entres et sorties utilises, l'instruction qui les dfinit est port :

Copyright bousmah@gmail.com

Le langage VHDL

L'instruction port. Entre les deux parenthses, elle contient la dclaration des entres/ sorties qui composent notre block entit.

Copyright bousmah@gmail.com

Le langage VHDL

Il est compos de caractres, le premier doit tre une lettre, longueur quelconque mais ne doit pas dpasser une ligne de code. VHDL n'est pas sensible la casse, pas de distinctions entre majuscules et minuscules.

Copyright bousmah@gmail.com

Le langage VHDL

Copyright bousmah@gmail.com

Le langage VHDL

Copyright bousmah@gmail.com

Le langage VHDL

L'architecture dcrit le fonctionnement souhait par le circuit. L'architecture est compose d'une suite d'instructions ou d'quations qui dcrivent le fonctionnement du circuit. Cette suite sera d'une syntaxe similaire celle de l'entit.

Copyright bousmah@gmail.com

Le langage VHDL

Copyright bousmah@gmail.com

Le langage VHDL

Copyright bousmah@gmail.com

Le langage VHDL

Copyright bousmah@gmail.com

Le langage VHDL

Copyright bousmah@gmail.com

Le langage VHDL

Copyright bousmah@gmail.com

Le langage VHDL

Copyright bousmah@gmail.com

Le langage VHDL

Copyright bousmah@gmail.com

Le langage VHDL

Copyright bousmah@gmail.com

Le langage VHDL

Copyright bousmah@gmail.com

Modlisation l'aide du langage VHDL

Le langage VHDL est conu de manire nous permettre de modliser des systmes complexes dcrits des niveaux dabstractions trs diffrents. En dautres mots, VHDL intgre adquatement les mthodologies de conception de systmes dites Top/Down. De plus, VHDL est un langage modulaire et hirarchique. Un systme complexe peut tre divis en plusieurs blocs, chaque bloc peut son tour tre divis en plusieurs sous blocs et ainsi de suite. Linterface entre les diffrents blocs se fait par des liens de communication. De la mme manire, un modle VHDL peut tre compos de plusieurs sous-modules, chaque sous-module peut tre divis son tour en dautres sousmodules et ainsi de suite.

Copyright bousmah@gmail.com

Modlisation l'aide du langage VHDL

VHDL a dabord t propos comme un langage de modlisation et il a graduellement t utilis comme un langage de synthse. Cependant, il faut noter que les possibilits de modlisation avec VHDL dpassent de loin les besoins de la synthse. Certaines caractristiques abstraites de VHDL nont pas dquivalent dans la logique digitale. Autrement dit, la synthse ne supporte quun sous ensemble des possibilits de VHDL.

Exemples: Voir TP

Copyright bousmah@gmail.com

Simulation fonctionnelle et temporelle du code VHDL


La ralisation dun projet VHDL les tapes suivantes :
Spcification

Validation fonctionnelle

Design correct non oui Validation temporelle

non

Spcifications temporelles correctes

oui Programmation

Copyright bousmah@gmail.com

Simulation fonctionnelle et temporelle du code VHDL

Spcification : saisie du circuit logique (spcification syntaxique :


VHDL, Verilog, mode graphique, etc.)

Validation fonctionnelle : simulation fonctionnelle du concept


(problmes des sorites/sorties, boucles, etc.). Vrification ne prenant pas en compte les aspects temporels du circuit

Validation temporelle : Simulation temporelle (et fonctionnelle)


du circuit (temps de propagation, recouvrement de signaux, etc.).

Copyright bousmah@gmail.com

Implmentation de code VHDL

Implmentation : le programme est port physiquement sur le


circuit FPGA en fonction des spcifications prcis par le programmeur (pins, etc.)

FPGA de Xilinx (modle Spartan XC3S400) avec 400 000 portes1

Copyright bousmah@gmail.com

Implmentation de code VHDL

Copyright bousmah@gmail.com

Implmentation de code VHDL


En effet; un circuit logique programmable, ou rseau logique programmable, est un circuit intgr logique qui peut tre reprogramm aprs sa fabrication. Il est compos de nombreuses cellules logiques lmentaires librement assemblables. Ce type de composant lectronique est communment dsign par diffrents sigles anglais dont notamment : FPGA (field-programmable gate array, rseau de portes programmables in situ) ; PLD (programmable logic device, circuit logique programmable) ; EPLD (erasable programmable logic device, circuit logique programmable et effaable) ; CPLD (complex programmable logic device, circuit logique programmable complexe) ; PAL (programmable array logic, rseau logique programmable) ; Bien que fondamentalement synonymes, ces termes ne sont gnralement pas interchangeables dans le vocabulaire commercial des fabricants : FPGA dsigne plutt des composants technologie RAM, EPLD des composants technologie FLASH, PAL des composants technologie anti fusible. fusible

Copyright bousmah@gmail.com

Implmentation de code VHDL

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

TP: XILINX ISE 9.2i

Copyright bousmah@gmail.com

Rfrences
D.Chillet Support de cours VHDL ENSSAT - Universit de Rennes 1 France Richard GRISEL Les FPGA IUP GEE Amiens Dantec Lannion VHDL combinatoire M TAYARI.L Guide pratique dinitiation XILINX ISE 9.2i ISET DE NABEUL Philip Simpso FPGA Design: Best Practices for Team-Based Design Jacques Weber et all. Le langage VHDL : du langage au circuit, du circuit au langage - 4e dition: Cours et exercices corrigs

Copyright bousmah@gmail.com

Annexes

Annexe 1: Syntaxe dtaille VHDL

Copyright bousmah@gmail.com

Annexe 1: Syntaxe dtaille VHDL


Structure dune description VHDL Entit et architecture En VHDL, une structure logique est dcrite l'aide d'une entit et d'une architecture de la faon suivante : ENTITY Nom de l'entit IS Description des entres et des sorties de la structure en explicitant pour chacune d'entre elles le nom, la direction (IN, OUT et INOUT) et le type. END Nom de l'entity ; ARCHITECTURE Nom de l'architecture OF Nom de l'entit IS Zone de dclaration. BEGIN Description de la structure logique. END nom de l'architecture ;

Copyright bousmah@gmail.com

Annexe 1: Syntaxe dtaille VHDL


Exemple dun additionneur 1 bit: Entity additionneur is port (A, B : in bit; Som, Ret : out bit); End additionneur ; Architecture arch_addi of additionneur is begin Som <= A xor B; Ret <= A and B; End arch_addi;

Copyright bousmah@gmail.com

Annexe 1: Syntaxe dtaille VHDL

Remarques: L'entit donne les informations concernant les signaux d'entres et de sorties de la structure ainsi que leurs noms et leurs types. L'architecture dcrit le comportement de l'entit. Il est possible de crer plusieurs architectures pour une mme entit. Chacune de ces architectures dcrira l'entit de faon diffrente.

Copyright bousmah@gmail.com

Annexe 1: Syntaxe dtaille VHDL


Description comportementale et structurelle
Il existe deux faons distinctes de dcrire une structure. L'une dite comportementale et l'autre structurelle. Description comportementale :Dans ce type de description, le comportement de la structure est directement inscrit dans l'architecture l'aide d'instructions squentielles ou sous forme de flow de donnes.

Description comportementale l'aide d'instructions squentielles :


architecture Arch_comp1 of entit_X is begin process (A, B) begin if (A = '0' and B = '0') then Som <= '0'; Ret <= '0'; if (A = '0' and B = '1') then Som <= '1'; Ret <= '0'; if (A = '1' and B = '0') then Som <= '1'; Ret <= '0'; if (A = '1' and B = '1') then Som <= 0'; Ret <= '1'; end if; end process; end arch_comp1;

Copyright bousmah@gmail.com

Annexe 1: Syntaxe dtaille VHDL

Description comportementale sous forme de flow de donnes : architecture Arch_comportementale of entit_X is begin Som <= A xor B; Ret <= A and B; end arch_comportementale; Description structurelle: Dans ce type de description, on relie entre eux des composants pralablement dcrits en VHDL.

Entity XOU is port (E1, E2 : in bit; S1 : out bit); end XOU; architecture A_XOU of XOU is begin S1 <= E1 XOR E2; end A_XOU;

entity ET is port (E3, E4 : in bit; S2 : out bit); end ET; architecture A_ET of ET is begin S2 <= E3 AND E4; end A_ET;

Copyright bousmah@gmail.com

Annexe 1: Syntaxe dtaille VHDL


Entity add is port (A, B : in bit; Som, Ret : out bit); end add; architecture Arch_structurelle of add is --Dclaration du composant XOU component XOU port (E1, E2 : in bit; S1 : out bit); end component; --Dclaration du composant ET component ET port (E3, E4 : in bit; S2 : out bit); end component; --Spcification de l'entit et de l'architecture utiliser pour les composants ET et XOU. for U1 : XOU use entity work.XOU(A_XOU); for U2 : ET use entity work.ET(A_ET); --Cblage des composants XOU et ET appel U1 et U2. begin U1 : XOU port map (A, B, Som); U2 : ET port map (A, B, Ret); end arch_structurelle;

Copyright bousmah@gmail.com

Annexe 1: Syntaxe dtaille VHDL


Configuration, package et package body
Admettons que plusieurs architectures aient t cres pour une entit A utilise au sein dune architecture arch_princ de l'entit princ. Lors de la synthse ou de la simulation de l'entit princ, il va tre ncessaire de spcifier quelles sont les architectures utiliser. Cette spcification peut tre faite grce l'utilisation d'une configuration.

Copyright bousmah@gmail.com

Annexe 1: Syntaxe dtaille VHDL

La configuration permet, comme son nom l'indique, de configurer l'entit laquelle elle est associe. On peut, par exemple, spcifier les architectures utiliser pour tous les composants dclars au sein d'une description. Pour qu'une description soit portable, c'est--dire synthtisable ou simulable sur des outils diffrents et pour des composants cibles diffrents, il est prfrable de n'avoir qu'une seule architecture par entit. Les configurations deviennent alors inutiles.

Copyright bousmah@gmail.com

Annexe 1: Syntaxe dtaille VHDL


Dans le langage VHDL, il est possible de crer des package et package body dont les rles sont de permettre le regroupement de donnes, variables, fonctions, procdures, etc., que l'on souhaite pouvoir utiliser ou appeler partir d'architectures. Il est ainsi possible de se crer une sorte de bibliothque d'objets (constantes, variables particulires, fonctions ou procdures spcifiques, etc.) que l'on pourra appeler partir de plusieurs descriptions. Cette possibilit est particulirement intressante lorsque l'on utilise, au sein d'un projet contenant plusieurs entits, des ressources (constantes, variables particulires, fonctions...) identiques. Imaginons, par exemple, qu'un projet contenant deux entits A et B aux Architectures respectives arch_A et arch_B utilisant la mme constante de temps tps_propa = 27ns. L'utilisation d'un package nomm pack_proj etd'un package body nomm pack_bod donnerait :

Copyright bousmah@gmail.com

Annexe 1: Syntaxe dtaille VHDL

Copyright bousmah@gmail.com

Annexe 1: Syntaxe dtaille VHDL

La ligne de commande use work.pack_proj.all qui se trouve en tte des dclarations des entits a pour but de prvenir l'analyseur ou le synthtiseur que l'on va utiliser des lments du package pack_proj, en l'occurrence la constante de type time tps_propa initialise 27ns.

Copyright bousmah@gmail.com

Annexe 1: Syntaxe dtaille VHDL


Les instructions concurrentes et squentielles

Les instructions concurrentes:Elles sexcutent de faon parallle. Les sorties sont ractualises en continu en fonction des changements observs sur les entres. On peut dissocier trois types dinstructions concurrentes : - Les instructions d'affectation utilise au sein des exemples prcdents qui correspondent l'criture d'une quation boolenne, - Les instructions conditionnelles du type "affectation When condition else ...", - Les instructions conditionnelles du type "With signal select affectation When condition else ...",

Copyright bousmah@gmail.com

Annexe 1: Syntaxe dtaille VHDL


L'instruction When else

Cette instruction permet d'affecter un signal une expression (expression = signal, quation ou valeur) pour certaines conditions (conditions sur les signaux de type IN ou INOUT). Voici un exemple d'utilisation de ce type d'instruction lors de la description d'un multiplexeur :
entity exemple is port (A, B, C : IN bit; Sel : IN bit_vector (1 downto 0); S : OUT bit); end exemple; architecture exemple of exemple is begin S <= A when (Sel = "00") else B when (Sel = "01") else C when (Sel = "10") else '0'; end exemple;

Copyright bousmah@gmail.com

Annexe 1: Syntaxe dtaille VHDL


L'instruction With select when

Cette instruction est semblable la prcdente avec en plus une prcision pralable du signal sur lequel vont se porter les conditions. En reprenant l'exemple prcdent, on obtient donc :
entity exemple is port (A, B, C : IN bit; Sel : IN bit_vector (1 downto 0); S : OUT bit); end exemple; architecture exemple of exemple is begin With Sel select S <= A when "00", B when "01", C when "10", '0' when others; end exemple

Copyright bousmah@gmail.com

Annexe 1: Syntaxe dtaille VHDL


Les instructions squentielles

Les process

le langage VHDL propose une solution simple qui consiste crer des ensembles appels process, regroupant des instructions squentielles et se comportant, d'un point de vue externe, comme des Instructions concurrentes. Voici un exemple d'quivalence entre deux descriptions, l'une base d'instructions concurrentes et l'autre base d'instructions squentielles regroupes au sein d'un process.

Copyright bousmah@gmail.com

Annexe 1: Syntaxe dtaille VHDL

Copyright bousmah@gmail.com

Annexe 1: Syntaxe dtaille VHDL

A travers cet exemple, on constate que les deux process se comportent comme deux instructions concurrentes. L'excution d'un process est concurrente mme si les instructions qu'il contient sont squentielles. Notons que la dclaration d'un process dbute par le mot cl process, suivi d'une liste de noms de signaux.Cette liste est appele liste de sensibilit, elle contient le nom des signaux dont le changement d'tat va provoquer l'excution du process. En d'autres termes, le process dont la dclaration est la suivante : process (A, B) va tre excut chaque changement d'tat de l'un (ou des deux) signal(aux) A et B. L'excution d'un process n'a lieu qu'en cas de changement d'tat de l'un (ou de plusieurs) signal(aux) compris dans la liste de sensibilit.

Copyright bousmah@gmail.com

Annexe 1: Syntaxe dtaille VHDL


INSTRUCTION IF
IF condition1 THEN instructions squentielles; ELSIF condition2 THEN instructions squentielles; ELSIF condition3 THEN instructions squentielles; ELSE instructions squentielles; END IF; Remarques : Il est possible dimbriquer plusieurs boucles IF les unes dans les autres. IF ... THEN IF ... THEN ELSIF ... THEN END IF; ELSE END IF; Les instructions ELSIF et ELSE ne sont pas obligatoires.

Copyright bousmah@gmail.com

Annexe 1: Syntaxe dtaille VHDL


BOUCLE FOR FOR paramtre IN intervalle LOOP instructions squentielles; END LOOP;
Qui se lit: POUR le paramtre COMPRIS dans l'intervalle EXECUTER instructions squentielles; FIN DE LA BOUCLE; Exemple : FOR i IN 0 to 3 LOOP IF (A = i) THEN S <= B; END IF; END LOOP; Excuter, pour i = 0, i = 1, i = 2 puis i = 3 les instructions suivantes : SI (A = i) THEN S <= B; END IF;

FIN DE LA BOUCLE;

Copyright bousmah@gmail.com

Annexe 1: Syntaxe dtaille VHDL


INSTRUCTION CASE CASE signal IS WHEN valeur1 => instructions squentielles; WHEN valeur2 => instructions squentielles; WHEN valeur3 => instructions squentielles; WHEN OTHERS =>instructions squentielles; END CASE; Qui se lit: CAS possibles de lexpression EST LORSQUE signal = valeur1 => instructions squentielles; LORSQUE signal = valeur2 => instructions squentielles; LORSQUE signal = valeur3 => instructions squentielles; LORSQUE signal = AUTRES => instructions squentielles; FIN DE CAS; Remarques : Linstruction CASE, souvent appele switch case, convient parfaitement pour dcrire un diagramme d'tat, un grafcet ou tout autre formalisme de Structures squentielles. L'instruction When others n'est pas obligatoire, elle reprsente une facilit d'criture.
Copyright bousmah@gmail.com

Annexe 1: Syntaxe dtaille VHDL


Les vecteurs de signaux
le langage de description VHDL permet la dclaration et la manipulation des vecteurs de signaux ou des bus de signaux. Exemple:Multiplexeur de vecteurs de signaux.

S = A si sel = 1 et S = B si sel = 0.
Entity MUX is port (sel : in bit; A : in bit_vector (7 downto 0); B : in bit_vector (7 downto 0); S : out bit_vector (7 downto 0)); end MUX; architecture Arch_MUX of MUX is begin S <= A when SEL = '1' else S <= B when SEL <= '0'; end Arch_MUX;

Copyright bousmah@gmail.com

Annexe 1: Syntaxe dtaille VHDL


Dclaration GENERIC
Typiquement, on utilise une dclaration de GENERIC pour spcifier des temps de propagation et autres dlais de portes logiques. Ces temps seront alors modifiables lors de l'utilisation de ces portes logiques dans une description structurelle. Voici un exemple d'utilisation de dclarations de GENERIC :

Copyright bousmah@gmail.com

Annexe 1: Syntaxe dtaille VHDL


Les fonctions et procdures Le langage VHDL permet l'utilisation et la cration de fonctions ou de procdures que l'on peut appeler partir d'une architecture. Le rle de ces fonctions ou procdures est de permettre, au sein d'une description, la cration d'outils ddis certaines tches pour un type dtermin de signaux .

La syntaxe dune fonction est la suivante :


FUNCTION nom de la fonction (liste des paramtres de la fonction avec leur type) RETURN type du paramtre de retour IS zone de dclaration des variables; BEGIN ...........; instructions squentielles; ...........; RETURN nom de la variable de retour ou valeur de retour; END;

Copyright bousmah@gmail.com

Annexe 1: Syntaxe dtaille VHDL


Exemple: Dans le montage ci-dessous, on utilise quatre reprises la fonction logique NONET trois entres. On dcide donc de dcrire ce montage en crant une description VHDL comportant une fonction nomme NONET.

Copyright bousmah@gmail.com

Annexe 1: Syntaxe dtaille VHDL


Une fonction reoit donc des paramtres d'entres et renvoie un paramtre de sortie. Dans l'exemple prcdent, la fonction reoit trois paramtres A, B et C et retourne un paramtre S. Le mot cl RETURN permet d'associer au paramtre de sortie une valeur. Une fonction peut donc contenir plusieurs RETURN, exemple : FUNCTION bool_vers_bit (X : boolean) RETURN bit IS BEGIN if X then RETURN '1'; else RETURN '0'; end if; END; Cette fonction, qui convertit un signal de type boolen en un signal de type bit, possde deux RETURN. L'un pour renvoyer la valeur '1' et l'autre pour la valeur '0'. Notons qu'il est possible de dclarer une variable interne la fonction que l'on pourra affecter au paramtre de sortie (voir exemple prcdent), ce type d'affectation "signal <= variable" est impossible en dehors des fonctions, procdures ou process. En ce qui concerne l'appel d'une fonction, il peut tre fait partir d'instructions squentielles ou concurrentes. Dans le cas des instructions concurrentes, la fonction sera toujours vrifie.
Copyright bousmah@gmail.com

Annexe 1: Syntaxe dtaille VHDL


Procdures Les procdures, diffrent des fonctions par le fait qu'elles acceptent des paramtres dont la direction peut tre IN, INOUT et OUT. Une procdure ne possde donc pas un ensemble de paramtres d'entres et un paramtre de sortie mais un ensemble de paramtres d'entres-sorties et aucun paramtre spcifique de sortie. Prenons l'exemple de la description d'une bascule RS travers une procdure : Entity test_de_rs is port (E1, E2 : IN bit; S1, S2 INOUT bit); end test_de_RS; Q Architecture test_de_RS of test_de_RS is PROCEDURE RS (signal A, B : IN bit; signal Q, : INOUT bit) IS Q BEGIN Q <= not (A or );

<= not (B or Q); END; begin RS (E1, E2, S1, S2); end test_de_RS;

Copyright bousmah@gmail.com

Annexe 1: Syntaxe dtaille VHDL


On constate que les paramtres A, B, Q et de la procdure ont t explicitement dcrits. Ainsi, Q la liste des paramtres contient : le genre de paramtre, variable (valeur par dfaut), signal ou constante, le nom des paramtres, dans notre cas, A, B, Q et (ces noms ne sont connus en temps que Q Q paramtres qu' l'intrieur de la procdure), la direction de chaque paramtre, IN, OUT ou INOUT (dans notre cas INOUT pour Q et Q qui sont utiliss en lecture IN et criture OUT au sein de la procdure), le type des paramtres, bit dans notre cas. Remarque : Dans l'exemple ci-dessus, les paramtres de la procdure taient de genre signal, ce qui impliquait les affectations "<=" propres aux signaux. Dans le cas o les paramtres sont de genre variable, il faut utiliser les symboles ":=" propres aux variables. Si lon reprend cet exemple, en utilisant des paramtres de genre variable, on obtient une description moins lisible qui est la suivante :

Copyright bousmah@gmail.com

Annexe 1: Syntaxe dtaille VHDL


architecture test_rs of test_rs is PROCEDURE RS (signal A, B : IN bit; variable Q, : INOUT bit) IS BEGIN Q Q := not (A or );

Q
:= not (B or Q);

Q
END; begin process (E1, E2) variable Q1, Q2 : bit; begin RS (E1, E2, Q1, Q2); if (Q1 = '1') then S1 <= '1'; else S1 <= '0'; end if; if (Q2 = '1') then S2 <= '1'; else S2 <= '0'; end if; end process; end test_rs;

Copyright bousmah@gmail.com

Dclaration des fonctions et procdures au sein de packages


Dans les exemples qui prcdent, les fonctions ou procdures ont t insres dans des architectures. Or, dans ce cas prcis, les fonctions ou procdures en question ne sont accessibles que dans l'architecture dans laquelle elles ont t dcrites. Pour les rendre accessibles partir de plusieurs architectures, il est ncessaire de les dclarer au sein de packages et de dclarer en amont de l'architecture vouloir utiliser ce package. En reprenant l'exemple de la cration d'une fonction NONET et en insrant cette fonction au sein d'un package, voici ce que l'on obtient :

Toute fonction ou procdure dclare au sein d'un package est dcrite dans le package body associ ce package. Copyright bousmah@gmail.com

Annexe 1: Syntaxe dtaille VHDL


Les types prdfinis ou non, surcharge des oprateurs, fonction de rsolution
Les types prdfinis et les oprateurs associs: Le type d'un signal dfinit l'ensemble auquel appartient un signal. Le langage VHDL initial propose des types prdfinis, c'est--dire des types pour lesquels l'ensemble est clairement dfini.Voici les types prdfinis proposs par le langage VHDL initial :

Nom du type BIT INTEGER REAL BOOLEAN CHARACTER TIME

Dfinition de l'ensemble Deux valeurs possibles 0 ou 1 Entiers (nombre positif ou ngatif sur 32 bits) Rels 2 valeurs possibles true ou false Caractres a, b, c ..., 1, 2 . Nombre rel de temps fs, ps ..., min, hr.

Copyright bousmah@gmail.com

En plus des diffrents types lists dans le tableau prcdent, le langage VHDL propose trois types trs utiles dont voici la dfinition. Type numration Ces types sont utiliss lorsque l'on souhaite crer un nouveau type de signal ou lorsque l'on souhaite crer un signal ou une variable dont les valeurs possibles sont explicites. Exemple: TYPE Signal_instruction IS (LDAA, ADDA, BNE, .... , BSR, RTS) ; SIGNAL Instruction : Signal_instruction ; Dans cet exemple, la premire ligne correspond la dfinition d'un type de nom Signal_instruction et la deuxime la cration d'un signal nomm Instruction et de type Signal_instruction. Type tableau Le langage VHDL autorise la dfinition de tableau de valeurs de type quelconque. L'instruction suivante correspond la dfinition d'un type nomm Tableau_d'entiers : TYPE Tableau_d'entiers IS ARRAY (7 downto 0) OF integer ; L'instruction suivante va crer un signal de nom Tableau et de type Tableau_d'entiers : SIGNAL Tableau : Tableau_d'entiers ; Le signal Tableau comportera donc 8 lments de type entier que l'on pourra manipuler individuellement ou tous en mme temps. Pour crer un tableau plusieurs lignes, la syntaxe suivante est possible : TYPE Tableau_8xbit IS ARRAY (7 downto 0) OF bit ; TYPE Tableau_4x8xbit IS ARRAY (3 downto 0) OF Tableau_8xbit ; ou encore : TYPE Tableau_4x8xbit IS ARRAY (3 downto 0, 7 downto 0) OF bit ;
Copyright bousmah@gmail.com

Annexe 1: Syntaxe dtaille VHDL

Type enregistrement Il est possible, en VHDL comme dans la plupart des langages volus, de crer un type Constitu de plusieurs lments diffrents. Les lments ainsi juxtaposs pourront, par la suite, tre accessibles grce l'utilisation du "." comme pour les adresses lectroniques.

Copyright bousmah@gmail.com

Annexe 1: Syntaxe dtaille VHDL


Dfinition de types et surcharge des oprateurs. Les types prdfinis proposs par le langage VHDL initial sont vite devenus insuffisants dans la plupart des cas. C'est dans cette optique que les types std_logic et std_ulogic conformes au standard IEEE 1164 ont t crs. Ces types proposent les valeurs suivantes : 'U' = Non initialis, X ' = inconnu forage fort, 0 = forage faible, 1 = forage fort, Z ' = haute impdance, W = inconnu forage faible, L = forage faible, H = forage fort, et - = quelconque.

Copyright bousmah@gmail.com

Annexe 1: Syntaxe dtaille VHDL


Les attributs Le langage VHDL propose un outil appel attribut que l'on peut, en quelque sorte, assimiler des fonctions. Plac auprs d'un signal, l'attribut " 'event " va, par exemple, retourner une information vraie ou fausse (donc de type boolen) sur le fait que le signal en question ait subi ou non un vnement (un changement de valeur). Le fonctionnement de cet attribut ressemble au comportement d'une fonction dont le paramtre de retour serait de type boolen, ceci prs que l'attribut 'event en question possde une notion de mmoire. En effet il dtecte un changement d'tat qui ncessite d'avoir au pralable mmoris l'tat prcdent. Il existe en ralit deux sortes d'attributs : Les attributs destins retourner des informations concernant le comportement d'un signal (vnements, dernire valeur...). Les attributs destins retourner des informations concernant les caractristiques d'un vecteur (longueur, dimension...). Pour ces deux sortes d'attributs, on parle d'attributs prdfinis, au mme titre que l'on parle de types prdfinis (bit, boolean, etc.). Voici une liste non exhaustive des diffrents attributs prdfinis proposs par le langage VHDL.

Copyright bousmah@gmail.com

Annexe 1: Syntaxe dtaille VHDL


Attributs 'active 'last_value 'last_event ou 'last-active Dfinitions - informations de retour Vrai ou faux si le signal auquel il est associ vient d'tre affect. Retourne la valeur prcdente du signal auquel il est associ. Retournent des informations de temps concernant la date d'affectation ou de transition des signaux auxquels ils sont affects Vrai ou faux si le signal auquel il est associ n'est pas modifi pendant la dure T. Vrai ou faux si le signal auquel il est associ n'est pas affect pendant la dure T. Retourne une information de type bit qui change d'tat lorsque le signal auquel il est associ est affect. Plac prs d'un nom de tableau, il retourne la valeur du rang le plus haut (la valeur de retour est de type entier). Plac prs d'un nom de tableau, il retourne la valeur du rang le plus bas (la valeur de retour est de type entier). Plac prs d'un nom de vecteur ou tableau, il retourne la valeur du rang le plus gauche (la valeur de retour est de type entier). Plac prs d'un nom de vecteur ou tableau, il retourne la valeur du rang le plus droite (la valeur de retour est de type entier). Copyright bousmah@gmail.com

'stable(T) 'quiet 'transaction

'high 'low 'left 'right

Annexe 1: Syntaxe dtaille VHDL

'range

Plac prs d'un signal, il retourne la valeur de l'intervalle spcifi par l'instruction range lors de la dclaration du signal ou du type utilis. Plac prs d'un signal, il retourne la valeur de l'intervalle inverse spcifi par l'instruction range lors de la dclaration du signal ou du type utilis Retourne X'high - X'low + 1 (sous la forme d'un entier). Vrai ou faux si le signal auquel il est associ vient de subir un changement de valeur.

'reverse_range.

'length 'event

Copyright bousmah@gmail.com

Annexe 1: Syntaxe dtaille VHDL


Synthse d'une description VHDL
Fonctions combinatoires: Une fonction combinatoire est une structure pour laquelle chaque combinaison d'entre fait correspondre en sortie une combinaison dtermine et indpendante des combinaisons d'entres et de sorties prcdentes. On peut donc dcrire ces structures l'aide d'quations boolennes qui seront toujours vrifies comme le sont les instructions concurrentes. En effet, l'instruction "S <= A and B or C" est toujours vrifie et correspond l'quation boolenne S =A.B + C. Mais il est aussi possible de dcrire une structure combinatoire en utilisant les instructions squentielles d'un process. L'quation prcdente peut, par exemple, s'crire : process (A, B, C) begin if (C = '1') then S <= '1'; elsif (A = '1' and B = '1') then S <= '1'; else S <= '0'; end if; end process; L'issue de synthse de ces deux types de description est identique. Toutefois,on peut tre amen se poser la question de savoir quel type de description est utiliser.

Copyright bousmah@gmail.com

Annexe 1: Syntaxe dtaille VHDL


En ralit, mme si le rsultat de la synthse est identique, il y a une diffrence fondamentale entre ces deux descriptions. L'une n'est que le reflet des quations logiques de la structure Combinatoire dcrire, alors que l'autre se base sur l'expression de son comportement. Pour tenter de rsumer les diffrences existant entre ces deux mthodes de description des fonctions combinatoires, on peut lister les avantages et les inconvnients de chacune d'elles. Description de fonctions combinatoires l'aide d'instructions concurrentes : Avantages : la description obtenue est lisible et simple, la description obtenue reflte bien la ralit. Inconvnients : dcrire une fonction combinatoire en utilisant des instructions concurrentes sous-entend que la taille de sa table de vrit le permet ou que les simplifications de cette dernire ont t faites. Description de fonctions combinatoires l'aide de process : Avantages : pour des fonctions compliques dans lesquelles les quations possdent de nombreux termes, cette mthode est parfois plus simple. Lorsque la description comportementale est plus simple que la description algorithmique, cette mthode est avantageuse ; il n'est pas ncessaire de faire les simplifications de la table de vrit, elles sont faites automatiquement par le synthtiseur lors de la synthse. Inconvnients : dans certains cas, cette criture est peu lisible et par consquent trs difficilement modifiable par une personne extrieure. Il n'y a donc pas de rgle gnrale mais plutt la ncessit de procder une dmarche logique d'observation avant la description pour choisir la mthode de description adquate.

Copyright bousmah@gmail.com

Annexe 1: Syntaxe dtaille VHDL


Fonctions squentielles:

La synthse d'une fonction logique squentielle est beaucoup plus complexe que celle d'une fonction combinatoire. Les possibilits de description offertes par le langage VHDL Sont vastes et bien souvent irralisables dans l'tat actuel des technologies. Prenons l'exemple des attributs, ils sont puissants, efficaces, mais posent, pour certains, de gros problmes aux outils de synthse qui ne savent pas comment raliser des structures capables de reprsenter le fonctionnement de ces attributs. L'attribut 'quiet(T), qui retourne une information de type boolen qui est vraie lorsque le signal auquel il est associ n'a pas t affect depuis le temps T, ne reprsente aucune structure lectronique simple. Les synthtiseurs actuels refusent donc cet attribut faute de savoir quoi en faire. Par contre, il existe des attributs qui sont trs utiliss et qui reprsentent mme un vritable standard. La description d'un front est trs simple raliser si l'on utilise l'attribut 'event associ une condition de niveau pour la dtection d'un front montant ou descendant.

Copyright bousmah@gmail.com

Annexes

Annexe 2

Copyright bousmah@gmail.com

Merci de votre attention

Copyright bousmah@gmail.com