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

概念流水账:PHY、PCS、PRBS

最进带的一个小兄弟做接口测试,负责HDMI。

师傅这个PHY指的是什么?
怎么凯哥还在问我PCS正常不?
这两个有什么关系吗?

心中难免有点小小嘲弄,竟然对一些很基础的问题和概念竟然不知道。

但是我立马纠正了自己的想法,因为很久之前我刚刚入职工作接触也是这样,但是随着时间的推移,不断的在一个领域耳濡目染,一定会有所积累,所以不要泄气,加油呀!

小奕,这是哥专门给你的写的。

我记得当年面试的适合,很喜欢考计算机网络,其中计算机网络有一个OSI七层协议模型,很喜欢考这个。

HDMI协议栈分为四层,与TCP/IP模型类似但针对音视频传输优化

其中当时考的关键点在传输层和网络层。当时没有太留意PHY层,其实这个PHY层和HDMI的PHY是一样的。PHY在核心功能定位上存在共性(均属于物理层信号处理),只不过应用场景和所属协议标准不一样。

与以太网PHY相比,HDMI PHY更强调​​实时性​​和​​信号保真度​​,而弱化了网络协议所需的​​错误重传​​和​​流量控制​​机制。在SoC设计中,HDMI PHY通常作为独立IP核实现,需通过HDMI CTS(Compliance Test Specification)认证。

到这里你的认识是PHY就是平时的HDMI的线的接口。

然后实际上PHY是一个芯片,通过这颗芯片把来自上层的数据进行转换成相应的信号,通过物理链接的cable线缆,传出去或者接受转换送给上层。

下面展示一下主要工作:


HDMI PHY架构(以HDMI 2.1为例)
┌───────────────────────────────┐
│         视频/音频处理引擎         │
│  - 色彩空间转换(RGB/YUV444/422)│
│  - HDR元数据封装(ST 2084/2086) │
└──────────────┬──────────────┘│ TMDS/FRL协议封装▼
┌───────────────────────────────┐
│         传输通道控制模块          │
│  - 通道分配(3数据+1时钟通道)   │
│  - 链路训练(Link Training)     │
└──────────────┬──────────────┘│ 差分信号生成▼
┌───────────────────────────────┐
│        信号调制与驱动模块         │
│  - TMDS编码(8b/10b)            │
│  - FRL调制(16/32/48Gbps模式)   │
│  - 预加重(Pre-emphasis)        │
└──────────────┬──────────────┘│ 物理介质接口▼[HDMI线缆]

那是怎么和上层(数据链路层)对接的呢?

怎么去拿到数据的。这里Data Link leyer和MAC有点类似。

HDMI控制架构
┌─────────────┐       ┌─────────────┐
│  视频源处理器  │       │  HDMI MAC层  │
│  - GPU渲染    │◄----►│  - HDCP引擎  │
│  - 音频DSP    │  DDC  │  - EDID管理  │
└───────┬───────┘       └───────┬───────┘│ TMDS/FRL数据流          │ I2C控制▼                        ▼
┌───────────────────────────────┐
│          HDMI PHY芯片           │
└───────────────────────────────┘

这个时候回看一下HDMI协议的架构,每层对应的应用。

我知道你还有点疑惑?怎么讲了这么久的PHY,不见PCS,这是PHY的晚辈还是同辈?

在HDMI协议架构中,​​PCS(物理编码子层)​​与​​PHY(物理层设备)​​是包含与被包含的层级关系。PCS作为PHY内部的核心功能模块,承担着数据编码与协议适配的关键职责。

HDMI的物理层(PHY)是一个复合功能模块,内部包含多个子层:

  • ​​PCS(Physical Coding Sublayer)​​:负责数据编码与协议适配(如TMDS/FRL编码)
  • ​​PMA(Physical Medium Attachment)​​:处理并串转换与时钟恢复
  • PMD(Physical Medium Dependent)​​:驱动物理介质(如线缆驱动与信号整形)

应用层数据 → PCS(编码) → PMA(并串转换) → PMD(信号驱动) → 物理介质

简单总结一下PCS的专项职能​​

  • ​​TMDS编码​​:将8bit像素数据转换为10bit传输字符,通过最小跳变算法优化信号完整性
  • ​​FRL编码(HDMI 2.1)​​:采用16b/18b编码,提升有效带宽至88.9%
  • 协议适配​​:根据EDID协商结果动态切换编码模式(如DVI兼容模式)

那经常说的TMDS和FRL是什么东西?我HDMI都上屏了,怎么凯哥还老问我测没测FRL?他说以前咱们的老芯片没有FRL。

这就是两个传输编码协议,FRL是新出来的协议,与时俱进。详细瞅瞅下面的表:

HDMI2.1有两套协议,分别为TMDS协议和FRL协议。而HDMI2.0已经被取消了,其实HDMI2.0并没有消失,只是换了个名称,其中HDMI2.1 TMDS协议就是取代了原HDMI2.0协议,唯一的区别是多了一个eARC(增强型音频回传通道);HDMI2.1 FRL则是原来的HDMI2.1标准,支持48Gbps的带宽。
在HDMI的规则,只有支持eARC(增强型音频回传通道)的才能成功更名成为HDMI2.1 TMDS,不支持eARC的就要降级为HDMI1.4b。但就市场行情来看,仍会有部分不支持eARC的电视产品强行升级为HDMI2.1标识,因此购买时需注意分辨,在选购HDMI2.1的产品时,一定要注意HDMI2.1采用的哪种协议模式,只有HDMI FRL才是标准的HDMI2.1接口。

那这一部分的逻辑在哪呢?前面刚刚才说的,TMDS​​和​​FRL​​的实现主要分布在物理层(PHY)的​​PCS(物理编码子层)​​与​​PMA(物理介质附加子层)​​中,两者通过协同工作完成信号编解码与传输适配。

最后还有一个问题?凯哥让我测试的时候,让我打一下prbs,这是干嘛的啊?

哈哈哈,记住​​“甩锅神器”——快速分清是硬件背锅,还是软件背锅!​​

硬件工程师和软件工程师互相扯皮时,PRBS测试结果就是证据!

  • 如果PRBS能跑通(误码率低),说明HDMI的​​物理层硬件正常​​(芯片、电路、线缆没问题),问题出在​​协议层​​(比如EDID没读到分辨率、HDCP认证失败)。
  • 如果PRBS跑不通,直接锁定​​硬件问题​​,比如:
    • HDMI线质量差(换条超高速认证线试试)
    • 芯片焊接虚了(用热风枪补焊PHY芯片)
    • PCB阻抗不匹配(检查差分线是否100Ω±10%)

凯哥这是让你绕开软件和协议,直接用“乱码”测试硬件电路能不能跑通!​​
→ 如果硬件电路连“乱码”都传不过去,说明硬件肯定有问题,赶紧查电路!
→ 如果“乱码”能传过去,但正常视频不行,说明软件配置有问题,去查协议!

那打prbs我也没仪器?这玩意是芯片的功能?

小伙子,​​HDMI PHY芯片​​ 其实已经内置了一些自检功能,可以通过芯片寄存器配置实现“穷人版PRBS测试啊!就像咱们平时验证视频通路的自建colorbar!

大部分HDMI PHY芯片自带测试模式,只需配置寄存器。反正咱们有。

也有一些原始的方法:

  • ​​替换法​​:换一根确认好的HDMI线,如果问题解决 → 原线坏了。
  • ​​摸芯片温度​​:PHY芯片工作时会微热,如果冰凉 → 供电可能有问题。
  • 听声音​​:把HDMI线靠近收音机,PRBS模式下会有“嘶嘶”高频噪声(无信号时安静)。


以上很多点,展开都需要讲很久,咱们先忍住,后续有需要再深入感兴趣的点。

好了好了,我得去运动了。

小奕加油,小伙子很好学,未来是你的,不过每天别加班这么晚,多回家陪陪女朋友。生活很重要。

师傅你是没女朋友,所以下班不回家才去健身?

。。。你不管。

http://www.xdnf.cn/news/9360.html

相关文章:

  • Vue 项目中 Sass 与 Less 的对比
  • 社区造数服务接入MCP|得物技术
  • 中间件redis 功能篇 过期淘汰策略和内存淘汰策略 力扣例题实现LRU
  • UE5 编辑器工具
  • [原创](现代Delphi 12指南):[macOS 64bit App开发]: 按钮大小设置的小技巧
  • WHAT - 学习 WebSocket 实时 Web 开发
  • SQL中的锁机制
  • LabVIEW 中不同 VI 间图像传递方法解析
  • 数据结构-排序(1)
  • 基于seal密码库的格加密算法的原理、实现与应用
  • 6个月Python学习计划 Day 7 - 复盘 + 测试日
  • 压缩包方式在Linux和Windows下安装mongodb
  • zynq7020 shm共享内存和OCM
  • Rust 和 Python 如何混合使用
  • 面试题——计算机网络:HTTP和HTTPS的区别?
  • MySQL问题:MVCC是什么?
  • 从解决一个分享图片生成的历史bug出发,详解LayoutInflater和View.post的工作原理
  • java 递归地复制文件夹及其所有子文件夹和文件
  • LeetCode-栈-每日温度
  • 《Discuz! X3.5开发从入门到生态共建》第1章 Discuz! 的前世今生-优雅草卓伊凡
  • 界面控件DevExpress WinForms v24.2新版亮点:富文本编辑器功能全新升级
  • Java五种方法批量处理List元素全解
  • 【操作系统】内核态、用户态
  • [Python] 避免 PyPDF2 写入 PDF 出现黑框问题:基于语言自动匹配系统字体的解决方案
  • CS144 - LAB0
  • 文本编辑器vi的使用
  • SECS/GEM协议中Report ID、SV ID、CE ID与S2F33/S2F35/S2F37指令的关系及配置示例
  • 专业库室联管联控系统|门禁联管联控系统
  • Browser-use快速了解
  • 流光溢彩的数字长河:Linux基础IO,文件系统的诗意漫游