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