Verilog: XOR все сигналы вектора вместе

13

Скажем, у меня есть вектор wire large_bus[63:0]шириной 64. Как я могу XOR отдельные сигналы вместе, не записывая их все:

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

Я особенно заинтересован в том, чтобы делать это для векторов, где ширина указана как localparam.

Randomblue
источник

Ответы:

14

Бинарные операторы, такие как &, |, ^ и некоторые другие, также могут быть унарными в verilog, что довольно удобно. Они выполняют побитовые операции над операндом и возвращают одноразрядное значение. Смотрите, например, операторы сокращения на asic-world.com.

reg [63:0] large_bus;

wire xor_value;
assign xor_value = ^large_bus;
колючка
источник