跳转到主要内容

Xilinx FPGA DDR3设计(一)DDR3基础扫盲

judy 提交于

本文转载自:<span id="profileBt"><a href="https://blog.csdn.net/gslscyx/article/details/124498760">FPGA技术实战</a></…;

<font color="#FF8000">注:本文由作者授权转发,如需转载请联系作者本人</font>

引言:本文我们介绍下DDR3的基础知识,涉及DDR3管脚信号、容量计算、重要参数介绍内容。

<strong>01.DDR3 SDRAM概述</strong>
DDR3 SDRAM 全称double-data-rate 3 synchronous dynamic RAM,即第三代双倍速率同步动态随机存储器。双倍速率(double-data-rate),是指时钟的上升沿和下降沿都发生数据传输;同步,是指DDR3数据的读取写入是按时钟同步的;动态,是指DDR3中的数据掉电无法保存,且需要周期性的刷新,才能保持数据;随机,是指可以随机操作任一地址的数据。

以镁光MT41K256M16RH-107为例(以下介绍均以此芯片为例),该芯片容量为512GB(4Gbit),器件内部功能模块组成如图1所示。
<center><img src="http://xilinx.eetrend.com/files/2022-06/%E5%8D%9A%E5%AE%A2/100560948-25…; alt=""></center>
<p align="center"><strong>图1、256M×16功能框图</strong></p>

<strong>02.DDR3 SDRAM管脚介绍</strong>
<center><img src="http://xilinx.eetrend.com/files/2022-06/%E5%8D%9A%E5%AE%A2/100560948-25…; alt=""></center>
<p align="center"><strong>图2、×16芯片FBGA封装管脚分布</strong></p>

由图1和2图所示,DDR3管脚根据不同的功能可以分为:数据组、地址组、控制组和电源组四大类型。

<strong>2.1 数据组:DQ[15:0]、UDQS/UDQS#、LDQS/LDQS#、UDM、LDM。</strong>

DQ[15:0]:双向信号,16位数据总线;

UDQS/UDQS#、LDQS/LDQS#:双向信号,数据选通信号,用于数据同步;

UDM、LDM:数据屏蔽信号。

<strong>2.2 地址组:BA[2:0]、A[14:0]。</strong>

BA[2:0]:Bank地址信号;

A[14:0]:地址总线。

<strong>2.3 控制组:CK/CK#、CKE、CS#、RAS#、CAS#、WE#、RESET#、ODT、 ZQ#</strong>

CK/CK#:时钟信号,双沿采样DQ数据;

CKE:时钟使能信号;

CS#:DDR3片选信号,低有效;

RAS#:行选通信号;

CAS#:列选通信号;

WE#:写使能信号;

ODT:片上终端使能信号。DDR3芯片数据组是有片上端接的,无需外部端接,而控制信号和地址信号为保证信号完整性需要端接匹配;

ZQ:校准管脚,下拉240Ω电阻到VSSQ。

<strong>2.4 电源组:</strong>

VDD:电源电压,1.5V±5%;

VDDQ:DQ供电,1.5V±5%;

VREFCA:控制、命令和地址参考电压,电压为VDD/2;

VREFDQ:数据参考电压,电压为VDD/2;

<strong>03.DDR3 寻址及容量计算</strong>
<strong>3.1 DDR3数据寻址</strong>
<center><img src="http://xilinx.eetrend.com/files/2022-06/%E5%8D%9A%E5%AE%A2/100560948-25…; alt=""></center>
<p align="center"><strong>图3、DDR存储阵列示意</strong></p>

如图3所示,DDR3的内部是一个存储阵列,类似一张二维表格,数据读写操作即对这个阵列进行操作。所谓寻址就是操作指定表格单元(图中黄色单元格)所需的步骤,即读写某个表格单元,需要先指定一个行(Row),再指定一个列(Column)。这个表格通常称为逻辑Bank,一个DDR3有多个Bank组成。

<strong>3.2 容量计算</strong>

以镁光MT41K256M16RH-107为例。
<center><img src="http://xilinx.eetrend.com/files/2022-06/%E5%8D%9A%E5%AE%A2/100560948-25…; alt=""></center>
<p align="center"><strong>图4、DDR3地址组成</strong></p>

由图4可以,Row address = 15bit,Column address = 10bit,Bank address = 3bit,则器件总存储单元为:

2^15×2^10×2^3 = 2^28= 256M单元格,每个单元格为16bit,总计容量为:256M×16bit = 512MB(4Gbit)。

<strong>04.DDR3 关键参数解析</strong>
DDR3器件手册给出了非常详尽的参数介绍,里面有几个非常重要的参数下面来介绍一下。

<strong>4.1 突发传输及突发长度</strong>
<center><img src="http://xilinx.eetrend.com/files/2022-06/%E5%8D%9A%E5%AE%A2/100560948-25…; alt=""></center>
<p align="center"><strong>图5、非连续突发读操作</strong></p>

突发是指在同一行中相邻的存储单元连续进行数据传输的方式。如图5所示,突发长度BL=8,即送出一次读命令和读地址,连续输出8个数据。

另外,连续读取操作,即控制好两次突发读间隔时间,即可实现连续读输出操作,如图6所示,图中需要控制好参数tCCD。
<center><img src="http://xilinx.eetrend.com/files/2022-06/%E5%8D%9A%E5%AE%A2/100560948-25…; alt=""></center>
<p align="center"><strong>图6、连续读操作</strong></p>

<strong>4.2 CAS Latency(CAS潜伏期)</strong>

该参数又称读取潜伏期或列地址脉冲选通潜伏期,简写成CL,该参数以时钟周期为单位,该参数表示从读命令和地址有效发出后,数据稳定数据的延迟时钟个数。如图7所示,当CL=6时,有效数据在6个时钟之后输出。
<center><img src="http://xilinx.eetrend.com/files/2022-06/%E5%8D%9A%E5%AE%A2/100560948-25…; alt=""></center>
<p align="center"><strong>图7、读延迟周期CL = 6</strong></p>

<strong>4.3 tRCD:RAS至CAS延迟</strong>

tRCD表示行地址选通脉冲到列地址选通脉冲延迟,如图8所示,该参数以时钟周期为单位。
<center><img src="http://xilinx.eetrend.com/files/2022-06/%E5%8D%9A%E5%AE%A2/100560948-25…; alt=""></center>
<p align="center"><strong>图8、读操作</strong></p>

<strong>4.4 附加延迟(AL)</strong>

如图8所示,AL = 5,CL = 6,由此读操作有效数据在RL = AL + CL = 11个时钟后输出。

<strong>4.5 tRP预充电周期</strong>
<center><img src="http://xilinx.eetrend.com/files/2022-06/%E5%8D%9A%E5%AE%A2/100560948-25…; alt=""></center>
<p align="center"><strong>图9、tRP预充电周期</strong></p>

预充电有效周期,在发出预充电命令之后,要经过一段时间才能允许发送RAS行有效命令打开新。