Block Design内部BRAM控制器与外部BRAM的连接

        在最近的一个设计中遇到了这样一个问题。我在Block Design中例化了XDMA,并通过interconnect连接了3个BRAM控制器,3个BRAM控制器的端口引出到Block Design外部。XDMA通过C2H接口对前两个RAM只进行读操作,通过C2H和H2C接口对第三个RAM进行读写操作。三个RAM都在Block Design外部(即HDL代码部分)例化。

         验证时,前两个RAM的读数据正常,第三个RAM的读数据比对错误。由于个人疏忽,解决该问题花了四五个小时。首先对自己的HDL代码进行了检查,未发现问题。为了定位问题点,我在Block Design内部例化了第四个BRAM(使用双口RAM),并通过计算机进行写读和比对操作,发现数据完全正确。通过此方法基本确认问题发生在HDL代码部分。

        接下来通过ILA分析外部RAM的写时序,发现RAM的字节写使能信号WEA在几十个写操作后,会突然开始比写地址提前一个周期出现,导致多次将后续数据写入00地址。

通过逐一对比Block Design中BRAM控制器引出的端口和外部BRAM的端口,发现内部BRAM控制器没有使能或关闭字节写使能(WEA)信号的选项,而外部例化的BRAM具有该选项。我在设计时,习惯性的未使能该端口,所以实际上只使用了BRAM控制器的WEA作为写使能信号。那么问题很可能出在这里。

        外部BRAM使能WEA端口,并将端口连接至BRAM控制器后,上述问题解决。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值