FPGA HDMI IP之DDC(本质I2C协议)通道学习

news2025/1/17 22:04:07

目的:

        使用KingstVIS逻辑分析仪软件分析HDMI的DDC通道传输的SCDC数据(遵循I2C协议),同时学习了解SCDC的寄存器与I2C通信协议。

部分英文缩写:
HDMIHigh Definition Multi-media Interface高清多媒体接口
DDCDisplay Data Channel显示数据通道
SCDCStatus and Control Data Channel状态和控制数据通道

一、资源:

参看附件:FPGA HDMI IP之DDC_I2C_SCDC协议.zip

解压缩后内容如下:

667008402f81431b8ce5cb170d4fb103.png

1.1 HDMI_2.0_协议.pdf

SCDC学习内容参考HDMI2.0第10章,如下图:

3aa8c10ce3284c8d8246b42ca1728c6f.png

 

1.2 HDMI_DDC协议解读.kvdat

附件HDMI_DDC协议解读.kvdat是通过逻辑分析仪抓取的一次HDMI DDC通道通信的数据,仅供学习HDMI SCDC使用。

全部内容如下图所示:

8ecfb0beb28145c3b6fe47c23201ae97.png

1.3 I2C协议标准中文版

f339170a39c44990834f0aaedb4e3ecd.png

1.4 KingstVIS逻辑分析仪软件:

官网:逻辑分析仪软件 KingstVIS

c370a5ccb43b4179b46169c6c40c737b.png

用于打开HDMI_DDC协议解读.kvdat数据进行分析学习。

二、DDC通道遵循的I2C协议

2.1 I2C总体特征

2.1.1 I2C通信速率

总线上的数据传输速率有三个标准:标准模式、快速模式与高速模式。

I2C总线模式通信速率
标准模式100kbit/s
快速模式400kbit/s
高速模式3.4Mbit/s

2.1.2 I2C总线能支持的IC接口数量

注意:

         连接到总线的I2C接口数量只由总线电容是400pF的限制决定

2.1.3 其他补充

  • SDA和SCL都是双向线路
  • SDA和SCL都通过一个电流源或上拉电阻连接到正的电源电压,因此当总线空闲时这两条线路都是高电平
  • 连接到总线的器件输出级必须是漏极开路或集电极开路才能执行线与的功能

2.2 起始和停止条件

a79645a189ed40d5834c2c8601d027f4.png

如上图所示,可以看到起始条件和停止条件:

起始条件:

        SCL高电平期间SDA由高电平向低电平切换

停止条件:

        SCL高电平期间SDA由低电平向高电平切换

2.3 传输数据

 

2.3.1 传输SDA数据的有效性

c8c1f0f0194a4cc5a621f6d9df7e558c.png

SDA数据的传输需要遵循两个基本约束:

SDA 必须在SCL的高电平周期保持稳定

SDA只能在 SCL的低电平周期进行高低电平转换

2.3.2 字节格式

  • 发送到 SDA 线上的每个字节必须为 8 位;
  • 首先传输的是数据的最高位MSB;
  • 每次传输发送的字节数量不受限制;
  • 每个字节后必须跟一个响应位;

2.3.3 响应ACK

  • 响应ACK时钟脉冲由主机Master产生;
  • 在响应ACK的时钟脉冲高电平期间发送器(Master/Slave都可以是发送器)释放 SDA 线为高电平
  • 在响应ACK的时钟脉冲高电平期间接收器必须将 SDA 线拉低,使SDA在这个时应的时钟脉冲的高电平期间保持稳定的低电平;
  • 非响应NACK就是在响应的时钟脉冲高电平期间接收器没有将 SDA 线拉低

63142f8873d1405e921ae59e3ce5a74b.png

三、DDC数据传输协议:

HDMI2.0明确规定从机(Slave)地址为0xA8/0xA9:

12480cf00daa403f90d2a0db25a3c431.png

十六进制二进制意思
0xA81010 1000Master写
0xA91010 1001Master读

数据/地址Byte是左高右低,发送顺序是高位先发送:

       前7bit对应Slave地址位为:0x54=0b101_0100

       第8bit为0,代表Master接下来要写数据:0xA8=0b1010_1000

       第8bit为1,代表Master接下来要读数据:0xA9=0b1010_1001

3.1 SCDC Update Read模式

SCDC Update Read作用:在Source读取更新标志时最小化消息的长度。

In this mode, the 8-bit I 2 C address 0xA9 is used without a repeated Start and reads commence from offset 0x10, corresponding of the UPDATE_0 sub-address.

暂时没用到~

9a232acccdd043fdbba86ada3f55e55a.png

3.2 SCDC Combined Format Read模式

SCDC Combined Format Read模式支持连续读多个Bytes数据。

协议如下:

494345728c214357bd09a3f294c3c16f.png

Master端使用组合格式读取,先是0xA8表示写入接下来的一个子地址(表示偏移量),然后是重复START条件,最后0xA9表示读取接下来的数据,可以是n个。

所有实现SCDC的HDMI sink都应该支持多字节读取,并自动增加偏移量。

3.3 SCDC Write模式

SCDC Write模式支持写入多Byte数据。

9c394f17d60c4670bdf2c3ee0826aa41.png

Master端写模式,先是0xA8表示写入接下来的一个子地址(表示偏移量),接着读取接下来的n个数据,并自动增加偏移量。

四、SCDC Channel Structure通道结构-寄存器地址与功能

参看HDMI2.0协议的10.4.1 Status and Control Data Channel Structure节:

bdaab479eb96436c95efa3d7f67c78f4.png

Reserved默认为0x00.

各寄存器的功能查看HDMI2.0协议。

 

五、分析HDMI_DDC协议解读.kvdat文件

5.1 使用KingstVIS软件打开DDC数据附件

使用KingstVIS打开HDMI_DDC协议解读.kvdat文件后使用I2C解析器设置如下:

b0972bd294a548adadc3695559081a86.png

I2C解析器设置:

SDA:2-“同道 2”

SCL:3-“通道 3”

地址显示格式:8-bit,包含读写位

数据导出格式:默认Packets

并截取HDMI_DDC协议解读.kvdat开始通信部分数据分析:

d13a74feb7524fd1981d04c286910222.png

5.2 查看时钟频率

首先截取10个周期clk查看时钟频率约为95.2KHz,是I2C的标准模式(100KHz)。

0d8109d063b94f188bc7a3aa2775900c.png

2060d62cd4f0456da74a58e7fbe1dcea.png

5.3 数据分析

这里仅分析SCDC Write模式与SCDC Combined Format模式,SCDC Update Read模式本质一样。

5.3.1 SCDC Write模式数据分析

 

af101018ab044318a6e327e7a7af1ff7.png

上图通过逻辑分析仪看出是:

0xA8:Master写

0x20:子地址,通过查HDMI2.0规格书可以知道0x20是TMDS配置寄存器;

OffsetR/W ?Name
0x20R/W均可TMDS_Config

0x03:要写进到Slave的寄存器0x20的数据Data为0x03=0b0000_0011.

a44bdf4f1e114f34ae6f55140382fe93.png

Scrambling_Enable(Bit 1)置1;

TMDS_Bit_Clock_Ratio(Bit 0)置1;

使能扰码并设置每个TMDS Clock周期与TMDS Bit的比率为40:1。

5.3.2 SCDC Combined Format模式数据分析

94873c51cc63411eb123c81659f7c4a2.png

0xA8:Master写

0x40:子地址,通过查HDMI2.0规格书可以知道0x40是Status_Flags_0标志寄存器;

OffsetR/W ?Name
0x40仅支持RStatus_Flags_0

0xA9:Master读

0x00:Master从Slave的寄存器0x40读到的数据Data为0x00=0b0000_0000.

c81fd45431e24abfb0ac51a3c4da2ff9.png

该寄存器用于检测Slave端是否成功识别Clock以及3个数据通道是否成功Lock住,很显然,时钟与数据都没lock 住,也就是通信不成功。

其他HDMI_DDC协议解读.kvdat数据解析同上。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1416603.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

css文本水波效果

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>文本水波效果</title><style>* {mar…

网际协议 IP、IP地址

目录 网际协议 IP 虚拟互连网络 使用中间设备进行互连 IP 地址 IP 地址及其表示方法 ​编辑 IP 地址采用 2 级结构 IP 地址的编址方法 分类的 IP 地址 各类 IP 地址的指派范围 一般不使用的特殊的 IP 地址 IPv4网络中的地址类型 分类的 IP 地址的优点和缺点 划分子网…

unity学习笔记----游戏练习05

一、阳光的收集和搜集动画开发 1.收集阳光的思路&#xff1a;当鼠标点击到阳光的时候&#xff0c;就可以进行收集了。可以通过为添加一个碰撞器来检测Circle Collider 2D 编写脚本&#xff1a; 在SunManager中写一个增加阳光的方法 //增加阳光 public void AddSubSun(in…

C++笔记之奇异递归模板模式CRTP(Curiously Recurring Template Pattern)和静态多态

C++笔记之奇异递归模板模式CRTP(Curiously Recurring Template Pattern)和静态多态 —— 杭州 2024-01-28 code review! 文章目录 C++笔记之奇异递归模板模式CRTP(Curiously Recurring Template Pattern)和静态多态一.CRTP二.CRTP 的基本特征表现:基类是一个模板类;派生…

(免费领源码)java#Springboot#mysql旅游景点订票系统68524-计算机毕业设计项目选题推荐

摘 要 科技进步的飞速发展引起人们日常生活的巨大变化&#xff0c;电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流&#xff0c;人类发展的历史正进入一个新时代。在现实运用中&#xff0c;应用软件的工作…

java eazyexcel 实现excel的动态多级联动下拉列表(2)使用MATCH+OFFSET函数

原理 同样是将数据源放到一个新建的隐藏的sheet中&#xff0c;第一行是第一个列表的数据&#xff0c;第二行是每一个有下级菜单的菜单&#xff0c;他下面的行就是他下级菜单的每一值使用MATCH函数从第二行找到上级菜单对应的列根据OFFSET函数从2中获取的列&#xff0c;取得下级…

Linux 系统相关的命令

参考资料 Linux之chmod使用【linux】chmod命令详细用法 目录 一. 系统用户相关1.1 查看当前访问的主机和用户1.2 切换用户1.2.1 设置root用户密码1.2.2 普通用户和root用户切换 1.4 系统状态1.4.1 vmstat 查看当前系统的状态1.4.2 history 查看系统中输入过的命令 二. 系统文件…

【Demo】基于CharacterController组件的角色控制

项目介绍 项目名称&#xff1a;Demo1 项目版本&#xff1a;1.0 游戏引擎&#xff1a;Unity2020.3.26f1c1 IDE&#xff1a;Visual Studio Code 关键词&#xff1a;Unity3D&#xff0c;CharacterController组件&#xff0c;角色控制&#xff0c;自定义按键&#xff0c;Scrip…

Spring 的存储和获取Bean

文章目录 获取 Spring 上下文对象的方式存储 Bean 对象的方式类注解配置扫描路径&#xff08;必须&#xff09;Controller&#xff08;控制器存储&#xff09;Service&#xff08;服务&#xff09;Repository&#xff08;持久层&#xff09;Component&#xff08;工具&#xff…

༺༽༾ཊ—Unity之-04-工厂方法模式—ཏ༿༼༻

首先创建一个项目&#xff0c; 在这个初始界面我们需要做一些准备工作&#xff0c; 建基础通用文件夹&#xff0c; 创建一个Plane 重置后 缩放100倍 加一个颜色&#xff0c; 任务&#xff1a;使用工厂方法模式 创建 飞船模型&#xff0c; 首先资源商店下载飞船模型&#xff0c…

【程序员英语】【美语从头学】初级篇(入门)(笔记)Lesson10(电话会话Ⅱ)

《美语从头学初级入门篇》 注意&#xff1a;被 删除线 划掉的不一定不正确&#xff0c;只是不是标准答案。 文章目录 Lesson 10 Telephone Conversation Ⅱ 电话会话&#xff08;二&#xff09;会话A会话B笔记I would like to do&#xff08;Id like to to do&#xff09;我想…

颠覆半导体:煤炭变身新材料,或将现身下一代CPU

《IEEE Spectrum》报道&#xff0c;一组研究人员正在探索将煤炭作为下一代二维晶体管绝缘材料的潜在替代品&#xff0c;以取代现有的金属氧化物薄膜。如果煤炭能够成功替代现代金属氧化物晶体管&#xff0c;那么这对于半导体行业来说将具有重大意义。 半导体器件正常工作需要依…

【数据结构和算法】--- 二叉树(5)--二叉树OJ题

目录 一、二叉树OJ题1.1 单值二叉树1.2 检查两颗树是否相同1.3 对称二叉树1.4 另一颗树的子树1.5 平衡二叉树 二、概念选择题 一、二叉树OJ题 1.1 单值二叉树 题目描述&#xff1a; 如果二叉树每个节点都具有相同的值&#xff0c;那么该二叉树就是单值二叉树。只有给定的树是…

AIGC知识速递——Google的Bert模型是如何fine-tuning的?

Look&#xff01;&#x1f440;我们的大模型商业化落地产品&#x1f4d6;更多AI资讯请&#x1f449;&#x1f3fe;关注Free三天集训营助教在线为您火热答疑&#x1f469;&#x1f3fc;‍&#x1f3eb; 选择合适的预训练模型&#xff1a; 从预训练的BERT模型开始&#xff0c;例如…

解决PyCharm的Terminal终端conda环境默认为base无法切换的问题

问题描述 在使用PyCharm的Terminal终端时&#xff0c;打开的默认环境为base。 在使用切换命令时&#xff0c;依旧无法解决。 解决方法 1、输入以下命令以查看conda的配置信息&#xff1a; conda config --show2、在输出中找到 auto_activate_base 的行&#xff0c;发现被…

【Linux 基础】常用基础指令(上)

文章目录 一、 创建新用户并设置密码二、ls指令ls指令基本概念ls指令的简写操作 三、pwd指令四、cd指令五、touch指令六、rm指令七、mkdir指令八、rmdir 指令 一、 创建新用户并设置密码 ls /home —— 查看存在多少用户 whoami —— 查看当前用户名 adduser 用户名 —— 创建新…

防御保护--第一次实验

目录 一&#xff0c;vlan的划分及在防火墙上创建单臂路由 二&#xff0c;创建安全区域 三&#xff0c;配置安全策略 四&#xff0c;配置认证策略 五&#xff0c;配置NAT策略 1.将内网中各个接口能够ping通自己的网关 2..生产区在工作时间内可以访问服务器区&#xff0c;仅…

解密人工智能:探索机器学习奥秘

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;网络奇遇记、数据结构 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. 机器学习的定义二. 机器学习的发展历程三. 机器学习的原理四. 机器学习的分类…

探索Pyecharts之美-绘制多彩旭日图的艺术与技巧【第37篇—python:旭日图】

文章目录 引言准备工作绘制基本旭日图调整颜色和样式添加交互功能定制标签和标签格式嵌套层级数据高级样式与自定义进阶主题&#xff1a;动态旭日图数据源扩展&#xff1a;外部JSON文件总结 引言 数据可视化在现代编程中扮演着重要的角色&#xff0c;而Pyecharts是Python中一个…

算法学习之位运算

一、作用 在复杂问题中经常可以作为工具让代码更加优雅。 二、知识储备基础 “~”&#xff1a;取反符 0->1, 1->0 三、常见的两种操作 1.n的二进制表示中第k位数字是几&#xff1f; (1)原理 先右移操作&#xff0c;再与操作。 &#xff08;2&#xff09;代码实现…