Modules, ports et hiérarchie
Déclarer une interface, choisir entre wire et reg, puis relier plusieurs modules proprement.
Le rôle d'un module
Le module est le bloc de base de Verilog. Il peut représenter une petite fonction, comme un comparateur, ou le niveau supérieur d'un FPGA complet.
module channel_guard (
input wire i_valid,
input wire i_ready,
output wire o_fault
);
assign o_fault = i_valid & ~i_ready;
endmoduleLa déclaration placée entre parenthèses donne le nom, le sens et le type de chaque port. Cette forme dite ANSI est disponible en Verilog-2001.
Entrées, sorties et ports bidirectionnels
Un port peut avoir trois directions :
| Direction | Rôle |
|---|---|
input | valeur reçue par le module |
output | valeur produite par le module |
inout | liaison bidirectionnelle |
inout est surtout utile au niveau des broches physiques, par exemple pour un bus réellement tristate. À l'intérieur d'un FPGA, il vaut mieux séparer les chemins d'entrée, de sortie et d'activation.