Verilog: XOR todos os sinais do vetor juntos

13

Digamos que recebi um vetor wire large_bus[63:0]de largura 64. Como posso XOR os sinais individuais juntos sem escrever todos eles:

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

Estou especialmente interessado em fazer isso para vetores em que a largura é especificada por a localparam.

Randomblue
fonte

Respostas:

14

Operadores binários como &, |, ^ e alguns outros também podem ser unários no verilog, o que é bastante conveniente. Eles executam operações bit a bit no operando e retornam um valor de bit único. Veja, por exemplo , operadores de redução em asic-world.com.

reg [63:0] large_bus;

wire xor_value;
assign xor_value = ^large_bus;
Espinho
fonte