当前位置: 首页 > news >正文

displayport-2

上一章讲述了display-port的硬件连接,今天来说说协议层

 

图中可以看到,最底层是物理层,上层是连接服务层,提供的服务包括同步数据传输服务,aux链接服务,aux设备数据传输服务,在设备端也一样,但是两者完成的功能不同,主机端服务主要用于完成数据打包,填充,数据的多路分离(也就是将一个数据包分在几个lane上传输)以及数据编码,在设备端方向完成解包,去填充,多路数据合成,反编码,以及从数据包中恢复时钟.

  在应用层,要完成视频流的管理,解码等操作和硬件连接的管理

  在终端中,在数据流之外还需要实现两个服务,一个叫DPCD,保存disport的配置数据描述当前连接的相关信息如链路是否同步等,便于连接的恢复,还有一个叫做EDID,用于将视频流表现到屏幕上

  链路层主要实现两项功能:时钟同步数据串流传输服务和链路与设备服务。其中,时钟同步数据串流传输服务保证了视频、音频数据串流透过一定的规则从主链路传输到终端,以使终端设备能够正确恢复和识别原始数据和时钟信号;链路与设备服务透过读取终端设DPCP和EDID,识别其工作能力和状态,分别在链路级和设备级配置和维护传输。DisplayPort的链路层的主要特点是微封包架构(Micro-PacketArchitecture)传输

   微封包架构

  在DisplayPort的主链路上, 所有的视频、 音频数据串流都被封包化为微封包,这些微封包称为传输单元。每一个传输单元都由64个字符组成。如果被传输的数据串流小于64个字符, DisplayPort会自动将它补足为64个。另外,在数据编码规则上,DP采用了ansi8b/10b计数,说明如下

 

另外,dp的数据传输格式为lsb frist

每一包数据指示一帧,每帧中包含有一些特殊符号,代表着数据的控制信息(行,场等)

如下图

 

另外,因为通道可配置为1 2 4 lane的,所以像素平均分配到几个通道上,分配关系如下

 

传输数据的格式如下

 

四个字节的banking_start信息

四个字节的mvid信息 标识有效视频信号的个数,为四可以保证四通道分裂的时候每个通道都有一个vid

四个字节maud信息,标识有效音频信号的位置标记

四个字节的bank_end

开始传输数据(前面的相当于一部分时钟同步)

数据传输分裂示意图

 

具体设计到不同颜色深度不同颜色格式的数据格式,请查阅协议手册

 

转载于:https://www.cnblogs.com/dengxiaojun/p/4279473.html

相关文章:

  • 他山之石——运维平台哪家强?
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • String Boot中@Controller和@RestController的区别?
  • 加入lib
  • form 表单中input 使用disable属性
  • Android 设置按钮为透明
  • 订餐小程序新获利使商家摆脱第三方平台束缚
  • AVR Option -H must not be defined more than once: -H1895 【已解决】
  • 日常问题小记(交接篇)
  • 如何简单的将pdf文件转换成html超文本标记语言
  • css知多少(5)——选择器
  • Flutter完整开发实战详解(十、 深入图片加载流程)
  • 个人支付宝/微信/云闪付收款技术总览
  • [LeetCode] Wildcard Matching
  • Linux之编程进阶(函数、trap信号捕捉、数组、字符串处理...)
  • Angular 响应式表单 基础例子
  • create-react-app做的留言板
  • ESLint简单操作
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • Mac转Windows的拯救指南
  • Magento 1.x 中文订单打印乱码
  • Vue.js 移动端适配之 vw 解决方案
  • 关于List、List?、ListObject的区别
  • 技术:超级实用的电脑小技巧
  • 开发基于以太坊智能合约的DApp
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 实现简单的正则表达式引擎
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 我与Jetbrains的这些年
  • 想写好前端,先练好内功
  • 小而合理的前端理论:rscss和rsjs
  • 怎么将电脑中的声音录制成WAV格式
  • zabbix3.2监控linux磁盘IO
  • 阿里云重庆大学大数据训练营落地分享
  • 从如何停掉 Promise 链说起
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • 说说我为什么看好Spring Cloud Alibaba
  • ​linux启动进程的方式
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (四)Linux Shell编程——输入输出重定向
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)memcache、redis缓存
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .Net MVC4 上传大文件,并保存表单
  • .NET 设计模式初探
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .NET/C# 避免调试器不小心提前计算本应延迟计算的值