我正在做一些简单的测试,以评估流水线时数字电路中的时钟速度是如何提高的。
我使用25to1和12to1流水线实现10to1多路复用器。我从fpga合成器(altera)获得了一些时钟速度的提高。然后我再添加一个阶段,用2to1和3to1以及适当的寄存器替换5to1多路复用器。在后一种情况下,时钟速度会下降。我不明白为什么添加寄存器和流水线阶段会丢弃时钟speed..any解释?
发布于 2017-12-31 21:57:59
在大多数FPGA中,最小的逻辑门是一个查找表(LUT),它们有3到6个输入。Altera的施舍可以通过多种方式进行配置。无论采用哪种方式,如果多路复用器大小低于等效的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包)
此函数允许您有选择地启用和禁用流水线阶段。
https://stackoverflow.com/questions/48033831
复制相似问题