Étape 14 : VM 3.2 : instancié Modules
Nous avons discuté des modules instanciés de beaucoup maintenant, alors il est temps de comprendre le concept sous-jacent.Le module supérieur encapsule le projet ensemble, souvent en instanciant autres composants utiles modulaires pour répondre aux exigences du projet. Mais chacun de ces modules instanciés peut instancier également d’autres modules.
Cela signifie qu’un module supérieur donné peut instancier quelque chose comme un diviseur d’horloge et que le diviseur d’horloge peut instancier un certain nombre de DFFs, mais la tâche de connexion DFFs ensemble est donnée pour le module de diviseur d’horloge.
Sonne comme un concept familier ? N’importe qui qui a touché à la programmation dans des langues comme C, C++, Java, etc. devraient être familiers avec la « portée ». La portée d’un module instancié est limitée au module qui l’a instancié. C’est très semblable à, par exemple, C++. Si nous faisions un programme C++, nous avons une fonction main() qui encapsule tout ensemble, et dans cette fonction principale nous pouvons appeler d’autres fonctions, mais le fonctionnement interne de ces fonctions (et ces fonctions peuvent également appeler ces fonctions) ne sont pas accessibles en principal, même si pour exécuter la fonction principale, toutes les fonctions auxiliaires doivent également être exécutées.
Donc dans le cas du diviseur d’horloge, le module supérieur contient un diviseur d’horloge et donc contient également un tas de DFFs, mais pour ce qui est le module supérieur est il n’a pas DFFs accessibles.