Spartan 7 4:1 Mig 生成的 DDR3 接口的写入内存时序
Write memory timings for Spartan 7 4:1 Mig Generated DDR3 interface
我正在尝试使用 UI 来了解 7 系列 FPGA 的写入内存时序,用于 MIG 生成的内存控制器(运行 在 4:1)。
我关注的文档是 Xilinix 的 ug586 文档。我特别想了解复制在这里的图 1:77:
我的理解是,对于前几个周期,app_addr
app_en
app_wdf_data
app_wdf_wren
和 app_wdf_end
被正确断言并写入数据。见蓝线。
有趣的一点出现在 (1),其中 app_rdy
无效,这意味着内存控制器正忙。此时 app_addr
保存在同一地址 (2) 上,直到 app_rdy
在 (6) 处重新声明。到目前为止一切都有意义。
我很困惑的是写地址a30
的是什么?选择是数据(3)或(4)或(5)。该图和逻辑暗示 (3) 被写入 a30
(见粉红色虚线)。但我不知道为什么。查看文档中的图 1-75,您可以提前一个时钟写入数据,但与 app_rdy
在时钟上升沿重新启用时相比,(3) 处的数据提前 2 个时钟(7).所以剩下(4)或(5)。但在这个演示中,这些似乎都没有意义。那么写入 a30
的内容是什么?我该如何解决?
(我也对后续地址中写的内容感兴趣,但一旦我理解了 a30
我应该也能理解那些)
我会回答我自己的问题,因为我找到了一个几乎相同的答案 here。
基本上混淆是命令队列(由 app_en
和 app_rdy
控制)与写队列(由 app_wdf_rdy
和 [=13 控制)分开=]).
这意味着您可以在实际请求写入之前将数据排队等待写入 - 事实上,您可以一直排队写入数据,直到 app_wdf_ready
无效。
您必须为每个写入命令排队一些写入数据。您可以在写入命令之前、在与写入命令相同的时钟上或最多两个时钟后对写入数据进行排队。写入数据是一个 FIFO 队列,因此您甚至可以在发出单个写入命令之前对大量写入数据进行排队!
(混淆来自文档中的示例,该示例显示提前一个时钟排队数据 - 但如果您阅读文本,您会得到:
- Write data is presented along with the corresponding write command (second half of BL8).
- Write data is presented before the corresponding write command.
- Write data is presented after the corresponding write command, but should not exceed the limitation of two clock cycles
请注意,在第 2 点中没有提到允许您提前排队数据的限制。
这意味着 - 在我的示例中 - (3) 被 写入地址 a30
,因为它在写队列中。
我正在尝试使用 UI 来了解 7 系列 FPGA 的写入内存时序,用于 MIG 生成的内存控制器(运行 在 4:1)。
我关注的文档是 Xilinix 的 ug586 文档。我特别想了解复制在这里的图 1:77:
我的理解是,对于前几个周期,app_addr
app_en
app_wdf_data
app_wdf_wren
和 app_wdf_end
被正确断言并写入数据。见蓝线。
有趣的一点出现在 (1),其中 app_rdy
无效,这意味着内存控制器正忙。此时 app_addr
保存在同一地址 (2) 上,直到 app_rdy
在 (6) 处重新声明。到目前为止一切都有意义。
我很困惑的是写地址a30
的是什么?选择是数据(3)或(4)或(5)。该图和逻辑暗示 (3) 被写入 a30
(见粉红色虚线)。但我不知道为什么。查看文档中的图 1-75,您可以提前一个时钟写入数据,但与 app_rdy
在时钟上升沿重新启用时相比,(3) 处的数据提前 2 个时钟(7).所以剩下(4)或(5)。但在这个演示中,这些似乎都没有意义。那么写入 a30
的内容是什么?我该如何解决?
(我也对后续地址中写的内容感兴趣,但一旦我理解了 a30
我应该也能理解那些)
我会回答我自己的问题,因为我找到了一个几乎相同的答案 here。
基本上混淆是命令队列(由 app_en
和 app_rdy
控制)与写队列(由 app_wdf_rdy
和 [=13 控制)分开=]).
这意味着您可以在实际请求写入之前将数据排队等待写入 - 事实上,您可以一直排队写入数据,直到 app_wdf_ready
无效。
您必须为每个写入命令排队一些写入数据。您可以在写入命令之前、在与写入命令相同的时钟上或最多两个时钟后对写入数据进行排队。写入数据是一个 FIFO 队列,因此您甚至可以在发出单个写入命令之前对大量写入数据进行排队!
(混淆来自文档中的示例,该示例显示提前一个时钟排队数据 - 但如果您阅读文本,您会得到:
- Write data is presented along with the corresponding write command (second half of BL8).
- Write data is presented before the corresponding write command.
- Write data is presented after the corresponding write command, but should not exceed the limitation of two clock cycles
请注意,在第 2 点中没有提到允许您提前排队数据的限制。
这意味着 - 在我的示例中 - (3) 被 写入地址 a30
,因为它在写队列中。