描述
当使用核心生成器生成双端口块内存核时,需要比预期更多的块RAM。为什么?
例如:
我正在生成一个双端口块内存核心与以下设置:
港口A:
宽度:18
深度:2048
配置:只写
Port B:
宽度:36
深度:1024
配置:只读
启用引脚
注意:端口A和端口B是不对称的,这意味着存在不同的端口宽度大小。
在ViTeX II平台FPGAs中描述了一种可能的配置(如果每个ViTEX II块RAM处于双端口模式):完整的数据表,表15——“双端口模式配置”,第22页:
HTTP://www. xLimx.COM/XLNX/XWeb/XILIPu外宣sIdx.jSP
导航到:FPGA器件家族-gt;VyTEX-II & VRTTEX II完整数据表(所有四个模块)
根据此表,只需要两个块RAM:
-第一块:
端口A:2048×9
端口B:1024×18
-第二块:
端口A:2048×9
端口B:1024×18
然而,核心生成器需要三块RAM:
-第一BROLAMRAM=RAMB16S9S18S18:
端口A是2048×8
B端口为1024×16
-第二BROLAMRAM=RAMB16S9S18S18:
端口A是2048×8
B端口为1024×16
-第三块RAM=RAMB16S2S4S4:
端口A为8192×2(仅使用2048×2)
B端口为4096×4(仅使用1024×4)
解决方案
这是因为用于实现对称和非对称核的算法略有不同。如果存储器是对称的,则算法使用块存储器中的奇偶校验位。如果内存是非对称的,则该算法不在块内存中使用奇偶校验位。这是因为奇偶校验位复杂化了非对称端口的通用算法的实现。
因此,如果使用非对称端口,则该算法不使用原语的奇偶校验位。这导致了RAMB16S9SyS18原语,有效地成为原语;其中端口A是2048×8,端口B是1024×16。由于这种情况,需要第三块RAM来创建给定的内存。
没有改变双端口块存储核心算法的计划,但是,所有的工程工作将集中于改进新的块存储器生成器内核。新的核心已经有改进的算法。
可选择内存算法
块内存生成器内核根据两种算法之一:最小区域算法和可选原语算法来安排块RAM原语。使用最小面积算法,它将对最小块RAM使用进行优化,并且当可能使用奇偶校验位时,核心将使用它们。
没有回复内容