2017-01-30 92 views
1

我试图实现与参数化宽度和系数的线性反馈移位寄存器的加权和:的Verilog:分配参数长度

// ... 
    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循环。有没有办法做到这一点以外的总是块?

由于

+0

你可以看看这个问题:http://stackoverflow.com/questions/17159397/verilog-adding-individual-bits-of-a-register-combinational-logic-register-wid它提供了一个解决方案你的问题。在“一行”中执行的一种方法是实现一个执行计算的参数化模块 – Krouitch

回答

0

按位与和一元异或操作者达到目的:

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

按位并执行触发器输出的权重。