Mi salida en verilog es de alta impedancia todo el tiempo. ¿Porqué es eso?

-1

Soy nuevo en verilog y he estado escribiendo código para sumador / subtractor de 4 bits en modelo estructural. Mis valores de x0,x1,x2,x3,c1,c2,c3,cb y sd[0:3] son todos de impedancia obstinadamente alta, es decir, z. ¿Alguien puede ayudarme por favor? Mi código es - >

module fa (output s,c, input x,y,z);

        assign s=x^y^z;
        assign c= (x&y)|(y&z)|(z&x);
endmodule

module xor1 (output m, input k,l);

        assign m=k^l;
endmodule


module addsub (output [0:3]sd ,output cb, input [0:3]a ,input [0:3]b ,input sel);

wire c1,c2,c3,x0,x1,x2,x3; 


xor1 z0(x0,a[0],sel);

xor1 z1(x1,a[1],sel);

xor1 z2(x2,a[2],sel);

xor1 z3(x3,a[3],sel);

fa z4(sd[0],c1,x0,b[0],sel);

fa z5(sd[1],c2,x1,b[1],c1);

fa z6(sd[2],c3,x2,b[2],c2);

fa z7(sd[3],cb,x3,b[3],c3);    

endmodule
    
pregunta Siva Priya

1 respuesta

1

Supongo que el problema es con tu banco de pruebas. Acabo de crear el siguiente banco de pruebas y genera valores no z para su diseño:

module testbench;
    wire [3:0] sd;
    wire cb;

    reg [3:0] a, b;
    reg sel;

    addsub uut (
        .sd(sd),
        .cb(cb),
        .a(a),
        .b(b),
        .sel(sel)
    );

    integer i;
    initial begin
        for (i = 0; i < 2**9; i=i+1) begin
            {a, b, sel} = i; #1;
            $display("a=%-2d b=%-2d sel=%d -> sd=%-2d cb=%d", a, b, sel, sd, cb);
        end
    end
endmodule
    
respondido por el CliffordVienna

Lea otras preguntas en las etiquetas