问题描述
我正在创建一个带有MB V7.0和DDR和LMB内存的EDK设计。目标器件是Spartan-3E。
LMB内存应该尽可能小 – 所以我选择了2 Kb。
但现在我收到以下错误:
错误:MDT – IPNAME:lmb_bram_if_cntlr实例:dlmb_cntlr
–
C:\ mb_BRAM \ system.mhs第98行 – 数据宽度为32位且内存大小为2-kBytes
不适合固定的尺寸。
仅支持以下内存配置:
————————————————– —————
|记忆(kBytes)|记忆(kBytes)
建筑| 32位数据| 64位数据
|字节写|字节写
————————————————– —————
Spartan-II | 2 4 | 4
Spartan-IIE | 2 4 8 16 | 4 8 16 32
Spartan-3 | 8 16 32 64 | 16 32 64 128
Spartan-3E | 8 16 32 64 | 16 32 64 128
Spartan-3A | 2 4 8 16 32 64 | 4 8 16 32 64 128
Spartan-3ADSP | 2 4 8 16 32 64 | 4 8 16 32 64 128
QPro Virtex | 2 4 8 16 | 4 8 16 32
QPro Virtex-E | 2 4 8 16 | 4 8 16 32
QPro Virtex-II | 8 16 32 64 | 16 32 64 128
QPro-R Virtex | 2 4 8 16 | 4 8 16 32
QPro-R Virtex-II | 8 16 32 64 | 16 32 64 128
Virtex | 2 4 8 16 | 4 8 16 32
Virtex-E | 2 4 8 16 | 4 8 16 32
Virtex-II | 8 16 32 64 | 16 32 64 128
Virtex-II PRO | 8 16 32 64 | 16 32 64 128
Virtex-4 | 2 4 8 16 32 64 128 | 4 8 16 32 64 128 256
Virtex-5 | 4 8 16 32 64 128 256 | 8 16 32 64 128 256 512
第二个LMB也是如此。
我不明白为什么会这样。
我可以在以下布局中使用至少一个BRAM:
36位宽* 512地址
这正好是2 Kb大小,只需要一个Block RAM – 那么为什么我不需要更大的Block RAM?
为什么Spartan-3E的最小尺寸为8 Kb?
当然字节写入不起作用 – 但这不是我的项目中的问题。
解决/修复方法
对于Spartan-3 / 3E系列,每个Block RAM只有一个写使能。因此,您需要4个Block RAM才能在32位总线上实现字节使能,因此块存储器大小至少需要8 Kb。
如果不需要字节写入,则可以解决它,但这需要一些工作。首先,在设计工具方面,您必须确保没有字节/半字访问Block RAM,包括所有驱动程序和库。第二件事是在硬件方面,你需要重写lmb块RAM控制器,以某种方式将字节使能组合起来,始终写入32位字。
还有一点需要注意。利用EDK中的原始Block RAM,Platgen根据所使用的器件确定块内存组织。如果您只想使用512×32 / 512×36格式的1块RAM,则必须编写自己的块RAM来执行此操作(或将其合并到自定义lmb块RAM控制器中)。
这类似于其他器件系列的Block RAM大小限制。
没有回复内容