读信号,dqs 是对齐到dq的边沿, 写信号,dqs 的边沿是对到中间的。
spec 就是这样规定的。我们在dq的最中间的采样,肯定是最安全的。
dqs 是对齐到dq的边沿 , 在silicon 内部,还是通过移位完成的。
rl: read latency
cl : cas latency
al: additive latency
cwl: cas write latency
trrd row to row delay
tccd column to column delay
trcd: row to colum delay
delay: execution will start after a specific time
latency: execution has started. but it' not stable enough, a specific time is required for stabilization
latency: 是已经产生了脉冲,等 它稳定之后,再把信号发到总线上。
简而言之。 我已经发了,但内部逻辑上,我已经发了这个信号了。
在多次传输,想达到更高的带宽,会产生冲突,为什么会冲突呢,因为active 的时候,行列地址都在总线上。
round trip optimize , 其实就是调latency, 就在在现有的情况下,能不能对信号有改善。
basic training : 是要扫所有的pi range.
make signals aligned logically
因为它根本不知道系统是什么样子的
高级的training ,找到了就跳出来
use deselect comand, 如果不用des, 它会一直持续。
相当于人为的引入一些噪声, 让你下面的数据都是无效的,以目前的状态,是否人的margin 还是很好。
basic training 就是把信号对齐。
预备知识差不多了。
cross over
target:
align different clock domain inside mc
method:
buf pi domain, 由一个时钟源,分发给各个时钟,前提是把总开关,调调好,
发现任何一根receive enable 是0的时候,采样停止。告诉硬件,往后的数据就到过来了
是rx的。因为我们不知道,什么时候,送过来。数据的开始,在这个地方,把我们采样的阀门打开。
当任何一个到的时候,我们就固定。 所有17 根的dqs 都到达这个状态的时候。
receive enable:
也就是我们basic training 的第一步,先把ctrl clock 对齐, receive enable. training 对顺序是有要
先把receive enable train 出来
目标:
发出一个读命令, 调整 rcv_en 延时,RTL 还有IO LATENCY , 使得RCV_EN 在DQS preamble 的中间。
方法: 第一步精调, 使得rcv_en 在 dqs assert 的中间。
sweep 128 pi,
第二步, 粗调rtl ( round time latency) , rcv_en 可以采样dqs preamble.
第三步,粗调 IO LATENCY 让rcv_en 可以采样所有的dqs 前导码。
它其实是一个delay. 既然是receive , 就是rx, dimm 送来的dqs 信号, 我mc 知道它啥时候过来的,我啥时候该采样dqs, dq 啊。 dqs 在上生沿, 采样dq, 啥时候去采样dqs, 当经过了rcv en 这样一个delay, 这个delay 其实 是为了节省时间 。 否则,数据还没有送过来,我就开始采, 首先是耗电。 没有经过training , 时延也会受影响。
我读命令发出来了, 接下来,我肯定是期望, data 会发过来。 等到了round trip latency 这个点到了, 我接激活mc 去接下来的工作。 如果置成0, 就是一发读信号,我就开始采样。
在data 没有过来之前,我们进入一个低功耗状态。 该收信号,收信号。 在止之前,我就得等。因为既然是时间, 增加rtl 是什么意思, 其实就是增等待的时候。
我发了一个读信号出去, 数据过来了, memory 自己都还没有ready. 先进我的buffer, 我不发给mc 去处理。 先不做动作, 等 silicon 内部已经stable 了, io lateny 增加, 意味着我在这个地方hold 住 更久的时候。 如果写成0. 就是直通了, 信号一来, 就传出去。
rcv_en 就是采我的dqs. 这个时候一到达, 立马, 半个周期, 就有dqs 过来。
rtl , 先预估一下, 你什么时候过来。
io latency 你过来了, 控制不了DIMM 啥时候过来。 我能控制自己。控制不了dimm 什么时候过来, 但是我能控制我自己。
我憋着,憋多久呢? 再憋 rcv en 这么久。
硬件逻辑就开始工作。
增加io latency , rcv en 就采不到东西。 相当于是进行左移了。 增加 io latency 就相当于信号跑过去了。 采晚了, 会导致miss 掉, 一直不收, 这么多数据 miss 掉了。