问题描述

下午在调试FPGA时,遇到一个问题:无法向RAM中写值(读出的值是旧值,不是新写入的值)

使用情境

TDP_RAM的A、B端口均是write_first模式,通过MicroBlaze向TDP_RAM_A端口中写数据,FPGA从TDP_RAM_B端口中读数据。A端口的clk,wen,enA能信号是由软核提供的,B端口的时钟由FPGA提供,wen常低,enB常高,亦即:A端口的数据不是一直写,B端口的数据是一直读,RAM工作在不同时钟域之下。

问题分析

  • 在软核程序的初始化代码中,向RAM中一段地址中写入一组数据,通过Memory_View观察到数据正确写入
  • 在设备正常工作起来之后,向RAM中写入数据,通过Memory_View观察到数据没有变化
  • 创造条件,使B端口的读地址在软核写RAM的过程中保持不变,通过Memory_View观察到数据正确写入

判定问题是由读写地址冲突引起。查询手册发现,在我的使用场景下,从B端口中读出的值是XXXX,是个未知态。

UG

UG473
BlockRAM地址冲突问题BlockRAM地址冲突问题

参考

UG473 (v1.13) February 5, 2019
XILINX之RAM使用指南(加个人总结) https://blog.csdn.net/qq_30866297/article/details/52329139

相关文章:

  • 2021-11-07
  • 2021-12-16
  • 2021-07-15
  • 2021-12-05
  • 2021-04-19
  • 2021-10-22
  • 2021-11-11
  • 2022-12-23
猜你喜欢
  • 2021-09-05
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-10
  • 2021-11-18
  • 2022-12-23
相关资源
相似解决方案