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

目的:

        使用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.mzph.cn/news/651854.shtml

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

相关文章

一文讲述SASS简介和使用方法

一、什么是Sass Sass (Syntactically Awesome StyleSheets)是css的一个扩展开发工具,它允许你使用变量、条件语句等,使开发更简单可维护。这里是官方文档。 二、基本语法 1)变量 sass的变量名必须是一个$符号开头,后面紧跟变量名…

优雅的管理你的docker容器【Docker Swarm篇】

如果docker容器较多时,可以使用docker-compose管理自己的容器组,但是随着容器增多,docker-compose也会变的复杂起来,如果使用k8s,又会比较重,因为k8s集群的最小运行内存为2GB,所以在这中间&…

【Spring Boot 3】【@Scheduled】动态新增定时任务

【Spring Boot 3】【@Scheduled】动态新增定时任务 背景介绍开发环境开发步骤及源码工程目录结构总结背景 软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历中,每次学习新技…

深度学习 | 基于 CPU 的 tensorflow + keras + python 版本对照及环境安装

Hi,大家好,我是源于花海。要让一个基于 CPU 的 tensorflow 和 keras 开发的深度学习模型正确运行起来,配置环境是个重要的问题,本文介绍了 tensorflow 和 keras 和对应的 python 版本以及安装环境的部分流程。 目录 一、tensorfl…

Redis核心技术与实战【学习笔记】 - 3.Redis服务高可靠

1.数据同步:主从库如何实现数据一致? 前面我们学习了 AOF 和 RDB,如果 Redis 发生了宕机,它们可以分别通过回放日志和重新读入 RDB 文件的方式恢复数据,从而保证尽量较少丢失数据,提升可靠性。 不过&…

B.修改数列

给定一个长度为 n 的正整数数列 a1,a2,…,an。 你可以对其中任意个(可以是 0 个)元素进行修改。 但是,每个元素最多只能修改一次,每次修改:要么令其加 1,要么令其减 1。 请问,至少需要修改多少个…

RTP工具改进(五)--使用qt

前篇 第四篇 RTP工具改进(四) - rtmp协议推送 前面使用的工具一直为mfc,今天将使用qt 来做界面,使用qt 来进行程序和协议的编写,qt部分目前还不包括rtp ps流和rtmp,暂时只有rtp 直接传输,关于rtmp协议和ps流协议&…

ubuntu和树莓派下vim插件管理

目录 管理方式选择vim手动方式管理插件延迟加载加载插件帮助文档 make管理vim插件1.安装make和git2.获取vim配置仓库3.准备工作4.安装相关软件5.安装并升级vim插件6.安装vim配置相关文件7.vim恢复到初始状态 管理方式选择 插件管理器vim-plug,Vundle等都依靠github,在国内由于…

在 VUE 项目中,使用 Axios 请求数据时,提示跨域,该怎么解决?

在 VUE 项目开发时,遇到个问题,正常设置使用 Axios 库请求数据时,报错提示跨域问题。 那在生产坏境下,该去怎么解决呢? 其可以通过以下几种方式去尝试解决: 1、设置允许跨域请求的响应头 1.1 在响应头中…

STM32实现软件IIC协议操作OLED显示屏(2)

时间记录:2024/1/27 一、OLED相关介绍 (1)显示分辨率128*64点阵 (2)IIC作为从机的地址0x78 (3)操作步骤:主机先发送IIC起始信号S,然后发送OLED的地址0x78,然…

机器学习的数据库积累........

https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/tf1_detection_zoo.md ​​​​​​​ 另一个database:(网址:Object Detection Made Easy with TensorFlow Hub: Tutorial) Object Detection Made Easy with Ten…

VR拍摄+制作

1.VR制作需要的图片宽高是2:1,需要360✖️180的图片,拍摄设备主要有两种: 1)通过鱼眼相机拍摄,拍摄一组图片,然后通过PTGui来合成(拍摄复杂) 2)全景相机,一键拍摄直接就能合成需要的…

【动态规划】【逆向思考】【C++算法】960. 删列造序 III

作者推荐 【动态规划】【map】【C算法】1289. 下降路径最小和 II 本文涉及知识点 动态规划汇总 LeetCode960. 删列造序 III 给定由 n 个小写字母字符串组成的数组 strs ,其中每个字符串长度相等。 选取一个删除索引序列,对于 strs 中的每个字符串&a…

群晖nas 中的 VideoStation 关于豆瓣刮刮和TheMovieDb无法链接问题

网上各种教学文档很多,但是都有各种的坑,这偏文章仅对坑进行修正,具体可以参考其他文章,不同点以此文章为准。 第一部分,豆瓣刮刮 是 VideoStation的最佳搭配,汉字匹配,速度肯定是TheMovieDb无…

贾玲新片刚刚发出紧急声明,是什么情况。

♥ 为方便您进行讨论和分享,同时也为能带给您不一样的参与感。请您在阅读本文之前,点击一下“关注”,非常感谢您的支持! 文 |猴哥聊娱乐 编 辑|徐 婷 校 对|侯欢庭 1月22日,一则“多位明星参演的电影涉影视投资诈骗…

【Java 设计模式】行为型之访问者模式

文章目录 1. 定义2. 应用场景3. 代码实现结语 访问者模式(Visitor Pattern)是一种行为型设计模式,用于在不改变被访问元素的类的前提下定义对这些元素的新操作。访问者模式将数据结构与作用于结构上的操作解耦,使得操作集合可以灵…

[晓理紫]每日论文分享(有中文摘要,源码或项目地址)--强化学习、模仿学习、机器人、开放词汇

专属领域论文订阅 关注{晓理紫|小李子},每日更新论文,如感兴趣,请转发给有需要的同学,谢谢支持 如果你感觉对你有所帮助,请关注我,每日准时为你推送最新论文。 分类: 大语言模型LLM视觉模型VLM扩散模型视觉…

STM32 freertos 使用软件模拟串口uart

如题,为什么要这样做? 最近做的一个项目上使用了74HC595作为指示灯板使用; 这个灯板与驱动板是通过排线连接,排线约25cm长; 在实验室测试一切正常,发到客户手上使用就出现了某个LED跳动情况;…

假期刷题打卡--Day16

一、码题集正常刷题 1、MT1159 指定集合 某数组含有N个元素,输出那些数字来自集合{4,5,6}的元素,按原序。没有就输出-1。 格式 输入格式: 第一行输入数组长度N,第二行输入数组元素,整型,空格分隔。 输…

GitHub 一周热点汇总第7期(2024/01/21-01/27)

GitHub一周热点汇总第7期 (2024/01/21-01/27) ,梳理每周热门的GitHub项目,离春节越来越近了,不知道大家都买好回家的票没有,希望大家都能顺利买到票,一起来看看这周的项目吧。 #1 rustdesk 项目名称:rust…