Dans ce didacticiel VHDL, nous aborderons certains des concepts de base liés à la technologie VHDL et quelques exemples de codage. Le didacticiel VHDL est segmenté comme suit :
SUJETS DE DISCUSSION
A. Qu'est-ce que VHDL?
B. Histoire et normalisation
C.Procédures de conception VHDL
D. Quelques règles et informations de base sur VHDL
E. Syntaxes et quelques concepts importants pour l'écriture de codes VHDL
Tutoriel sur les simulateurs VHDL pour VHDL
VHDL || Qu'est-ce que VHDL?
La forme complète de VHDL est l'acronyme de Very High Speed Integrated Circuit Hardware Description Language (VHSIC-HDL).
Comme son nom l'indique, VHDL est un langage de description de matériel ou un type spécial de langage de programmation qui décrit les implémentations matérielles du système et des circuits numériques. Il s'agit d'un langage fortement typé et rappelle qu'il ne s'agit pas d'un langage de programmation.
Histoire et normalisation
Le département américain de la Défense a une contribution significative au domaine technologique moderne. Il a donné naissance à trop de grandes idées et innovations. La Défense américaine a également développé VHDL en 1983. Il a été développé pour la documentation du comportement des circuits intégrés spécifiques à l'application.
Plus tard, certaines idées ont été implémentées à partir des langages de programmation Ada. Le VHDL a été normalisé pour la première fois en 1987. Il a été ajouté à plusieurs types de données de plusieurs types, y compris des chaînes et numériques et logiques.
Standardisation
VHDL ou VHSIC-HDL (Very High Speed Integrated Circuit Hardware Description Language) est normalisé par la norme IEEE 1076. Il est mis à jour depuis sa naissance et a subi de nombreuses révisions. Examinons quelques-unes des révisions standard et des mises à jour majeures.
Révisions | Actualités |
IEEE 1076 - 1987 | Révision et normalisation de US Defence. |
IEEE 1076 - 1993 | Est venu avec la plus grande version, et c'est la version la plus utilisée. |
CEI 61691 -1-1-1: 2004 | Version IEEE 1076-2002 adoptée par la CEI |
IEEE 1076-2008 | Mise à jour avec quelques changements majeurs tels que - Introduction de génériques sur les packages et utilisation de noms externes |
CEI 61691 -1-1-1: 2011 | Version IEEE 1076-2008 adoptée par la CEI |
Conception de VHDL
La conception VHDL a quelques unités de conception. Ils sont connus sous le nom d'entité, d'architecture, de configuration et de package.
Entité: L'entité définit les vues externes d'un modèle qui est un symbole.
Archi L'architecture définit la fonctionnalité d'un modèle qui est schématique.
Configuration: La configuration est utilisée pour associer l'architecture à une entité.
Paquet: Package est la collection d'informations qui peuvent être référencées par les modules VHDL. Un package VHDL se compose de deux parties. Ce sont: la déclaration du package et le corps du package.
Déclaration d'entité
La structure générale de la déclaration d'entité est donnée ci-dessous -
ENTITÉ < nom_entité > IS
Déclarations génériques
Déclarations portuaires
ENTITÉ FIN <nom_entité>;
- peut être alphabétique / numérique ou alphanumérique.
- Les déclarations génériques servent à transmettre des informations dans un modèle.
- Les déclarations de port servent à décrire les broches d'entrée et de sortie.
- Une entité peut être fermée de plusieurs manières.
- ENTITÉ FIN <nom_entité>;
- ENTITÉ FIN;
- FIN;
Déclarations de port
Une structure générale pour les déclarations de port est donnée ci-dessous -
ENTITÉ < nom_entité > IS
Déclarations génériques
- Déclarations de port:
PORT (
SIGNAL CLK, CLR : EN PEU;
q: BOUT DE SORTIE
- notez qu'il n'y a pas de point-virgule dans la dernière ligne des déclarations.
);
ENTITÉ FIN <nom_entité>;
La structure de la déclaration de port: object_name : ;
- Classe: La classe est ce qui peut être fait à un objet. Ici, la classe est le signal. Un point à retenir que le SIGNAL n'est pas écrit lors de l'écriture du programme; il est plutôt supposé et non obligatoire.
- Nom_objet: C'est l'identifiant.
- Mode: Il précise la direction.
DANS - Entrée
EN DEHORS - Sortie
CONTRIBUTION - Bidirectionnelle
TAMPON - Sortie avec retour interne
- Type : Type spécifie ce qui peut être contenu à l'intérieur d'un objet.
Déclarations génériques
Une structure générale des déclarations génériques est donnée ci-dessous -
ENTITÉnom_entité> IS
GÉNÉRIQUE (
CONSTANTE tplh, tphl: heure := 5 ns;
tphz, tplz: HEURE := 3ns ;
valeur_par défaut: INTEGER: = 1;
cnt_dir: STRING := «UP»
- notez qu'il n'y a pas de point-virgule dans la dernière ligne des déclarations.
);
Déclarations portuaires
END ENTITYnom_entité>;
- Les valeurs génériques peuvent être écrasées lors de la compilation.
- Le générique doit posséder la ténacité à une constante lors de la compilation d'un programme.
Notez que le mot clé CONSTANT est supposé et qu'il n'est pas nécessaire d'écrire.
Architecture
- Analogie-schématique: Le schéma d'analogie donne la description de la fonctionnalité d'un modèle et le timing qui lui est associé.
- L'architecture d'un modèle doit être associée à une ENTITY.
- Une entité peut être associée à de nombreuses architectures.
- Les déclarations d'architecture s'exécutent simultanément.
- Quelques styles d'architecture -
- Comportemental: le modèle comportemental décrit le fonctionnement des conceptions.
RTL: RTL décrit comment les conceptions peuvent être implémentées à l'aide de registres.
Fonctionnel: il n'inclut aucun timing.
- Structural: Implémentation de la structure de niveau de porte.
- Flux de données: Mise en place de la table de vérité.
- L'architecture se termine par -
- FIN DE L'ARCHITECTURE ;
- ARCHITECTURE DE FIN
- FIN;
Une structure générale d'écriture d'une architecture:
ARCHITECTURE <identifiant> OF <identificateur_entité> IS
SIGNAL signal_1: INTEGER: = 1;
CONSTANTE cnst: = BOOLEAN: = vrai;
TYPE processus EST (W, X, Y, Z);
- Déclarations d'attributs
- Spécifications des attributs
- Déclarations de sous-programme
- Corps du sous-programme
COMMENCER
Instructions de processus
Appels procéduraux simultanés
Affectation des signaux
Générer des déclarations
ARCHITECTURE DE FIN <identifiant>;
configuration
Comme discuté, un précédent configuration est utilisée pour associer l'architecture à une entité. L'association ou la combinaison est nécessaire car une ENTITY ne peut pas fonctionner tant que l'architecture ne lui est pas associée. Une structure générale de configuration est donnée ci-dessous.
CONFIGURATION < identifiant > OF < nom_entité > IS
POUR < nom_architecture >
POUR < nom de l'instance >: Nom du composant > UTILISATION < entité > ( architecture >)
FIN POUR;
POUR < nom de l'instance >: Nom du composant > UTILISATION < nom_configuration >
FIN POUR;
FIN POUR;
FIN DE LA CONFIGURATION < identifiant >;
Formules
Les packages VHDL sont une unité entière d'un système entier. C'est l'objectif principal de la mise en œuvre de VHDL. Un package comprend deux parties. Comme indiqué précédemment, les déclarations de package et le corps du package forment un package complet.
VHDL propose deux packages intégrés.
Quelques règles et informations de base sur le didacticiel VHDL
Laissez-nous discuter de jeter un coup d'œil à quelques informations de base avant de plonger pour explorer le didacticiel VHDL.
1. Mots clés réservés: VHDL a certains mots clés réservés (qui ne peuvent pas être utilisés pour déclarer une variable).
2. Pièces: VHDL comporte deux étapes ou parties pour la création d'un modèle. L'un est la simulation et l'autre la synthèse et la simulation.
3. Langage sensible à la casse: VHDL n'est pas un langage sensible à la casse (pour la plupart).
4. Commentaires: Pour commenter une instruction dans l'éditeur de code VHDL, commencez la phrase par -, par exemple:
- Ceci est un commentaire en VHDL.
5. Résiliation: Les codes VHDL et chaque ligne de codes se terminent par un point-virgule (chaque fois que nécessaire).
6. Sensibilité spatiale: VHDL n'est pas sensible aux espaces blancs.
Syntaxes et quelques concepts importants du didacticiel VHDL pour l'écriture de codes VHDL
- Tableau avec des exemples
- Processus avec exemples
- IF - THEN - Implémentation ELSIF avec des exemples.
- Déclaration CASE
- POUR BOUCLE
A. Tableau
Array stocke la valeur. Il s'agit d'un type de données défini par l'utilisateur pour stocker la valeur. Un tableau peut contenir des variables de type signal, constantes.
Une structure générale pour déclarer un tableau est donnée ci-dessous:
TYPE nom_tableau IS TABLEAU (intervalle) OF Type de données;
À titre d'exemple,
TYPE lambdageeks IS ARRAY (0 à 9) OF std_logic_vector (0 UPTO 9);
B. Énoncé de processus
Le processus est une déclaration simultanée et synchronisée. Il introduit les déclarations chronologiques. Plusieurs processus s'exécutent en parallèle si le modèle est nécessaire.
Un processus se compose de deux parties. Ils sont l'exécution du processus et attendent ensuite la condition suivante.
SYNTAXE:
processus sensibilité_list
déclarations
commencer
déclarations_ chronologiques;
processus final;
C. SI - ALORS - Mise en œuvre de l'ELSIF
Ces instructions sont utilisées pour implémenter une condition et pour leur résultat.
Une condition if peut avoir un nombre infini de branches selon l'exigence. Un nombre considérable de conditions elsif est également possible. Mais, dans une boucle if, il ne peut y avoir qu'une seule condition else. Une boucle if se termine par l'instruction end if. Si la condition donnée est vraie, alors il entrera dans la boucle et exécutera l'instruction. Si cela échoue, optez pour une instruction else ou elsif.
La syntaxe des instructions est donnée ci-dessous.
SYNTAXE
if expression_booléenne_conditionnelle puis
déclaration1
Elsif expression_booléenne_conditionnelle puis
déclaration2
. . .
d'autre
déclaration3
fin if;
D. Déclaration CASE
L'instruction Case détermine quelle instruction sera exécutée. Une instruction case peut également être branchée sous forme de boucles IF-ELSE.
SYNTAXE
[étiquette]: maisons < expression-conditionnelle > is
quand < le choix> =>
déclaration1
quand <le choix> =>
déclaration2
...
quand <le choix> =>
déclaration
fin maisons [étiquette];
E. Boucle FOR
Une boucle for est une exécution continue d'instructions selon les conditions limites.
Pour chaque boucle FOR, nous avons besoin d'un itérateur qui effectuera les opérations de la boucle for a. Il est également connu sous le nom d'identifiant. C'est un entier par défaut et il n'est pas nécessaire de déclarer l'itérateur. C'est l'une des boucles les plus couramment utilisées pour créer des modèles complexes. C'est plus familier que les boucles while.
SYNTAXE
[étiquette]: en itérateur in gamme boucle
Déclaration1
Déclaration2
...
Déclaration n
boucle de fin [étiquette];
Tutoriel sur les simulateurs VHDL pour VHDL
Certains des célèbres simulateurs VHDL utilisés pour la mise en œuvre de VHDL sont répertoriés ci-dessous.
- Xilinx Vivado : Le simulateur le plus connu pour VHDL est Xilinx Vivado. Xilinx fournit des dispositifs logiques programmables. Nous utiliserons ce simulateur pour la prochaine partie du didacticiel VHDL.
- Cadence incisive: La version précédente était connue sous le nom de NC-VHDL.
- Simili VHDL : Symphony EDA le développe. C'est gratuit pour les consommateurs.
- GHDL : L'un des célèbres simulateurs VHDL gratuits.
- Bateau: L'organisation Freerangefactory a développé le simulateur.
- NVC: Nick Gasson a développé le compilateur OpenSource VHDL.
- Aire de jeux EDA: Une autre version gratuite basée sur un navigateur Web.
- Résumé VCS-MX.
Faites votre premier projet en utilisant VHDL. Découvrez la partie suivante du didacticiel VHDL.
Pour plus d'articles sur l'électronique, cliquez sur ici!
Bonjour, je m'appelle Sudipta Roy. J'ai fait un B. Tech en électronique. Je suis un passionné d'électronique et je me consacre actuellement au domaine de l'électronique et des communications. J'ai un vif intérêt pour l'exploration des technologies modernes telles que l'IA et l'apprentissage automatique. Mes écrits sont consacrés à fournir des données précises et mises à jour à tous les apprenants. Aider quelqu'un à acquérir des connaissances me procure un immense plaisir.
Connectons-nous via LinkedIn –