Verilog: XOR todas las señales del vector juntas

13

Digamos que me dan un vector wire large_bus[63:0]de ancho 64. ¿Cómo puedo XOR las señales individuales juntas sin escribirlas todas?

assign XOR_value = large_bus[0] ^ large_bus[1] ^ ... ^ large_bus[63] ?

Estoy especialmente interesado en hacer esto para vectores donde el ancho se especifica mediante a localparam.

Randomblue
fuente

Respuestas:

14

Los operadores binarios como &, |, ^ y algunos otros también pueden ser unarios en verilog, lo cual es bastante conveniente. Realizan operaciones bit a bit en el operando y devuelven un solo valor de bit. Ver, por ejemplo , operadores de reducción en asic-world.com.

reg [63:0] large_bus;

wire xor_value;
assign xor_value = ^large_bus;
Espina
fuente