Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial Internet of Things >> Embarqué

Verilog 101 : Construire vos premiers modules de description matérielle

Dans cet article, nous étudierons la structure de base d'un module Verilog, examinerons des exemples d'utilisation du type de données Verilog « wire » et sa forme vectorielle, et aborderons brièvement certaines différences entre VHDL et Verilog.

Verilog et VHDL sont deux langages couramment utilisés pour décrire des circuits numériques. AAC propose une série d'articles techniques discutant les concepts de base de VHDL. Cet article sert de point de départ pour notre série sur Verilog.

Ai-je besoin de Verilog et VHDL tous les deux ?

Avant de commencer notre discussion, abordons une question évidente : avons-nous vraiment besoin de connaître ces deux langages ?

Verilog et VHDL sont tous deux des outils puissants pour concevoir des circuits numériques complexes. Bien qu'il y ait des différences entre ces deux HDL, vous êtes libre d'en choisir un pour le maîtriser et l'utiliser. Cependant, je crois qu'à un moment donné, vous bénéficierez d'avoir au moins une compréhension de base des deux langages. Parfois, en tant que concepteurs, nous avons besoin d'un segment de code d'exemple pour avoir une idée sur le codage d'un projet. Nous surfons sur le net pendant des heures et trouvons enfin ce dont nous avons besoin, mais cela n'a aucun sens pour nous — c'est écrit dans le HDL qui nous est complètement étranger. Sans une compréhension de base du langage, nous pourrions ne pas être en mesure de comprendre pleinement les techniques.

Évolution de Verilog

Verilog a été conçu au début de 1984 par Gateway Design Automation (environ trois ans après que VHDL ait été initié par le Département de la Défense américain). Avec le soutien du DoD, VHDL est devenu une norme IEEE en 1987. Verilog n'est entré en scène qu'en 1995. Aujourd'hui, VHDL et Verilog sont tous deux des HDL populaires et les outils de conception FPGA supportent généralement les deux langages.

Le mot « Verilog » est un mot-valise des mots « verification » et « logic » car le langage a d'abord été suggéré comme un outil de simulation et de vérification. Commençons avec les concepts et la syntaxe de Verilog.

Exemple 1

Comme premier exemple, écrivons le code Verilog pour le circuit représenté dans la Figure 1.

Verilog 101 : Construire vos premiers modules de description matérielle

Figure 1. Circuit_1

Il y a deux entrées et une sortie. Les ports font tous un bit de large. La fonctionnalité du circuit est de faire un ET des deux entrées et de mettre le résultat sur le port out1.

Une description Verilog possible pour le module Circuit_1 est :

Verilog 101 : Construire vos premiers modules de description matérielle

Lignes 1 et 8

Ces deux lignes utilisent les mots-clés « module » et « endmodule » pour spécifier que les lignes entre les deux (lignes 2 à 7) décrivent toutes un circuit nommé « Circuit_1 ». Ce nom est arbitraire et nous permet de faire référence à ce circuit plus tard.

Lignes 2 à 6

Ces lignes spécifient l'interface de « Circuit_1 » avec son environnement environnant. Les ports d'entrée et de sortie sont décrits en utilisant les mots-clés « input » et « output ». Ces mots-clés sont suivis par un autre mot-clé « wire » puis le nom du port (voir Figure 1). Que spécifie le mot-clé « wire » ? « Wire » est un type de données Verilog qui représente un fil physique dans la conception. Nous discuterons des types de données Verilog plus en détail dans un futur article, mais pour l'instant, nous savons qu'il y aurait trois fils appelés a, b et out1 dans notre module et comme ils sont spécifiés dans la déclaration de port, ils correspondent à l'interface du module.

Ligne 7

Cette ligne utilise l'opérateur ET bit à bit, c.-à-d. &, pour décrire la fonctionnalité du circuit. Le mot-clé « assign » met a&b sur le port de sortie out1. Ce type d'affectation est appelé affectation continue. On l'appelle ainsi car l'affectation est toujours active : chaque fois qu'un opérande du côté droit change, a&b est évalué et assigné à out1. Nous pouvons envisager une affectation continue comme un circuit combinatoire dont la sortie est continuellement mise à jour en fonction de ses entrées. Dans notre exemple, ce circuit combinatoire est une simple porte ET. Il existe aussi des affectations procédurales en Verilog HDL qui seront discutées dans de futurs articles.

Maintenant, nous pouvons utiliser un logiciel tel que Xilinx ISE pour vérifier le code ci-dessus. Vous pouvez trouver un tutoriel Verilog de ce logiciel ici (PDF).

Comparaison de l'Exemple 1 avec le code VHDL

La Figure 2 ci-dessous montre les descriptions Verilog et VHDL pour le module Circuit_1.

Verilog 101 : Construire vos premiers modules de description matérielle

Figure 2. Comparaison des descriptions Verilog et VHDL pour Circuit_1.

Comme vous pouvez le voir, nous devons inclure certaines bibliothèques lors du codage en VHDL. Ces bibliothèques donnent la définition des types de données et opérateurs. En considérant l'ajout de ces bibliothèques et le format général de VHDL, nous observons que le code VHDL est plus verbeux. Cependant, cette verbosité n'est pas sans avantages. Par exemple, la gestion des bibliothèques de VHDL peut être utile lors de la modélisation de systèmes de niveau supérieur. Dans de futurs articles, nous discuterons occasionnellement des avantages et inconvénients de ces deux HDL.

Verilog a un système à quatre valeurs

Il y a quatre valeurs de base utilisées dans la plupart des types de données Verilog. Les fils définis dans le Listing 1 peuvent prendre l'une des valeurs suivantes :

Le type de données VHDL std_logic peut prendre neuf valeurs différentes mais ses valeurs couramment utilisées sont '0', '1', 'Z', et '-' ('-' désigne une indifférence).

Exemple 2

Comme autre exemple, écrivons le code Verilog pour le circuit (que nous appellerons Circuit_2) montré dans la Figure 3.

Verilog 101 : Construire vos premiers modules de description matérielle

Figure 3. Circuit_2

Le code Verilog suivant décrit ce circuit :

Verilog 101 : Construire vos premiers modules de description matérielle

Les éléments utilisés dans le code ci-dessus sont similaires à ceux de l'Exemple 1, sauf qu'un signal interne est défini à la ligne 10 du code. Le mot-clé « wire » est utilisé pour spécifier le type de données de cette connexion. Comme discuté ci-dessus, le type de données « wire » se traduirait par un fil physique dans la conception.

Le code ci-dessus utilise également de nouveaux opérateurs bit à bit Verilog : ~ pour NON et | pour l'opération OU. Un autre opérateur bit à bit utile est ^ pour l'opération XOR. La Figure 4 montre les descriptions Verilog et VHDL pour le module Circuit_2. De telles comparaisons peuvent vous aider à voir les différences et similarités entre ces deux langages.

Verilog 101 : Construire vos premiers modules de description matérielle

Figure 4. Comparaison des descriptions Verilog et VHDL pour Circuit_2.

Exemple 3

Pour notre troisième et dernier exemple, nous donnerons le code Verilog pour le schéma montré dans la Figure 5.

Verilog 101 : Construire vos premiers modules de description matérielle

Figure 5. Schéma pour l'exemple 3.

Comme vous pouvez le voir, il y a une certaine relation entre les ports d'entrée bleus et les rouges : les entrées correspondantes sont combinées avec l'opérateur ET. Le résultat est assigné à un port de sortie. Dans de tels cas, nous pouvons regrouper les signaux et les traiter comme un vecteur. Cela rend le code compact et lisible.

En utilisant le concept de vecteur en Verilog, nous pouvons facilement étendre le code du Listing 1 pour décrire le circuit ci-dessus (voir le code dans le Listing 3 ci-dessous).

Verilog 101 : Construire vos premiers modules de description matérielle

Notez que l'intervalle d'index des vecteurs peut être soit ascendant ([0:2] comme utilisé ci-dessus) soit descendant ([2:0]). Bien que le format ascendant soit utilisé ci-dessus, il est généralement moins sujet aux erreurs d'utiliser la forme descendante. Cela est dû au fait que le style descendant correspond à notre perception que la position la plus à gauche d'un nombre binaire a l'index le plus élevé. Notez que les vecteurs sont également utilisés en VHDL.

La Figure 6 ci-dessous montre une simulation ISE du code du Listing 3.

Verilog 101 : Construire vos premiers modules de description matérielle

Figure 6. Simulation ISE du code de l'Exemple 3.

Dans cet article, nous avons discuté qu'il est judicieux d'apprendre VHDL et Verilog, nous avons étudié la structure de base d'un module Verilog, et nous nous sommes familiarisés avec le type de données Verilog « wire » et sa forme vectorielle. Nous avons également brièvement abordé certaines différences entre VHDL et Verilog. Le prochain article de notre série Verilog discutera de la conception de circuits combinatoires en Verilog.

Embarqué

  1. Code-Ready Containers : Guide Pratique d'Automatisation Cloud-Native avec Red Hat OpenShift
  2. Guide pratique de l'impression 3D céramique : techniques, matériaux et conseils de conception
  3. Démarrage avec TJBot : Construire, Configurer et Contrôler par la Voix Votre Propre Robot IA
  4. Guide Pas à Pas pour Déployer une Passerelle LoRa RAK 831 sur Raspberry Pi 3
  5. Construire une passerelle LoRa avec le module RAK831 sur Raspberry Pi 3 – Guide pas à pas
  6. Maîtriser l'inférence Edge AI : guide pratique pour des insights exploitables
  7. Découvrez le groupe Eagle : votre partenaire pour la fabrication métallique de qualité
  8. Optimiser machines Cat® : guide ultime My.Cat.com
  9. Déployer Node-RED sur PLCnext avec Docker : Guide étape par étape