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的时钟隐藏和时钟恢复的更多相关文章
- 蓝牙物理链路类型:SCO和ACL链路
蓝牙物理链路ACL(Asynchronous Connectionless), 另外的一种链路是SCO(Synchronous Connection Oriented)主要用来传输对时间要求很高的数据 ...
- 【转】蓝牙物理链路类型:SCO和ACL链路
原文网址:http://blog.chinaunix.net/uid-23193900-id-3272233.html 蓝牙物理链路ACL(Asynchronous Connectionless), ...
- uC/OS-II内核架构解析(2)---uC/OS-II基本介绍(转)
1. uC/OS-II文件结构 2. uC/OS-II组成部分 uC/OS-II大致可以分成系统核心(包含任务调度).任务管理.时间管理.多任务同步与通信.内存管理.CPU移植等部分. (1) 核心部 ...
- React.js 小书 Lesson19 - 挂载阶段的组件生命周期(二)
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson19 转载请注明出处,保留原文链接和作者信息. 这一节我们来讨论一下对于一个组件来说,cons ...
- React学习记录
托webpack的福,我终于可以开始写React了.==ORZ 我感觉我接近webpack工程师更进一步了哈哈哈. 以下所有内容均来自小红书,仅是我的个人记录,如想系统学习,请移步:React小书 : ...
- jQuery ClockPicker 圆形时钟
ClockPicker.js是一款时钟插件,其实还可以改进,里面的分可以改成短横线. 在线实例 实例预览 jQuery ClockPicker 圆形时钟 使用方法 <div class=&qu ...
- PM 时钟机制
PM 时钟机制 10.1 Minix3 PM 时钟机制概述在 MINIX3 中,除了前面所讲到的 CLOCK 时钟,在 pm 中也是维持了一个时钟, 我们暂且不分析为啥要这么做,我就分析是怎么实现这个 ...
- MINIX3 内核时钟分析
MINIX3 内核时钟分析 4.1 内核时钟概要 先想想为什么 OS 需要时钟?时钟是异步的一个非常重要的标志,设想一下,如 果我们的应用程序需要在多少秒后将触发某个程序或者进程,我们该怎么做到? ...
- iOS 10的23个隐藏新特性-b
上周iOS 10正式版推送后,24小时的更新率已经超过15%,实在惊人.虽然有着初期变砖.5S6卡顿.移动VoLTE无法使用.美版无信号等BUG,但不可忽视的是,iOS 10还是带来了很多从前没有的功 ...
随机推荐
- BestCoder 2nd Anniversary/HDU 5719 姿势
Arrange Accepts: 221 Submissions: 1401 Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 262144/2 ...
- hdu 1503 最长公共子序列
/* 给两个串a,b.输出一个最短的串(含等于a的子序列且含等于b的子序列) */ #include <iostream> #include <cstdio> #include ...
- 一个request,但是controller被执行了多次的问题
原文发布时间为:2011-09-25 -- 来源于本人的百度文章 [由搬家工具导入] 这两天竟然被一个bug整疯了,因为项目调试的时候,通过 sql profiler 查看,竟然执行了多次的相同 查询 ...
- 用正则表达式模仿Mustache插件的功能
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- 【Linux】可重入函数和线程安全的区别与联系【转】
转自:http://blog.csdn.net/scenlyf/article/details/52074444 版权声明:本文为博主原创文章,未经博主允许不得转载. *****可重入函数 函数被不同 ...
- Linux Shell 文本处理工具集锦【转】
转自:http://www.cnblogs.com/me115/p/3427319.html 内容目录: find 文件查找 grep 文本搜索 xargs 命令行参数转换 sort 排序 uniq ...
- Android关于版本更新下载安装之踩坑记录(针对7.0以上)
最近刚刚把古老的项目targetSdk版本升级到26,升级之前是19(非常非常古老了).那么升级后一些问题开始出现. Android 8.0 (Android O)为了针对一些流氓软件引导用户安装其他 ...
- (5)centos图形界面安装
1.登录 2.先安装MATE可视化桌面 yum groups install "MATE Desktop" 选择y 3.安装X Window System:图形接口 yum gro ...
- superagent-promise
var Promise = this.Promise || require('promise'); var agent = require('superagent-promise')(require( ...
- commons-lang3-StringUtils
字符串工具类 abbreviate(String str, int maxWidth) 返回一个指定长度加省略号的字符串,maxWidth必须大于3 StringUtils.abbreviate( ...