Verilog:将向量的所有信号异或在一起

电器工程 验证日志
2022-01-05 23:09:01

假设我得到了一个wire large_bus[63:0]宽度为 64 的向量。如何在不将它们全部写出的情况下对各个信号进行异或运算:

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

对于宽度由 a 指定的向量,我特别感兴趣localparam

1个回答

&、|、^等二元运算符在verilog中也可以是一元的,非常方便。它们对操作数执行按位运算并返回单个位值。参见asic-world.com 上的归约运算符。

reg [63:0] large_bus;

wire xor_value;
assign xor_value = ^large_bus;