DP协议学习笔记

1 术语

1.1 AUX Channel-辅助通道

DP设有专用总线,即AUX Channel,用于source和sink之间的握手。因为source是过程的控制装置,它为sink提出请求。sink与source进行通信的唯一途径是在热插拔检测(HPD)信号中发出一个脉冲。
因为AUX Channel是source / sink通信的关键部分,所以理解握手过程的核心在于记录AUX Channel通信。AUX Channel Monitor工具是所有DP协议相关工程师和设计师必须配备的设备。
辅助通道(AUX Channel)作为DP接口中一条独立的双向传输辅助通道,采用交流耦合差分传输方式,是一条双向半双工传输通道,单一方向速率仅1Mbit/s左右,用来传输设定与控制指令。
AUX(Auxiliary)的用途包括读取扩展显示识别数据(EDID),以确保DP信号的正确传输;读取显示器所支持的DP接口的信息,如主要通道的数量和DP信号的传输速率;进行各种显示组态暂存器的设定;读取显示器状态暂存器。
因此,只有先保证AUX的信号正确才能使DP接口的信号正确传输,而不同DP协议的液晶模组对AUX输出信号的幅值有不同的要求。目前,在液晶模组检测设备对液晶模组进行检测时,针对不同DP协议的液晶模组,需要设计各种AUX输出幅值相匹配的液晶模组测试装置,明显提高了液晶模组的测试成本。

1.2 DPCD

DP source和sink之间的信息传送通过对sink上的Display Port配置数据(DPCD)寄存器进行读写来实现。
通过读取DPCD中的特定寄存器,source将知晓sink的性能。在建立数据link,即link训练期间,source对DPCD进行写操作,以指明目标link的配置,另外sink也将各个link训练阶段的结果写到此处。
在数十个DPCD寄存器中调用每个位的详细含义非常具有挑战性。因此,对于DP调试程序的生产率来说重要的是,所用工具能够轻松地根据VESA DP技术规范等标准的常用术语解析AUX读写操作中的DPCD内容。

1.3 MSA和SDP

在内容传输期间,source还发送额外数据:主数据流属性(MSA)和可选的次级数据包(SDP)。
MSA是source向sink通知其提供的视频模式详细信息的途径。
SDP可包含多媒体内容的音频部分以及所谓的INFOFRAMES。INFOFRAMES是定义视频和音频结构的数据——sink进行解读的方式。

2 连接时序

在这里插入图片描述

2.1 HPD

当Sink准备好之后,HPD会给到Source,指示有Sink插入。

2.2 读取EDID

EDID用来表示Sink能够显示的画面的能力、参数等等,通过Aux通道进行读取。如图所示,其中包含显示器的制造商、EDID版本、显示器的尺寸、支持的色彩空间、分辨率等。

2.3 Link Training(DPCD)

确认链路的参数,如lane的数目、链接速率、电压摆幅、预加重、均衡,还有时钟恢复。在这里插入图片描述
时钟恢复需要一个参考时钟,发送端和接收端均有,接收端通过PLL去对齐输入的数据流中的时钟边沿。使用未加扰的特殊比特序列来优化边缘时钟校准采样。
时钟恢复的流程如下:
写lane数、写展频参数、写Training Pattern、写Swing/Pre-Em;
写完参数之后,经过100us检查时钟是否恢复完成;
时钟恢复之后,还要调整EQ;
然后检查CR(Channel EQ, Symbol locked, Lane Alignment);
如果SL未成功,Sink请求Source抬高Swing,Source会重新调整参数;
整个Training成功之后,会进入连接维持模式,如果出现Failure(如出现Clock Lock, Symbol Lock, Lane Alignment),会重新进行Training, Failure是通过HPD引脚中IRQ来实现的。
在这里插入图片描述

2.4 HDCP

如果传输的内容是受保护的,即需要通过HDCP协议进行沟通。

参考:DP/eDP协议学习--协议简介

  • 13
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一篇关于区间DP学习笔记,希望对你有所帮助。 ### 什么是区间DP 区间 DP 是一种动态规划算法,用于解决一些区间上的问题。具体来说,区间 DP 通常用于解决如下问题: - 最长公共子序列(LCS) - 最长递增子序列(LIS) - 最大子段和 - 区间选数问题 区间 DP 通常采用分治或递推的方式进行求解,具体方法取决于问题的性质。 ### 区间 DP 的递推方法 区间 DP 的递推方法通常有两种,一种是自底向上的递推方法,一种是自顶向下的记忆化搜索方法。 自底向上的递推方法通常采用二维数组或三维数组来记录状态转移方程,具体的递推方式如下: ```cpp for (int len = 2; len <= n; len++) { for (int i = 1; i <= n - len + 1; i++) { int j = i + len - 1; for (int k = i; k < j; k++) { // 状态转移方程 } } } ``` 其中,len 表示区间长度,i 和 j 分别表示区间的左右端点,k 表示区间的划分点。 自顶向下的记忆化搜索方法通常采用记忆化数组来记录状态转移方程,具体的递推方式如下: ```cpp int dp(int i, int j) { if (i == j) return 0; if (memo[i][j] != -1) return memo[i][j]; memo[i][j] = INF; for (int k = i; k < j; k++) { memo[i][j] = min(memo[i][j], dp(i, k) + dp(k + 1, j) + ...); } return memo[i][j]; } ``` 其中,i 和 j 分别表示区间的左右端点,k 表示区间的划分点,memo 数组用于记忆化状态转移方程。 ### 区间 DP 的优化 对于一些区间 DP 问题,我们可以通过一些技巧和优化来减少时间和空间的消耗。 一种常见的优化方式是状态压缩,将二维或三维数组压缩成一维数组,从而减少空间的消耗。 另一种常见的优化方式是使用滚动数组,将数组的维度从二维或三维减少到一维,从而减少时间和空间的消耗。 此外,对于一些具有特殊性质的区间 DP 问题,我们还可以使用单调队列或单调栈等数据结构来进行优化,从而减少时间和空间的消耗。 ### 总结 区间 DP 是一种常用的动态规划算法,用于解决一些区间上的问题。区间 DP 通常采用分治或递推的方式进行求解,具体方法取决于问题的性质。对于一些区间 DP 问题,我们可以通过一些技巧和优化来减少时间和空间的消耗。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值