【问题标题】:confusion about ddr3 addressing via MIG in kc705关于在 kc705 中通过 MIG 进行 ddr3 寻址的混淆
【发布时间】:2020-05-09 16:37:54
【问题描述】:

我已经被这个问题困扰了一个月了,我无法理解它。 我有 xilinx kc705,它有一个 1GB 内存,组织为 (128 MB x 8),它是 8 个 8 位设备的 [R]ank。所以内存接口是64位的。每个设备或芯片为 (128 MB) 并具有 8 个存储库 (16 MB),每个存储库具有 14 [R] 行和 10 [C] 列。如下图:所以这个芯片有8个。

memory organization

内存突发为 8。 当我使用 vivado 生成 MIG 时,它会生成一个 28 位地址宽度和 512 位数据宽度的用户界面。

在 MIG 文档中地址宽度为:Rank+Bank+Row+Column = 1+3+14+10 = 28 bits。 (B=3,因为每个设备中有 8 个库)。

我的问题是: 1-由于内存突发为8,当我在用户界面侧提供一个地址和一个命令(写入或读取)时,MIG将向ddr3发出8个命令,这就是数据宽度为512位(64位)的原因*8=512) 这样理解正确吗?

2- 在 28 位地址中,每个地址对应 1 字节、8 字节(64 位)还是 64 字节(512 位)以及如何增加它以达到下一个地点?

我的理解是,即使 ddr3 数据宽度是 64 位,每个地址对应 1 个字节,那是因为有 8 个芯片并且都获得相同的地址,但每个都获得 64 位的 8 位部分.当每个芯片执行 8 个突发时,就完成了 512 位传输。所以我对如何增加地址感到困惑。

对应1个字节,每个芯片写入8个字节,是不是应该加8?

是否应该增加 64,因为总共 64 个字节已写入 ddr3?

【问题讨论】:

    标签: memory fpga ram memory-address xilinx


    【解决方案1】:

    突发长度 8 是DDR3 协议的属性。它的工作方式是您请求一个地址,然后取回 8 个字的数据。所以你是正确的,一次突发会给你 64*8=512 位,但 MIG 内核只会向 DDR 芯片发送一个命令(除了打开/关闭行之类的东西)。

    根据您描述情况的方式,我猜您使用的是本机 MIG UI 而不是 AXI。在这种情况下,您通过 MIG UI 发送的地址是进入 DDR 芯片的实际地址位。由于您有 128M 字,因此您应该有 27 个地址位。但正如你提到的,MIG 给你 28 位。额外的一个是排名位。这是不必要的,因为您只有一个等级,因此该位应始终为 0。(这只是 MIG 的错误/烦恼之一。)

    对于 DDR3 和突发长度 8,您始终需要请求 8 字对齐的块。 lower three column address bits have an effect on the order that the 8 words come back,如果您想将其中一个词放在其他词之前,这很有用。但是,由于 MIG 最终会同时为您提供所有单词,我不确定如果您将它们设置为 0 以外的任何值会发生什么。

    等级和低 3 列位始终为零,从而为您留下 24 位可用地址空间。这些 24 位使您可以访问 1GB RAM 内的 512 位块的全部空间。所以是的,你应该增加 8。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-28
      • 2013-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-18
      • 1970-01-01
      • 2012-12-17
      相关资源
      最近更新 更多