热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

老SDRAM和DDRSDRAM时序图与信号完整性仿真结合运用(2)-版本博客图片丢失,增加图片后又不能上传,shit.

前一段时间只是以2410和6410时序图简单归纳了一下,现在将时序基础概念和详细计算过程彻底理一遍。传播延迟信号从缓冲器出来之后,就要经过传输线到接收终端,信号在传输线上的传

 

前一段时间只是以2410和6410时序图简单归纳了一下,现在将时序基础概念和详细计算过程彻底理一遍。        传播延迟

     信号从缓冲器出来之后,就要经过传输线到接收终端,信号在传输线上的传输的延时我们称为传播延迟(propagation delay),属于器件外部的延迟,它只和信号的传播速度和线长有关。

     最大/最小飞行时间

     飞行时间(Flight Time)参数,包括最大飞行时间(Max Flight Time)和最小飞行时间(Min Flight Time)。飞行时间包含了传播延迟和信号上升沿变化这两部分因素。在较轻的负载(如单负载)情况下,驱动端的上升沿几乎和接收端的信号的上升沿平行(如上图),所以这时候平均飞行时间和传播延迟时间大体相等;但如果在重负载(如多负载)的情况下,接收信号的上升沿明显变缓,这时候平均飞行时间就会远远大于信号的传播延迟。这里说的平均飞行时间是指Buffer波形的Vms到接收端波形Vms之间的延时,这个参数只能用于时序的估算,准确的时序分析一定要通过仿真测量最大/最小飞行时间来计算。上面只是对信号上升沿的分析,对于下降沿来说,同样存在着最大/最小飞行时间的参数,如下图。在时序计算时我们实际取的最大飞行时间是在上升沿和下降沿中取最长的那个飞行时间,而最小飞行时间则是取上升和下降沿中最短的那个飞行时间。也有些时候,人们对信号的最大/最小飞行时间还有其它称谓,比如在Cadence软件中,就将最大飞行时间称为最终稳定延时(Final Settle Delay),而将最小飞行时间称为最早开关延时(First Switch Delay)。

 

如下进行详细计算:

CPU范例

 

假设MCU的时钟频率为66MHz,时钟周期为15.15ns,其SDRAM的接口参数见下表:

明:MCU 在读SDRAM数据时,对输入数据的最小保持时间要求为3ns;对输入数据的最小setup时间       Tsetup_MCUin_min=Tclk-Taccess_time_max=15.15ns-10ns=5.15ns。MCU在对SDRAM写数据时,MCU的数据输出的Tsetup_MCUout =3ns,Thold_MCUout =7.5ns

SDRAM(例)

 

 说明:以133MHz为例,在对SDRAM读数据时,SDRAM的数据输出内部延迟时间

Tco_data_SDRAMout= Tacs_SDRAMout= Tclk-Tsetup_SDRAMout,其最大值为6ns(也即SDRAM的数据输出的setup时间最小为15.15-6=9.15ns),其最小值由data-out hold time_min(2ns)决定。在对SDRAM写数据时,SDRAM对输入的数据的最小保持时间Thold_SDRAMin=0.8ns,最小建立时间Tsetup_SDRAMin =1.5ns。

SDRAM的读时序

时序说明

MCU_CLK输出 一 SDRAM_CLK输入 一 经过 Tacs _ sdram之后数据送到SDRAM数据口一 数据传到MCU数据口一 SDRAM的后续时钟源数据保留Toh_sdram一 同时MCU侧进行数据采样。

由于SDRAM在输出数据时,其选取时钟来自于MCU,因此属于变型的共同时钟系统的通讯结构。

时序约束公式

由于MCU内部包含clock buffer,此时可忽略Tflt clka,也暂不考jitter,则时序约束公式简化为:

Tsetup_marin_SDRAM_read = Tcycle- Tflt_clkb- Tflt_data- Tco_data Tsetup

                        = Tclk- Tclk_delay Tdata_delay Tco_data Tsetup

                        = Tsetup_SDRAMout_max - Tclk_delay Tdata_delay Tsetup

Thold_ margin_SDRAM_read = Tco_data + Tdata_delay + Tclk_delay Thold

                         = Thold_SDRAMout_min + Tdata_delay + Tclk_delay Thold

(备注:Tdata_delay 和Tclk_delay均为走线延迟时间,并忽略和Flight的差异)

读时序的约束条件

计算时间裕量:

Tsetup_margin_SDRAM_read = Tsetup_SDRAMout_max - Tclk_delay Tdata_delay Tsetup

                     = 9.15ns - Tclk_delay Tdata_delay-5.15ns

                     = 4ns - Tclk_delay Tdata_delay > 0ns

                     Tdata_delay + Tclk_delay <4ns

(备注:因为SDRAM输出的setup时间较长,相对于MCU的读要求,有4ns的裕量,因此,数据线和时钟线 的延迟之和,不能超过这个裕量。)

Thold_ margin_SDRAM_read = Thold_SDRAMout_min + Tdata_delay + Tclk_delay Thold_MCUin_min

                     = 2ns + Tdata_delay + Tclk_delay 3ns > 0ns

                     Tdata_delay + Tclk_delay > 1ns

(备注:如果SDRAM输出的hold时间大于MCU的hold要求,则上述约束条件自动满足;但SDRAM器件输出的hold时间趋于缩短,因此,需要通过走线延迟的方式来“缩短”setup时间,从而补偿和加长在MCU接收端的数据hold时间。)

SDRAM的写时序

 

时序说明

    由于MCU在发送数据的同时,也负责发送数据选通时钟,因此属于源同步系统。

时序约束公式

    Tsetup_margin_SDRAM_write= Tclk_delay + Tsetup_MCUout - Tdata_delay – Tsetup_SDRAMin

                                    = Tclk_delay + 3ns- Tdata_delay1.5ns

                                        Tclk_delay - Tdata_delay>-1.5ns

Thold_margin_SDRAM_write = Tdata_delay + Thold_MCUout –Tclk_delay– Thold_SDRAMin

           = Tdata_delay +7.5ns –Tclk_delay0.8ns

                          Tclk_delay - Tdata_delay<6.7ns

约束条件总结

读时序的约束条件

    1ns

    考虑SDRAM各品牌的差异性,进一步加严约束,以提高设计的兼容性:

    即 1.5ns

写时序的约束条件

    -1.5ns <Tclk_delay - Tdata_delay <6.7ns

    实际布线时,时钟线通常比数据线、地址线等线路的长度要长些或等长,因此

    0ns <Tclk_delay - Tdata_delay<6.7ns

综合的约束条件

    0ns <Tclk_delay - Tdata_delay<3ns

    1.5ns <Tdata_delay + Tclk_delay <3ns (读数据的约束条件,相对较困难实现)

    按表面微带线150ps/in的计算,则数据线(时钟线)的长度不应超过10in 即250mm。

    按内层带状线180ps/in的计算,则数据线(时钟线)的长度不应超过8.3in 即210mm。

 

DDR的时序约束条件

 

 

 

说明(以DDR266为例)

        Tclk=7.5ns,Tch = Tcl=0.45*Tclk=3.38ns

        Tsetup_DDRin_min = 0.5ns

        Thold_DDRin_min = 0.5ns

        Tdv_SDRAMout= Tsetup_DDRout + Thold_DDRout

                            =tQH-tDQSQ=tHP tQHS tDQSQ=0.45*Tch-0.75ns-0.5ns=2.12ns

DDR的写约束条件

上图为某ARM11内核的MCU 的写DDR时序和参数(133MHz)分析,典型的源同步时序系统,在时钟的上下沿读取数据。

时序约束公式

    同SDRAM

Tsetup_margin_DDR_write= Tclk_delay + Tsetup_MCUout - Tdata_delay – Tsetup_SDRAMin

                                           = Tclk_delay + 0.95ns- Tdata_delay0.5ns

                                           Tclk_delay - Tdata_delay>-0.45ns

Thold_margin_DDR_write = Tdata_delay + Thold_MCUout –Tclk_delay– Thold_SDRAMin

                   = Tdata_delay +0.95ns –Tclk_delay0.5ns

                                          Tclk_delay - Tdata_delay<0.45ns

DDR的读约束条件

    上图为某ARM11内核的MCU 的读DDR时序和参数(133MHz)

    由于是在DQS的高(低)电平中间读取数据,因此需要按数据窗口的概念来修改约束条件:

    DDR 的理想数据窗口周期为0.45*Tclk=0.45*7.5ns=3.38ns(按最小值计算)

    DDR输出的实际数据窗口为Tdv_SDRAMout=2.12ns

    DDR输出数据和DQS的SKEW时间为0.5ns

    则Tdata_delay-Tclk_delay

       及 0.5ns+2.12ns +(Tdata_delay-Tclk_delay) >tQH_MCU=2.3ns

       (Tdata_delay-Tclk_delay)>-0.32ns

-0.32ns<Tdata_delay-Tclk_delay<0.35ns

DDR约束条件总结

读时序约束

-0.32ns

写时序约束

    -0.45ns

综合约束条件

    -0.32ns<Tdata_delay-Tclk_delay<0.35ns

即数据线和DQS线的传输延迟SKEW要严格控制在+/-0.3ns以内,此要求比SDRAM严格得多。

按表面微带线150ps/in的计算,则数据线和DQS线的长度偏差不应超过2in 即50mm。

按内层带状线180ps/in的计算,则数据线(时钟线)的长度不应超过1.6in 即40mm。

由于这个时间很短,信号的上升沿(下降沿)时间的影响不能忽略,也即度量延迟SKEW时,需要以信号的飞行时间(Flight)来取代delay时间,因此上述的长度偏差只是做参考,实际走线时要尽可能做到等长。

DDR对数据线的长度未做要求。


推荐阅读
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • Android工程师面试准备及设计模式使用场景
    本文介绍了Android工程师面试准备的经验,包括面试流程和重点准备内容。同时,还介绍了建造者模式的使用场景,以及在Android开发中的具体应用。 ... [详细]
  • 基于Socket的多个客户端之间的聊天功能实现方法
    本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 本文介绍了在Vue项目中如何结合Element UI解决连续上传多张图片及图片编辑的问题。作者强调了在编码前要明确需求和所需要的结果,并详细描述了自己的代码实现过程。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • 在线教育平台的搭建及其优势
    在线教育平台的搭建对于教育发展来说是一次重大进步。未来在线教育市场前景广阔,但许多老师不知道如何入手。本文介绍了在线教育平台的搭建方法以及与传统教育相比的优势,包括时间、地点、空间的灵活性,改善教育不公平现象以及个性化教学的特点。在线教育平台的搭建将为学生提供更好的教育资源,解决教育不公平的问题。 ... [详细]
  • Whatsthedifferencebetweento_aandto_ary?to_a和to_ary有什么区别? ... [详细]
author-avatar
静雨2502874293
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有