块RAM仿真显示读取端口上的输出为“x”,即使做只读(BRAM)。

描述

关键词:BRAM,块RAM,仿真,未知,X,输出,

紧迫性:标准

一般描述:

我正在使用从NGD2VHDL(A1.5)创建的文件进行VHDL仿真,
在我的设计中,我有VITEX块RAM。当我试着仿真
我在读写端口时看到读端口的输出“x”。
其他端口,从两个端口的相同地址开始,但是
增加写入端口地址。仅当写入启用时
写端口变低,读取端口上的数据是否有效。

我做以下工作:

- A和Port B的同一个时钟
-写入一个端口(端口A),WEA高
-阅读另一个端口(B端口)
端口A的地址从0开始,递增,加载内存。
-端口B地址保持在0(相同起始地址)

解决方案

您正在经历的问题是VHDL仿真模型中的一个错误。
为了RAMB4。下面是解决问题的改变。这个
FIX是在Xilinx 2.1i版本中实现的。制作如下
更改库将不得不重新编译。

在每个模型中[Xy] RAMB4*S***在SIMPRIM和UNISIM库中
端口B代码,以下行应更改:

第11832行(在我的副本中)是1.5

如果(ValueAdDRB和TWIVILL CKBBL CLKAYPOSEDGE/=‘X’)
DoBuZZD:=MEM((地址B B*DBW+DIWWY1)
DTO(AdvestsB*DIBW);
其他的
DoBuZZD=(其他=&>x′);
如果结束;

应改为:

如果(ValueAdDRB)那么
如果(WeWeiIPd=‘0’或TimulyCKBBL CLKAY- POSSEDGE
/=‘x’或(HasyPopeld= false))
DoBuZZD:=MEM((地址B B*DBW+DIWWY1)
DTO(AdvestsB*DIBW);
如果结束;
其他的
DoBuZZD=(其他=&>x′);
如果结束;

VHD文件需要重新编译以进行更改。
效果。

这是固定在2.1i。
编辑 重设标签(回车键确认) 标为违禁 关闭 合并 删除

提问于 2018-07-29 19:25:02 +0800

这个帖子被标记为一个社区wiki

这个帖子是一个wiki(维基). 任何一个积分 >500的人都可以完善它