转: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. web储存用户信息

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  2. Ruby系列教程(附ruby电子书下载)【转】

    摘要:http://www.cnblogs.com/dahuzizyd/category/97947.html 关键字:Ruby On Rails ,InstantRails,Windows,入门,教 ...

  3. 【UVA11859】Division Game(SG函数,Nim游戏)

    题意:给定一个n*m的矩阵,两个游戏者轮流操作. 每次可以选一行中的1个或多个大于1的整数,把它们中的每个数都变成它的某个真因子,不能操作的输. 问先手能否获胜 n,m<=50,2<=a[ ...

  4. FusionCharts参数说明补充

    原文发布时间为:2010-09-14 -- 来源于本人的百度文章 [由搬家工具导入] 功能特性animation                    是否动画显示数据,默认为1(True)showN ...

  5. [LeetCode] Repeated DNA Sequences hash map

    All DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, for example: "ACG ...

  6. Mysql同台机器主从配置

    Mysql主从配置 安装主Mysql 安装前的准备 检查系统是否存在mysql用户 [root@test mysql]# less /etc/passwd | grep mysql mysql:x:5 ...

  7. 用C#将XML转换成JSON

    本文旨在介绍如果通过C#将获取到的XML文档转换成对应的JSON格式字符串,然后将其输出到页面前端,以供JavaScript代码解析使用.或许你可以直接利用JavaScript代码通过Ajax的方式来 ...

  8. SQL Server的WAITFOR DELAY注入

    SQL Server的WAITFOR DELAY注入   WAITFOR是SQL Server中Transact-SQL提供的一个流程控制语句.它的作用就是等待特定时间,然后继续执行后续的语句.它包含 ...

  9. bzoj 5123: [Lydsy1712月赛]线段树的匹配

    设f[0/1][x]为区间[1,x]的根向下 不选(0)或者选(1)  的dp pair<最优值,方案数>. 可以很容易的发现总状态数就是log级别的,因为2*n 与 (2*n+1 或者 ...

  10. Java基础教程---JDK的安装和环境变量的配置

    一.Java的安装和环境变量配置 1.Java的安装: 第一步,从Oracle官网下载安装包,当然也可以从其他安全可靠的地方下载(PS:根据不同电脑系统下载相应的安装包,注意电脑的位数.如x64,x3 ...