Verilog:分配参数化长度的加权和

Verilog: assign a weighted sum of parameterized length

我正在尝试实现具有参数化宽度和系数的线性反馈移位寄存器:

// ...
    parameter width = 16;
    parameter [width-1:0] coeff = 16'b1110101100110110;
// ...

有没有办法将异或链分配给输入触发器,即什么是实现类似

的明智方法
assign input_wire = (coeff[0] & flops[0]) xor ... xor (coeff[width-1] & flops[width-1]);

明显但非法的方法是使用 for 循环。有没有办法在 always-block 之外做到这一点?

谢谢

按位与和一元运算 XOR-operator 可以解决问题:

assign input_wire = ^(coefficients[width-1:0] & flops[width-1:0]);

按位与对触发器输出进行加权。