2009-09-04 22 views
10

Possiamo avere una matrice di istanze per un modulo personalizzato?Possiamo avere una matrice di moduli personalizzati?

Ad esempio: possiamo avere input [15:0] a; - questo crea un bus. Possiamo fare la stessa cosa per i moduli personalizzati, ad esempio DFF [15:0] d;, dove DFF è un modulo personalizzato? Qui ho intenzione di creare 16 istanze del modulo DFF.

risposta

8

non è possibile farlo direttamente (aggiornamento: ora, dopo la risposta di mark4o So che c'è un modo), ma cosa si può fare è utilizzare l'istruzione generate per creare più istanze del modulo personalizzato e gancio loro fino ai tuoi segnali. Dovrebbe essere simile a questa:

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 

altrimenti ci sono probabilmente qualche possibilità durante la sintesi di utilizzare i moduli personalizzati corretti, ma io non sono un esperto lì.

Cheers, sono stati aggiunti Daniel

20

Verilog array di istanze in Verilog-1995 (IEEE 1364-1995). Possono essere utilizzati con gate, primitive definite dall'utente e moduli. I generati, che sono più potenti ma anche più complessi, sono stati aggiunti in Verilog-2001.

Qui è un array di istanze esempio moduli:

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

Per ciascuna connessione della porta, se la dimensione corrisponde a quello del parametro formale allora è collegato a ogni istanza. Altrimenti ogni istanza è connessa a una selezione parte (o selezione bit) dell'espressione.

+0

Ciao Mark4o, fico, non lo sapevo! Ho imparato qualcosa di nuovo di nuovo :) Ciao, Daniel – danielpoe

+0

Questi moduli sono stati istanziati parallelamente o uno dopo l'altro? – eldos

+0

@eldos: se la dimensione di una connessione di porta corrisponde a quella del parametro formale, viene collegata in parallelo a ogni istanza. Utilizzando un vettore è possibile collegare le istanze in serie. – mark4o

Problemi correlati