DDR4硬件详细设计

2020年3月21日 FireSu 8172  0  0
DDR4的硬件详细设计过程。

点击上方蓝色“每日硬知识”,关注公众号,支持下硬知识吧!

在上文中为大家讲解了DDR4的存储寻址原理。在本节,我们将为大家讲解DDR4的详细硬件设计步骤,DDR的时序参数,以及DDR4SI仿真。

DDR的硬件设计步骤

作为硬件工程师,我们通常收到需求是:该产品内存配置为DDR4,容量8Gb1GB=8Gb)。

而我们通常需要把这个“简陋”的需求,转化为具体的电路,该如何去实现呢?

其实,很简单。DDR4的硬件设计过程可以总结为:为某个平台搭配一颗DDR内存颗粒,并保证平台与DDR内存颗粒均能正常工作。

所以可以分为2部分,如何为平台选型1DDR内存颗粒?如何保证DDR相关电路能正常工作?

DDR内存颗粒选型

目前很多芯片都会把CPU与外围控制电路(例如:FLASH控制电路,DDR控制电路,USB控制电路)集成到1颗芯片中,像高通MDM8909,类似这样的芯片,我们称为“平台芯片”。平台芯片中DDR控制电路,我们称为“DDR Controller”,翻译过来为:DDR控制器。

DDR控制器搭配它能控制的DDR内存颗粒,你就必须先了解下:DDR控制器需要什么样的内存颗粒?

硬件设计第一步:查阅平台芯片规格书中,关于DDR控制器部分的描述。

 

It has 16/32 bits DDR3L/4 up to 2400 MT/s, parallel NAND, serial NOR interfaces.

所以我们了解到了:

该平台芯片,支持DDR3L或者DDR4内存颗粒,数据位宽为16位或者32位,最高数据传输速度为2400MT/s,即频率为1200MHzDDR是双边沿数据传输,1个时钟周期传输2次数据,1s传输了2400M次,即意味着1s时钟变化了1200次,即频率为1200MHz)。

结合产品需求:容量8Gb,那我们基本可以锁定DDR的详细规格了。

在正式选型之前,还要引入1个概念“RANK”。我们知道,DDR即支持多个内存颗粒扩展容量,又支持多个内存颗粒扩展数据位宽。

例如,我们的DDR控制器支持32位数据位宽,那我们可以用84DDR,或者48DDR,或者216DDR,或者132DDR进行数据位扩展。假如我们用84DDR颗粒进行设计,我们的RANK数量就是8,我们戏称为“8-RANK设计”,当然实际生活中,我们肯定不会这么蠢,拿84DDR去扩展32位。

所以,再确定我们的RANK数量后,需求被锁定了。

容量设定为8Gb,类型为DDR4,数据宽度为32位,最高频率为1200MHz。由于目前大部分DDR内存颗粒最高支持16位数据宽度,所以RANK数量为2,即我们说的Dual-RANK设计。

根据这个需求,可以在DDR官网上去寻找合适的“DDR芯片”了。例如在镁光官网产品页,选定DRR4-SDRAM,选定8GbDDR4

网页会为你推荐很多型号。像数据位宽是8位的,可以直接跳过。

数据位宽为16位,频率为1200Mhz2400MT/s)的,仍然有很多。这时候就是考验硬件工程师职业素养的时候了,我们不仅要考虑硬件性能,还要考虑下物料成本,物料采购周期。考虑成本,就尽量不要有“过设计”的地方,所以速率为3200MT/s的器件排除掉。如果我们是消费类商规产品,所以温度范围选择较窄的商业级器件,其次,为了增进你和采购的感情,

千万不要选择停产的物料。

千万不要选择停产的物料。

千万不要选择停产的物料。

这样下来,我们选型基本就锁定到MT40A512M16JY-083E了,用量为2片。

此时,开始阅览器件规格书,了解电气性能,设计外围电路,让DDR控制器和DDR内存颗粒都欢快的运行起来。

DDR的硬件电路搭建

设计逻辑器件电路,就要有逻辑思维,最简单的逻辑思维,就是分组。所以,先了解DDR控制器的硬件接口。控制器硬件PIN脚可以分为电源组,配置组,控制组,时钟组,地址组,数据组。

电源组和配置组接口如下,供电,接电阻就可以完成,1.2V的供电,尽可能要平稳,此处忽略。ZQ电阻是用来校准ODT阻抗的,我们后面会讲到。

控制组接口如下。

分好组后,就要根据DDR的工作原理来进行外围硬件设计了。

控制信号中,需要注意CS0CS12个片选信号的可以用来进行,多RANK内存容量扩展的,说明DDR控制器,最多支持2RANK。每组RANK分配单独的片选信号。我们此处设计216位芯片组成1RANK,即CS0要同时接在目前选的2DDR颗粒的CS上,组成菊花链。其余控制信号一般无时序要求,能传递逻辑即可。

地址信号通常要参考时钟信号,来进行寻址,所以地址信号要严格与时钟信号保持长度一致,来保证所有地址位在采样的时候同时到达。因为同一块单板上,每根线上电子的传递速度是一样的,所以信号线长度约长,信号越晚到达,信号线长度越短,信号越早到达,地址采样的时候,是有时间期限的,所以,所有的地址信号必须保证在采样时间范围内,全部到达,因此要求地址线相对时钟线进行长度控制。前面一节我们讲了内存寻址原理,先用BG信号选择BANK GROUP,再用BA信号进行BANK选择,再用A[0:16]进行行列选择,再用A[0:16]进行列选择,完成寻址。可以看到,Address信号在进行行选择和列选择时,BGBA信号都是保持的,所以BG信号和BA信号的等长要求会相对略宽。

DDR控制器有2BG信号,2BA信号,17Address信号,同一个RANK2DDR颗粒,每个DDR颗粒有1BG信号,2BA信号,17Address信号,前面CS0同时连接了2DDR颗粒的片选,所以寻址时两颗DDR会被同时片选,那么DDR控制器如何区分开寻址其中1DDR颗粒呢?硬件又该怎么连接?其实很简单,根据上节讲的内存寻址原理,我们知道每个DDR颗粒有2BANK GROUP1BG信号),4BANK2BA信号),与CS扩展容量的原理一致,我们把BG0接在DDR颗粒1上,BG0拉高拉低,我们可以寻址CHIP18BANKBG1接在DDR颗粒2上,BG1拉高拉低,我们可以寻址CHIP18BANKBAADDR进行菊花链连接,同时接在2DDR芯片上。

接下来,我们看看数据信号的链接,数据信号是内部分组的,由于DDR数据信号传输的时候双边沿数据传输,而且如果所有信号都参考时钟去做等长,会导致等长控制非常困难,增加DDR的设计难度,所以聪明的人类想出了另外一招,额外增加数据选通信号来作为数据信号的采样时钟,每8位信号,参考一组差分。所以我们很轻易可以看出DDR控制器有4DQS差分信号,32根数据信号。我们的RANK中有2DDR颗粒,每个颗粒有2DQS差分信号,16根数据信号。所以

控制器的DQS[0:1]连接DDR CHIP0DQS[0:1],

控制器的DQ[0:15]连接DDR CHIP0DQ[0:15]

控制器的DQS[2:3]连接DDR CHIP1DQS[0:1],

控制器的DQ[16:31]连接DDR CHIP1DQ[0:15]

至此所有信号连接完成。

接下来是阻抗匹配,地址信号都需要外部加49欧姆匹配电阻到电源或者GND,数据信号,则不需要。因为DDR内部集成ODT功能,只需要通过配置,即可完成每组数据线的阻抗匹配。

本节,我们讲解了DDR的硬件设计过程,下一节我们重点讲解DDR的调试关注点以及基于Hyperlynx的信号完整性分析。

用户头像1
 路人117.136.45.120
  2020-3-21
加油
用户头像2
 硬知识
  2020-8-27
谢谢!
用户头像1
 
  2020-8-31
什么时候更新?
用户头像1
 
  2020-9-8
牛逼
用户头像1
 
  2021-1-27
加油
用户头像1
 
  2021-2-18
顶顶顶
用户头像3
DDR4硬件详细设计     
Copyright @ 2015 Fire.Su 版权所有陕ICP备19023440号