Verilog: XOR tutti i segnali del vettore insieme


13

Supponiamo che mi venga dato un vettore wire large_bus[63:0]di larghezza 64. Come posso XOR i singoli segnali insieme senza scriverli tutti:

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

Sono particolarmente interessato a farlo per i vettori in cui la larghezza è specificata da a localparam.

Risposte:


14

Gli operatori binari come &, |, ^ e alcuni altri possono anche essere unari in verilog, il che è abbastanza conveniente. Eseguono operazioni bit a bit sull'operando e restituiscono un singolo valore di bit. Vedi ad es. Operatori di riduzione su asic-world.com.

reg [63:0] large_bus;

wire xor_value;
assign xor_value = ^large_bus;
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.