不冲突的端口范围_为什么FPGA调试中双口RAM的读写冲突总是隐藏的很深很深

双口RAM的读写冲突问题在FPGA调试中经常遇到,并且,往往是那种费了好大劲追信号追到吐血后才确认到的问题。在初学FPGA调试中,常常为了所谓的省事,在写代码设计仿真阶段就忽略了双口RAM的读写冲突问题,导致在FPGA上板调试中浪费大量的时间。本文就针对以往出现的双口RAM读写冲突问题展开讨论,希望能够给大家提个醒,内容虽然简单,但的确是不容忽视的一个隐藏很深的大问题。FPGA调试本身就是挺辛苦的...
摘要由CSDN通过智能技术生成

双口RAM的读写冲突问题在FPGA调试中经常遇到,并且,往往是那种费了好大劲追信号追到吐血后才确认到的问题。在初学FPGA调试中,常常为了所谓的省事,在写代码设计仿真阶段就忽略了双口RAM的读写冲突问题,导致在FPGA上板调试中浪费大量的时间。本文就针对以往出现的双口RAM读写冲突问题展开讨论,希望能够给大家提个醒,内容虽然简单,但的确是不容忽视的一个隐藏很深的大问题。

FPGA调试本身就是挺辛苦的一件事情,尤其是在刚开始调试FPGA的时候,无论培训的时候如何强调一些注意事项,如跨时钟域问题,如接口问题,以及RAM读写冲突问题,但一旦做起项目来,每每还是有同学必须要亲自往这些坑里面跳一次才真正懂得这些BUG的含义。

这么多年了,每届学生都是如此。

双口RAM读写冲突的问题,往往在性能的边界极限测试的时候才暴露出来。往往分为不宜重现和可重现两种。虽然可重现,但一步步根据错误现象进行信号追踪到出问题的双口RAM时,已经过去了一周或数周的时间。不宜重现的问题则更加麻烦,有时候几个小时还不出一次问题。避免这种问题的的根本解决办法就是防范于未然,在代码的仿真阶段就对各个双口RAM进行读写冲突的防护措施。

4db7f6147c287e4e7fb0c79c8f0e6321.png

双口RAM对同一个地址同时读写、对同一个地址写的冲突,每年都要跟这个问题斗争一两次,每次少则几天,多则几周时间。

1d9670c8f065dca71f3a5739633aa68f.gif

下面是一个经过了数天定位到的一个问题,双口RAM两侧同时向同一个地址写入数据导致出错的Vivado调试波形截图。(ZL)

253a1acf0e75810ff76d6fd9c879fbed.png

案例1(TK)

1、问题现象:

以队列信息中的队列中分组个数的值为例,由于更新错误导致当队列中实际为空(即分组个数为0),而队列信息显示队列分组个数不为0,导致输出错误数据帧。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值