DDR寻址原理(浅显易懂)

在这里插入图片描述

DDR4的寻址原理

1. 地址线与数据线
  • 地址线(Address Lines):用于标识内存中的特定地址。DDR4有20根地址线。
  • 数据线(Data Lines):用于传输数据。DDR4有16根数据线。
2. 最大寻址空间计算

使用20根地址线,计算最大寻址空间:

在这里插入图片描述

这就是基于20根地址线和16根数据线的理论最大容量,但实际上,DDR4的设计实现了更大的容量。

4. 实际寻址容量的提升

为了提升DDR4的实际容量,采用了分时复用技术。具体步骤如下:

4.1 BANK GROUP与BANK的划分
  1. BANK GROUP选择:DDR4芯片被划分为两个BANK GROUP,每个BANK GROUP可使用1根地址线进行选择(BG线)。

    • BG = 0:选择BANK GROUP0
    • BG = 1:选择BANK GROUP1

    通过这种方式,我们实现了两个BANK GROUP的划分。

  2. BANK选择:每个BANK GROUP再分成4个BANK,使用2根地址线(BA0和BA1)进行选择。比如:

    • BA = 00:选择BANK0
    • BA = 01:选择BANK1
    • BA = 10:选择BANK2
    • BA = 11:选择BANK3

    这样,我们可以选择4个BANK中的任意一个。

4.2 行地址与列地址

在这里插入图片描述

5. 示例说明

假设我们有一个DDR4芯片,具体参数如下:

  • 地址线:20根
  • 数据线:16根

在这里插入图片描述

DDR4内存的读写流程是一个复杂而精确的过程,涉及多个步骤和信号控制。以下是DDR4的读写流程的详细说明:

DDR4读写流程概述

  1. 准备阶段

    • DDR4内存模块的控制信号由内存控制器发出,包括命令、地址、时钟等信号。
    • DDR4的操作通常在时钟信号的上升沿和下降沿进行。
  2. 读操作流程

    • 命令阶段
      • 控制器通过控制信号向DDR4内存发送“读”命令。
      • 同时,控制器将目标地址(行地址和列地址)发送到DDR4内存。
    • 行地址选取
      • DDR4首先接收行地址,并使用此地址在内存中选择对应的行(Row)。
      • 该行地址的选择会使能行地址选择信号(RAS)。
    • 行激活
      • 一旦行地址有效,DDR4会激活指定的行(行激活信号,RAS高)。
      • 数据从该行的存储单元中读取,准备在接下来的步骤中输出。
    • 列地址选取
      • 接下来,控制器发送列地址,激活列地址选择信号(CAS)。
    • 数据读取
      • 一旦列地址有效,DDR4会从激活的行中选择对应的列,读取数据。
      • 数据通过数据线输出,通常在时钟信号的上升沿或下降沿输出。
    • 完成阶段
      • 一旦数据传输完成,控制信号会复位(行激活信号和列激活信号置低),释放内存,以准备下一次操作。

DDR4写操作流程

  1. 准备阶段

    • 控制器发出“写”命令,并提供目标地址(行地址和列地址)和要写入的数据。
  2. 写操作流程

    • 命令阶段
      • 控制器发送“写”命令到DDR4内存,激活相应的控制信号。
    • 行地址选取
      • 与读操作类似,控制器首先发送行地址,DDR4激活对应的行(行激活信号,RAS高)。
    • 列地址选取
      • 控制器接下来发送列地址,激活列地址选择信号(CAS)。
    • 数据写入
      • 在发送列地址后,控制器通过数据线发送要写入的数据。
      • DDR4在时钟信号的上升沿或下降沿接收数据,并写入到激活的行和列中。
    • 完成阶段
      • 一旦数据写入完成,控制信号会复位,DDR4内存准备下一次操作。

读写流程的信号控制

  • 命令信号

    • RAS (Row Address Strobe):行地址选通信号,用于选择行。
    • CAS (Column Address Strobe):列地址选通信号,用于选择列。
    • WE (Write Enable):写使能信号,用于标识读或写操作。
  • 时钟信号

    • DDR4使用高频时钟信号来同步所有操作。所有的读写操作都是在时钟的上升沿或下降沿进行的。

示例

假设我们要从DDR4中读取地址0x000A的数据,步骤如下:

  1. 发送命令:内存控制器发出读命令。
  2. 发送行地址:行地址0x0000(假设行在第0行)。
  3. 行激活:DDR4激活第0行(RAS高)。
  4. 发送列地址:列地址0x000A
  5. 列激活:DDR4激活列0x000A(CAS高)。
  6. 读取数据:DDR4输出列0x000A中的数据,通过数据线传送给控制器。
  7. 结束操作:控制信号复位,准备下一次读写操作。
    让我们通过一个具体的例子来说明DDR4内存的读写流程。我们将以一个简单的场景为例:读取和写入特定地址的数据。

示例背景

假设我们有一个DDR4内存模块,内存控制器想要进行以下操作:

  • 读取地址0x000A的数据
  • 写入数据0x1234到地址0x000B

假设该DDR4内存配置如下:

  • 行地址:0(行地址的选择)
  • 列地址:0x000A和0x000B(列地址的选择)
  • 数据宽度:16位(即2字节)

1. 读取数据流程

操作步骤

  1. 发送读取命令

    • 控制器向DDR4发送读命令。
  2. 发送行地址

    • 控制器发送行地址(假设为0)。
    • 这时,行地址选择信号(RAS)被激活。
  3. 行激活

    • DDR4激活第0行,准备读取数据。
  4. 发送列地址

    • 控制器发送列地址0x000A
    • 这时,列地址选择信号(CAS)被激活。
  5. 数据读取

    • DDR4从激活的行中列0x000A读取数据。
    • 读取的数据通过数据线输出。
  6. 完成操作

    • 控制信号复位,准备下一次操作。

数据输出
假设在地址0x000A中的数据为0xABCD,这时控制器会接收到该数据。

2. 写入数据流程

操作步骤

  1. 发送写入命令

    • 控制器向DDR4发送写命令。
  2. 发送行地址

    • 控制器发送行地址(仍然为0)。
    • 这时,行地址选择信号(RAS)被激活。
  3. 行激活

    • DDR4激活第0行,准备写入数据。
  4. 发送列地址

    • 控制器发送列地址0x000B
    • 这时,列地址选择信号(CAS)被激活。
  5. 发送数据

    • 控制器通过数据线发送要写入的数据0x1234
    • DDR4在时钟的上升沿接收该数据并写入到激活的行和列中。
  6. 完成操作

    • 控制信号复位,准备下一次操作。

3. 数据存储情况

  • 读取数据

    • 从地址0x000A读取的数据为0xABCD
  • 写入数据

    • 地址0x000B中的数据现在变为0x1234

总结

通过这个具体的例子,我们展示了DDR4内存的读写流程,包括发送命令、地址选择、数据传输等步骤。这种流程使得DDR4能够快速、有效地读取和写入数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

空间机器人

您的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值