¡El contador Verilog no funciona!

0

He escrito este código para un contador, pero no sé por qué no funciona. En realidad, la salida permanece en cero y cuando cambio la carga a 0, la salida cambia a desconocido. ¿Podrías ayudarme, por favor, a encontrar el error?

module behav_counter( d, clk, clear, load, up_down, qd);



 input   [7:0] d;
 input   clk;
 input   clear;
 input   load;
 input   up_down;
 output  [7:0] qd;

 reg     [7:0] cnt;





always @ (posedge clk or negedge clear)

if (!clear)
    cnt = 8'h00;
else if (load)
    cnt = d;
else if (up_down)
    cnt = cnt + 1;
else
    cnt = cnt - 1;


assign qd = cnt;

endmodule




 module test_b;


 reg d,clk,clear,load,up_down;
 wire qd;


 behav_counter bc( d, clk, clear, load, up_down, qd);
 initial
     begin
       clear = 0;
       clk = 0;
   #15 clear = 1; 
      repeat (400)
    #5 clk = ~clk;
 end
 initial 
    begin
     up_down=1;
     load=1;
     d=8'h00;
     #23
     load=0;
     #100
     load=1;


     end
   endmodule
    
pregunta Negfir

1 respuesta

2

Cuando ejecuto su código en 2 simuladores diferentes, recibo advertencias de compilación sobre las diferencias de tamaño de puerto para d y qd. Su contador los declara de 8 bits de ancho, pero usted les conecta señales de 1 bit. ¿No recibes advertencias? Si no, inténtalo en edaplayground.

En test_b, declara que son de 8 bits:

module test_b;
 reg clk,clear,load,up_down;
 reg  [7:0] d;
 wire [7:0] qd;

Ahora veo qd [7: 0] cuenta de 0 a 0xa cuando carga = 0.

    
respondido por el toolic

Lea otras preguntas en las etiquetas