在现代计算机系统中,DDR SDRAM(双倍数据速率同步动态随机存取存储器)因其高带宽和相对低成本而成为主流内存技术。然而,随着时钟频率的不断提升,时序控制变得越来越具有挑战性。DDR接口在时钟的上升沿和下降沿都传输数据,这使得数据有效窗口(data valid window)变得更窄,对时序精度的要求也更高。
在典型的DDR接口中,数据选通信号(DQS)与数据信号(DQ)需要保持严格的时序关系。对于写操作,DQS需要与数据中心对齐;对于读操作,DQS需要与数据边缘对齐。这种时序关系必须在整个工作温度范围、供电电压波动以及工艺偏差下都能保持稳定,这就是所谓的PVT(工艺、电压、温度)变化带来的挑战。
延迟锁定环(DLL)是一种闭环控制系统,用于生成精确的时钟相位。在TI的SDRAM控制器(SDRC)子系统中,DLL模块由一个主DLL和五个从属可控延迟线(CDL)组成,构成一个SmartReflex兼容的硬宏模块。
DLL的核心工作原理是通过相位检测器比较输入时钟和反馈时钟的相位差,然后调整电压控制延迟线(VCDL)的延迟量,直到反馈时钟与输入时钟达到期望的相位关系。在SDRC子系统中,DLL被配置为产生90度的相位偏移,即四分之一时钟周期的延迟。
数学上,DLL的锁定条件可以表示为:
code复制t_delay = (N × t_ck) + t_phase
其中:
可控延迟线(CDL)是可编程的数字控制延迟元件,每个CDL具有:
在SDRC子系统中,CDL的延迟值由DLL的输出命令控制,确保输出信号相对于输入信号有精确的90度延迟。值得注意的是,CDL的时序延迟与DLL计数器偏移量之间并非线性关系,这需要通过DLL的反馈环路实时调整。
CDL的延迟特性可以用以下公式近似表示:
code复制t_CDL = K × (C_LOAD × V_DD)/I_DS
其中:
这种电压和温度相关的特性正是需要DLL进行实时补偿的原因。
在DDR读操作中,存储器芯片会发送DQS信号和数据(DQ)。根据JEDEC规范,DQS在读取时应与数据边缘对齐(edge-aligned)。然而,为了在控制器端正确捕获数据,DQS需要被延迟以在数据窗口的中心位置采样。
SDRC子系统中的DLL/CDL模块通过以下步骤实现这一目标:
这一过程如图1-54所示,延迟后的DQS为同步触发器(DFF)的输入创建了合适的数据建立(setup)和保持(hold)时间。
对于写操作,时序要求正好相反。控制器需要生成中心对齐(center-aligned)的DQS和DQ信号。SDRC提供了两种写路径选择:
写操作的时序关键点包括:
DLL/CDL模块最显著的优势是其能够实时跟踪和补偿PVT变化。补偿机制的工作原理如下:
这种实时补偿确保了在75-166MHz的工作频率范围内,DQS信号的相位精度始终保持在要求范围内。
当DDR接口工作在低于75MHz的频率时,DLL需要切换到解锁模式(unlocked mode)。此时,系统使用固定延迟模式(ModeFixedDelay),通过SDRC_DLLA_CTRL寄存器配置:
这种模式下,虽然失去了实时跟踪能力,但通过精确的手动配置,仍然可以满足低频应用的时序要求。
这个寄存器是DLL/CDL模块的主要控制接口,关键字段包括:
| 位域 | 名称 | 描述 |
|---|---|---|
| [31:24] | FIXEDDELAY | 固定延迟模式下CDL的延迟值 |
| [23:16] | MODEFIXEDDELAYINITLAT | 固定延迟模式初始化计数器值 |
| [7] | DLLPHASE | 必须设置为1(90度相位) |
| [6:5] | DLLMODEONIDLEREQ | 空闲请求时的DLL模式选择 |
| [4] | DLLIDLE | 置1使DLL进入空闲模式 |
| [3] | ENADLL | DLL使能控制 |
| [2] | LOCKDLL | 1=固定延迟模式,0=跟踪延迟模式 |
| [1] | WRITEDDRCLKX2DIS | 写路径时钟选择(0=双倍频率) |
当需要改变SDRC输入时钟频率时,必须遵循以下流程:
重要提示:直接改变锁定状态DLL的输入时钟频率会导致时序失控,可能引发数据损坏。
DLL/CDL模块的性能很大程度上依赖于良好的信号完整性设计:
虽然DLL/CDL模块对于时序至关重要,但它也是功耗敏感模块:
在实际应用中,可能会遇到以下典型问题:
验证DLL/CDL性能最有效的方法是进行眼图分析:
理想情况下,数据采样点应位于眼图的中心位置。
对于固定延迟模式,建议采用以下校准流程:
这种校准应在多个温度点和电压下重复进行,以确保全工作范围内的稳定性。
虽然本文主要讨论DDR SDRAM控制器中的应用,但DLL/CDL技术也可用于其他高速接口:
在TI的SDRC子系统中,DLL/CDL模块的灵活设计使其能够适应从移动设备到高性能计算的各种应用场景。特别是在需要低功耗和高可靠性的场合,其实时PVT补偿能力显得尤为重要。