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.

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;
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.