LOGIQUE PROGRAMMABLE EN VERILOG
Chapitre 1. Introduction
Chapitre 2. Traitement combinatoire et syntaxe du langage
2.1. Le module
2.2. Les entrées - sorties
2.3. Les niveaux logiques
2.4. Le corps du programme
2.5. Les opérations logiques binaires
2.6. Les opérations logiques unaires
2.7. Les opérations arithmétiques
2.8. Les bus
2.9. La déclaration de paramètre
2.10. La concaténation
2.11. Exemple: l'additionneur 1 bit complet
2.12. Taille et codage des nombres
2.13. Extension des modules
2.14. Avantages et Inconvénients des différentes approches sur un exemple
2.15. Exercices
2.16. Solution des exercices
Chapitre 3. L'usage de l'outil QUARTUS II
Chapitre 4. Description comportementale
Chapitre 5. Projets : énoncés
Chapitre 6. Projets : vers la solution
Page d'accueil Table des matières Niveau supérieur Page précédente Bas de la page Page suivante

2.1. Le module

C'est l'élément essentiel qui définit les entrées - sorties du composant. Le mot composant est à prendre au sens le plus large possible. Ce peut être le composant le plus élémentaire (la porte inverseuse du schéma) ou le plus large (l'application entière).

Pour débuter, on ne mettra qu'un composant sur notre schéma. Il n'y aura pas de hiérarchisation des composants.

Un module est un bloc possédant des entrée(s) et sortie(s). Il peut être issu d’un découpage fonctionnel et contient le traitement d’une fonctionnalité. Il doit posséder au moins une entrée et au moins une sortie. Son traitement peut faire appel à des ressources extérieures au fichier.

On peut considérer que le module de Verilog est la fonction du langage C.

Il est complètement défini entre les mots clés : module et endmodule

Cette facon de gérer les modules permet d'envisager l'interconnexion des modules afin de « câbler » les composants ou de réaliser un schéma hiérarchisé.

Pour le composant définissant l'application, contrairement au langage C où le point d'entrée du programme porte toujours le même nom (main), le nom est à définir. Il devra être défini dans le projet et portera souvent le même nom que le fichier source Verilog (d'extension .v). C'est celui qui sera appelé « Top Level Design Name » dans le projet.

On prendra soin de mettre entre parenthèses la liste des entrées - sorties juste après le mot « module ».

Conseil : mettre les entrées en premier, suivies des sorties.

Conseil : écrire les noms en minuscules pour les entrées et majuscules pour les sorties.

Conseil : donner des noms parlants au modules comme aux entrées - sorties.

ATTENTION : la ligne de déclaration du module se termine par un séparateur d’instructions ( ;). Ce n'est pas le cas en langage C.

Remarque : le logiciel tient compte de la casse des lettres (mots_clés et identificateurs).

Si on souhaite définir un nouveau composant qui serait une porte ET à 4 entrées. Le premier conseil est de lui donner un nom parlant tel que ET4. Le cadre du module sera alors:


module ET4 (a, b, c, d, S) ;


// contenu du module …


 endmodule

 

Remarque : l’ordre d’écriture des entrées-sorties est à priori sans importance sauf dans le cas de réutilisation ou d'interconnexion. Il doit être conservé dans le cas d’instanciation.

Remarque : l'ordre d'écriture des modules est indifférent.

Important : les identificateurs peuvent contenir des lettres, chiffres et le souligné (underscore _) avec comme seule condition que le premier caractère ne soit pas un chiffre.

Les mots-clés ne peuvent pas être des identificateurs.

Le séparateur d’instructions est le point virgule ( ; ).

L’espace est un séparateur (pas d’espace dans les noms), sauf dans le cas des nombres ou il est accepté dans le but de faciliter la lecture tout comme le souligné (underscore).

Les commentaires sont inline (après //) ou multilignes (entre /* et */). Ils ne peuvent pas être au milieu d'un identificateur ou mot-clé.

Remarques : les commentaires multilignes ne peuvent pas être imbriqués

Remarque : l'ordre d'écriture des modules est indifférent

Remarque : endmodule s'écrit en 1 seul mot (end et module sont aussi des mots-clés)

 

Un fichier source peut comporter plusieurs modules, le module principal (Top Level Module) définit seul les entrées-sorties réelles du composant programmable. Les autres modules sont des ressources utilisées par d'autres modules ou le module principal.

 

module ET4 (a, b, c, d, S) ;

// contenu du module…

ET2 ....

endmodule

module ET2 (a, b, S) ;

// contenu du module…

endmodule

...

 

 

Page d'accueil Table des matières Niveau supérieur Page précédente Haut de la page Page suivante