在Verilog中对加法器求和,这些加法器求和256个20位字?

时间:2019-09-18 05:10:41

标签: verilog

我想这不是逻辑问题,而是Verilog问题。我需要加起来256个20位字。这就是我用较少的单词来实现它的方法,并且有效。由于字数众多,因此会出现计时错误。

module sum(clk, input_vect, out_sum);
input clk;
input [256*20-1 : 0] input_vect;
reg [25 : 0] out_sum_inter;
output reg [25 : 0] out_sum;
integer i;

always @ * 
begin
    out_sum_inter = 0;
    for(i = 0; i < 256; i = i + 1)
        out_sum_inter = out_sum_inter + input_vect[20*i - 1 -: 20];
end

always @ (posedge clk)
out_sum <= out_sum_inter;

endmodule

因此,如果不是很明显,我会将组合部分与顺序部分分开。我的目标是仅在确定out_sum的值确定正确之后才能更新out_sum_inter

非常感谢。我想可能需要对这个加法器进行管道传输,但是不确定如何。

1 个答案:

答案 0 :(得分:3)

您的合成器可能会执行自动流水线操作。如果是这样,则需要在加法器的输出端添加足够的触发器,合成器将根据需要将它们移回原位。

多少钱够了?足以结束计时了。做一些实验。

为什么合成器不能只添加正确数量的触发器?因为合成器从不通过您的设计来改变延迟:它们只能相对于组合逻辑来回移动触发器立即连接到他们。