Verilog: XOR alle Vektorsignale zusammen

13

Angenommen, mir wird ein Vektor wire large_bus[63:0]der Breite 64 gegeben. Wie kann ich die einzelnen Signale zusammen XOR-verknüpfen, ohne sie alle auszuschreiben:

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

Ich bin besonders daran interessiert, dies für Vektoren zu tun, bei denen die Breite durch a angegeben wird localparam.

Zufälliges Blau
quelle

Antworten:

14

Binäroperatoren wie &, |, ^ und einige andere können in Verilog ebenfalls unär sein, was sehr praktisch ist. Sie führen bitweise Operationen mit dem Operanden durch und geben einen einzelnen Bitwert zurück. Siehe zB Reduktionsoperatoren auf asic-world.com.

reg [63:0] large_bus;

wire xor_value;
assign xor_value = ^large_bus;
Dorn
quelle