怎么才能让fpga程序面积小,速度快
我先写一个:
if (a == 32 )
begin
.....
end
else
begin
....
end
改写为:
if( a[4] )
beign
...
end
else
begin
....
end
这样综合出来的东西比较小。
if(a == 32) 和if(a[4])不是一回事吧!
方法还可以,但是没必要把
..........................
2# xueyw
我也觉得不是一回事:if( a[4] )等价于if (a >=32 ) 而不是等于。
但速度还是没提高啊
小编的说明不够清晰。在某些情况下,一次判断只需要对应一组寄存器的某一位,且这一组寄存器的状态只会有一位为高,则使用a[4]会比使用a更优,综合后所得到的电路面积会比较小。
另外再说一个,刚从书上看到的。4个数据加法器的写法:
普通的:sum=a+b+c+d
快速的:sum=(a+b)+(c+d)
普通的写法在综合后会形成三级加法,快速的会综合成两个并列的加法器之和相加,因此只有两级,速度更快
面积和速度是个矛盾。面积大速度就快,面积小速度就慢。
可以很简单的理解。同样做一件事情,面积大的,同时处理的东西就多,所以就会比较快的做完。面积小的同时处理的东西就少,必然就会比较慢。
关于面积和速度之间的取舍,还是得看需要。最好器件选型前就有所考虑。
补充:所谓速度快,就是多作并行处理。速度慢就是多作串行处理(分时复用)。
现在的综合工具会自动帮你优化到两级的,不用自己去加括号也可以
虽然a4是>=32,但感觉这种思路还是对的,少用一个比较器
现在不太喜欢多谢begin-end,降低仿真速度
FPGA里面有比较器这个东西嘛
应该最终还是由LUT来实现的吧
所以省了LUT资源呀
了解
现在的综合工具都具有很强大的逻辑层优化功能的
想真正提高大系统的频率,比如处理核,关键还是在于对关键路径上的流水线设计
赞成,同意
功能都不对了,再谈面积和速度还有什么意义?
基本前提肯定是功能一样的情况下如何提高速度,如何节省面积。
不过现在很多实际的情况是:稳定 > 速度 > 面积
首先你要有一个稳定的设计,很多构思奇巧的设计不一定是好设计。
其次要有一定的速度约束,避免过多不合理的组合逻辑导致速度上不去。
面积的东西现在关心的人感觉越来越少了(应该和器件越来越便宜有关),只要不是特别离谱,应该没有什么问题的。
不可能速度又快面积又小的。
这是需要一个平衡的
同问之中,达人请指教
小编!if(a == 32) 和if(a[4])不是一回事吧!
不要误人子弟!
原理是对的,但是现在的EDA tool都NB的很,即使你写sum=a+b+c+d,它也会帮你优化,不一定是三级加法。
DC很智能
面积和速度是一对对立统一的矛盾体
面积和速度 必须 有的放矢 不能兼得
不是吧,你确定?综合软件不会这么傻吧。
优化代码加约束
据说异步复位,会小些
