VHDL

Support de cours D.Chillet
Daniel.Chillet@enssat.fr http://r2d2.enssat.fr
ENSSAT - Université de Rennes 1 - France - Année universitaire 2003 - 2004

1

Qu'est ce que ça veut dire ?

Vhsic Hardware Description Language
Vhsic : Very High Speed Integrated Circuit
Langage de description de systèmes matériels

ENSSAT - Université de Rennes 1 - France - Année universitaire 2003 - 2004

2

VHDL
Plan
1 ) Introduction : motivations, historique 2 ) Méthode de conception: modèles de description 3 ) Unités de conception :
entité, architecture, configuration, paquetage, corps de paquetage

4 ) Les objets : signaux, types, sous types 5 ) Les éléments du langage : opérateurs, procédures, fonctions, affectations 6 ) Instructions concurrentes : processus, blocs 7 ) La généricité 8 ) La fonction de résolution 9 ) Simulation et validation, réalisation d’un composant de test 10 ) Exemples : paquetage standard et exemples de codes VHDL

ENSSAT - Université de Rennes 1 - France - Année universitaire 2003 - 2004

3

France .Introduction ENSSAT .2004 4 .Université de Rennes 1 .Année universitaire 2003 .

France .Année universitaire 2003 .1) Introduction q Un HDL.Université de Rennes 1 . qu’est ce que c'est ? Ø moyen de décrire un système matériel : ü qu’est qu’un système matériel ? • en général. il s’agit d’un schéma mettant en œuvre : – un certain nombre de composants – des connexions entre composants C1 C2 C4 C3 ENSSAT .2004 5 .

Université de Rennes 1 .2004 + S 6 .1) Introduction Ø les niveaux de description peuvent être variables : ü ü ü niveau logique niveau transfert de registres niveau système * A B ENSSAT .Année universitaire 2003 .France .

2004 7 .1) Introduction q Un HDL. doit : Ø permettre la modélisation du système : ü ü ü formalisation du problème à partir de briques de base éviter les descriptions ambiguë Ø faciliter la documentation du système : ü VHDL est très verbeux !!! ENSSAT .Université de Rennes 1 .France .Année universitaire 2003 .

2004 8 .Année universitaire 2003 .France .Université de Rennes 1 .1) Introduction Ø la validation du système : ü ü prouver le fonctionnement du système décrit simulation : C1 C2 C4 C3 • une structure schématique ne peut être simulée que si on connaît le comportement de chacun des sous systèmes ENSSAT .

Université de Rennes 1 .1) Introduction Ø suivre la conception du système : ü si possible pas de changement de langage à chaque étape de conception Système Architecture Registres Portes Circuit Silicium ENSSAT .France .2004 9 .Année universitaire 2003 .

Université de Rennes 1 .1) Introduction ü Outils et objets manipulés Schémas Système Architecture Registres Portes Circuit Outils de synthèse de haut niveau Description HDL Equations booléennes Objets géométriques ENSSAT .France .Année universitaire 2003 .2004 Silicium ??? Structurel Comportemental 10 .

Année universitaire 2003 .France .Université de Rennes 1 .2004 VHDL Structurel Comportemental 11 .1) Introduction Schémas Système Architecture Registres Portes Circuit Silicium ??? Outils de synthèse de haut niveau Description HDL Equations booléennes Objets géométriques ENSSAT .

Année universitaire 2003 .1) Introduction q Motivations pour une approche méthodologique : Ø évolutions technologiques rapprochées : ü la durée de vie des équipements est supérieure au laps de temps entre 2 technologies : • donc les systèmes doivent pouvoir supporter une évolution technologique ü se lier à une technologie dès la phase de conception peut conduire à mettre sur le marché un produit déjà dépassé : Ø indépendance vis à vis des fournisseurs ü se lier à un fournisseur dès la phase de conception peut conduire à revoir toute la conception si les composants ne sont plus disponibles Ø besoin de standardisation nécessité de moyen de description non ambiguë des systèmes matériel : ü Ø début des années 80 12 ENSSAT .2004 .Université de Rennes 1 .France .

1) Introduction q Rapide historique : Ø Ø Ø DOD en 81: effort de normalisation entre 83 et 87 ü département de la défense Américaine efforts de normalisation : Intermetrics.2004 13 .Université de Rennes 1 .France . IBM.Année universitaire 2003 . Texas instrument références constantes ADA a été normalisé définitivement en 83 Normalisation IEEE en 87 (IEEE 1076) : ü Le langage est proche de ADA : ü ü Ø Ø Nouvelle norme en 93 Nouvelle normalisation autour de VHDL analogique : ü ü VHDL AMS pourquoi ? • demande en simulation analogique et en simulation mixte ENSSAT .

Année universitaire 2003 . il est utilisé pour : ü ü ü ü la simulation la synthèse la spécification la documentation Langage de synthèse VHDL Langage de documentation Langage de modélisation 14 ENSSAT .1) Introduction q VHDL : Ø ne vise pas une exécution.Université de Rennes 1 .France .2004 Langage de simulation .

.Année universitaire 2003 .2004 15 . resultat = Factorielle(x) … } x Factorielle resultat ENSSAT .Université de Rennes 1 .France .1) Introduction Ø la brique de base est le composant ou l'entité : ü ü tout système est bâti à partir de cette brique. dans les langages de programmation les briques de base sont les procédures et les fonctions : • la procédure est appelée puis oubliée : – activation explicite • le composant existe en soi : – activation implicite par événements sur ses entrées main() { ..

• de calcul. 2 ns s 16 ENSSAT .1) Introduction Ø fonctionnement concurrent des composants : ü si a et b évoluent en même temps.France . alors les composants c1 et c2 ont un fonctionnement parallèle (concurrent) a C1 s1 b C2 s2 Ø notion de signal : ü connexion des composants entre eux s3 C3 Ø C4 la notion de temps est gérée : ü prise en compte des contraintes réel du matériel : • temps de traversée.Université de Rennes 1 .2004 e1 e2 .Année universitaire 2003 . • etc.

Année universitaire 2003 . simulateur • mais aussi des outils de synthèse et de spécification ENSSAT .2004 17 .Université de Rennes 1 .France .1) Introduction q Les avantages de VHDL : Ø Ø Ø Ø indépendant du constructeur indépendant de la technologie indépendant de la démarche indépendant du niveau de conception Portabilité Ø Standard ü ü IEEE : reconnu par les vendeurs d’outils CAO grand nombres de bibliothèques : • d’opérateurs • de composants • de fonction ü nombreux outils : • compilateur.

4 1076.1 1076 VHDL Dans le langage : • définition du type bit : • bit ('0' .1) Introduction Définition du langage : .version 1076-87 .3 1076.version 1076-93 1076.5 1164 STD LOGIC Package définissant les niveaux logique nécessaire pour la description des systèmes électronique Utilisé par tous les constructeurs et par tous les outils ENSSAT .Université de Rennes 1 .Année universitaire 2003 .2004 18 . '1') • un peu juste 1076.France .2 1076.

1) Introduction
q

VHDL :
Ø

Langage moderne, puissant, général :
ü ü ü

jeu d’instructions complet et très riche fort typage des données compilation séparée des entités

q

Développement parallèle facilité :
Ø

travail d’équipe :
ü ü ü

découpage en unités de conception développement et validation parallèle nécessite de bien identifier les interfaces entre les blocs fonctionnels

q

Simulation du système :
Ø

à tous les niveaux :
ü ü ü

cahier des charges !!! modèles réalisation

Erreurs découvertes au plus tôt dans le cycle de conception
19

ENSSAT - Université de Rennes 1 - France - Année universitaire 2003 - 2004

1) Introduction
1 ère année : - modélisation - simulation

Description informelle

Spécification en VHDL

2 ème année : - modélisation - simulation - synthèse

Synthèse

ENSSAT - Université de Rennes 1 - France - Année universitaire 2003 - 2004

20

Méthodes de conception
ENSSAT - Université de Rennes 1 - France - Année universitaire 2003 - 2004

21

Année universitaire 2003 . on s'arrête au niveau d'une bibliothèque : ü ü ü d'opérateurs logiques d'opérateurs arithmétiques d'opérateurs plus complexes q Ascendante : Ø Ø on part d'une bibliothèque pour remonter.France .2004 22 . au système à concevoir la bibliothèque est décrite à un niveau: ü ü ü opérateurs logiques opérateurs arithmétiques opérateurs plus complexes ENSSAT .Université de Rennes 1 . par assemblage.2) Méthodes de conception q Descendante : Ø Ø on part du besoin et descend jusqu'au niveau physique généralement.

bien description comportementale simulation et validation description structurelle (architecture) Spécification de niveau N Ce que fait le système (cahier des charges) Méthode en 3 temps : Ø Ø Ø Simulations Corrections Etape N Modèle Comment il le fait (réalisation) ENSSAT .France .2004 Spécification de niveau N-1 23 .Université de Rennes 1 .Année universitaire 2003 .2) Méthodes de conception q q Conception descendante : dédiée Ø concevoir vite.

Année universitaire 2003 .Université de Rennes 1 .2) Méthodes de conception q Raffinement successifs des descriptions (hiérarchisation) Ø Ø un bloc est définit comme un assemblage de sous blocs reliés entre eux par des signaux garantie l’équivalence entre les niveaux Mathématique N Comportemental N-1 Structurel N-2 Etape Etape Etape Application Formule Algorithme Architecture Conception descendante Conception ascendante Ø Ø Un seul langage pour tous les niveaux de conception (VHDL) Echange entre concepteurs 24 ENSSAT .France .2004 .

Université de Rennes 1 .Année universitaire 2003 .2) Méthodes de conception Langage naturel Cahier des charges Math lab Etape 1 Modèle mathématique Modèle comportemental (algorithmique) Modèle structurel Modèle physique 25 Simulateur comportemental Simulateur “matériel” Simulateur physique Etape 2 Etape 3 Etape 4 ENSSAT .France .2004 .

2004 .Université de Rennes 1 .2) Méthodes de conception Langage naturel Cahier des charges Etape 1 Modèle mathématique Modèle comportemental (algorithmique) Modèle structurel Modèle physique 26 Simulateur Etape 2 Etape 3 VHDL Etape 4 ENSSAT .France .Année universitaire 2003 .

France .Année universitaire 2003 . ram Représentations Spécif de performances Réponse E/S. L. C Equations différentielles Silicium Objets géométriques 27 ENSSAT . R. Bus. algorithme Table de vérité. port. programme Equations booléennes Machine séquentielle Logique Reg.2) Méthodes de conception q Modèles pour la conception : Synthèse de systèmes numériques Niveaux Système Module hard Primitives fonctions micro. UAL. diag d’états. mux Portes Circuit Transistors.2004 .Université de Rennes 1 .

Année universitaire 2003 .2) Méthodes de conception q Modèles de description VHDL : Ø Structurel ü ü ü ne fait pas intervenir le temps décrit la structure de la fonction réalisée décrit un schéma.Université de Rennes 1 .France . des connexions entre composants Ø Comportemental ü ü algorithme le temps peut intervenir Ø Flot de données ü exprime le flot de données sortants par rapport au flot entrant Possibilité de mélanger ces modèles de description ENSSAT .2004 28 .

2004 29 .France .Année universitaire 2003 . c'est de l'argent !!! ENSSAT .2) Méthodes de conception q Intérêt de VHDL dans la conception descendante SANS VHDL Equations booléennes AVEC VHDL Description informelle Description informelle Spécification en VHDL Schémas Synthèse Synthèse Le temps.Université de Rennes 1 .

2) Méthodes de conception q Organisation de la conception : Ø Découpage en unités de conception : ü ü ü ces unités s’auto suffisent elles peuvent être compilées séparément si la compilation est correcte alors les unités sont placées dans la bibliothèque de travail Ø Possibilité de partager les bibliothèques de ressources Bibliothèque de Robert Bibliothèque commune Bibliothèque de Paul ENSSAT .Année universitaire 2003 .Université de Rennes 1 .2004 30 .France .

2004 31 .Année universitaire 2003 .2) Méthodes de conception q Bibliothèques Ø ü et librairies A un instant donné.Université de Rennes 1 . on travail avec la bibliothèque de travail : choix de cette bibliothèque : • fait en dehors du langage VHDL • par une commande liée au système de développement Ø Ø Il est possible d’utiliser d’autres bibliothèques qui sont alors des bibliothèques de ressources : Par défaut.France . les bibliothèques WORK et STD sont inclues : ü elles permettent la manipulation des "objets" standards : • • • • • • bit vector de bit string integer time etc ENSSAT .

Université de Rennes 1 .Année universitaire 2003 .France .2004 Unités de conception VHDL 32 .ENSSAT .

Université de Rennes 1 .2004 33 .France .Année universitaire 2003 .3) Unités de conception q Elles sont toujours constituées de 2 parties : vue externe vue interne Boite noire Nom paramètres connections Description interne ENSSAT .

Année universitaire 2003 .France .2004 .3) Unités de conception q Exemples : Ø composants vue externe vue interne A B Cin Additionneur S Cout A B Cin S Cout Ø packages vue externe déclaration de constantes déclaration de types déclaration des entêtes des fonctions vue interne description du corps de toutes les fonctions (y compris les fonctions non visible de l’extérieur) 34 ENSSAT .Université de Rennes 1 .

et sous programmes) (décrits le corps des sous programmes) Paquetage corps de paquetage ü 35 ENSSAT .France .Année universitaire 2003 .Université de Rennes 1 .3) Unités de conception q 5 unités de conception disponible en VHDL : Ø Ø spécification d’entités ü (vue externe de la boite) (intérieur de la boite) architecture ü Composant Ø configuration ü (correspondance composants entités) Liens entre les entités et les composants utilisés Ø Ø spécification de paquetage ü (décrits les types.2004 .

B.2004 S Cout 36 . ü (paramètres génériques) Cin A Additionneur B ENSSAT .Université de Rennes 1 . Cout : out bit) end Additionneur .France . S.Année universitaire 2003 . Cin : in bit.3) Unités de conception q Spécification d’entité : Ø Définit la vue externe : ü ü nom entrées sorties : • nombre • sens • type de données transportées entity Additionneur is port ( A.

3) Unités de conception q Spécification d’architecture : Ø Ø Définit ce que fait l’entité 3 modèles sont utilisables : ü ü ü comportemental structurel flot de données ce que fait l’entité comment elle le fait Ø Plusieurs architectures peuvent être définies pour une entité (représentation à des niveaux d’abstraction différents) Comportemental Structurel Etape 2 process if (not a and b) s <= else s <= end if.b Etape 1 a b a b ENSSAT .2004 37 .b + a. ‘0’.Université de Rennes 1 .Année universitaire 2003 . b. on a. Fonction s = a.France . or (a and not b) then ‘1’. wait end process.

Université de Rennes 1 .Année universitaire 2003 .France .3) Unités de conception q Modèle comportemental : Ø Ø Ø Ø description du fonctionnement du système : ü algorithmes. machine d’états algorithme proche de ceux des langages de programmation le temps peut intervenir : ü permet de coller à la réalité par le respect des temps de traversée elle sert de référence pour la suite de la conception une description haut niveau est d’abord comportementale : ü ENSSAT .2004 38 .

Cout <= '0 ’ after 5 ns.3) Unités de conception q Modèle comportemental Ø algorithmes. B = '1' AND Cin = '0') then ’ after 5 ns. end comportementale.Université de Rennes 1 . B. Cout <= '0 ’ after 5 ns. if (A = '0' AND S <= '1 end if. B = '0' AND Cin = '1') then ’ after 5 ns. end process. S Cout A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 Cin 0 1 0 1 0 1 0 1 S 0 1 1 0 1 0 0 1 Cout 0 0 0 1 0 1 1 1 39 ENSSAT . if (A = '0' AND S <= '1 end if. équations logique..2004 . Additionneur is B = '0' AND Cin = '0') then ’ after 5 ns. Cout <= '0 ’ after 5 ns. .France .Année universitaire 2003 .. wait on A. Additionneur A B Cin architecture comportementale of begin process if (A = '0' AND S <= '0 end if.

end process.France . end if. end if. Cout <= '0 ’ after 5 ns. end comportementale2 .Université de Rennes 1 . Cout <= '0 ’ after 5 ns. A B Cin ENSSAT . if (A = '0' AND B = '0' AND Cin = '1') then S <= '1 ’ after 5 ns. B. Cin) begin if (A = '0' AND B = '0' AND Cin = '0') then S <= '0 ’ after 5 ns. Cout <= '0 ’ after 5 ns. if (A = '0' AND B = '1' AND Cin = '0') then S <= '1 ’ after 5 ns.2004 40 .3) Unités de conception q Modèle comportemental Ø algorithme architecture comportementale2 of Additionneur is begin process (A. end if.Année universitaire 2003 .

France .Année universitaire 2003 .3) Unités de conception q Modèle structurel Ø description par la structure : ü ü liste d’éléments interconnexions connexions permanentes Ø Ø ne fait pas intervenir le temps : ü une feuille au moment de la simulation ne peut être décrite structurellement ENSSAT .Université de Rennes 1 .2004 41 .

2004 42 .Université de Rennes 1 .3) Unités de conception q Modèle structurel Additionneur A B u0 u1 S1 S2 S3 u2 u3 u4 Cout Cin S ENSSAT .Année universitaire 2003 .France .

component porteXOR port ( e1 : in e2 : in s : out end component. B. S2. Cout). end structurelle1. u4 : porteOU port map ( S2.3) Unités de conception architecture structurelle1 of Additionneur is begin u0 : porteET port map ( A.2004 43 . S1. bit ). S). bit. S3). B. Cin. signal S1. component porteET port ( e1 : in e2 : in s : out end component. ENSSAT . component porteOU port ( e1 : in e2 : in s : out end component. u1 : porteXOR port map ( A. u2 : porteET port map ( S1. bit. bit. S2). S3 : bit.Université de Rennes 1 .France . u3 : porteXOR port map ( S1.Année universitaire 2003 . Cin. S1). bit. bit ). bit ). bit. bit.

2004 44 .Université de Rennes 1 .Année universitaire 2003 .France .3) Unités de conception q Modèle structurel : hiérarchisation demi_add Additionneur demi_add A B Cin S2 u0 u0 S1 S3 u2 Cout u1 u1 S demi_add ENSSAT .

Année universitaire 2003 .Université de Rennes 1 .France . S2. s : out bit ). u2 : porteOU port map ( S2. S3. out bit . S3 : bit. Cout). u1 : DemiADD port map ( S1. component DemiADD port ( e1 e2 s1 s2 : : : : in bit. Cin. signal S1. in bit. e2 : in bit. B. end structurelle2. S3. begin u0 : DemiADD port map ( A.2004 45 . end component. S2. S1). ENSSAT . S). end component. out bit).3) Unités de conception architecture structurelle2 of Additionneur is component porteOU port ( e1 : in bit.

u1 : porteXOR port map ( e1. in bit. s : out bit ). s1). out bit). e2 : in bit. end component. end structurelle. s : out bit ). architecture structurelle of DemiAdd is : : : : in bit. end component. out bit . e2 : in bit. ENSSAT .2004 46 . component porteET port ( e1 : in bit.3) Unités de conception q Avec DemiAdd : Entity DemiAdd is port ( e1 e2 s1 s2 end DemiAdd. component porteXOR port ( e1 : in bit.Année universitaire 2003 . s2). e2. e2.Université de Rennes 1 . begin u0 : PorteET port map ( e1.France .

2004 .Année universitaire 2003 . A B S2 S1 Cout S3 Cin S architecture flot1 of Additionneur is signal S1. Cout <= S2 or S3 after 5 ns . S2 <= A and B after 5 ns .Université de Rennes 1 . S1 <= A xor B after 10 ns . S3 : bit . 47 L'ordre des descriptions n'a pas d'importance !!! ENSSAT . begin S1 <= A xor B after 10 ns . S3 <= S1 and Cin after 5 ns . S2. begin S <= S1 xor Cin after 10 ns .France . S3 <= S1 and Cin after 5 ns . end flot . Cout <= S2 or S3 after 5 ns . S <= S1 xor Cin after 10 ns . S2. S2 <= A and B after 5 ns . end flot .3) Unités de conception q Modèle flot de données Additionneur architecture flot of Additionneur is signal S1. S3 : bit .

a. label2.Année universitaire 2003 .3) Unités de conception q Spécification de configuration : Ø Ø Ø Ø Effectue la liaison entre les composants utilisés dans une architecture et leur réalisation effective Chaque utilisation d’un composant doit donner lieu à une configuration. etc du composant comp.2004 . c.Université de Rennes 1 . le couple entité / architecture choisie pour la réalisation Indique les correspondances entre les ports du composant et de son modèle Pour les instances label1.d qu’il faut spécifier le modèle dont le composant est l’instance Indique pour chaque composant. on doit utiliser l’entité ent associé à l’architecture arch en prenant soin de faire correspondre tels ports aux ports formels de la même entité 48 ENSSAT .France .

3) Unités de conception
Soit un système utilisant un composant Add1 :
Entity Additionneur

Architecture comportement

Architecture structurelle1

Architecture flot

Configuration 1
configuration conf1 of Systeme is for Add1 : Additionneur use entity work.Additionneur (comportement) ; end for;

Configuration 2
configuration conf2 of Systeme is for Add1 : Additionneur use entity work.Additionneur (structurelle1) ; end for;

Configuration 3
configuration conf3 of Systeme is for Add1 : Additionneur use entity work.Additionneur (flot) ; end for; end conf1; 49

end Université end conf1; ENSSAT -conf1; de Rennes 1 - France - Année universitaire 2003 - 2004

3) Unités de conception
q

Spécification de package :
is -- constante a valeur differee constant PI : real ;

package nom

type boolean is (FALSE, TRUE); type couleur is (bleu, rouge, vert); type caracteres is (‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ...., ‘9’, ‘0’, ‘a’, ‘b’, ...’z’ ); subtype positif is integer range 0 to integer’high; procedure min (a: in integer ; b : in integer ; c : out integer); function max (a : in integer ; b : in integer ) ..... end nom; return integer;

ENSSAT - Université de Rennes 1 - France - Année universitaire 2003 - 2004

50

3) Unités de conception
q

Corps du package :
package body nom is

constant PI : real := 3.1415 ; procedure min (a: in integer ; b : in integer ; c : out integer) is variable .... begin .... end min; function max (a : in integer ; b : in integer ) variable .... begin .... return maximum ; end max; end nom ; return integer is

ENSSAT - Université de Rennes 1 - France - Année universitaire 2003 - 2004

51

Université de Rennes 1 .France .2004 52 .Les objets ENSSAT .Année universitaire 2003 .

Année universitaire 2003 .2004 . '1' after 20 ns. '0' after 30 ns.France .4) Les objets q q q Constantes : Ø valeur fixe après initialisation valeur modifiable par affectation (affectation instantanée) spécifiques aux langages de description de matériel modélisent les informations qui circulent sur les fils ou bus gérés par un pilote (driver) Variables : Ø Signaux : Ø Ø Ø 10 ns 1 0 20 ns 1 30 ns 0 60 ns 1 120 ns 300 ns 750 ns 0 1 0 Ø S <= '1'.Université de Rennes 1 . '0' after 10 ns. … 53 ENSSAT .

pas de type fichier ENSSAT .Année universitaire 2003 .4) Les objets q Les signaux : Ø Ø Ø ils sont la base des langages de description de matériel ils véhiculent les informations entre composants ils ne sont pas de type pointeur.France .Université de Rennes 1 .2004 54 .

S2 <= transport S after 10 ns ENSSAT .4) Les objets q Affectation de signaux : Ø 2 modes de fonctionnement : ü ü mode inertiel : • filtre les impulsions de longueur insuffisante mode transmission : • transmission de toutes les impulsions < à 10 ns < à 10 ns S S1 <= S after 10 ns.Université de Rennes 1 .France .2004 55 .Année universitaire 2003 .

2004 56 .Année universitaire 2003 . ENSSAT .4) Les objets Ø Quel mode utiliser et quand ? ü Mode inertiel • pour les composants dont le temps de traversé est non nul (tous les composants décrits de façon réaliste) Impulsion inférieure à 5 ns 1 0 1 0 a ET Logique (5 ns) s 1 0 b S <= A and B after 5 ns .France .Université de Rennes 1 .

4) Les objets ü Mode transport Bus 1 Bus 2 Bus1 <= transport Bus2 .2004 57 . ENSSAT .Université de Rennes 1 .Année universitaire 2003 .France .

Université de Rennes 1 .4) Les objets q Affectations concurrentes de signaux : Ø problème matériel sous jacent : ü le contrôleur doit s'assurer que les deux sorties de registres ne sont pas à l'état basse impédance simultanément R1 cs1 R2 cs2 Ø VHDL permet la constatation d'un problème de ce type : ü ü par la fonction de résolution la résolution du conflit sera réalisée durant la simulation du système ENSSAT .Année universitaire 2003 .2004 58 .France .

jaune. . endfile) 59 • Composites : – tableaux – articles • Accès: – pointeurs • Fichiers (accès séquentiel. write.) array record access (new. rouge.4) Les objets Les types • Scalaires : – – – – entiers flottants types physiques énumérés integer real time (bleu. deallocate) file (read..Année universitaire 2003 ..2004 . typé ENSSAT .France .Université de Rennes 1 .

poids faible]) subtype positif is integer range 0 to integer'high . attente). <= et >=) range valeur1 to valeur2 range valeur3 downto valeur4 (respect des habitudes des électroniciens.2004 60 . le type time est prédéfini dans le paquetage standard restriction des valeurs possibles : ü ü ü Ø type énuméré : ü ü ü ü Ø type physique : ü ENSSAT . on indique les valeurs symboliques qui peuvent être prise type couleur is (rouge. arret.4) Les objets q Le type scalaire : Ø Ø il dispose d’une relation d’ordre classique ü on peut les comparer (=. <. /=.Année universitaire 2003 . [poids fort ……….. type etat is (marche.France . vert.Université de Rennes 1 . le type caractère est un type énuméré. >. bleu).

4) Les objets
ü ü ü

son unité par des sous unités on peut effectuer des calculs sur ces types

type TIME is range -LimiteInferieure to LimiteSuperieure units fs; ps = 1000 fs; ns = 1000 ps; us = 1000 ns; ms = 1000 us; sec = 1000 ms; 36 fs + (20 ps / 2 ) + 2 ns min = 60 sec; hr = 60 min; end units;

Co rre sp on da nc e
61

Ø

un type physique est caractérisé par :

ENSSAT - Université de Rennes 1 - France - Année universitaire 2003 - 2004

4) Les objets
q

Les types composites :
Ø

Tableaux et articles (array & record) :
ü ü

tableau : éléments homogènes, de même type articles : éléments hétérogènes, types différents dimensions multiples les indices sont de type discret (énuméré ou entier) 2 sortes de tableaux :
• contraint : on spécifie le sens de variation des indices

Ø

Les tableaux :
ü ü ü

1 to 15

15 downto 1

type mot is array (15 downto 0) of bit; type memoire is array (0 to 255) of mot;

ENSSAT - Université de Rennes 1 - France - Année universitaire 2003 - 2004

62

4) Les objets
Ø

Les tableaux non contraint :
ü ü

permet de repousser la définition de la taille à plus tard. la manipulation de ces tableaux demande l’utilisation d’attributs
range <>

type string is array (positive range <>) of character; type bus is array (positive range <>) of bit;

ENSSAT - Université de Rennes 1 - France - Année universitaire 2003 - 2004

63

end record.Année universitaire 2003 .2004 64 . A := B .Université de Rennes 1 .champs1 . champs2 : bit .4) Les objets q Les articles : Ø Ø Ø des éléments de type différents les champs sont désignés par un nom les éléments sont désignés par la notation pointée type article is record champs1 : integer .France . Ø affectation par champs ou globale A. ENSSAT .champs1 := B.

Année universitaire 2003 . ü par défaut : association "positionnelle" A: tableau := (5. 3. 1. 4=>9. ‘1’.4) Les objets q Notation par agrégat Ø indication de la valeur d’une variable de type composite type tableau is array (0 to 4) of integer. champs3 : integer. champs2 : bit. type article is record champs1 : integer. 0=> 5. champs1=> 12). ü association par nom : A: tableau := (1=>3. 9). B : article := (12. B : article := (champs2=>‘1’. 7.France . 2=>1. 9).2004 65 .champs3=> 9.Université de Rennes 1 . ENSSAT . 3=>7 ). end record.

66 .France . B : article := (champs2=>‘1’.. 0=> 5. équivalents à A := (5. signal BusData : bus (7 downto 0).Année universitaire 2003 .. B := (0. ‘1’. others => 0). ü ü les champs affectés par others doivent être du même type affectation à zéro d'un bus de type non contraint Pas très générique !!! type bus is array (positive range <>) of bit. 9). BusData <= (Others => 'Z') . ENSSAT . BusAddress <= "000000.. . signal BusAddress : bus (15 downto 0). others => 0)... BusAddress <= (Others => '0') . 0).00000". 0.4) Les objets ü association mixte : • doit commencer par la partie "nominative" A: tableau := (4=>9.. 0. . 0.Université de Rennes 1 ...2004 BusData <= "ZZZZZZZZ".

Université de Rennes 1 . end record.2004 Peu utilisé ! deallocate(p).4) Les objets q Le type accès : Ø Ø Ø Allocation dynamique de mémoire Pointeur sur un objet de type prédéfini Instructions : ü ü new deallocate type article is record champs1 : integer. variable p. q : pointeur.France . ENSSAT . champs2 : bit. p:= new pointeur . q := new pointeur’(14. type pointeur is access article. ‘0’).Initialisation 67 . -.Année universitaire 2003 .

if endfile(txt) then ENSSAT . int : fich_int.a). type fich_int if file of integer. pas de tableaux à plus de 1 dimension. mot). fin de fichier : type fich_txt is file of string. a : integer. mot : string(1 to 10).4) Les objets q Le type fichier : Ø utilisé pour : ü ü fichiers de stimuli charger le contenu d’une ROM (par exemple) Ø Ø Un fichier est typé (pas de pointeur. read (txt. pas de type composite) 3 procédures sont créées implicitement : ü lecture .2004 68 . écriture . txt : fich_txt . write(int.Année universitaire 2003 .Université de Rennes 1 .France .

. subtype index is integer range 2 to 5...France . subtype negatif is integer range integer’low to -1. -.2004 69 . Ø Ø lisibilité des descriptions sous types de sous types ..Université de Rennes 1 .indice d’un tableau sous type dynamique : • subtype mot is VecteurDeBits (MAX-1 downto 0).Année universitaire 2003 . ENSSAT ..4) Les objets q Les sous types : Ø compatible avec le type initial : ü ü ü ü ü ü conserve les propriétés restriction du type de base : restriction de l’espace des valeurs subtype naturel is integer range 0 to integer’high.

Université de Rennes 1 .France .Année universitaire 2003 .2004 70 .Les éléments du langage ENSSAT .

... =.” chaînes de bits : Ø Ø X“AB08” O“037” Ø B“001101” : hexadécimale : octale : binaire q Commentaires : -. les procédures (de leur donner une autre signification) q q q caractère : ‘X’ chaînes de caractères : “... and.Année universitaire 2003 ..Université de Rennes 1 ...ceci est un commentaire ENSSAT .. mod. *. .2004 71 . les fonctions. possibilité de surcharger les opérateurs.. or. /=.France ...5) Les éléments du langage q Opérations classiques : Ø Ø +.. ..

end record. champs2 : couleur. rouge. il s’agit d’une initialisation par défaut : Ø Ø Ø pour les types scalaires : il s’agit du premier élément de l’énumération (connue par l’attribut left) pour les types composites : il s’agit des premiers éléments de chaque champs pour les pointeurs : null type couleur is (rouge.France . bleu). -.Université de Rennes 1 .2004 72 .valeur par défaut est 0 type article is record champs1 : positif.5) Les éléments du langage q Initialisation des données.valeur par défaut est rouge subtype positif is integer range 0 to integer’high.Année universitaire 2003 . suivant : pointeur.valeur par défaut ( 1. -. -. null) ENSSAT . vert.

b : in integer.France . Function MAX ( a. b : in integer) return integer .5) Les éléments du langage q Les sous programmes : procédures et fonctions Ø déclaration (optionnelle) : spécifie ü ü ü le type (fonction ou procédure) le nom la liste des paramètres: • mode IN : pris par défaut. inutilisable dans les fonctions (une fonction ne retourne que sa valeur) • mode INOUT : inutilisable dans les fonctions ü le type de valeur de retour Procedure MIN ( a. les données ne peuvent être que lues • mode OUT : ne peut être lu. ENSSAT .Année universitaire 2003 .2004 73 . inutilisable pour appeler un autre sous programme.Université de Rennes 1 . c : out integer) .

else return a . Function MAX ( a.Université de Rennes 1 . end MAX .France . b : in integer) return integer is else begin c:= b . contient l’algorithme ü exemples Procedure MIN ( a. b : in integer. end if.5) Les éléments du langage q Les sous programmes : Ø corps.Année universitaire 2003 . c : out integer) is begin if a<b then c := a . return b . if a<b then end if. ENSSAT .2004 74 . end MIN .

5.2004 75 . resultat) . MIN ( b=> 5. 5) . ENSSAT . x := MAX ( b=> 5.Année universitaire 2003 . a=> var.Université de Rennes 1 .5) Les éléments du langage q Les sous programmes : Ø appel de sous programme : ü ü ü appel d’une procédure = instruction appel d’une fonction = expression passage de paramètres : • par position • par nom MIN ( var. x := MAX ( var. a=> var) . c=> resultat) .France .

on surcharge l’opérateur + function “+” (A. -. ou S <= “+” ( S1. .Année universitaire 2003 . B : in bit_vector ) return bit_vector. -. S : bit_vector . S2 )..Appel classique des fonctions S3 <= 1 .5) Les éléments du langage q Surcharge d’opérateurs : Ø Addition de bit vector : ü ü beaucoup d’outils dispose de bibliothèques permettant de réaliser cette opération si elle n’est pas présente.opérateur binaire function “+” (A : in bit_vector) return bit_vector . S3.Université de Rennes“+” (S1) .2004 ENSSAT .opérateur unaire 76 . S2. signal S1.. S <= S1 + S2 .France . -..

Université de Rennes 1 .2004 77 .5) Les éléments du langage q Instructions séquentielles : Ø wait : ü ü suspend l’exécution d’un processus plusieurs cas : • • • • • suspension jusqu’à la fin des temps : wait suspension pendant un temps donnée : wait for 10 ns.Année universitaire 2003 . S2 idem précédent plus condition : wait on S1. donc pas d’attente) ENSSAT .France . suspension jusqu’à événement sur signaux : wait on S1. S2 until condition for 5 ms ü interdit à l’intérieur d’une fonction (une fonction rend un résultat immédiat. S2 until condition idem précédent plus délai maximum d’attente : wait on S1.

entity Additionneur i s port ( A. architecture comportement of Additionneur i s begin process (A. B : in bit. FAILURE intéressant lors de la mise au point de code VHDL Ne pas hésiter à l’utiliser et à placer des messages clairs. S : out bit) ENSSAT .2004 end Additionneur.Université de Rennes 1 . ERROR. etc. S <= A and B after 4 ns. WARNING. 78 . B) begin assert ((A AND B) = '0') report "Additionneur : Probleme de debordement" severity warning. end comportement.5) Les éléments du langage Ø assert : ü ü ü ü surveillance d’une condition envoie de message sous condition assert (S1 = S2) report “Conflit de signaux” severity ERROR. indiquant le nom de l’entité. de l’architecture. on ne fait rien sinon on affiche le message 4 niveaux de sévérité : • NOTE.Année universitaire 2003 . end process. si la condition est vrai.France .

-. il existe 2 dimensions du temps ü ü temps “réel’ : c’est le temps vu par le concepteur temps “delta” : c’est le temps géré par le simulateur pour réaliser la succession des affectations ENSSAT . ‘1’ after 100 ns.France .Université de Rennes 1 .affectation avec délai delta Ø Ø les délais doivent être croissants notion de délai delta.Année universitaire 2003 . a <= b after 3 ns. c <= d . ‘0’ after 50 ns.5) Les éléments du langage q Affectation de signaux : Ø modification des valeurs futurs que prendra le signal S <= s1 after 10 ns.2004 79 .

2004 80 .Université de Rennes 1 .Année universitaire 2003 .France .5) Les éléments du langage Ø soient deux affectations : Q <= S nand Q . Q <= R nand Q . Temps vu par : le simulateur le concepteur S R Q Q 2 delta S R Q Q ENSSAT .

Université de Rennes 1 .5) Les éléments du langage q Modélisation plus réaliste : Ø on tient compte des contraintes technologiques (contraintes matérielles) Q <= S nand Q after 5 ns .2004 81 . Q <= R nand Q after 5 ns . S R Q Q 5 ns ENSSAT .Année universitaire 2003 .France .

Université de Rennes 1 .Année universitaire 2003 .2004 82 . if condition_boolenne then else sequence d’instructions 2 .France .5) Les éléments du langage q Instructions conditionnelles : Ø Structure if then else endif : sequence d’instructions 1 . end if. elseif condition_3 then sequence d’instructions 2 . elseif condition_2 then sequence d’instructions 2 . ENSSAT . Ø Structure if then elsif else endif : if condition_1 then sequence d’instructions 1 . end if.

Très intéressant pour les descriptions de machine d’états C’est une structure très facile à générer et à reconnaître Les outils de synthèse (conception) reconnaissent très bien cette structure et savent en faire un schéma logique (transistors) optimisé ENSSAT .France . => sequence d’instructions .Université de Rennes 1 . => sequence d’instructions . => sequence d’instructions .5) Les éléments du langage Ø Structure case case expression is when valeur1 when valeur2 | valeur3 when valeur4 to valeur5 when others end case.Année universitaire 2003 . => sequence d’instructions .2004 83 .

Ø boucle while : while condition loop séquence d’instructions .2004 . end loop. 84 for i in 1 to 10 loop séquence d’instructions . end loop. ENSSAT . end loop.5) Les éléments du langage q Instructions de boucles : Ø boucle infinie : loop séquence d’instructions .France . Ø boucle for : La variable de boucle peut ne pas être déclarées for i in A’range loop séquence d’instructions . end loop .Université de Rennes 1 .Année universitaire 2003 .

Université de Rennes 1 .France .5) Les éléments du langage q Les attributs : Ø ils permettent de connaître les caractéristiques : ü ü ü des signaux des tableaux des types Ø très utilisés pour rendre les descriptions génériques ENSSAT .Année universitaire 2003 .2004 85 .

2004 86 .France .Année universitaire 2003 .Université de Rennes 1 .5) Les éléments du langage Ø Attributs de signaux : ü S’event : • boolean • true si un événement vient d’arriver sur S pendant le cycle de simulation en cours ü S’active : • boolean • true si il y a eu une transaction (affectation) sur le signal dans le cycle de simulation en cours ü S’quiet(T) : • boolean • true si le signal a eu ni transaction ni événement pendant un temps T ü S’stable(T) : • boolean • true si il n’y a pas eu d'événement sur le signal pendant le temps T ü S’transaction : • signal • c’est un signal de type bit qui change d’états pour chaque transaction du signal ENSSAT .

5) Les éléments du langage ü S’delayed : • signal • c’est un signal identique à S mais retardé de T ü S’last_event : • time • rend le temps écoulé depuis le dernier événement sur le signal ü S’last_active : • time • rend le temps écoulé depuis la dernière transaction ü S’last_value : • type du signal • rend la valeur du signal immédiatement avant le dernier changement de S ENSSAT .France .Année universitaire 2003 .Université de Rennes 1 .2004 87 .

5) Les éléments du langage 10 ns 20 ns 30 ns 40 ns 55 ns 60 ns 70 ns 80 ns S S’event S’active S’quiet(T) S’stable(5 ns) T T T T F T F T T F T F T T T T F T S’delayed(2 ns) ENSSAT .Université de Rennes 1 .2004 88 .France .Année universitaire 2003 .

Université de Rennes 1 .2004 89 .Année universitaire 2003 .5) Les éléments du langage Ø Utilisation des attributs de signaux : ü détection d'un front montant : • if (Clock'event and Clock = '1') then ü détection d'un front descendant : Logique synchrone • if (Clock'event and Clock = '0') then ENSSAT .France .

France . subtype positif is integer range 0 to integer'high. type BitBus is range 15 downto 0.2004 . positif'base : • renvoie le type de base – dans notre cas renvoie integer ü ü ü ü ü ü ü ü ü BitBus'high ===> 15 BitBus'low ===> 0 BitBus'left ===> 15 NewBits'left ===> '0' NewBits'right ===> 'Z' etat'pos(Marche) ===> 1 etat'val(2) ===> Monter etat'succ(Marche) ===> Monter 90 ENSSAT . Marche.Université de Rennes 1 . '1'. Descendre) .Année universitaire 2003 . 'X'.5) Les éléments du langage Ø Attributs sur les types ü ü ü ü type etat is (Arret. Monter. type NewBits ('0'. 'Z') .

Université de Rennes 1 .5) Les éléments du langage ü ü ü ü ü ü ü etat'pred(Marche) ===> Arret NewBits'leftof('Z') ===> 'X' NewBits'rightof('1') ===> 'X' BitBus'ascending ===> false positif'ascending ===> true etat'image(Marche) ===> "Marche" etat'value("Arret") ===> Arret chaîne de caractères du type état ENSSAT .Année universitaire 2003 .France .2004 91 .

right. low. reverse_range.5) Les éléments du langage Ø Attributs de tableaux : ü ü ü ü type vecteur is array (1 to 37) of integer. variable B : matrice. high. range. ascending • • • • A'left ===> 1 A’right ===> 37 A’high ===> 37 A'low ===> 1 A’length ===> 37 A'range ===> 1 to 37 A'reverse_range ===> 37 downto 1 A'ascending ===> true B'left(2) ===> 1 B’right(2) ===> 7 B'high(1) ===> 6 B'high(2) ===> 7 B'length(2) ===> 7 B'reverse_range(1) ==> 2 to 6 B'reverse_range(2) ==> 7 downto 1 B'ascending(2) ===> true • B’left(1) ===> 6 • B'right(1) ===> 2 • B’low(1) ===> 2 • B’low(2) ===> 1 • B’length(1) ===> 5 • B'range(1) ===> 16 downto 2 • B'range(2) ===> 1 to 7 • B'ascending(1) ===> ENSSAT . left. variable A : vecteur. type matrice is array (6 downto 2. 1 to 7) of real. lenght.France .Université de Rennes 1 .Année universitaire 2003 .2004 false 92 .

2004 93 . variable A : vecteur.5) Les éléments du langage Ø Utilisation des attributs de tableaux ü ü type vecteur is array (1 to 37) of integer.Université de Rennes 1 .Année universitaire 2003 . for i in A'range loop ü ü if (A'left = 1) then ENSSAT .France .

Instructions concurrentes ENSSAT .2004 94 .Année universitaire 2003 .France .Université de Rennes 1 .

Université de Rennes 1 .Année universitaire 2003 .France .6) Instructions concurrentes q Les processus : Ø ils sont caractérisés par : ü ü les signaux auxquels ils sont sensibles (liste de sensibilité) les opérations séquentielles contenues il ne se termine jamais il peut s’endormir (wait) Ø leur durée de vie d’un processus est égale au temps de simulation : ü ü Ø Ø toute instruction concurrente peut être traduite en processus (et notamment les affectations de signaux) 2 possibilités : ü ü liste de sensibilité utilisation de l’instruction wait ENSSAT .2004 95 .

.6) Instructions concurrentes label : process (liste signaux) déclarations begin instructions séquentielles end process label ... Forme peu employée.Année universitaire 2003 .France . il s’agit des vestiges des premières spécifications du langage label : process déclarations begin instructions séquentielles ... . instructions séquentielles end process label . ENSSAT . end process label .. Transformation de ce processus label : process déclarations begin wait on liste signaux .Université de Rennes 1 . wait on liste signaux .2004 96 .

France . les processus travaillent de façon concurrente Système Composant 1 Composant 2 1 Processus 1 Composant 4 Processus 2 Composant 3 Processus 4 Processus 3 Processus 2 Processus 3 Simulation Processus 4 Processus 1 ENSSAT .Université de Rennes 1 .2004 97 .6) Instructions concurrentes Ø dans un système assemblant des entités décrites de façon comportementale.Année universitaire 2003 .

2004 98 . end decoupe.6) Instructions concurrentes ü plusieurs processus peuvent être présents dans une architecture architecture decoupe of systeme is begin P1 : process begin … … end process P1. P3 : process begin … … end process P3.France .Année universitaire 2003 . P2 : process begin … … end process P2.Université de Rennes 1 . ENSSAT .

France .2004 t0+40 ns 99 . q <= guarded valeur2 after 40 ns.Université de Rennes 1 .6) Instructions concurrentes q Les blocs : Ø Pour réunir des instructions concurrentes : ü ü partage de déclarations garde d’affectation : • affectations soumises à une condition bloc1 : bloc (horloge=‘1’ and not horloge’stable) begin s <= guarded valeur1 after 20 ns. end bloc bloc1 t0 t0+20 ns horloge s q ENSSAT .Année universitaire 2003 .

2004 100 .France .La généricité ENSSAT .Année universitaire 2003 .Université de Rennes 1 .

7) La généricité q C’est un moyen de transmettre une information à un bloc : Ø Ø Vu de l’extérieur du bloc.Université de Rennes 1 .France .2004 101 . la généricité == paramètre Vu de l’intérieur du bloc.Année universitaire 2003 . paramètres == constantes description de composants généraux : ü q Intérêts : Ø exemples : • registre N bits • additionneur à N entrées Ø permettre la réutilisation des composants : ü description des bibliothèques par des modèles génériques ENSSAT .

Université de Rennes 1 .France .2004 Conception 1 Bibliothèque Conception 2 Bibliothèque Conception 3 Bibliothèque Conception N Bibliothèque 102 .Année universitaire 2003 .7) La généricité q Intérêts de la généricité : Ø Ø description de composants généraux permettre la réutilisation des composants : ü ü enrichissement progressif de la bibliothèque de travail description de la bibliothèque par des modèles génériques Ø assure une plus grande rapidité de développement ENSSAT .

……. end ……….Année universitaire 2003 . etc 103 ENSSAT . ). c’est l’entité qui est générique : Ø l’utilisation de générique dans la spécification d'entité entity ……. ………. is generic (……… .). port (……….2004 .Université de Rennes 1 . q Mais l'architecture doit aussi être générique : Ø l’utilisation des attributs : ü ü ü de tableaux de types de signaux others. left.France . range.7) La généricité q Généralement. ……….. .. ……….. . etc. event.

7) La généricité q Généricité des entités : Ø un registre dont le nombre de bascules est générique 8.2004 104 . 16.Université de Rennes 1 . 16. 32 ??? Q Clock ENSSAT .Année universitaire 2003 . 32 ??? D Registre Load Enable NbBits 8.France .

ENSSAT .Université de Rennes 1 .Année universitaire 2003 . end registre . port (D : in std_logic_vector (NbBits-1 downto 0). Load : in std_logic .France .2004 105 .7) La généricité Ø Description de l'entité entity registre is generic (NbBits : INTEGER := 8). Q : out std_logic_vector (NbBits-1 downto 0) ). Clock : in std_logic . Enable : in std_logic .

2004 Reg j 106 .Année universitaire 2003 .7) La généricité Ø Utilisation d'une entité générique : ü soit le système suivant : • des registres sont connectés à des bus dont les tailles sont différentes Bus de données (16 bits) Reg i Bus d'adresse (32 bits) Système ENSSAT .France .Université de Rennes 1 .

Regj : Registre generic map (32) port map (BusAddress.Université de Rennes 1 . SEnablej : std_logic. SLoadj. SEnablei. signal BusAddress : std_logic_vector(31 downto 0). signal SLoadi. SClock.France . SClock.Année universitaire 2003 . BusAddress). SLoadi. SEnablei. SClock. … … end structure.2004 107 . begin … Regi : Registre generic map (16) port map (BusData.declaration des signaux signal BusData : std_logic_vector(15 downto 0).declaration des composants -. SEnablej. BusData).7) La généricité Ø Description de l'architecture du système architecture structure of Systeme is -. ENSSAT . SLoadj.

108 . end comportement. end loop . Sortie <= V after 10 ns .Année universitaire 2003 . { ET Sortie ENSSAT .2004 architecture comportement of Et_N is begin process variable V : std_logic := ‘1’ . end process . sortie : out std_logic ). begin for i in 1 to N loop V := V and Entrees (i) .Université de Rennes 1 . end Et_N .7) La généricité Ø Autre exemple : un ET à N entrées Entrees entity Et_N is generic ( N : Natural ) port ( Entrees : in std_logic_vector ( 1 to N ) .France . Wait on Entrees.

signal Entrees : std_logic_vector(2 downto 0). U3 : OU port map( …. Entrees(0) <= E1. ENSSAT . sortie : out std_logic ).Université de Rennes 1 . E3). Entrees(1) <= E2. Entrees(2) <= E3. U2 : OU port map( …. sortie : out std_logic ). U1 : OU port map( …. begin U0 : Et_N generic map(3) port map (Entrees.7) La généricité ü Utilisation du ET générique : architecture structure of systeme is component Et_N generic ( N : Natural ) port ( Entrees : in std_logic_vector ( 1 to N ) . Sortie). E1. E2 : std_logic.Année universitaire 2003 . OU OU OU ET Sortie 109 . end component . E2). signal Sortie : std_logic.2004 Entree : in std_logic . E1). component OU port ( end component . end comportement.France . signal E0.

France .2004 .Année universitaire 2003 .7) La généricité Ø Autre exemple : additionneur structurelle générique : x(0) y(0) x(1) y(1) x(N-1) y(N-1) C(0) ADD ADD C(1) ADD ADD C(2) C(N-1) ADD ADD C(N) s(0) s(1) s(N-1) ü ü ü construit à partir d’un additionneur 1 bit assemblage des N additionneurs 1 bit afin de réaliser l’additionneur complet la valeur de N est inconnue avant l’instanciation du composant 110 ENSSAT .Université de Rennes 1 .

Ø L’entité Additionneur générique s’écrit : entity AdditionneurN is generic (N : Natural := 8). B. Cout : out std_logic). C(i+1)).Université de Rennes 1 . end generate. S. C(I).7) La généricité Ø On dispose de l’entité Add : architecture structurelle of AdditionneurN is component Add port ( A. end AdditionneurN . end component.France . C(0) <= Cin. ENSSAT . begin for I in 0 to N-1 generate Instance : Add port map (X(I).2004 111 . B.Année universitaire 2003 . Cout : out std_logic). S. Y : in std_logic_vector ( N-1 downto 0) . Cin : in std_logic. entity Add is port ( A. Y(I). Cin : in std_logic. port ( X. Cin : in std_logic. S(I). Cout : out std_logic). end structurelle . Cout <= C(N). end Add . S : out std_logic_vector (N-1 downto 0). signal C : std_logic_vector(0 to N).

else Q <= "ZZZZZZZZ" after 10 ns.2004 . . architecture comportement of registre is begin process variable etat : std_logic_vector(NbBits -1 downto 0).7) La généricité q Généricité par les attributs : std_logic_vector(NbBits -1 downto 0). } } if (Enable = '1') then Q <= etat after 10 ns. begin if (Clock'event and Clock = '1') then if (Load = '1') then etat := D. end comportement. 112 ENSSAT . end process. la mise en haute impédance ne fonctionne plus) Cette écriture assure un bon fonctionnement quelque soit la taille du registre Q <= (others => 'Z') after 10 ns. end if.Université de Rennes 1 .Année universitaire 2003 . wait on Enable. Clock .France . Pas très évolutif (si la taille du registre est autre que 8 bits.

2004 113 .Année universitaire 2003 .7) La généricité Ø Autre exemple : le démultiplexeur Sortie1 Sortie2 Demux Entree NbBits NbSorties SortieN Selection ENSSAT .Université de Rennes 1 .France .

France . end Demux .Université de Rennes 1 .2004 114 . Sorties : out std_logic_vector (NbSorties*NbBits -1 downto 0) ). NbSorties : Natural := 16). architecture comportement of Demux is begin affectations : for i in Selection'range generate Cette écriture assure une évolution de la taille du démultiplexeur Sorties((i+1)*NbBits -1 downto i*NbBits) <= Entree when conv_positif(Selection) = i else (others => '0'). NbCmd : Natural := 4. Ecriture non évolutive : end comportement.7) La généricité Ø description de l'entité entity Demux is generic (NbBits : Natural := 8. end generate affectations . Selection : in std_logic_vector(NbCmd -1 downto 0). port ( Entree : in std_logic_vector(NbBits -1 downto 0) .Année universitaire 2003 . for i in 0 to 7 generate ENSSAT .

France .ENSSAT .Université de Rennes 1 .2004 La fonction de résolution 115 .Année universitaire 2003 .

2004 116 .Année universitaire 2003 .8) La fonction de résolution q Quel est le problème ? Ø Soit le schéma suivant : Mémoire R1 Mult R2 R4 R3 Add q Signal multi-sources Plusieurs driver pour le même signal PROBLEME (règle VHDl : un seul driver par signaux) ENSSAT .Université de Rennes 1 .France .

France .8) La fonction de résolution q Définition d’une fonction : Ø Ø prenant en compte les différentes sources du signal calculant la valeur résolue du signal q q Nécessaire lorsque l’on veut simuler le système Caractéristiques de cette fonction : Ø Ø appels réalisés (gérés) par le simulateur ü pas d'appel explicite à la fonction ce paramètre est toujours un tableau à 1 dimension non contraint il n’y a qu’un seul paramètre d’entrée : ü ENSSAT .Année universitaire 2003 .2004 117 .Université de Rennes 1 .

'0'.Année universitaire 2003 . SUBTYPE Bit4Etats IS ResolutionBit4Etats NewBit. RETURN 'X'. TYPE TableauBits IS ARRAY (INTEGER RANGE <>) OF NewBit.'1'. X END IF. 118 ENSSAT .France . WHEN OTHERS => END CASE .Université de Rennes 1 . END LOOP. X WHEN '1' => 1 IF Result = '0' OR Result ='X' THEN ASSERT false report "Conflit de signaux" SEVERITY ERROR. RETURN Result. ELSE Result := '0'. FUNCTION ResolutionBit4Etats (src : IN TableauBits) RETURN NewBit IS VARIABLE Result : NewBit := 'Z'.'X') . RETURN 'X'. ELSE X Result := '1'.8) La fonction de résolution q Exemple : TYPE NewBit IS ('Z'.2004 . 0 END IF. END ResolutionBit4Etats . WHEN 'X' => 0 Result := 'X'. BEGIN FOR i IN src'RANGE LOOP 0 CASE src(i) IS WHEN '0' => 0 IF Result = '1' OR Result ='X' THEN 0 ASSERT false report "Conflit de signaux" SEVERITY ERROR. FUNCTION ResolutionBit4Etats (src : IN TableauBits) RETURN NewBit.

'W'. 'U'. '1'. '-' ).Université de Rennes 1 . 'X' ). 'W'. 'X' ). 'U'.France . 'X' ) -. 'W'. 'X'.| 0 | ( 'U'. '0'. RETURN result.| U | ( 'U'. 'X'. 'W'. 'W'. 'X'. -. 'X'.| H | ( 'U'. 'L'. 'U' ). '1'. -. 'X'. '0'.| W | ( 'U'. 'L'. '1'.2004 . -.| L | ( 'U'. CONSTANT resolution_table : stdlogic_table := ( --------------------------------------------------------| U X 0 1 Z W L H | | --------------------------------------------------------( 'U'. 'W'.'0'. 'X'.weakest state default BEGIN IF (s'LENGTH = 1) THEN RETURN s(s'LOW). 'U'. 'X'. 'Z'. 'U'.| ). '1'. -. 'X'. '0'. '1'. 'W'. 'X'.vhd-------------TYPE std_ulogic IS ( 'U'.| 1 | ( 'U'. -. 'X'. 'X'. FUNCTION resolved ( s : std_ulogic_vector ) RETURN std_ulogic IS VARIABLE result : std_ulogic := 'Z'. 'X'. -. '1'. 'X'. 'X' ).8) La fonction de résolution q Exemple: ----Extrait du package std_logic_1164. 'X'.| . '1'.| X | ( 'U'.| Z | ( 'U'. '0'. 'Z'. 'L'. 'X'. 'X' ).Année universitaire 2003 . 'W'. 'W'. 'U'. 'H'. -. '1'. 'X'. 'X'. END resolved. 'X' ). -. 'X'. '0'. TYPE std_ulogic_vector IS ARRAY ( NATURAL RANGE <> ) OF std_ulogic. 'L'. '0'. END IF. END LOOP. '1'. 'X'. ELSE FOR i IN s'RANGE LOOP result := resolution_table(result. 'X' ). 'X'. 'H'. '0'. 'X' ). 'X'. 'U'. 'X'. 'H'. '0'. 'H'. -.'X'. '1'. 'W'. 'U'. '0'. s(i)). SUBTYPE std_logic IS resolved std_ulogic ---119 0 0 0 1 X X 0 X 0 ENSSAT .

Année universitaire 2003 .France .2004 120 .Simulations et validations ENSSAT .Université de Rennes 1 .

Université de Rennes 1 .France .Année universitaire 2003 .2004 Spécification de niveau N-1 121 .9) Simulation et validation q Une bonne maîtrise de la conception passe par la validation de chaque étape Ø Spécification de niveau N Ce que fait le système (cahier des charges) SIMULATIONS simulation comportementale : REFERENCE simulation structurelle : COMPARAISON AVEC LA REFERENCE Simulations Corrections Etape N SIMULATIONS Ø Comment il le fait (réalisation) ENSSAT .

Année universitaire 2003 .2004 Modèle physique 122 .Université de Rennes 1 .France .9) Simulation et validation q Simulation à chaque étape de la conception !!!!!! Cahier des charges Modèle mathématique Etape 1 Simulations Etape 2 Modèle comportemental (algorithmique) Etape 3 Modèle structurel Etape 4 ENSSAT .

2004 123 .Année universitaire 2003 .9) Simulation et validation q Comment faire une simulation ? Ø Ø Ø instanciation du composant à tester initialisation des signaux d'entrées application d'une séquence de stimuli : ü ü à partir d'un process et d'affectations des signaux d 'entrées à partir d'un fichier contenant des vecteurs de test affichage des erreurs éventuelles Ø analyse des résultats. analyse des transitions des sorties : ü ENSSAT .Université de Rennes 1 .France .

Année universitaire 2003 .erreur de simulation ENSSAT .France .2004 124 .simulation correcte .Université de Rennes 1 .9) Simulation et validation Processus Système Comparaisons Entité de test Stimuli (et résultats attendus) Messages : .

.2004 S Cout 125 ..9) Simulation et validation q Description d’un composant de test : exemple Ø Soit une entité additionneur à tester : entity Additionneur is port ( A. B.France . end comportement.Année universitaire 2003 .Université de Rennes 1 . S. Cin A Additionneur B ENSSAT . Cin : in std_logic .. architecture comportement of Additionneur is . Cout : out std_logic ). end Additionneur .

et sans générique Test_Add Additionneur entity Test_Add is end Test_Add .Université de Rennes 1 . Processus ENSSAT .9) Simulation et validation Ø On déclare une entité test englobant le composant de type Additionneur : ü Vue externe du composant Test_Add • entité sans port d'entrées sorties.France .Année universitaire 2003 .2004 126 .

SCout : std_logic .. -.Declaration du composant qui va etre utilise component Add port ( A. begin -. end comportement. constant TempsCycle : time := 10 ns .Année universitaire 2003 . S. Cout => SCout ). B..France . Simulation : process begin … … . ENSSAT . S => SOut. SOut. SB. SCin .configuration for U1 : Add use entity Additionneur(comportement). Cin => SCin . -. CIn : in std_logic .2004 127 .9) Simulation et validation Ø Description de l'architecture de l'entité de test : ü ü ü ü déclaration du composant à tester déclaration des signaux d'entrées sorties instanciation du composant description d'un process générant les stimuli architecture comportement of Test_Add is -. end component . B => SB.Université de Rennes 1 .Instanciation du composant U1 : Additionneur port map ( A => SA .Declaration des signaux d'entrée de l'instance signal SA. end process. Cout : out std_logic ).

SA <= ‘0’. SCin <= ‘1’..France . SB <= ‘0’.Année universitaire 2003 .. wait . ENSSAT . 128 . – évite les problèmes liés aux initialisations effectuées par le simulateur • toujours terminer la simulation un par wait : – évite les rebouclages du process sur lui même Simulation : process begin wait for TempsCycle ns. . SB <= ‘1’..9) Simulation et validation Ø Description de l'architecture de l'entité de test : process de simulation ü affectation des signaux d'entrées : règles : • toujours commencer par un wait for xx ns : – votre simulation commence réellement au temps xx ns. SA <= ‘0’. . SCin <= ‘1’. SA <= ‘1’. wait for TempsCycle ns. SCin <= ‘0’. wait for TempsCycle ns.2004 end process..Université de Rennes 1 . SB <= ‘0’.

constant Vecteur : TableauVecteur := ( (0.2004 129 .Année universitaire 2003 . (0. Simulation : process begin wait for TempsCycle . end process. 1.. 0). 0. 1. SCout : std_logic . 1) ). 1). 0. (1. for i in Vecteur'range(1) loop SA <= Vecteur(i)(0). 0). wait . begin ENSSAT .Instanciation du composant U1 : Additionneur port map (…). wait for TempsCycle. (1. SB <= Vecteur(i)(1). 1. SB. SCin. SCin <= Vecteur(i)(2).Université de Rennes 1 .France . 1). SOut.. end loop. signal SA. constant TempsCycle : time := 10 ns .9) Simulation et validation Ø Description de l'architecture de l'entité de test : process de simulation ü affectation des signaux d'entrées par une boucle : architecture comportement of Test_Add is … . (0. 0). 0). 1). type TableauVecteur is array (0 to 7) of TableauEntrees. (0. 0. 1. -. (1. type TableauEntrees is array (0 to 2) of std_logic. 0. (1.

assert (SOut = Vecteur(i)(4)) report "Probleme sur la sortie S" severity warning. 0. 0.Année universitaire 2003 . 0. (1. 1. 0). SOut. wait for TempsCycle. SB <= Vecteur(i)(1). constant Vecteur : TableauVecteur := ( (0. 0). 0. 1. end loop. 1. 1. (0. 0. end process. for i in Vecteur'range(1) loop SA <= Vecteur(i)(0). constant TempsCycle : time := 10 ns .Université de Rennes 1 . type TableauEntrees is array (0 to 4) of std_logic. 0. 0. Simulation : process begin wait for TempsCycle . 0.France . -. begin ENSSAT . 0).Instanciation du composant U1 : Additionneur port map (…). 0. type TableauVecteur is array (0 to 7) of TableauEntrees. 0). 1). 1). wait . SB. SCout : std_logic . (1. 1). (0. 1) ). SCIn <= Vecteur(i)(2). 1. (0. 0. 1. 1. 1. 1. SCin. (1. assert (SCout = Vecteur(i)(3)) report "Probleme sur la sortie Cout" severity warning.. 0.2004 130 . (1. 1. 0.. 1.9) Simulation et validation Ø Description de l'architecture de l'entité de test : process de simulation ü ü affectation des signaux d'entrées par une boucle analyse des résultats architecture comportement of Test_Add is … . signal SA. 1.

variable TempsCycle : time := 10 ns. read(ligne.Année universitaire 2003 . signal SA. VB).9) Simulation et validation Ø Description de l'architecture de l'entité de test : process de simulation ü ü lecture des stimuli dans un fichier affectation des signaux d'entrées par une boucle analyse des résultats begin wait for TempsCycle . wait . end loop. readline(VecteursIN . VCout. SOut. Tps).. begin -. read(ligne. VOut : integer. while not endfile(VecteursIn ) loop read(ligne. VA). assert (SOut = Integer2Bit(VOut) report "Probleme sur la sortie S" severity warning.Université de Rennes 1 . SA <= Integer2Bit(VA). SCout : std_logic . read(ligne. VCout). SB <= Integer2Bit((VB).Instanciation du composant U1 : Additionneur port map (…). SB. end process. SCin. TempsCycle = Tps ns. read(ligne.2004 131 . architecture comportement of Test_Add is … . VCin.France . file VecteursOut : integer is in "VecteursOUT". read(ligne. ENSSAT . ligne). SCIn <= Integer2Bit(VCin).. assert (SCout = Integer2Bit(VCout)) report "Probleme sur la sortie Cout" severity warning. variable Tps : integer. variable ligne : line. VB. VCin). Simulation : process file VecteursIN : integer is in "VecteursIN ". VOut). wait for TempsCycle. variable VA.

. end process Horloge . SClock. SClock <= '1' .Declaration des signaux d'entrée de l'instance signal SD.France .Declaration du composant qui va etre utilise component Registre port ( D. Q : out std_logic ). : in std_logic . wait for 50 ns. entity Test_Registre end Test_Registre. clock. Horloge : process begin SClock <= '0' .configuration for U1 : Registre use entity Registre(comportement ). ENSSAT . SQ : std_logic.Université de Rennes 1 . SQ ). end process Simulation. end component . -.Année universitaire 2003 . end comportement. SClock.9) Simulation et validation q Test des composants synchrone à une horloge : Ø placer un process générant l'horloge à côté du process de simulation begin -. Simulation : process begin … … ..2004 132 .Instanciation du composant U1 : Registre port map ( SD. -. wait for 50 ns. architecture comportement of Test_Registre is -.

2004 133 .Exemples : .Université de Rennes 1 .Année universitaire 2003 .France .logique combinatoire .logique séquentielle ENSSAT .

France . END flot1 . s1 <= (a and b) and (c xor d) after max(Tand + Tand. END flot2 . d : IN std_logic.2004 134 . Txor + Tor). ARCHITECTURE flot2 OF Fonc IS BEGIN s1 <= (a and b) and (c xor d) after max(Tand + Tand. ENSSAT . Tand + Txor). s2 : OUT std_logic) ) . Txor + Tor). a b c d s1 s2 ARCHITECTURE flot1 OF Fonc IS BEGIN s2 <= (a and b) or (c xor d) after max(Tand + Tor. c : IN std_logic. Tand + Txor). END Fonc . s2 <= (a and b) or (c xor d) after max(Tand + Tor. b : IN std_logic.Année universitaire 2003 . s1 : OUT std_logic.10) Logique combinatoire q Exemple simple : Ø soit la fonction : ENTITY Fonc IS PORT ( a : IN std_logic.Université de Rennes 1 .

10) Logique combinatoire Ø Autre description : ü introduction des signaux intermédiaires a b c d x1 s1 s2 ARCHITECTURE flot3 OF Fonc IS BEGIN s1 <= (x1 and x2) after Tand.France . s2 <= (x1 or x2) after Tor.2004 135 . x2 ENSSAT .Année universitaire 2003 . x1 <= (a and b) after tand.Université de Rennes 1 . x2 <= (c xor d) after Txor. END flot3 .

s2 <= '1' when ((a and b) or (c xor d)) else '0'. ENSSAT ..France . a b c d x1 s1 s2 x2 ARCHITECTURE flot4 OF Fonc IS BEGIN s1 <= '1' when ((a and b) and (c xor d)) else '0'.10) Logique combinatoire Ø Et encore une autre .2004 136 . END flot4 .Année universitaire 2003 .Université de Rennes 1 ..

BEGIN e1 := Conv_Integer (entree1) . END comportementale . entree2 : IN std_logic_vector(NbBits-1 DOWNTO 0) . entree2. PORT ( entree1 : IN std_logic_vector(NbBits-1 DOWNTO 0) . sortie <= Conv_Std_Logic_Vector (s. ENSSAT . wait on entree1. e2. e2 := Conv_Integer (entree2) . s : INTEGER. END PROCESS ProcessAdditionneur .Université de Rennes 1 . s := e1 + e2 .Année universitaire 2003 . NbBits) After Tadd . END Additionneur . NbBits : INTEGER ).2004 137 . sortie : OUT std_logic_vector(NbBits-1 DOWNTO 0) ) .France .10) Logique combinatoire q Additionneur : Ø généricité sur : ü ü le nombre de bits le temps de calcul ENTITY Additionneur IS GENERIC (Tadd : TIME . ARCHITECTURE comportementale OF Additionneur IS NbBits entree1 NbBits NbBits BEGIN entree2 Additionneur Additionneur sortie ProcessAdditionneur : PROCESS VARIABLE e1.

2004 138 . wait on entree1. s := e1 * e2 . entree2 : IN std_logic_vector(NbBits-1 DOWNTO 0) . END Multiplieur . e2 := Conv_Integer (entree2) . PORT ( entree1 : IN std_logic_vector(NbBits-1 DOWNTO 0) . sortie <= Conv_Std_Logic_Vector (s.Année universitaire 2003 . NbBits : INTEGER ). BEGIN e1 := Conv_Integer (entree1) . s : INTEGER. END comportementale . ARCHITECTURE comportementale OF Multiplieur IS NbBits entree1 2*NbBits NbBits entree2 Multiplieur Multiplieur BEGIN sortie ProcessMultiplieur : PROCESS VARIABLE e1. 2*NbBits) After Tmult . END PROCESS ProcessMultiplieur .Université de Rennes 1 . entree2. ENSSAT .France .10) Logique combinatoire q Multiplieur : Ø généricité sur : ü ü le nombre de bits le temps de calcul ENTITY Multiplieur IS GENERIC (Tmult : TIME . e2. sortie : OUT std_logic_vector(2*NbBits-1 DOWNTO 0) ) .

B : IN std_logic_vector(NbBits-1 DOWNTO 0) C : IN std_logic_vector(NbBits-1 DOWNTO 0) D : IN std_logic_vector(NbBits-1 DOWNTO 0) cmd : IN std_logic_vector(1 DOWNTO 0) . .Année universitaire 2003 .Université de Rennes 1 . S : OUT std_logic_vector(NbBits-1 DOWNTO 0) END Multiplexeur . ). PORT ( A : IN std_logic_vector(NbBits-1 DOWNTO 0) . A B C D S END flotdedonnees .France .10) Logique combinatoire q Exemple du multiplexeur : ENTITY Multiplexeur IS GENERIC (Tmux : TIME . . Cmd ARCHITECTURE flotdedonnees1 OF Multiplexeur IS BEGIN S <= A WHEN (cmd = "00") ELSE B WHEN (cmd = "01") ELSE C WHEN (cmd = "10") ELSE D. ENSSAT . NbBits : INTEGER ).2004 139 . .

France . END flotdedonnees . Cmd A B C D S ENSSAT .Année universitaire 2003 .Université de Rennes 1 .10) Logique combinatoire q Exemple du multiplexeur : autre description ARCHITECTURE flotdedonnees2 OF Multiplexeur IS BEGIN WITH cmd SELECT S <= A WHEN (cmd = "00") B WHEN (cmd = "01") C WHEN (cmd = "10") D WHEN OTHERS.2004 140 .

C.Année universitaire 2003 . Cmd A B C D S ENSSAT . END flotdedonnees . END PROCESS. ELSIF cmd = "11" THEN S <= D. ELSIF cmd = "10" THEN S <= C.France .10) Logique combinatoire q Exemple du multiplexeur : autre description ARCHITECTURE comportementale OF Multiplexeur IS BEGIN PROCESS BEGIN if cmd = "00" THEN S <= A .Université de Rennes 1 . B. D. WAIT ON cmd. A. ELSIF cmd = "01" THEN S <= B.2004 141 . END IF.

1 downto 0) . port ( sorties : out std_logic_vector (NbSorties .10) Logique combinatoire q Le décodeur : entity decodeur is generic ( NbSorties : integer. Log2NbSorties : integer ).Année universitaire 2003 . architecture flot of decodeur is begin affectations : for i in sorties'range generate sorties(i) <= '1' when conv_positif(cmd) = i else '0'. cmd : in std_logic_vector (log2NbSorties -1 downto 0) ).Université de Rennes 1 . end decodeur.2004 142 . end flot .France . ENSSAT . end generate affectations.

'1'. .10) Logique combinatoire • Réalisation d'une fonction logiques complexes : • passage par la table de vérité : type TABLE1 is array (0 to 15) of std_logic.. .. constant codage1 : TABLE1 := ( '1'. . B 0 0 0 0 1 1 1 1 0 0 0 0 .2004 . V:= 8 * conv_integer (A) + 4 * conv_integer (B) + 2 * conv_integer (C) + 1 * conv_integer (D) . '1'. C 0 0 1 1 0 0 1 1 0 0 1 1 ... … … ). . D 0 1 0 1 0 1 0 1 0 1 0 1 . S 1 1 1 0 0 0 0 1 0 0 .. '0'..France . '0'.Année universitaire 2003 . A 0 0 0 0 0 0 0 0 1 1 1 1 .Université de Rennes 1 .... '0'. 143 ENSSAT . S <= codage1 (V) .

2004 144 . oe : in std_logic.10) Logique combinatoire q Module de mise en haute impédance : entity tristate is port ( e : in std_logic. end flot . end tristate .Université de Rennes 1 . s : out std_logic ). ENSSAT .France . e s oe architecture flot of tristate is begin s <= e when oe = '1' else 'Z'.Année universitaire 2003 .

ena D Q ENSSAT . end process.Université de Rennes 1 .2004 145 . entity BasculeD is port ( end BasculeD . d. D. else test <= test. Q <= test. ena : in std_logic. wait on ena. end if.Année universitaire 2003 .10) Logique séquentielle q Bascule D Latch D ena Q architecture comp of BasculeD is begin process begin if ena = '1' then test <= D. Q : out std_logic).France . end comp.

d. clock D Q ENSSAT .France . else test <= test. clock : in std_logic. end process. Q : out std_logic).10) Logique séquentielle q Bascule D edge triggered (synchrone) D clock Q architecture comp of BasculeD is begin process begin if cloc'event and clock = '1' then test <= D. Q <= test.Université de Rennes 1 . end comp.Année universitaire 2003 . entity BasculeD is port ( end BasculeD . end if. wait on clock.2004 146 .

10) Logique séquentielle • Compteur de taille quelconque : entity Compteur is generic (taille : integer .1 downto 0)). Q <= etat after Tps. port ( clk.Année universitaire 2003 . Q : out Std_logic_vector(taille . raz. begin process begin if (raz =‘0’) then etat <= (others => '0') . end if. Tps : Time). end if.1. end process. architecture comportement of Compteur is signal etat : Std_logic_vector(taille-1 downto 0). up : in Std_logic. ENSSAT . end Compteur. elsif (clk’event and clk = ‘1’) then if (up = ‘1’) then etat <= etat + 1.France .2004 raz up } clk Q 147 .Université de Rennes 1 . else etat <= etat . wait on clk. raz. end comportement. up.

end if. wait on clk. end comp. architecture comp of BDA is begin process begin if (raz = ‘0’) then Q <= ‘0’ . raz. elsif clk’event and clk = ‘1’ then Q <= D . wait on clk.Université de Rennes 1 .10) Logique séquentielle Bascules D avec remise à zéro asynchrone ou synchrone entity BDA is port ( end BDA. Q : out std_logic). clk : in std_logic. end if. architecture comp of BDS is begin process begin if clk’event and clk = ‘1’ then if raz = ‘0’ then Q <= ‘0’ . end process.2004 Synchrone 148 . end comp. Q : out std_logic). Asynchrone ENSSAT .Année universitaire 2003 . end process. clk : in std_logic. raz. entity BDS is port ( d. end if. raz. else Q <= D. d. end BDS.France .

raz. raz. else d when clk = ‘1’ . Q : out std_logic). else d when clk = ‘1’ . end block B. else Q. clk : in std_logic. architecture bloc of BDS is begin B : block (clk = ‘1’ and clk’event) begin Q <= guarded ‘0’ when raz = ‘0’ . architecture bloc of BDA is begin B : block ((clk ’event and clk = ‘1’) or raz =‘0’) begin Q <= guarded ‘0’ when raz = ‘0’ . else Q. clk : in std_logic.10) Logique séquentielle Bascules D asynchrone et synchrone avec blocs gardés entity BDA is port ( end BDA. Asynchrone ENSSAT . Q : out std_logic). entity BDS is port ( end BDS.2004 Synchrone 149 .France . end bloc.Université de Rennes 1 .Année universitaire 2003 . d. end block B. end bloc. d.

à tout moment.2004 150 .France .Année universitaire 2003 .Université de Rennes 1 .10) Logique séquentielle q Réalisation du contrôleur d’un ascenseur : Ø M Etage 2 il s’agit de commander : ü ü ü le moteur d’ouverture et de fermeture des portes le moteur de monter et de descente de l’ascenseur d’assurer une temporisation entre l’ouverture et la fermeture des portes d’une information indiquant. l’étage courant de capteurs d’appel de l’ascenseur de capteur de porte fermée Montée Etage 1 Ø on dispose : ü ü ü Rdc Ouverture fermeture Descente ENSSAT .

10) Logique séquentielle Matérialisation d’une machine d’états Attente Etage > Appel Etage < Appel Etage <> Appel Etage = Appel Etage = Appel Etage <> Appel Descente Montée Etage = Appel Ouverture porte Temporisation porte fermée Fermeture porte ENSSAT .2004 151 .France .Année universitaire 2003 .Université de Rennes 1 .

raz : in bit . Close. clk.France . Fermer : out bit ).Université de Rennes 1 .Année universitaire 2003 . Monter. Open. Etage : in integer .2004 . ENSSAT . Descendre. Ouvrir. REGISTRE et LC2 entity Controleur is port ( Appel. Vue externe end Controleur .10) Logique séquentielle Entrées nextstate Sorties 152 LC1 state Logique combinatoire REGISTRE Logique combinatoire LC2 clk raz Modélisations envisageables : 1) 1processus : (LC1 + REGISTRE + LC2) 2) 2 processus : (LC1 + REGISTRE) et LC2 ou LC1 et (REGISTRE + LC2) 3) 3 processus : LC1.

begin LC1 : process begin -. Ouverture. raz. signal state : etat := Attente.. signal nextstate : etat. state. end comportement. Descente. ENSSAT .Université de Rennes 1 .. end process LC2 . Montee. -. end process LC1 .10) Logique séquentielle Vue interne architecture comportement of Ascenseur is type etat is (Attente. Appel.2004 153 .France . Close.. REGISTRE : process begin -.calcul l’etat suivant en fonction des entrees .calcul l’etat des sorties en fonction de l’etat . -..Année universitaire 2003 .courant wait on state. end process REGISTRE .et de l’état courant wait on Etage. Fermeture). LC2 : process begin -. signal Etage : integer := 0.change d’état au front montant de l’horloge … wait on clk. Open.

nextstate <= Montee. when Ouverture => if Open = ‘1’ then else end if . when Descente => if Etage = Appel then else end if . state. nextstate <= Fermeture . nextstate <= Ouverture. end process LC1 . wait on Etage. nextstate <= Descente . nextstate <= Fermeture . nextstate <= Ouverture . nextstate <= Ouverture . nextstate <= Attente . end case . Close. when Fermeture => if Close = ‘1’ then else endif .France .Année universitaire 2003 .Université de Rennes 1 . Appel. when Montee => if Etage = Appel then else end if .2004 nextstate <= Descente.10) Logique séquentielle LC1 : process begin case state is when Attente => if Etage > Appel then elsif Etage < Appel then else end if . 154 . nextstate <= Ouverture . ENSSAT . Open. nextstate <= Montee .

REGISTRE : process when Montee => begin m := ‘1’. end case . Monter <= m. raz. o := ‘0’. wait on state.2004 155 . elsif clk’event and clk = ‘1’ then when Ouverture => state <= nextstate . d := ‘0’. o := ‘0’. when Fermeture => wait on clk. begin case state is when Attente => m := ‘0’.Année universitaire 2003 . f := ‘0’ . d := ‘0’. f := ‘0’ .10) Logique séquentielle LC2 : process variable m. end if. end process REGISTRE . ENSSAT . Descendre <= d. o. f := ‘0’ . f : bit. m := ‘0’. d := ‘0’. f := ‘0’ . Ouvrir <= o.France . m := ‘0’. Fermer <= f.Université de Rennes 1 . d := ‘1’. o := ‘0’. m := ‘0’. if raz = ‘0’ then when Descente => state <= Attente . o := ‘1’. end process LC2 . d. d := ‘0’. o := ‘0’. f := ‘1’ .

Université de Rennes 1 .2004 156 .Année universitaire 2003 .Packages ENSSAT .France .

de sous types.11) Paquetages standards q Paquetages standards : 2 paquetages : Ø standard : ü rassemble les déclarations de types. de fonctions extrêmement utiles (voir indispensable) fournit les primitives d’entrées sorties ASCII de VHDL utilisé pour le dialogue avec une console (debuggage par exemple) Ce paquetage est un raté de VHDL tout ne répond pas à la grammaire de vhdl Conséquences : • chaque constructeur de compilateur a proposé son paquetage textio • donc plus vraiment un standard Ø textio : ü ü ü ü ENSSAT .Année universitaire 2003 .France .Université de Rennes 1 .2004 157 .

’1’..Année universitaire 2003 .. 10(32) to 16. . type CHARACTER is (NUL.. ERROR.11) Paquetages standards Package standard : Définition q package standard is Ø Ø Ø Ø Ø Ø Ø type BOOLEAN is (FALSE. .. FAILURE).2004 158 .’2’. ‘1’). 10(32).. . ‘0’.’a’.. TRUE). WARNING.Université de Rennes 1 . type INTEGER is range -2 147 483 648 to 2 147 483 647. ‘z’) type SEVERITY_LEVEL is (NOTE.France . .. ns = 1000 ps ms = 1000 ns ENSSAT . type real is range -16. type BIT is (‘0’. type TIME is range -2(64) to 2(64) units fs ps = 1000 fs.

2004 159 . subtype Natural is integer range 0 to integer’high . chaîne : string (1 to N) . type bit_vector is array (Natural range <>) of bit . subtype Positive is integer range 1 to integer’high . type string is array (Positive range <>) of character . q q ENSSAT . V : bit_vector ( 15 downto 0) .France .11) Paquetages standards Ø Ø Ø Ø Ø function Now return time . q end standard .Année universitaire 2003 .Université de Rennes 1 .

11) Paquetages standards Package Textio : Définition q package textio is Ø Ø Ø Ø Ø Ø Ø Ø type LINE is access string . -. L : in line ). -.utilisé pour les longueurs de chaines file input : text is in “std_input” .C’est un simple renommage -.justifier à gauche ou à droite subtype width is natural . -. left ). -. -.Année universitaire 2003 .2004 160 . L : out line) .fichier de caracteres type SIDE is ( right.pointeur sur une ligne type text is file of string .clavier file output : text is out “std_out” . procedure writeline (variable F : out text . ENSSAT .Université de Rennes 1 .France . -.écran procedure readline (variable F : in text .

11) Paquetages standards
Ø

16 procédures read :
ü ü

extraction de la valeur du type demandé dans la ligne (LINE) ces procédures rendent la suite de la ligne permettent de construire la ligne (dans une variable LINE) avant de l’écrire

Ø Ø Ø

8 procédures write :
ü

function endline (L : in Line) return Boolean ; function endfile (F : in text) return Boolean ;

q

end textio ;
Belles surcharges !!

ENSSAT - Université de Rennes 1 - France - Année universitaire 2003 - 2004

161

11 ) Paquetages IEEE
q

Les paquetages normalisés :
Ø

package std_logic_1164 :
ü

définition des types :
• std_logic • std_logic_vector

ü

définition des fonctions logiques de base sur ces types :
• AND, OR, NOR, XOR, etc

Ø

package std_logic_arith :
ü ü

surcharge des opérateurs de base :
• +, -, *,

surcharge des comparateurs de base :
• <=, >=, /=, =

ENSSAT - Université de Rennes 1 - France - Année universitaire 2003 - 2004

162

11 ) Paquetages IEEE
Ø

package std_logic_signed :
ü ü ü

surcharge des opérateurs de base :
• +, -, *,

surcharge des comparateurs de base :
• <=, >=, /=, =

définition d'une fonction de conversion :
• std_logic_vector ====> Integer • prise en compte du signe

Ø

package std_logic_unsigned :
ü ü ü

surcharge des opérateurs de base :
• +, -, *,

surcharge des comparateurs de base :
• <=, >=, /=, =

définition d'une fonction de conversion :
• std_logic_vector ====> Integer • prise en compte du signe

ENSSAT - Université de Rennes 1 - France - Année universitaire 2003 - 2004

163

11 ) Paquetages IEEE q Attention : Ø Ø Ø Ø Ø ces paquetages sont d'une utilisation délicate : on ne peut utiliser les 2 paquetages signed ey unsigned simultanément les fonctions de conversion renvoient des valeurs différentes (fonction du bit de signe) tous les opérateurs de base ne sont pas surchargés etc etc ENSSAT .Université de Rennes 1 .2004 164 .France .Année universitaire 2003 .

200 | 01/02/92 | -. -. -. -.'1') SUBTYPE X01Z IS resolved std_ulogic RANGE 'X' TO 'Z'. -. Furthermore. r : std_ulogic ) RETURN UX01. -: -. The "package declaration" -: defines the types.Weak 0 'H'.'Z') SUBTYPE UX01 IS resolved std_ulogic RANGE 'U' TO '1'.Don't care ).'Z') -------------------------------------------------------------------.overloaded logical operators ------------------------------------------------------------------FUNCTION "and" ( l : std_ulogic.Uninitialized 'X'. FUNCTION "nand" ( l : std_ulogic.Weak 1 '-' -. date:| -. -------------------------------------------------------------------. -: -.Forcing 1 'Z'. etc.2004 165 .---------------------------------------------------------------------. -------------------------------------------------------------------.Forcing Unknown '0'.Title : std_logic_1164 multi-value logic system -. -: -.Library : This package shall be compiled into a library -: symbolically named IEEE.common subtypes ------------------------------------------------------------------SUBTYPE X01 IS resolved std_ulogic RANGE 'X' TO '1'.modification history : -.v4. -: since such a requirement is out of the scope of this -: effort.'X'. -: -. -: or excluded from this package. -.'1'.Purpose : This packages defines a standard for designers -: to use in describing the interconnection data types -: used in vhdl modeling. primitives. The std_logic_1164 package body shall be -: considered the formal definition of the semantics of -: this package.('X'.Weak Unknown 'L'. -. are considered orthogonal -: issues as it relates to this package and are therefore -: beyond the scope of this effort. -.Université de Rennes 1 .Année universitaire 2003 .Forcing 0 '1'. subtypes and declarations of -: std_logic_1164. -. -------------------------------------------------------------------.High Impedance 'W'.unconstrained array of std_logic for use in declaring signal arrays ------------------------------------------------------------------TYPE std_logic_vector IS ARRAY ( NATURAL RANGE <>) OF std_logic.--------------------------------------------------------------------. -: timing standards.('X'. r : std_ulogic ) RETURN UX01.*** industry standard logic type *** ------------------------------------------------------------------SUBTYPE std_logic IS resolved std_ulogic.France . ENSSAT .Note : No declarations or definitions shall be included in. -.--------------------------------------------------------------------.('U'.'0'.11 ) Paquetages IEEE -. -.-------------------------------------------------------------------PACKAGE std_logic_1164 IS -------------------------------------------------------------------.'0'.resolution function ------------------------------------------------------------------FUNCTION resolved ( s : std_ulogic_vector ) RETURN std_ulogic.'0'.'1'.unconstrained array of std_ulogic for use with the resolution function ------------------------------------------------------------------TYPE std_ulogic_vector IS ARRAY ( NATURAL RANGE <> ) OF std_ulogic. Tool developers may choose to implement -: the package body in the most efficient manner available -: to them. -('U'.logic state system (unresolved) ------------------------------------------------------------------TYPE std_ulogic IS ( 'U'. mathematics . -------------------------------------------------------------------.'X'.'0'.Limitation: The logic system defined in this package may -: be insufficient for modeling switched transistors.Developers: IEEE model standards group (par 1164) -. -. -------------------------------------------------------------------.'1') SUBTYPE UX01Z IS resolved std_ulogic RANGE 'U' TO 'Z'.version | mod.

r : std_logic_vector ) RETURN std_logic_vector. FUNCTION To_X01Z ( b : BIT_VECTOR ) RETURN std_logic_vector. r : std_logic_vector ) RETURN std_logic_vector. FUNCTION To_X01Z ( s : std_ulogic ) RETURN X01Z. FUNCTION To_X01 ( s : std_ulogic_vector ) RETURN std_ulogic_vector. -------------------------------------------------------------------.2004 166 . FUNCTION To_X01Z ( b : BIT_VECTOR ) RETURN std_ulogic_vector.Année universitaire 2003 . FUNCTION To_X01Z ( s : std_logic_vector ) RETURN std_logic_vector. FUNCTION To_X01 ( b : BIT_VECTOR ) RETURN std_logic_vector.edge detection ------------------------------------------------------------------FUNCTION rising_edge (SIGNAL s : std_ulogic) RETURN BOOLEAN. FUNCTION "nor" ( l. ENSSAT . FUNCTION "not" ( l : std_logic_vector ) RETURN std_logic_vector.conversion functions -. END std_logic_1164. r : std_ulogic ) RETURN UX01. r : std_ulogic_vector ) return std_ulogic_vector.France .Université de Rennes 1 . -------------------------------------------------------------------------------------------------------------------------------------. ( b : BIT ) RETURN UX01. FUNCTION "or" ( l. FUNCTION "nand" ( l. -------------------------------------------------------------------. FUNCTION "nand" ( l. r : std_ulogic_vector ) RETURN std_ulogic_vector. r : std_logic_vector ) RETURN std_logic_vector. FUNCTION To_StdLogicVector ( s : std_ulogic_vector ) RETURN std_logic_vector. FUNCTION To_StdULogic ( b : BIT ) RETURN std_ulogic. FUNCTION "nor" ( l : std_ulogic. FUNCTION "not" ( l : std_ulogic ) RETURN UX01. FUNCTION To_bitvector ( s : std_logic_vector . FUNCTION To_StdULogicVector ( s : std_logic_vector ) RETURN std_ulogic_vector. FUNCTION Is_X ( s : std_ulogic ) RETURN BOOLEAN. FUNCTION "xor" ( l. r : std_ulogic_vector ) RETURN std_ulogic_vector. ( s : std_ulogic_vector ) RETURN std_ulogic_vector. FUNCTION "xor" ( l : std_ulogic. r : std_ulogic ) RETURN UX01. -------------------------------------------------------------------. r : std_ulogic_vector ) RETURN std_ulogic_vector. ( s : std_ulogic ) RETURN UX01.11 ) Paquetages IEEE FUNCTION "or" ( l : std_ulogic. r : std_ulogic_vector ) RETURN std_ulogic_vector. FUNCTION To_bitvector ( s : std_ulogic_vector. FUNCTION To_X01Z ( b : BIT ) RETURN X01Z. xmap : BIT := '0') RETURN BIT_VECTOR. r : std_logic_vector ) return std_logic_vector. FUNCTION Is_X ( s : std_ulogic_vector ) RETURN BOOLEAN. FUNCTION To_StdULogicVector ( b : BIT_VECTOR ) RETURN std_ulogic_vector. r : std_logic_vector ) RETURN std_logic_vector. r : std_ulogic ) RETURN UX01. FUNCTION "and" ( l.strength strippers and type convertors ------------------------------------------------------------------FUNCTION To_X01 ( s : std_logic_vector ) RETURN std_logic_vector. FUNCTION To_X01 ( b : BIT_VECTOR ) RETURN std_ulogic_vector. r : std_ulogic_vector ) RETURN std_ulogic_vector. FUNCTION Is_X ( s : std_logic_vector ) RETURN BOOLEAN. r : std_logic_vector ) RETURN std_logic_vector. FUNCTION falling_edge (SIGNAL s : std_ulogic) RETURN BOOLEAN. FUNCTION To_X01 ( b : BIT ) RETURN X01. FUNCTION To_UX01 FUNCTION To_UX01 FUNCTION To_UX01 FUNCTION To_UX01 FUNCTION To_UX01 FUNCTION To_UX01 ( s : std_logic_vector ) RETURN std_logic_vector. ( b : BIT_VECTOR ) RETURN std_ulogic_vector.object contains an unknown ------------------------------------------------------------------------------------------------------------------------------------FUNCTION To_bit ( s : std_ulogic. function "xnor" ( l : std_ulogic. FUNCTION To_StdLogicVector ( b : BIT_VECTOR ) RETURN std_logic_vector. r : std_ulogic ) return ux01. xmap : BIT := '0') RETURN BIT. FUNCTION "nor" ( l. FUNCTION "xor" ( l. function "xnor" ( l. ( b : BIT_VECTOR ) RETURN std_logic_vector. FUNCTION "not" ( l : std_ulogic_vector ) RETURN std_ulogic_vector.vectorized overloaded logical operators ------------------------------------------------------------------FUNCTION "and" ( l. FUNCTION "or" ( l. xmap : BIT := '0') RETURN BIT_VECTOR. FUNCTION To_X01 ( s : std_ulogic ) RETURN X01. FUNCTION To_X01Z ( s : std_ulogic_vector ) RETURN std_ulogic_vector. function "xnor" ( l.

R: UNSIGNED) return UNSIGNED. attribute builtin_subprogram of "+"[STD_ULOGIC.Attributes added to invoke MTI builtin functions "+"[SIGNED. STD_ULOGIC return UNSIGNED]: function is "stdarith_plus_uxu".2004 167 . -"+"[SIGNED. ENSSAT .Package name: STD_LOGIC_ARITH -function "+"(L: UNSIGNED. ---------------function "+"(L: SIGNED. type SIGNED is array (NATURAL range <>) of STD_LOGIC. INTEGER.provided that this copyright statement is not removed from the file -attribute builtin_subprogram of -. SMALL_INT. R: UNSIGNED) return SIGNED. Inc. "+"[INTEGER.STD_ULOGIC. library IEEE. R: SIGNED) return SIGNED. ---. function "+"(L: UNSIGNED. function "+"(L: SIGNED. INTEGER return UNSIGNED]: function is "stdarith_plus_uiu". R: UNSIGNED) return UNSIGNED. -------------------------------------------------------------------------function "+"(L: SIGNED. and comparison functions --.11 ) Paquetages IEEE -------------------------------------------------------------------------function "+"(L: UNSIGNED. SIGNED return SIGNED]: function is "stdarith_plus_sss". attribute builtin_subprogram of use IEEE. SIGNED return SIGNED]: function is "stdarith_plus_xss".Copyright (c) 1990. STD_LOGIC. R: INTEGER) return UNSIGNED. UNSIGNED. --------------------------------------------------attribute builtin_subprogram of -. "+"[UNSIGNED. R: STD_ULOGIC) return UNSIGNED.1992 by Synopsys . --attribute builtin_subprogram of -.France .1991.all. UNSIGNED return UNSIGNED]: function is "stdarith_plus_iuu". attribute builtin_subprogram : string. -"+"[UNSIGNED. -. package std_logic_arith is type UNSIGNED is array (NATURAL range <>) of STD_LOGIC. STD_ULOGIC return SIGNED]: function is "stdarith_plus_sxs ". -. UNSIGNED return UNSIGNED]: function is "stdarith_plus_uuu". R: STD_ULOGIC) return SIGNED.Université de Rennes 1 . -.add operators attribute builtin_subprogram of ---------------"+"[SIGNED. --attribute builtin_subprogram of -. subtype SMALL_INT is INTEGER range 0 to 1.for SIGNED. attribute builtin_subprogram of "+"[SIGNED. function "+"(L: STD_ULOGIC.Purpose: -"+"[UNSIGNED. --------------------------------------------------function "+"(L: INTEGER. SIGNED return SIGNED]: function is "stdarith_plus_iss". conversion. UNSIGNED return SIGNED]: function is "stdarith_plus_sus ". attribute builtin_subprogram of "+"[STD_ULOGIC. and STD_LOGIC_VECTOR. R: INTEGER) return SIGNED. function "+"(L: UNSIGNED. R: SIGNED) return SIGNED. INTEGER return SIGNED]: function is "stdarith_plus_sis ". -. R: SIGNED) return SIGNED. attribute builtin_subprogram of function "+"(L: STD_ULOGIC. -.and that any derivative work contains this copyright notice. R: UNSIGNED) return UNSIGNED. SIGNED return SIGNED]: function is "stdarith_plus_uss". UNSIGNED return UNSIGNED]: function is "stdarith_plus_xuu". R: SIGNED) return SIGNED.std_logic_1164.A set of arithemtic.function "+"(L: INTEGER. attribute builtin_subprogram of "+"[UNSIGNED. attribute builtin_subprogram of ---"+"[INTEGER. ---.Année universitaire 2003 .This source file may be used and distributed without restriction -function "+"(L: SIGNED. All rights reserved.

attribute builtin_subprogram of "+"[UNSIGNED. SIGNED return STD_LOGIC_VECTOR]: function is "stdarith_plus_iss". function "+"(L: UNSIGNED. attribute builtin_subprogram of "+"[INTEGER. UNSIGNED return STD_LOGIC_VECTOR]: function is "stdarith_plus_xuu". R: STD_ULOGIC) return STD_LOGIC_VECTOR. attribute builtin_subprogram of "+"[UNSIGNED. function "+"(L: SIGNED.Année universitaire 2003 . function "+"(L: INTEGER. function "+"(L: SIGNED. attribute builtin_subprogram of "+"[SIGNED.2004 168 . UNSIGNED return STD_LOGIC_VECTOR]: function is "stdarith_plus_sus ". attribute builtin_subprogram of "+"[UNSIGNED. function "+"(L: INTEGER. R: INTEGER) return STD_LOGIC_VECTOR. R: SIGNED) return STD_LOGIC_VECTOR. INTEGER return STD_LOGIC_VECTOR]: function is "stdarith_plus_sis ". SIGNED return STD_LOGIC_VECTOR]: function is "stdarith_plus_sss". UNSIGNED return STD_LOGIC_VECTOR]: function is "stdarith_plus_uuu". R: SIGNED) return STD_LOGIC_VECTOR. SIGNED return STD_LOGIC_VECTOR]: function is "stdarith_plus_uss". R: UNSIGNED) return STD_LOGIC_VECTOR. STD_ULOGIC return STD_LOGIC_VECTOR]: function is "stdarith_plus_uxu".Université de Rennes 1 . R: UNSIGNED) return STD_LOGIC_VECTOR. function "+"(L: UNSIGNED. R: SIGNED) return STD_LOGIC_VECTOR. INTEGER return STD_LOGIC_VECTOR]: function is "stdarith_plus_uiu". ENSSAT . R: UNSIGNED) return STD_LOGIC_VECTOR. UNSIGNED return STD_LOGIC_VECTOR]: function is "stdarith_plus_iuu". function "+"(L: UNSIGNED. attribute builtin_subprogram of "+"[INTEGER. attribute builtin_subprogram of "+"[UNSIGNED. R: INTEGER) return STD_LOGIC_VECTOR. attribute builtin_subprogram of "+"[SIGNED. function "+"(L: SIGNED.France . attribute builtin_subprogram of "+"[SIGNED. attribute builtin_subprogram of "+"[STD_ULOGIC.11 ) Paquetages IEEE function "+"(L: UNSIGNED. R: UNSIGNED) return STD_LOGIC_VECTOR. function "+"(L: STD_ULOGIC.