Verilog: XOR wszystkie sygnały wektora razem

13

Powiedzmy, że otrzymałem wektor wire large_bus[63:0]o szerokości 64. Jak mogę XOR razem przesłać poszczególne sygnały bez zapisywania ich wszystkich:

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

Szczególnie mnie to interesuje w przypadku wektorów, w których szerokość jest określona przez a localparam.

Randomblue
źródło

Odpowiedzi:

14

Operatory binarne, takie jak &, |, ^ i niektóre inne, mogą być również jednostronne w verilog, co jest dość wygodne. Wykonują operacje bitowe na operandzie i zwracają wartość pojedynczego bitu. Patrz np. Operatorzy redukcji na asic-world.com.

reg [63:0] large_bus;

wire xor_value;
assign xor_value = ^large_bus;
Cierń
źródło