在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 880|回复: 2

[原创] 高速DDRx总线系统设计基础知识(5)

[复制链接]
发表于 2023-11-21 21:04:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 wtr_allegro15 于 2023-11-21 21:10 编辑

2.3 高速DDRx总线时序
源同步时钟是指时钟信号和数据信号从同一个源端发出且被同一个接收端接收,DDR的时钟为双边沿源同步时钟。
(1)源同步时序计算
源同步时序计算目的是通过计算接收端建立保持时序裕量,从而保证数据能够被正确的读写,其计算关键在于理清数据和时钟信号的完整路径,通过计算获得路径上它们之间相对的延时偏移,从而计算出建立保持时序裕量。
以下图为例,数据传输的整个过程可以表述为:时钟CLK输入,数据经过Tco_data的时间延时后,在驱动端driver发送,数据在互连通道经过Tflt_data时间延迟后抵达接收端;选通信号DQS传输的整个过程可以表述为:时钟CLK输入,选通信号经过Tco_stobe的时间延时后,又经过Tdelay内部时延,在驱动端driver发送,数据选通信号在互连通道经过Tflt_stobe时间延迟后抵达接收端。
简单介绍建立保持时间裕量计算方法:

                               
登录/注册后可看大图

无论数据信号DQ,还是数据选通信号DQS均以CLOCK为基准,Tsetup_margin、Thold_margin 为我们需要计算的建立和保持时间裕量。
Tsetup_margin=接收端有效建立时间窗口-接收端最小建立时间Tsetup
Thold_margin=接收端有效保持时间窗口-接收端最小建立时间Thold
通俗地讲,建立时间是指在在采样时钟到来之前,需要发送的数据准备妥当的时间,而为了保证能够稳定的读取,在时钟采样点到来之后,需要数据保持原状态持续一段时间。那么,接收端有效建立时间窗口就可以理解为接收端数据DQ上升沿到时钟DQS上升沿之间的时间,从而建立保持时间裕量可以表示为:
从图中很明显可以看出表达式为:
Tsetup_margin=Tco_stobe+Tdelay+Tflt_stobe-Tco_data-Tflt_data-Tsetup
Thold_margin=Ttrigger_cycle-(Tco_stobe+Tdelay+Tflt_stobe-Tco_data-Tflt_data)-Thold
=(Ttrigger_cycle+Tco_data+Tflt_data)-(Tco_stobe+Tdelay+Tflt_stobe)-Thold
其中,
Tco_stobe表示时钟clk输入到选通信号DQS输出的时间;
Tco_data表示时钟clk输入到数据信号DQ输出的时间;
Tdelay表示时钟clk输入后选通信号DQS相对数据信号DQ的延迟,以保证数据选通信号的边沿与数据中心对齐;
Tflt_stobe表示选通信号DQS在互连通道上的传输时间;
Tflt_data表示数据信号DQ在互连通道上的传输时间;
Tsetup表示接收端有效锁存数据所需要的最小建立时间;
Thold表示接收端有效锁存数据所需要的最小保持时间;
Ttrigger_cycle表示时钟边沿触发时间。对于单边沿触发信号如地址,Ttrigger_cycle为一个时钟周期,对于双边沿触发信号如数据、选通,Ttrigger_cycle为1/2个时钟周期;
对于发送端来讲,有效建立时间窗口Tvb和有效保持时间Tva窗口可以表示为:
Tvb=Tdelay+(Tco_stobe-Tco_data)
    =Tdelay-(Tco_data_max-Tco_stobe_min)@最差情况
Tva=Ttrigger_cycle-(Tdelay+Tco_stobe-Tco_data)
    =Ttrigger_cycle-Tdelay+(Tco_data-Tco_stobe)
    =Ttrigger_cycle-Tdelay+(Tco_data_min-Tco_stobe_max)@最差情况
其中,Tco_stobe和Tco_data的时间差定义为数据信号和时钟信号在发送端的偏移量,这个偏移量对于锁存信号是不利的,因此可以看作是无效窗口
Tco_skew_setup=Tco_data_max-Tco_stobe_min
Tco_skew_hold=Tco_data_min-Tco_stobe_max
从而,无效窗口经过Tdelay后,变为数据和选通信号的有效偏移,因此Tvb和Tva为有效窗口,可以简化为
Tvb=Tdelay+(Tco_stobe-Tco_data)
    =Tdelay-Tco_skew_setup@最差情况
Tva=Ttrigger_cycle-(Tdelay+Tco_stobe-Tco_data)
    =Ttrigger_cycle-Tdelay+(Tco_data-Tco_stobe)
    =Ttrigger_cycle-Tdelay+Tco_skew_hold@最差情况
又因为
Tsetup_margin=Tco_stobe+Tdelay+Tflt_stobe-Tco_data-Tflt_data-Tsetup
                     =(Tco_stobe -Tco_data+Tdelay)+(Tflt_stobe-Tflt_data)-Tsetup
                     =Tvb -(Tflt_data-Tflt_stobe)-Tsetup
Thold_margin=Ttrigger_cycle-(Tco_stobe+Tdelay+Tflt_stobe-Tco_data-Tflt_data)-Thold
                   =[Ttrigger_cycle-Tdelay+(Tco_data-Tco_stobe)]+(Tflt_data-Tflt_stobe)-Thold
                   =Tva+(Tflt_data-Tflt_stobe)-Thold
其中,Tflt_data和Tflt_stobe的时间差定义为数据信号和时钟信号在互连通道上的偏移量
Tpcb_skew_setup =Tflt_data_max-Tflt_stobe_min
Tpcb_skew_hold =Tflt_data_min-Tflt_stobe_max
从而,建立时间裕量Tsetup_margin和保持时间裕量Thold_margin可以简化为
Tsetup_margin=Tvb -Tpcb_skew_setup-Tsetup@最差情况
Thold_margin=Tva+Tpcb_skew_hold-Thold@最差情况
可以表述为:接收端最终的时序裕量等于发送端的有效时间窗口Tvb减去互连传输通道上的延时偏移量Tpcb_skew_setup,再减去最小建立时间;
Tsetup_margin=Tvb -Tpcb_skew_setup-Tsetup@最差情况
Thold_margin=Tva+Tpcb_skew_hold-Thold@最差情况
实际应用中,在芯片数据手册中查找相关的参数,结合PCB等长设计时延就可以计算出接收端的时序裕量;当然,在互连设计之前,也可以通过令Tsetup_margin>0和Thold_margin>0计算能够满足时序需求的,PCB设计中数据和选通信号的等长控制约束。

发表于 2023-11-22 09:21:03 | 显示全部楼层
学习学习
 楼主| 发表于 2023-11-22 15:14:58 | 显示全部楼层
微信公众号crystalBai中有整合版本,欢迎大家关注讨论
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-19 04:05 , Processed in 0.032516 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表