起因
在学习FPGA时使用了DDR3,最近学ARM处理器也用到了DDR3的外设,在FPGA是使用 MIG(Memory Interface Generators)IP核驱动DDR3,ARM处理器是通过配置MMDC(Multi Mode DDR Controller)模块驱动DDR3,这编博客将会介绍使用DDR需配置的几个关键参数。
SRAM操作流程、时序图可以浏览我之前的文章,FPGA之SDRAM学习。
关键参数
传输速率
传输速率的单位是MT/s(Mega Transfer Per Second),即每秒传输的百万次数,常见DDR3有800MT/s、1066MT/s、1333MT/s、1600MT/s等,这是首先需要考虑的,该参数决定了DDR的最高数据传输速率。
tRCD 参数
tRCD 全称是 RAS-to-CAS Delay,也就是行寻址到列寻址之间的延迟。 DDR 的寻址流程是先指定 BANK 地址,然后在指定行地址,最后指定列地址确定最终要寻址的单元。 BANK 地址和行地址是同时发出的,这个命令叫做行激活(Row Active)。行激活以后就发送列地址和具体的操作命令(读还是写),这两个是同时发出的,因此一般也用读/写命令表示列寻址。在行有效(行激活)到读/写命令发出的这段时间间隔叫做 tRCD。
CL 参数
当列地址发出以后就会触发数据传输,但是从数据从存储单元到内存芯片 IO 接口上还需要一段时间,这段时间就是非常著名的 CL(CAS Latency),也就是列地址选通潜伏期。
AL 参数
在 DDR 的发展中,提出了一个前置 CAS 的概念,目的是为了解决 DDR 中的指令冲突,它允许 CAS 信号紧随着 RAS 发送,相当于将 DDR 中的 CAS 前置了。但是读/写操作并没有因此提前,依旧要保证足够的延迟/潜伏期,为此引入了 AL(Additive Latency),单位也是时钟周期数。 AL+CL 组成了 RL(Read Latency),从 DDR2 开始还引入了写潜伏期 WL(Write Latency),WL 表示写命令发出以后到第一笔数据写入的潜伏期。
tRAS 参数
RAS active time,也指Active to Precharge Delay,行有效至行预充电时间。是指从收到一个请求后到初始化RAS(行地址选通脉冲)真正开始接受数据的间隔时间,tRAS 是 ACTIVE 命令到 PRECHARGE 命令之间的最小时间,tRAS=tRCD+tWR。
其他参数
tRP 参数
在发出预充电命令之后,要经过一段时间才能允许发送RAS行有效命令打开新的工作行,这个间隔被称为tRP(RAS Precharge time,预充电有效时间)。
tRC 参数
tRC(Row Cycle Time),表示“SDRAM行周期时间”,它是包括行单元预充电到激活在内的整个过程所需要的最小的时钟周期数,是两个 ACTIVE 命令或者 ACTIVE 命令到 REFRESH 命令之间的周期。tRC=tRAS+tRP。如果tRC的时间过长,会因在完成整个时钟周期后激活新的地址而等待无谓的延时,而降低性能。然而如果该值设置过小,在被激活的行单元被充分充电之前,新的周期就可以被初始化,也会导致数据丢失和损坏。
tWR 参数
由于数据信号由控制端发出,输入时芯片无需做任何调校,只需直接传到数据输入寄存器中,然后再由写入驱动器进行对存储电容的充电操作,因此数据可以与CAS同时发送,也就是说写入延迟为0。不过,数据并不是即时地写入存储电容,因为选通三极管(就如读取时一样)与电容的充电必须要有一段时间,所以数据的真正写入需要一定的周期。为了保证数据的可靠写入,都会留出足够的写入/校正时间(tWR,Write Recovery Time),这个操作也被称作写回(Write Back)。tWR至少占用一个时钟周期或再多一点(时钟频率越高,tWR占用周期越多)。