关于流水线加法器的疑惑
我有一个疑惑。
我使用一个提供的16bits的流水线加法器,使用quartus综合后,频率达340.02M,64位的时候为193Mhz。
而当我使用一个普通的A+B时,使用quartus综合后的最高频率也是340.02M,64位的时候也是340.02M。
我现在不明白,按理说流水线加法器的频率应该优于普通加法器。怎么结果相反呢? 那他的优点在哪呢?
望高手解答。
quartus 生成的加法器是用自己的DSP单元实现的 肯定比你自己写的综合出来频率高的
"提供的16bits的流水线加法器"是?
"普通的A+B时"是?
具体些?
没看明白,说得具体点!
有时间再来回
用Quartus II综合,将‘+’都综合成了DSP Slice。
如果自己写全加器代码来综合的话,我的一个哥们仔细比较过,即使超前进位链用简化算法,如果只用普通的与或逻辑,
在普通的V4 FPGA上,32bit加法不太可能超过200M。
也可以用Synplify综合DesignWare中加法器库试一下。
具体没有说明确,
反正门数不多,可以直接到chip planner 或者timing closure去看看,到底原因在哪,
问题说得不明白。不过你可以看下综合后的时序报告,分析下原因
感谢各位的关注,谢谢
可能是我交代不清吧。 我说的2级流水线加法是书上提供的一种加法算法。 即16位加法是通过低8位相加,然后与高八位相加这样算出来的。
而直接使用加法即加法操作符“+”,即直接用一句话完成计算:c=a[15:0]+b[15:0];
我用quartus综合出来后者看它的rtl级,发现就是一个串行进位的加法器,所以道理上说它的频率应该没有前者高啊。
为什么结果刚好相反?
看到有朋友回答是quartus综合加法使用的是DSP综合的,是真的吗,自己的知识太少了,都不知道,那么是不是quartus综合操作符“+,-,*,/”是不是都是用dsp综合的?
代码中直接用“+”,最后都会被器件的专用加法器代替(这种加法器肯定是厂商已经优化过的专用单元),LZ可以看一下PAR的报告,里面一定会提到用了多少加法器。假如你自己用逻辑器件搭一个加法器,即使逻辑上达到最优,但是在最后PAR的时候,各个逻辑单元之间的走线延迟不可避免。从理论上说,这个加法器的速度绝对达不到厂商提供给你的。假如想要进一步提高这个加法器的速度,除了检查逻辑上有没有可以优化的地方之外,还可以对这些器件的布局布线做约束。
