转:DisplayPort的时钟隐藏和时钟恢复

无时钟线的视频数据传输是DP协议的一大特点,将时钟信号隐藏在数据中是传输协议的设计趋势。时钟恢复技术也是DP芯片设计的关键技术。在这说一下在发送端时钟是如何隐藏到数据中的,以及在接收端是如何将时钟恢复出来的。

这里涉及两个时钟:link_clock和stream_clock。

link_clock是dp差分线上的时钟,DP v1.3最高5.4GHz。stream_clock说的是video stream的pixel_clock。所说的时钟恢复,指的是根据link_clock恢复stream_clock。最终恢复的,还是stream_clock。

link_clock的恢复

link_clock是phy层的时钟,source端发送数据通过main_link直接发送数据而没有时钟线。因此dp协议定义了Link Training行为。在Link training 时,source在差分对上发送规整的时钟信号(实际上是clock pattern,序列0101010101),在sink端就可以以main link线上的时钟同步sink自己的时钟了。但事实上现在的时钟恢复技术已经非常成熟,由于source与sink的main link是同步的,因此即使不link training,sink也可以从其不规则的main link数据中恢复出link_clock。因此协议现在规定link training是可选的。

sink端的时钟恢复原理大概是这样的:

用以上方法即可确定link_clock。

发送端时钟(stream_clock)的隐藏:

在DP协议上采用了类似频率计的原理。在source端,首先确定一个N值,这个N值是并不是严格的多少,能达到要求的精度即可。N值的作用是使用link_clock计时N个周期,也就是N*link_clock_period这么长的时间,以这个时间作为一个门限。在这段时间内,对source端的stream_clock进行计数,得到了计数器个数M。于是,在门限时间内,共有N个link_clock和M个stream_clock。协议规定了M、N为24bit。随后M、N会被打包到Data Packet里面,在video的vertical blank期间通过main link的main stream attribute data 发送到sink端。同时,在video的有效数据时,也随VB-ID把M/N值的低8位一同发出,sink端也可通过MN值的低8位随时调整stream clock的周期。

接收端的时钟(stream_clock)恢复

上面已经介绍了sink是如何同步link_clock的,并且也通过MN的值知道了link_clock和stream_clock的关系。因此stream_clock的恢复方法很简单了,就是M/N*link_clock_frequency。

DisplayPort的时钟隐藏和时钟恢复的更多相关文章

  1. 蓝牙物理链路类型:SCO和ACL链路

    蓝牙物理链路ACL(Asynchronous Connectionless), 另外的一种链路是SCO(Synchronous Connection Oriented)主要用来传输对时间要求很高的数据 ...

  2. 【转】蓝牙物理链路类型:SCO和ACL链路

    原文网址:http://blog.chinaunix.net/uid-23193900-id-3272233.html  蓝牙物理链路ACL(Asynchronous Connectionless), ...

  3. uC/OS-II内核架构解析(2)---uC/OS-II基本介绍(转)

    1. uC/OS-II文件结构 2. uC/OS-II组成部分 uC/OS-II大致可以分成系统核心(包含任务调度).任务管理.时间管理.多任务同步与通信.内存管理.CPU移植等部分. (1) 核心部 ...

  4. React.js 小书 Lesson19 - 挂载阶段的组件生命周期(二)

    作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson19 转载请注明出处,保留原文链接和作者信息. 这一节我们来讨论一下对于一个组件来说,cons ...

  5. React学习记录

    托webpack的福,我终于可以开始写React了.==ORZ 我感觉我接近webpack工程师更进一步了哈哈哈. 以下所有内容均来自小红书,仅是我的个人记录,如想系统学习,请移步:React小书 : ...

  6. jQuery ClockPicker 圆形时钟

    ClockPicker.js是一款时钟插件,其实还可以改进,里面的分可以改成短横线. 在线实例 实例预览  jQuery ClockPicker 圆形时钟 使用方法 <div class=&qu ...

  7. PM 时钟机制

    PM 时钟机制 10.1 Minix3 PM 时钟机制概述在 MINIX3 中,除了前面所讲到的 CLOCK 时钟,在 pm 中也是维持了一个时钟, 我们暂且不分析为啥要这么做,我就分析是怎么实现这个 ...

  8. MINIX3 内核时钟分析

    MINIX3 内核时钟分析  4.1 内核时钟概要  先想想为什么 OS 需要时钟?时钟是异步的一个非常重要的标志,设想一下,如 果我们的应用程序需要在多少秒后将触发某个程序或者进程,我们该怎么做到? ...

  9. iOS 10的23个隐藏新特性-b

    上周iOS 10正式版推送后,24小时的更新率已经超过15%,实在惊人.虽然有着初期变砖.5S6卡顿.移动VoLTE无法使用.美版无信号等BUG,但不可忽视的是,iOS 10还是带来了很多从前没有的功 ...

随机推荐

  1. TCP面试题之为什么会有TIME_WAIT状态

    1.确保有足够的时间让对方收到ACK包:(一来一去刚好是2MSL) 2.避免新旧连接混淆 MSL(最大报文段的生成时间)在RFC793中规定hi2分钟,实际应用是30秒,1分钟,2分钟等:

  2. HDR 高动态范围图像

    以下来源于百度百科: 高动态范围图像(High-Dynamic Range,简称HDR),相比普通的图像,可以提供更多的动态范围和图像细节,根据不同的曝光时间的LDR(Low-Dynamic Rang ...

  3. 【HDOJ5558】Alice's Classified Message(后缀数组)

    题意:给定一个长度为n的下标从0开始的小写字母字符串,每次对于当前的i寻找一个j使得后缀i与后缀j的lcp最大,(j<i)若lcp相同则取较小的 若lcp为0则输出0与当前字符,i自增1,否则输 ...

  4. Struts2的使用注解配置Action(零配置)

    1.首先引入struts2注解的jar包:struts2-convention-plugin.jar ------------------------------第一种方式-------------- ...

  5. linux 源代码目录结构

    Linux源代码目录树结构 (2008-04-21 09:14) 分类: Linux/Unix Linux用来支持各种体系结构的源代码包含大约4500个C语言程序,存放在270个左右的子目录下,总共大 ...

  6. linux2.4内核调度

    进程调度需要兼顾3种进程:交互进程,批处理进程,实时进程,在设计一个进程调度机制时需要考虑具体问题 (1)调度时机? 答:进程在用户空间可以pause()或者让内核设置进程为睡眠状态,以此调度,调度还 ...

  7. Spring Boot学习——AOP编程的简单实现

    首先应该明白一点,AOP是一种编程范式,是一种程序设计思想,与具体的计算机编程语言无关,所以不止是Java,像.Net等其他编程语言也有AOP的实现方式.AOP的思想理念就是将通用逻辑从业务逻辑中分离 ...

  8. uva 1149:Bin Packing(贪心)

    题意:给定N物品的重量,背包容量M,一个背包最多放两个东西.问至少多少个背包. 思路:贪心,最大的和最小的放.如果这样都不行,那最大的一定孤独终生.否则,相伴而行. 代码: #include < ...

  9. failed to obtain a cell from its dataSource 问题处理

    最近在处理bugly问题的时候,总会看到回话列表有奔溃,但是由于没有啥具体的细节原因也无从下手. 只知道ConversationListViewController这个类的奔溃,报的问题是这个,也只有 ...

  10. Codeforces Gym101063 J.The Keys (2016 USP-ICMC)

    J.The Keys Out of all science labs constructed by the GEMA mission on Mars, the DSL - Dangerous Spec ...