DDR3 T型拓扑和Fly-by拓扑和Write leveling详解

DDR3 T型拓扑和Fly-by拓扑差异对比和Write leveling详解

当主控芯片外挂多个DDR3颗粒时,通常有两种布局方式T型和Fly-by,对比这两种布局的优劣之前我们先讲一下同步切换噪声。

同步切换噪声和地线反弹

由于器件内部的接地引脚与地平面之间存在引线电感(寄生电感),所以理论上当每个信号翻转时(0→1或1→0)所带来的电流的变化都会通过器件的寄生电感影响到地线(信号的回路)。只是这个电流非常小,可以忽略。可是当这些信号累积起来后,如多个集成电路内部驱动器同时转换(切换)时就会在地线中产生较大的噪声。输出驱动电流越大,噪声的幅度也越大,如图所示。
提
Fly-by布局相比于T型布局,在减小同步切换噪声方面有着非常大的优势,下面分析一下原因。

T型拓扑

在这里插入图片描述

地址、命令和时钟到达每个DDR3芯片的距离等长,意味着信号到达每个DDR3芯片的时刻是同时的,同步切换噪声会叠加在一起。同时,走线分支较多,对信号完整性不利。
好处是正因为地址、命令和时钟到达每个DDR3芯片的距离等长,T型拓扑不需要做Write leveling。

Fly-by

在这里插入图片描述

地址、命令和时钟的布线依次经过每一颗DDR3芯片,信号依次到达每个DDR3芯片,有效降低了同步切换噪声。减少了信号线的分支,借助于端接电阻,有效保证了信号的完整新。
因为地址、命令和时钟到达每一颗DDR3芯片的距离不一样,需要进行Write leveling。

Write leveling。

Write Leveling的功能是调整DRAM颗粒端DQS信号和CLK信号边沿对齐;调节过程描述:DDR控制器不停地调整DQS信号相对于CLK的延迟,DRAM芯片在每个DQS上升沿采样CLK管脚上的时钟信号,如果采样值一直低,则会将所有的DQ[n]保持为低电平来告知DDR控制器,tDQSS(DQS, DQS# rising edge to CK, CK# rising edge,在标准中要求为+/-0.25 tCK。tCK为CLK时钟周期)相位关系还未满足,如果发现在某个DQS上升沿,采样到此时的CLK电平发现了迁越(由之前的低跳变为高),则认为此时DQS和CLK已经满足tDQSS,同时通过DQ[n]向DDR控制器发送一个高,表征一个写均衡成功,同时DDR控制器会锁住这个相位差。这样,在每个DRAM端,看到的CLK和DQS信号都是边沿对齐的。
在这里插入图片描述
参考上图,写入均衡的修调过程:

t1:将ODT拉起,使能on die termination;

t2:等待tWLDQSEN时间后(保证DQS管脚上的ODT已设置好),DDR控制器将DQS置起;DDR memory在DQS上升沿采样CK信号,发现CK=0,则DQ保持为0。

t3:DDR控制器将DQS置起;DDR memory在DQS上升沿采样CK信号,发现CK=0,则DQ仍然保持为0。

t4:DDR控制器将DQS置起;DDR memory在DQS上升沿采样CK信号,发现CK=1,则等待一段时间后,DDR memory将dq信号置起。

采取以上策略的原因:对于DDR controller来说,其无法测定clk边沿和dqs边沿的绝对位置,故采用了不断调整dqs delay,在dqs上升沿判断clk从0到1或1到0的一个变化,一旦检测到变化,则写入均衡停止。

DDR3 write leveling concept图不太好理解,以下进行说明。

从上图中的两个信号diff_DQS和DQ,可以看到 diff_DQS的上升沿采到的CK值都是0;
将diff_DQS加延时,直到如下图 中所示diff_DQS的上升沿采到的CK值都是1,进而DQ输出从0到1,完成写入均衡(write leveling)。
注意:在DDR3的标准文档中,在同一个时序图中经常性看到有多个相同信号名,但波形不同的情况,需要结合上下文分析波形。
在这里插入图片描述

注意:

1、CPU内部的内存控制器只能对DQS信号做延迟,不能做超前处理,所以CK要大于DQS信号线的长度,否则将不能满足tDQSS。
2、 Write Leveling 需要主控支持,对于不支持Write Leveling的主控,只能采用T型布局,否正DDR3会通信失败或达不到额定频率,只能降频运行。

### DDR3 CK时钟信号的作用及工作原理 DDR3内存中的CK(Clock)时钟信号是一个至关重要的同步信号,用于协调整个系统的操作。它不仅为存储器提供基本的时间基准,还决定了数据传输速率其他内部时序参数。 #### 1. CK时钟信号的主要作用 CK时钟信号作为DDR3的核心时间基准,在以下几个方面起着重要作用: - **同步控制**:所有的命令、地址以及数据传输都依赖于CK时钟信号进行同步[^1]。 - **定义频率范围**:DDR3的工作频率由CK时钟决定,其典范围可以从400 MHz到800 MHz不等,对应的数据传输率则达到800 Mbps至1600 Mbps[^2]。 - **支持双倍数据速率**:由于DDR3采用了双倍数据速率技术,因此在每个CK周期的上升沿下降沿都会发生数据采样或发送动作。 #### 2. 工作原理详解 为了确保高效率的数据交换并减少延迟影响,DDR3通过复杂的时序管理实现了精确的操作流程: - **外部输入与内部生成的关系** 外部提供的CLK信号被用作基础参考源,而实际使用的CK是由FPGA或者专用PHY层电路经过缓冲处理后再传递给DRAM芯片。这种设计可以有效降低噪声干扰带来的不确定性。 - **多相位分配机制** 在某些高级配置下,可能会存在多个不同相位版本的CK分发到各个独立通道上,从而优化整体布局布线条件下的性能表现[^3]。 - **Write Leveling调整功能** Write Leveling是一种专门针对Fly-by拓扑结构所引发的问题提出的解决方案之一。当写入过程中遇到因线路长度差异造成的DQS相对于CK偏移情况时,可通过动态微调方式重新校准两者之间的相对位置关系,使得最终到达目标端口处保持良好的一致性。 ```python # Python伪代码展示如何模拟简单版write leveling逻辑过程 def write_levelization(dqs_signal, ck_signal): delay_steps = range(0, max_delay) # 假设最大可调节步数 best_alignment = None for step in delay_steps: adjusted_dqs = apply_delay(dqs_signal, step) alignment_score = evaluate_timing(adjusted_dqs, ck_signal) if (best_alignment is None or alignment_score > best_alignment['score']): best_alignment = {'step': step, 'score': alignment_score} return adjust_final_dqs(best_alignment['step']) final_adjusted_dqs = write_levelization(initial_dqs, reference_ck) print(f"Optimal DQS Delay Steps: {final_adjusted_dqs}") ``` 上述代码片段仅作为一个理论上的例子说明可能涉及的技术细节,并不代表真实硬件实现方法。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Tech-Wang

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值