Altera公司Cyclone系列器件内部ram使用率分析

  在使用Cyclone系列器件的过程中经常碰到综合报告中Total memory bits使用率只有不到50%,但想要继续使用多余ram时却发现无法成功配置。那剩余的ram到什么地方去了呢?这要从Cyclone器件中ram的结构来说起,以下以Cyclone III代器件为例进行分析:

  Altera公司提供的《Cyclone III Device Handbook》中有一章详细介绍了CycloneIII中的Memory Blocks(详见《Cyclone III Device Handbook》, Volume I,Section I,3)。Cyclone III中的ram块是M9k,每一块中包含8192个存储位,加上校验位共9216位,故称M9k。每个ram块可配置为表3-1中的各种模式。

 

现在来看一下当用作fifo时ram的两种使用情况:

  1. 当fifo的宽度和深度符合表3-1中的各种配置时(fifo宽度和深度小于或等于表中的对应数值),每个fifo使用1个M9K块即可,但如果没有完全使用该块中的ram时,该块一般不可用做他用了。比如配置宽度为12位深度为512的fifo时实际使用的ram位为12*512=6144 ,故实际使用率为6144/8192=75%,当所有fifo都按照这种配置来分配时FPGA中的ram最大使用率也就是75%。一种特殊情况是当fifo容量较小而且读写时钟分别相同时,QuartusII可能把几个fifo使用同一个ram块来实现。
  2. 当fifo宽度大于表3-1中所允许的最大宽度时Quartus会使用多个ram块来实现,比如配置宽度为114位的fifo时,Quartus必须使用4个ram块来实现这个fifo。当深度为25实际使用的ram位为114*25=2850 ,故实际使用率为2850/(8192*4)=8.7% ,相当多的ram位被综合掉。

  如何才能知道ram块的使用情况呢,在QuartusII生成的报告中打开Fitter => Resource Section => Ram summay。其中详细描述了每个ram块的使用情况,可根据实际情况来对其进行优化。

posted @ 2012-03-01 21:18  hujianhua  阅读(5531)  评论(3编辑  收藏  举报