2009-09-04 7 views
10

Pouvons-nous avoir un tableau d'instances pour un module personnalisé?Pouvons-nous avoir un tableau de modules personnalisés?

Par exemple: nous pouvons avoir input [15:0] a; - ceci crée un bus. Pouvons-nous faire la même chose pour les modules personnalisés, c'est-à-dire DFF [15:0] d;, où DFF est un module personnalisé? Ici, j'ai l'intention de créer 16 instances du module DFF.

Répondre

8

il est impossible de le faire directement (mise à jour: maintenant, après la réponse de mark4o Je sais qu'il ya un moyen), mais ce que vous pouvez faire est d'utiliser l'instruction generate pour créer plusieurs instances de votre module personnalisé et crochet les jusqu'à vos signaux. Devrait ressembler à ceci:

wire DFF_i[15:0]; 
wire DFF_o[15:0]; 

generate 
    genvar i; 
    for (i=0; i<15; i=i+1) begin : dff 
    custom i_custom(
     .clk(clk) 
     ,.input(DFF_i[i]) 
     ,.output(DFF_o[i]) 
    ); 
    end 
endgenerate 

Sinon, il y a probablement une possibilité lors de la synthèse d'utiliser les bons modules personnalisés, mais je ne suis pas un expert en la matière.

Cheers, Daniel

20

tableaux Verilog de cas ont été ajoutés dans Verilog-1995 (IEEE 1364-1995). Ils peuvent être utilisés avec des portes, des primitives définies par l'utilisateur et des modules. Des générations, plus puissantes mais aussi plus complexes, ont été ajoutées dans Verilog-2001.

Voici un tableau exemple des instances de module:

DFF d[15:0] (clk, DFF_i, DFF_o); 

Pour chaque connexion de port, si la taille correspond à celle du paramètre formel il est connecté à tous les cas. Sinon, chaque instance est connectée à une sélection de partie (ou sélection de bit) de l'expression.

+0

Salut Mark4o, cool je ne le savais pas! A appris quelque chose de nouveau :) Cheers, Daniel – danielpoe

+0

Est-ce que ces modules sont instanciés parallèlement ou l'un après l'autre? – eldos

+0

@eldos: Si la taille d'une connexion de port correspond à celle du paramètre formel, elle est connectée en parallèle à chaque instance. En utilisant un vecteur, vous pouvez connecter les instances en série. – mark4o

Questions connexes