Verilog Arithmetic con 8 bits

0

Estoy tratando de restar un número de 8 bits de otro pero recibo un error que indica que "<=" es inesperado. El resto, solo estoy ANDando el octavo bit de cada salida. ¿Alguien puede decirme qué problema tiene con mi código?

module test(n1,n2,n3,z);

input [7:0] n1,n2,n3;

output [7:0] z;

wire [7:0] x1, x2;

x1 <= n1 - n2;

x2 <= n3 - n2;

and and1(z, x1[7],x2[7]);

endmodule
    
pregunta Kazu

2 respuestas

1

El operador <= solo se puede usar dentro de un bloque de procedimiento.

Un bloque de procedimiento es comenzar con la palabra clave always o initial .

Como no ha utilizado ninguna de estas palabras clave, no puede usar el operador <= .

Si desea que x1 y x2 cambien cada vez que cambien las entradas, debe usar una instrucción de asignación, por ejemplo

assign x1 = n1 - n2;
    
respondido por el The Photon
0

Debería usar una declaración de asignación como la siguiente:

assign x1 = n1 - n2;

o puede asignar con la definición de cable así:

wire [7:0] x1 = n1 - n2;
    
respondido por el alex.forencich

Lea otras preguntas en las etiquetas