Spartan 7 4:1 Mig生成的DDR3接口的写入存储器时序

时间:2018-07-19 10:06:59

标签: fpga xilinx spartan

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

我要遵循的文档是Xilinix的ug586文档。我特别想了解图1:77,该图在此处复制:

Image 1-77 from ug586_7Series_MIS.pdf

我的理解是,在最初的几个周期中,app_addr app_en app_wdf_data app_wdf_wrenapp_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,我也应该能够理解这些内容)

1 个答案:

答案 0 :(得分:0)

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

基本上,混乱之处在于命令队列(由app_enapp_rdy控制)与写队列(由app_wdf_rdyapp_wdf_wren控制)分开)。

这意味着您可以在实际请求写入之前将数据排队等待写入-实际上,您可以继续对写入数据进行排队,直到取消app_wdf_ready为止。

您必须为每个写命令排队一些写数据。您可以在写命令之前,与写命令相同的时钟或最多两个时钟之后将写数据排队。写数据是一个FIFO队列,因此即使发出单个写命令,您也可以将很多写数据排队!

(困惑来自文档中的示例,该示例显示了一个时钟提前一个队列的数据-但是,如果您阅读文本,则会得到:

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

请注意,在第2点中,没有提到允许多久将数据排队的限制。

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