¿Está bien tener un número diferente de puertos de entrada / salida en el módulo y el módulo instantáneo en verilog?

0

Por ejemplo, si voy a modelar T flip flop usando D flip flop. No estoy escribiendo todo el código de T flip flop ya que aquí no está relacionado con mi consulta.

module T_ff(q,clk,clear);            
//...............   
//Instantiate the D flip flop          
D_ff dff(q,~q,clk,clear);            
endmodule  


// edge triggered D flip flop             
module D_ff(q,qbar,d,clk,clear);             
//..............                                    
endmodule   

El número de puertos de entrada / salida es diferente en la instancia de D flip flop (se define dentro de T flip flop) y en el módulo de D flip flop. ¿Está bien? ¿Puede dar como resultado un error?

    
pregunta SW.

1 respuesta

5

Cuando se utilizan las conexiones de Orden de puerto, los puertos se conectan en el orden declarado por el módulo, y cualquier puerto no utilizado se deja desconectado (Z).

Las conexiones de creación de instancias por nombre de puerto ayudan a evitar este tipo de problema.

Tu código se interpreta de la siguiente manera:

D_ff dff_instance (  
        .q     ( q     ), // first port
        .qbar  ( ~q    ), // second port
        .d     ( clk   ), // third port
        .clk   ( clear ), // fourth port
        .clear ( 1'bZ  )  // fitfh port has no connection
    );

Claramente lo que pretendías era esto:

D_ff dff_instance (  
        .q     ( q     ),
        .qbar  (       ),  // unconnected output
        .d     ( ~q    ),  // toggle by driving dff_instance.d input from ~q
        .clk   ( clk   ),
        .clear ( clear )
    );

Si está utilizando un compilador de verilog anterior que no admite conexiones de nombre de puerto, omita el puerto no utilizado por dos comas:

D_ff dff_instance ( q, , ~q , clk, clear); // qbar output port is unconnected

El estilo de conexión del nombre de puerto requiere más escritura, pero hace que el código sea más fácil de leer y comprender para una persona, y más robusto contra los errores de conexión.

    
respondido por el MarkU

Lea otras preguntas en las etiquetas