Lär dig Verilog: En kort Tutorial serie på Digital elektronik Design med FPGAs och Verilog HDL (14 / 21 steg)
Steg 14: VM 3.2: instansieras moduler
Vi har diskuterat instansierad moduler mycket nu, så det är dags att förstå underliggande konceptet.
Den översta modulen wraps projektet tillsammans, ofta av instansieras andra användbara modulära komponenter för att möta projektkrav. Men var och en av dessa instansierad moduler kan också initiera andra moduler.
Detta innebär att en given övre modul kan exemplifiera något liknande en klocka avdelare, och att klockan avdelare kan initiera ett antal DFFs, men uppgiften att ansluta DFFs tillsammans ges till modulen klocka avdelare.
Låter som ett välkänt begrepp? Alla som har dabbled med programmering i språk som C, C++, Java, etc. bör känna till "scope". Omfattningen av en instansierad modul är begränsad till den modul som instansierats det. Detta är mycket liknar, till exempel C++. Om vi gjorde ett C++-program, vi har en Main () funktion som omsluter allt tillsammans, och i den huvudsakliga funktionen vi kan kalla andra funktioner, men det inre arbetet i dessa funktioner (och dessa funktioner också kan kalla dessa funktioner) är inte tillgängliga i viktigaste, även om för att köra den huvudsakliga funktionen, alla extra funktioner måste också utföras.
Så vid klockan delaren, den översta modulen innehåller en klocka avdelare och därför också innehåller en massa DFFs, men vad beträffar den översta modulen är behöver det inte tillgänglig DFFs.