Estoy escribiendo código para desplazar 4 bits usando el indicador de acarreo para generar retardo mediante la creación de instancias, pero cuando estoy creando una instancia en la salida del módulo superior del módulo superior temp1
siempre permanecerá en un estado de alta impedancia. donde estoy haciendo mal? En un banco de pruebas, doy win=4'b1100
como datos ...
El código siguiente:
module iir_model(temp1,win,clk);
input [3:0] win;
input clk;
output reg [3:0] temp1;
delay_4 a1(temp1,win,clk);
endmodule
module delay_4(data_out,data_in,clk);
input [3:0] data_in;
input clk;
output [3:0] data_out;
reg [3:0] data_out;
reg [2:0] counter=4'b000;
reg [3:0] temp;
reg carry;
integer i=0;
always @(posedge clk)
begin
i=i+1;
if(i==1)
temp=data_in;
if(i>1)
begin
if(counter!=4'b100)
begin
carry=temp[0];
temp=temp>>1'b1;
temp[3]=carry;
$monitor ($time," clk=%b, counter=%b ,temp=%b ,carry=%b,data_out=%b",clk, counter,temp,carry,data_out);
counter=counter+1;
end
data_out=(temp==data_in)?temp:4'b0000;
end
end
endmodule