Il est possible de rendre paramétrable des modules plutôt que de les
réécrire.
C’est le rôle de la directive « parameter
».
Ainsi :
- Pour associer A à la valeur 3
parameter A = 3 ;
- Pour associer C à la valeur du
calcul 2A/3
parameter C = ( 2*A ) /
3 ;
- Pour faire 2 tableaux de même taille
paramétrable
parameter
MSB = 7 ;
input
[MSB : 0] donnee ;
output [MSB : 0] SORTIE ;
Il devient
possible d’envisager des fonctionnalités
paramétrables : on limite ainsi le nombre de déclarations
de fonctions. On peut modifier une liste de valeurs à la
façon du langage C avec les « #define ».
On peut imaginer des fonctionnalités qui pourraient
devenir génériques telles qu'un compteur
N bits où N est un paramètre.
Exemple : fonction OU
à N entrées
module OU( e, S) ;
paremeter N = 19 ; // à
paramétrer
input [N : 0] e ;
output S ;
assign S = |e ;
endmodule