我正在做一些简单的测试来评估流水线时数字电路中时钟速度的增加。
我使用2 5to1和1 2to1管道10to1 mux。我从fpga合成器(altera)获得了一些时钟速度提升。然后我再添加一个阶段,用2to1和3to1替换他的5to1多路复用器和适当的寄存器。在后一种情况下,时钟速度下降。我不明白为什么添加寄存器和流水线阶段会降低时钟速度。有什么解释吗?
答案 0 :(得分:0)
大多数FPGA中的最小逻辑门是查找表(LUT)它们带有3到6个输入。 Altera的ALM可以通过多种方式进行配置。无论哪种方式,如果多路复用器尺寸低于等效LUT尺寸,则不会有进一步的Fmax改进。
您可以将所有多路复用器大小描述为2:1多路复用器的树。综合将优化得到的方程,并将它们映射到FPGA器件的LUT结构和配置。
您可以进一步使用用户定义的rising_edge
函数来创建变量管道:
function registered(signal Clock : std_logic; constant IsRegistered : boolean) return boolean is
begin
if IsRegistered then
return rising_edge(Clock);
end if
return TRUE;
end function;
(来源:PoC-Library - components包)
此功能允许您选择性地启用和禁用管道阶段。