各位大侠,最近一直很头疼的一个事:如何降低FPGA的资源消耗。 |
回答1:节省资源的方法有很多,推荐ken chapman的两片文章,WP272 WP275
回答2:好的,非常感谢,我今天尝试了设置XST的属性,但是效果不是很明显,现在还是怀疑coding style的问题。我还有个疑问:在综合和MAP的时候,给出的资源消耗不一致。综合给出的是估计值,但是有具体的Technology Schematic,对应的是FPGA的Primitive(LUT和Register等),这已经比较具体了,可是和MAP后的资源消耗统计不一致,不知道为什么?MAP给出的是具体的资源消耗,对应的是硬件布局,是不是前者比较通用些,细致些,所以只能估计,而后者则专用些,将多个小单元划到一个大的逻辑单元中?这样导致的不一样?
回答3:多数的xilinx器件在MAP阶段都会有布局操作。MAP阶段会完成很多工作,一般情况下,MAP后的资源消耗就是最终的资源消耗了。
综合阶段的资源消耗只是估计值,最终的结果还是要看MAP的结果。
至于综合和MAP的结果不一样,原因有很多,最主要的还是在MAP阶段会考虑到布局的因素,增加一些lut作为布线使用,还会优化掉很多冗余逻辑。
最重要的一点,要精简资源,不能靠软件,要靠设计。
回答4:十分感谢阁下的教导,对于你给出的观点我十分赞同,这也是我最近才渐渐意识到的问题。之前比较依赖综合软件,导致问题累积到不知道如何下手。还是想问问有没有推荐的进阶学习书籍或者着重点?我最近在看XST User Guide中推荐的coding style,另外计划阅读J.Bhasker的《Verilog HDL综合实用教程》,再详细看看Spartan-6的内部资源组成,试图将Spartan-6的CLB和代码建立联系,但是没有看到有介绍这方面的书籍。
另外我还是没有抓住大方向,面对大型的设计还是手足无措,不知道如何去规划程序,怎么样将程序设计到优良?请问一下,有没有那种介绍FPGA设计思路的书?
回答5:你好,我个人觉得,如果要深入学习,必须要看xilinx和altera的官方文档,国内的书不建议看,我至今没有看到一本深层次的书。
我觉得能力的提升最主要的是通过做项目,而不是看书。只有完整做完几个项目之后,才会碰到具体的问题,才会了解到深层次的东西。
你可以先看看spartan-6的config手册、CLB手册、时钟手册等等。要想成为一个高手,FPGA内部的各种资源都必须牢牢掌握,这不是1 2年能做到的。
回答6:楼主,我最近面试也遇到这个问题,一直没有考虑过,搜索了一些答案整理一下:
更改综合策略,采用资源共享;如果某个某块大量使用寄存器时可以考虑是否可以采用RAM代替;从架构上分析冗余并进行优化,之后再结合个别FPGA的实现特征,如果实在对资源比较在意而对性能要求不高,就可以考虑用时间换空间,用并行替串行;良好的代码习惯和风格
暂时就那么多,楼主现在对这个问题怎么理解的呢。还望赐教啊,谢谢了啊