Pregunta

No sé lo que está mal con el código de abajo, ¿Puede alguien ayudarme depuración

module iloop(z,a);
    input [31:0] a;
    output z;
    reg [4:0] i;
    reg s, z;
    initial begin
    s = 0;
    for(i=0; i<32; i=i+1)  s = s | a[i];
    z = !s;
    end
    endmodule
¿Fue útil?

Solución

Su código tiene un bucle infinito. Usted ha declarado i como un registro de 5 bits, lo que significa que su rango de valores es (decimal) 0 a 31. Sin embargo, los de bucle comprueba si i < 32, que siempre es cierto. Una vez que i = 31, i se incrementa y rollos a 0.

$display es su amigo. Si se agrega a su bucle, verá el problema:

for(i=0; i<32; i=i+1) begin $display(i); s = s | a[i]; end

Creo que quieres i<31.

O, tal vez quieran o todos los bits de a juntos, utilizando el bit a bit operador OR:

s = |a;

Se debe explicar con palabras lo que está tratando de lograr.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top