转: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. vue.js单文件组件中非父子组件的传值

    最近在研究vue.js,总体来说还算可以,但是在web开发群里有一些人问在单文件组件开发模式中非父子组件如何传值的问题,今天在这里讲讲,希望对大家有所帮助! 在官网api中的这段讲解很少,也很模糊:官 ...

  2. 【08】Vue 之 vue-cli

    8.1. 前置知识学习 npm 学习 官方文档 推荐资料 npm入门 npm介绍 需要了解的知识点 package.json 文件相关配置选项 npm 本地安装.全局安装.本地开发安装等区别及相关命令 ...

  3. IDA 调试 Android

    最近都在学一些反编译安卓相关的东西,其实网上有很多教程关于用 IDA 调试 Android 的过程,主要记录一下我遇到的坑 首先 Android手机要是root过的 还要注意的一点是apk中的 And ...

  4. StringBuilder与StringBuffer

    转:http://www.cnblogs.com/pepcod/archive/2013/02/16/2913557.html JAVA中用于处理字符串常用的有三个类: java.lang.Strin ...

  5. 美食节(bzoj 2879)

    Description CZ市为了欢迎全国各地的同学,特地举办了一场盛大的美食节.作为一个喜欢尝鲜的美食客,小M自然不愿意错过这场盛宴.他很快就尝遍了美食节所有的美食.然而,尝鲜的欲望是难以满足的.尽 ...

  6. C#去除字符串的最后一个字符 与 JavaScript去除最后一个字符

    原文发布时间为:2009-04-29 -- 来源于本人的百度文章 [由搬家工具导入] 例子: C#.NET中去掉字符串的最后一个逗号 字符串为 (a,b,c,)最后一个逗号即c后面的逗号 答: &qu ...

  7. Sql Server 2005 mdf、ldf文件无法复制问题

    [问题原因]Sql Server服务只要启动就一直占用,故无法进行编辑操作. [解决办法 - 1]: 1)在开始-运行对话框中输入"services.msc”,显示如下界面: 2)关闭如上选 ...

  8. Android Bluetooth抓包

    1. 前提 这里介绍一种在Android上捕获蓝牙数据包的方法 首先你要有一部Android手机:然后你的Android系统版本要在4.4及以上 我没有做过Android开发,不清楚开发者们是如何抓蓝 ...

  9. Java学习之路(3)

    JKD的安装和配置: 一.适合超级菜鸟的,不用设置系统路径,不用到处找插件 (1)如果你的系统是windows或linux,根据系统的不同(32位和64位之分),先到www.baidu.com搜索jd ...

  10. arduino ide的串口权限解决

    刚刚到手一个Arduino uno R3的板子,windows下arduino IDE的串口正常使用,linux下却出现权限问题,解决方案如下:(以下操作使用超级用户) 1.查看设备所在的组ls -l ...