榨干FPG***上存储资源
记得Long long time ago,特权同学写过一篇简短的博文《M4K使用率》,文章中提到了Cyclone器件的内嵌存储块M4K的配置问题。文中提到了这个M4K块除了存储大小是有限的4Kbit,它的可配置的Port数量也是有限的,通常为最大36个可用port。
当时只是简单的提到有这么回事,提醒使用者注意,也没有具体的谈到如何解决或者确切的说应该是避免这样的状况出现。因此,本文将结合特权同学近期在使用FPGA时,配置片内存储器遇到的一些片内资源无法得到充分利用的问题,更深入的探讨如何在既有的基础上优化我们的配置,也就是标题所言,我们的目标是“榨干FPGA的片上存储资源”。
关于如何在综合或布局布线后查看FPGA的片上存储资源的使用情况,就Quartus II软件,这里要先教大家几招,让大家在系统设计完后对自己的存储资源情况做到明明白白、心中有数,这对将来的产品维护、升级乃至完全推到重来都是有助益的。很好,想必您已经等不及了,那么就ReadyàGo!
在一个工程完全编译后,Quartus II会弹出一个全新的Compilation Report,首先映入设计者眼帘的是Flow Summary页面。当然设计者也可以如图1所示,直接找到菜单栏点击ProcessingàCompilation Report选项查看。
图1
再看Flow Summary页面,如图2所示,其他选项这里不说了,就看Total memory bits后圈出来的部分:103,264/165,888(62%)。这里意思也很明白,特权使用的器件EP2C8Q208C8的片内存储器总大小是165,888bit,而在该工程中使用了103,264bit,使用率是62%。
图2
OK,那么我们再来看看详细的存储资源都用在哪里了。如图3所示,点开编译报告的Analysis&SynthesisàRAM Summary。
图3
同时在页面右侧就弹出如图4所示的详细的存储资源分配情况。在这个页面的报告中,我们只能简单的看到存储资源的详细使用位置、存储资源类型(即是使用了专用的片内存储资源还是用逻辑资源构造的,显然用逻辑资源是很浪费甚至说不现实的)、存储器类型(即RAM/ROM/FIFO等)、存储器的位宽和深度信息以及存储量大小,还有就是是否有初始化文件映射。
图4
因为是综合报告的一部分,所以不针对特定的器件给出一些信息,如这里我们可能还会关心文章开头就提到的M4K块使用数量甚至是我们所例化的存储器具体都使用了哪些M4K块。不用担心,咱的这点好奇心开发商还是能够满足的。下面我们就接着打开编译报告里的FitteràResource SectionàRAM Summary选项(方法同图3)。我们可以看到如图5所示的,哦,很抱歉由于页宽有限,所以name一栏没有完全显示,Location一栏也只是“小荷才露尖尖角”,但是不要紧,只要你领会精神。先说这个Location一栏,它就是前面提到设计者可能关心的具体的M4K块都是哪些,而M4Ks一栏就是使用的M4K块的数量,其他选项类同,读者可以自己分析。看到这些,估计已经是一目了然了,设计者对自己例化的每一个片内存储器的具体的使用情况都应该有所了解。
图5