Simulando LPM_counter en Modelsim da salida 'z' (alta impedancia)

0

Estoy intentando implementar un simple divisor de frecuencia de 9 bits usando el módulo LPM_counter. Hardware y software en uso:

  • ALtera Max V-CPLD
  • Edición web 15 quartus II de 64 bits
  • ModelSim Altera Starter Edition 10.3d

Escribí un programa en formato esquemático de bloque (BDF) y lo descargué en el cpld y funciona bien, dando el resultado deseado. Sin embargo, cuando intento simularlo en ModelSim, aparece 'z' (alta impedancia) en todas las salidas.

Para la simulación, creé un archivo Verilog desde el archivo BDF usando la opción 'Crear archivo de diseño HDL de archivo actual' en Quartus. Luego escribí A testbench para simular una entrada de reloj para el módulo LPM_counter.

He intentado un montón de cosas diferentes que he leído en diferentes foros, como intentar ejecutarlo sin un banco de pruebas dando una entrada de Reloj directamente en ModelSim, probando salidas reg en lugar de cables y viceversa, entre otros cosas.

He estado estancado en esto por un tiempo y realmente lo necesito para trabajar porque necesitaré que ModelSim haga programas para algunos proyectos futuros. Estoy haciendo esto para acostumbrarme a todo el proceso antes de que realmente trabaje en él.

Por cierto, hice un divisor de frecuencia usando flip-flops JK y funcionó bien tanto en la simulación de cpld como de ModelSim. Es solo este módulo de caja negra con el que estoy teniendo problemas.

Archivo de origen (convertido a Verilog desde .bdf)

module ninebitlpm(  myclk,  q );


input wire  myclk;
output wire [8:7] q; // only using the two most significant bits
wire    [8:0] q_ALTERA_SYNTHESIZED;

lpm_counter b2v_inst(   .clock(myclk),  .q(q_ALTERA_SYNTHESIZED));

assign  q[8:7] = q_ALTERA_SYNTHESIZED[8:7];

endmodule

module lpm_counter(clock,q);

/*synthesis black_box */
input clock; output [8:0] q;

endmodule

Banco de pruebas

'timescale 1us/1ns

module test_lpm();

reg myclk;
wire [1:0]q;

ninebitlpm mycounter(myclk, q);

initial begin myclk = 1; forever #1 myclk = ~myclk; end

endmodule
    
pregunta Wahaj

1 respuesta

0

module lpm_counter(clock,q); es un cuadro negro vacío.

Para simularlo, deberá utilizar el HDL real en lugar del cuadro negro. Hay dos opciones:

  1. Puedes eliminar esa declaración del módulo e instruir a Modelsim para compilar el archivo HDL que se produjo cuando usaste MegaWizard.

  2. Copie el contenido del archivo HDL de (1) en su archivo fuente para reemplazar la caja negra.

respondido por el Tom Carpenter

Lea otras preguntas en las etiquetas