【问题标题】:Write memory timings for Spartan 7 4:1 Mig Generated DDR3 interfaceSpartan 7 4:1 Mig Generated DDR3 接口的写入内存时序
【发布时间】:2018-12-27 10:13:12
【问题描述】:

我正在尝试了解 7 系列 FPGA 的写入内存时序,使用 MIG 生成的内存控制器的 UI(以 4:1 运行)。

我关注的文档是来自 Xilinix 的 ug586 文档。我特别想了解这里复制的图 1:77:

我的理解是,在前几个周期中,app_addrapp_enapp_wdf_dataapp_wdf_wrenapp_wdf_end 被正确断言并写入数据。查看蓝线。

有趣的点出现在 (1) 处,app_rdy 被取消断言,这意味着内存控制器正忙。此时app_addr 保持在同一地址 (2) 上,直到 app_rdy 在 (6) 处重新声明。到目前为止一切都说得通。

我很困惑的是写到地址a30 的内容是什么?选择是数据 (3) 或 (4) 或 (5)。图表和逻辑暗示 (3) 被写入a30(参见粉色虚线)。但我不知道为什么。查看文档中的图 1-75,您可以提前一个时钟给写入数据,但与在 (7) 的时钟上升沿重新启用 app_rdy 时相比,(3) 处的数据提前 2 个时钟)。所以剩下的是(4)或(5)。但在这个演示中,这些似乎都没有意义。那么写给a30 的内容是什么,我该如何解决呢?

(我也对后续地址写的内容感兴趣,但一旦我理解了a30,我应该也能理解这些)

【问题讨论】:

标签: fpga xilinx spartan


【解决方案1】:

我会回答我自己的问题,因为我找到了几乎相同的答案 here

基本上,混淆在于命令队列(由app_enapp_rdy 控制)与写入队列(由app_wdf_rdyapp_wdf_wren 控制)是分开的。

这意味着您可以在实际请求写入之前将数据排队等待写入 - 事实上,您可以继续排队写入数据,直到 app_wdf_ready 被取消断言。

您必须为每个写入命令排队一些写入数据。您可以在写入命令之前、在与写入命令相同的时钟上或最多两个时钟后对写入数据进行排队。写入数据是一个 FIFO 队列,因此您可以在发出单个写入命令之前将大量写入数据排队!

(混淆来自文档中的示例,该示例提前一个时钟显示排队数据 - 但如果您阅读文本,您会得到:

  1. 写入数据与相应的写入命令一起显示(BL8 的后半部分)。
  2. 写入数据显示在相应的写入命令之前。
  3. 写入数据在相应的写入命令之后呈现,但不应超过两个时钟周期的限制

请注意,在第 2 点中,没有提到允许您提前多长时间将数据排队。

这意味着 - 在我的示例中 - (3) 写入地址 a30,就像它在写入队列中一样。

【讨论】:

    猜你喜欢
    • 2015-10-28
    • 1970-01-01
    • 1970-01-01
    • 2020-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-27
    • 2011-12-03
    相关资源
    最近更新 更多