首页 / 资讯中心 / 文章详情

EMIF总线走线偏斜影响分析

EMIF总线走线偏斜影响分析 ★ FEATURED ARTICLE
该篇文章是在一个项目上遇到EMIF_D12与时钟线比其它数据线多30mmPCB上不想做蛇形线补长如果要补就需要补15根数量偏多。项目上实际应用时钟频率为100MHz。DSP型号为XF28P650DK9PTP。1 名词解释1.1 时钟CLK时钟就是一个不停“低→高→低→高”跳变的方波信号有些是正弦像人的心跳一样是整个系统的“节拍器”。应用中EMIF时钟是100MHz也就是说每秒跳1亿次每跳一个完整来回低→高→低需要10ns从低→高称为上升沿从高→低称为下降沿。上升沿在EMIF总线中很重要所有动作都以这个时刻为准。1.2 什么是数据数据就是要传的内容。EMIF有16根数据线D0-D15每根线要么为高电平代表1要么为低电平代表016根线组合起来就是一个16位二进制数。DSP要把数据写到外部存储器或者从外部存储器读回来都是通过这16根线传的。1.3 什么是采样采样就是在时钟上升沿那一瞬间看一眼数据线上是高还是低然后记下来。写操作时外部存储器在时钟上升沿那一瞬间看16根数据线上的电平记下来这就是DSP歇过来的数据读操作时DSP在时钟上升沿那一瞬间看数据线上的电平读进来。读写操作只看上升沿那一瞬间上升沿之前数据是什么不重要上升沿之后数据变了也不重要只看那一瞬间是对的就行。Eg采样就是监考老师在 交卷铃声 响的那一瞬间扫一眼你的卷子把答案记下来。铃响前你改答案没关系铃响后你再改也没用老师只看铃响那一瞬间卷子上写的是什么。1.4 建立时间Setup Time数据必须在时钟上升沿之前提前稳定的最短时间。Eg在铃响之前你的答案必须已经写好、墨迹已干、稳稳地在卷子上并且要提前至少 建立时间 这么久。如果铃都要响了你才刚写完墨迹还没干老师那一瞬间可能看不清楚。1.5 保持时间Hold Time数据必须在时钟上升沿之后继续保持稳定的最短时间。eg铃响了老师开始看你的卷子这时候你不能立刻抢卷子改答案必须再保持稳定至少 保持时间 这么久等老师看完了你才能动。建立时间和保持时间两个合起来就是一个“数据稳定窗口”。具体的如下图所示。上图中第一行的脉冲就是时钟信号最后一行为数据信号序号19就是建立时间在时钟上升沿来临之前需要的最短时间20就是保持时间在上升沿采样后数据稳定的时间。1920的时间为可保证采样正确的最短时间。如果小于这个时间数据就会出错。2 什么是走线延迟电信号在PCB走线上跑不是瞬间到达的需要时间。线越长花的时间就越多。2.1 信号在PCB上速度PCB板材叫作FR4电信号在上面的速度大约是光速的一半多外层走线约5.8ps/mm内层走线约6.9ps/mm。2.2 30mm等于多少延迟按照最不利的情况计算安排在内层走线计算如下30mm×6.9ps/mm207ps207ps按照200ps进行计算为0.2ns。2.3 50mm等于多少延迟按照最不利的情况计算安排在内层走线计算如下50mm×6.9ps/mm350ps50mm的线比短线晚到约350ps。2.4 200ps、350ps到底有多长根据上面分析时钟周期为10ns200ps÷10ns2%占用一个时钟周期的2%350ps÷10ns3.5%。3 数据线D12长30mm影响如何在进行分析时应该分为写操作和读操作的影响。3.1 写操作DSP写数据到外部存储器写操作时DSP同时发出时钟和16根数据外部存储器在时钟上升沿采样。数据线D12和时钟线一样长所以D12和时钟是同时到达外部存储器的完全不受影响。对于其它15根数据线而言到达外部存储器的时间比时钟短200ps相当于在建立时间方面增加了200ps时间更加充裕这是好事。但是对于保持时间会减少200ps因为下一组数据会提前200ps到前一组数据的保持时间会少200ps。根据DSP的手册6.12.11.3.2 节的参数数据输出最大延迟td(CLKH-DV)8ns。注释如下从时钟上升沿那一刻开始算DSP内部最多需要8ns数据才会出现在引脚上稳定有效。这是DSP的输出反应速度时间轴如下时刻 0ns 8ns 10ns 11ns 18ns 20ns ↑ ↑ ↑ ↑ ↑ ↑ 时钟 ┌──────┐ │ ┌──────┐ │ ┌──────┐ ───┘ └───┼──────────┘ └───┼──────────┘ └── 沿N │ 沿N1 │ 沿N2 │ │ 数据 ┌──────────┐ ┌──────────┐ ───┘ 无效 └──────数据有效───────┘ 无效 └──────数据有效── ↑ ↑ 沿N触发内部 沿N1触发内部 最多8ns后数据有效 最多8ns后下一组数据有效 ↑ 外部存储器在这采样 沿N1step10ns时时钟沿NDSP内部被时钟触发开始更新数据但引脚上的数据还没变还是上一组step28ns时经过最多8ns的内部延迟新数据才会出现在引脚上且稳定有效step310ns时钟沿N1外部存储器在这个沿采样数据此时数据已经稳定了2ns10ns-8ns2ns这是建立时间step411ns 数据在沿N1之后至少保持1ns才会变这是保持时间后面进行分析step518ns下一组数据沿N1触发的经过最多8ns延迟后有效step620ns时钟沿N2外部存储器采样step5中的数据。根据上述分析这个8ns时间是从沿触发到出现在管脚上需要最多8ns的时间。td (CLKH-DV)8ns 就像老师说 开始写时钟沿之后你最多需要 8 秒钟才能把答案写在卷子上。数据输出最小保持toh (CLKH-DIV)1ns时钟沿后数据最少保持1ns注释如下真正的含义是从时钟上升沿那一刻开始算引脚上的数据至少还会保持1ns才开始变化。时刻 8ns 10ns 11ns 18ns ↑ ↑ ↑ ↑ 数据 ┌──────────┐ ──────────────┘ 数据有效 └─────────── ↑ ↑ 沿N1采样 至少保持1ns后 数据才开始变step110ns时时钟沿N1外部存储器在这个沿采样数据。同时DSP内部被沿N1触发开始准备下一组数据step210ns~11ns时虽然DSP内部已经在准备下一组数据了但引脚上的当前数据至少还会保持1ns才会被允许改变step311ns之后当前数据step1才被允许改变逐渐无效step418ns 下一组数据经过最多8ns延迟后稳定出现在引脚上。所以在11ns-18ns之间数据可能处于变化状态不确定但这不影响因为下一次采样在20nsN2,那时新数据已经稳定了。3.1.1 写操作建立时间计算无偏差建立时间时钟周期-数据最大输出延迟10ns-8ns2nsD12和时钟等长2.0ns不变其它15根数据线早到200ps2ns0.2ns2.2ns更好外部存储器典型要求≥1.5ns可以查相关手册结论D12与其它数据线在写操作建立时间上都满足其要求。3.1.2 写操作保持时间计算无偏差时间1nsD12和时钟等长1.0ns不变其它15根早到200ps1.0ns-0.2ns0.8ns外部存储器典型要求≥0.8ns结论刚好都满足。3.1.3 写操作结论D12完全不受影响因为和时钟等长延迟抵消了。其它15根保持时间为0.8ns刚好都满足典型外部存储器的0.8ns要求。写操作没有问题。在这里是不是可以让软件人为的增加保持时间但是会不会与新数据冲突呢这里需要查阅相关资料进行解释。3.2 读操作DSP从外部存储器读数据读操作时DSP发时钟给外部存储器外部存储器根据时钟输出数据数据返回DSPDSP在时钟沿采样。F28P65x的EMIF同步有一个特点内部有2个时钟周期20ns的读取延迟手册同步时序图标注“2EM_CLK Delay”。也就是说DSP发出读命令后要等2个周期20ns才去采样返回的数据时序裕量大。D12比其它数据晚到200ps但DSP的采样时刻在30ns后3个周期数据到达约26.6ns建立时间裕量为3.4ns。D12晚200ps后裕量约3.2ns。这里的注释如下时刻 发生了什么 ───────────────────────────────────────────────────── 0ns DSP内部触发发出读命令地址、读使能等 ↓ 经过约1ns走线延迟 1ns 读命令到达外部存储器引脚 ↓ 存储器内部开始读操作 ↓ 地址译码 → 选中存储单元 → 读出数据 → 输出缓冲 ↓ 这个过程需要约23~24ns取决于存储器型号 25ns 存储器把数据放到数据总线上数据有效 ↓ 经过约1.6ns走线延迟返回DSP 26.6ns 数据到达DSP引脚稳定有效 ↓ 继续保持稳定 30ns DSP在这个时钟沿采样数据第3个周期 ↑ 数据在26.6ns就到了30ns才采样 中间空了3.4ns这就是建立时间裕量26.6ns的由来将上述时间轴里的延迟加起来命令走线到存储器约1ns初步估算的实际上可以根据线长与速度进行计算存储器内部读操作约24ns这部分是根据存储器内部的时间决定的数据走线返到DSP约1.6ns总共约26.6ns。建立时间裕量3.4ns是什么意思在上述已经分析了DSP发出读指令后会延时20ns才会开始采样也就是前两个周期都是在等待在第三个周期才会开始采样那么采样是在30ns时进行采样而前面已经分析了从读指令发出到外部存储器外部存储器返回数据到DSP的引脚上需要26.6ns那么中间这个3.4ns就是建立时间的裕量。D12数据线延长了30mm数据晚到了0.2ns那么在这个建立时间缩短了0.2ns总的建立时间为3.2ns裕量也很充足。3.3 回答自己在理解过程中的问题Q1读命令只发一次20ns的延迟只会在最开始的时候有第一个数据的建立时间裕量是3.4nsD12的建立时间裕量是3.2ns那么后面的数据没有这个20ns后会不会经过数据量的积累后面这个建立时间裕量就不够了最终的数据就乱码了。①上述理解的读命令只发一次第一个数据有20ns延迟后续数据每个时钟沿来一个不再有20ns的延迟这个理解正确②为什么建立时间够是因为每个数据的建立时间是相对于它自己的采样沿算的不是相对于最初的读命令算的使用时间轴看每个数据的到达和采样。时刻 0ns 10ns 20ns 26.6ns 30ns 36.6ns 40ns 46.6ns 50ns 56.6ns 60ns ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ 时钟沿沿0 沿1 沿2 沿3 沿4 沿5 沿6 | | | | | | | | | | | DSP 发命令 等 等 | 采样1 | 采样2 | 采样3 | 采样4 | | | | | | | | | 存储器输出 数据1 数据2 数据3 数据4 | | | | ↓6.6ns ↓6.6ns ↓6.6ns ↓6.6ns 数据到达DSP 26.6ns 36.6ns 46.6ns 56.6ns | | | | 裕量3.4ns 裕量3.4ns 裕量3.4ns 裕量3.4ns (到30ns采样) (到40ns采样) (到50ns采样) (到60ns采样)也就是说激活之后存储器输出的第一个数据对于DSP来说是26.6s到达然后在30ns的时候开始采样建立时间为3.4nsD12建立时间是3.2ns第二个数据从存储器到DSP的引脚大约是6.6ns左右估算值因为存储器内部不需要再地址译码什么的所以说建立时间还具有与第一个数据一样的时间。根据上述分析读操作时没有问题的。4 总结综上分析数据线偏斜30mm时对于时钟为100MHz没有影响可以正常使用。
阅读完成 · 觉得有帮助?
咨询建站