【FPGA开发】HDMI通信协议解析及FPGA实现

本篇文章包含的内容

  • 一、HDMI简介
    • 1.1 HDMI引脚解析
    • 1.2 HDMI工作原理
    • 1.3 DVI编码
    • 1.4 TMDS编码
  • 二、并串转换、单端差分转换原语
    • 2.1 原语简介
    • 2.2 原语:IO端口组件
    • 2.3 IOB 输入输出缓冲区
    • 2.4 并转串原语`OSERDESE2`


  笔者在这里使用的开发板是正点原子的达芬奇开发板,FPGA型号为XC7A35TFGG484-2。参考的课程是正点原子的课程手把手教你学达芬奇&达芬奇Pro之FPGA开发篇。


一、HDMI简介

在这里插入图片描述

  HDMI,全称为High Definition Multimedia Interface,即高清多媒体接口。它不仅可以传输视频信号,还可以传输音频信号。上图所示的HDMI接口即为最常见的HDMI-A型接口。有19个引脚,尺寸为13.9×4.45mm,广泛应用于笔记本,投影仪,显示器等,工作频率约为160MHz。MDMI有不同的协议版本,比较重要的几个协议版本如1.0(2002.12)、1.3(2006.6)、2.0(2013.9)、2.1(2017.1),协议版本越高级,HDMI信号的传输速率、支持的分辨率以及帧率就越高。目前主流的HDMI协议版本为2.0。

1.1 HDMI引脚解析

  HDMI的引脚及其定义如下图所示:
在这里插入图片描述
  在HDMI协议中,总共有4组差分线,每组分别由+信号-信号屏蔽信号组成。四组信号线分别传输R、G、B信号以及时钟信号。CEC为HDMI的扩展功能,可以使用这一条线传输两个设备之间的控制信息,SCLSDA是HDMI的I2C接口,可以实现不同设备之间EDID信息传输(Extended Display Identification Data 、外部显示设备标识数据——指DDC通讯中传输的显示设备数据)。热插拔检测线用于检测是否有从机连接到主机。

1.2 HDMI工作原理

  HDMI的工作原理图如下所示。图中,TMDS指最小化传输差分信号(Transition Minimized Differential Signaling),是指被转换后的传输信号。视频信号Video和音频信号Audio通过一种特定的编码方式转换为10bit的串行差分信号,这种信号即成为TMDS信号。在主机上进行编码,在从机上进行解码,从而实现两个设备之间的信息交互。
在这里插入图片描述
在这里插入图片描述

  上图展示了RGB-888格式下的TMDS信号和TERC4转换以及连接方式。视频信息采用TMDS进行编码,音频信号采用TERC4进行编码。每一路信号都是并行信号,HSYNCVSYNC是显示的水平同步信号和竖直同步信号,这两个信号只和蓝色通道一起编码。绿色通道和红色通道的CTL0-3用来传输控制信号。TERC4频编码较为复杂,本文章不涉及。时钟信号也需要编码,但是较为简单,上图中没有展示出来。

1.3 DVI编码

在这里插入图片描述

  当HDMI只传递视频信息不传递音频信息,HDMI协议就可以退化为DVI协议。DVI也使用
TMDS进行编码。DVI编码中有一个视频数据使能VDE信号,当它拉高时传递像素信号,当它拉低时传递控制信号和水平数值同步信号。

1.4 TMDS编码

  TMDS指最小化传输差分信号(Transition Minimized Differential Signaling),主要适用于HDMI和DVI视频信号的编码。它的编码方式是将原有的8bit数据编码为10bit数据。

  1. 8bit数据:通过同或/异或算法得到。
  2. bit9:反映前8bit数据的运算方式,如果是0,则说明前8bit通过异或非(同或)方式得到的,如果是1,就说明是通过异或方式得到的。
  3. bit10:直流平衡位。在高速的差分信号传输中,通常在接口处采用交流耦合,即会在接口处添加一个隔直电容去掉交流量。如果传输的信号长时间保持不变,就有可能在信号接收端出现直流偏移,导致解码错误。所以我们在编码时添加一个直流平衡位,如果前面数据1比较多,那么bit10 = 0,反之,如果前面数据0比较多,那么bit10 = 1

在这里插入图片描述
  TMDS的编码过程可以由下图所示:
在这里插入图片描述

参数名称含义
D C1 C0 DED是视频信号, C是控制信号, DE是使能信号
Cnt(t)寄存器参数,用来存储第t次编码中1的个数比0的个数多多少(为了满足TMDS减少上冲下冲和确保直流平衡的要求)
N1{x}输入信号中1的个数
N0{x}输入信号中0的个数
q_m临时寄存的数据输出
q_out编码输出

二、并串转换、单端差分转换原语

2.1 原语简介

  原语:英文名称Primitive,是Xilinx针对其器件特征开发的一系列常用模块名称,涵盖了FPGA开发过程中的常用领域,方便用户直接调用FPGA的底层组件。以Xilinx为例,共分为10类:计算组件、IO端口组件、寄存器/锁存器、时钟组件、处理器组件、移位寄存器、配置和检测组件、RAM/ROM组件、Slice/CLB组件以及G-tranceiver。可以将原语理解为一段特殊的代码。实际上,调用原语是在实例化某个Xilinx的内置模块。
  原语的好处在于原语可以之间看作为“库函数”,可以直接例化调用,比创建IP要更加方便,功能也更全面,可以有效提高开发效率。

2.2 原语:IO端口组件

  IO端口组件是Xilinx的一类原语。IO组件中一共包含了21个原语,对应21个功能。在本次实验中主要采用并转串OSERDES和单端转差分OBUFDS两个原语。
在这里插入图片描述
  IO组件的结构如下图所示。图中IDELAYE2ODELAYE2分别是输入延迟和输出延迟,主要作用是为了解决高速信号传输中信号线可能不等长的问题(等待最长的一根线数据到来后再读取数据)。ILOGICE2OLOGICE2中主要包含了IDDRODDR的资源,用于双边沿取样。ISERDESE2的作用是将单端输入的串行数据转换为并行数据,OSERDESE2的作用是将并行数据转换为单端串行数据输出。

  达芬奇使用的FPGA芯片为A7系列,其中没有HPBANK,所以没有ODELAYE2。ZYNQ也只有7030以上系列才有HPBANK,所以一般使用的FPGA芯片是没有ODELAYE2的。

在这里插入图片描述

2.3 IOB 输入输出缓冲区

  IOB的结构如下所示,在本次实验中它主要完成单端转差分的操作。因为差分信号至少需要两条线,所以一个IOB是无法完成的,至少需要两个IOB才能完成这个功能。
在这里插入图片描述

2.4 并转串原语OSERDESE2

  对于一个并行数据,要想把它转换为串行数据有以下两种做法:

  1. 一个时钟周期内有10bit数据,将该时钟作10倍频,倍频后的时钟每一个周期存放一个数据。这种做法易于理解,但是最大的问题是将时钟进行10倍频后芯片以及外部设备可能不支持这样高的频率。
  2. 一个时钟周期内有10bit数据,将该时钟作5倍频,倍频后的时钟的上升沿和下降沿都进行数据转换输出,即DDR双边沿采样。这样可以有效缓解倍频给时钟带来的压力。

  OSERDESE2的结构如下图所示。该组件可以分成三部分,上面的TCETBYTEIN和一部分电路组成三态控制;中间的CLKCLKIDIVRST组成时钟控制部分,CLK为快速时钟(5倍频),CLKDIV是低速时钟(1倍频);下面的OCED1-D8OQOFB等组成并转穿的转换部分。数据转换数据只有8个数据输入口,要想实现10转1,则需要将两个OSERDESE2级联使用。
在这里插入图片描述
在这里插入图片描述


  持续不定期更新完善中……


  原创笔记,码字不易,欢迎点赞,收藏~ 如有谬误敬请在评论区不吝告知,感激不尽!博主将持续更新有关嵌入式开发、FPGA方面的学习笔记。


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

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

相关文章

【HarmonyOS】hdc 环境变量设置

hdc(HarmonyOS Device Connector)是 HarmonyOS 为开发人员提供的用于调试的命令行工具,通过该工具可以在 windows/linux/mac 系统上与真实设备或者模拟器进行交互。 hdc 工具通过 HarmonyOS SDK 获取,存放于 /Huawei/Sdk/openhar…

简单DP算法(动态规划)

简单DP算法 算法思想例题1、01背包问题题目信息思路题解 2、摘花生题目信息思路题解 3、最长上升子序列题目信息思路题解 题目练习1、地宫取宝题目信息思路题解 2、波动数列题目信息思路题解 算法思想 从集合角度来分析DP问题 例如求最值、求个数 例题 1、01背包问题 题目…

基于requests框架实现接口自动化测试项目实战

requests库是一个常用的用于http请求的模块,它使用python语言编写,在当下python系列的接口自动化中应用广泛,本文将带领大家深入学习这个库,Python环境的安装就不在这里赘述了,我们直接开干。 01、requests的安装 wi…

创新技巧|迁移到 Google Analytics 4 时如何保存历史 Universal Analytics 数据

Google Universal Analytics 从 2023 年 7 月起停止收集数据(除了付费 GA360 之外)。它被Google Analytics 4取代。为此,不少用户疑惑:是否可以将累积(历史)数据从 Google Analytics Universal 传输到 Goog…

智能传感器阅读笔记-智能传感器的发展历程、发展趋势及方向

智能传感器的发展历程 第一代智能传感器 第一代智能传感器是数字式传感器,指改造A/D转换模块,并采用数字技术进行信号处理,使输出信号为数字信号(或数字编码)的传感器,主要由放大器、A/D转换模块、微处理…

清华AutoGPT:掀起AI新浪潮,与GPT4.0一较高下

引言: 随着人工智能技术的飞速发展,自然语言处理(NLP)领域迎来了一个又一个突破。最近,清华大学研发的AutoGPT成为了业界的焦点。这款AI模型以其出色的性能,展现了中国在AI领域的强大实力。 目录 引言&…

BulingBuling - 《工作中的焦虑》 [ Anxiety at Work ]

工作中的焦虑 帮助团队建立复原力、处理不确定性和完成任务的8项策略 作者:阿德里安-戈斯蒂克、切斯特-埃尔顿和安东尼-戈斯蒂克 Anxiety at Work 8 Strategies to Help Teams Build Resilience, Handle Uncertainty, and Get Stuff Done By Adrian Gostick and…

【VTKExamples::PolyData】第三十二期 MergeSelections

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 前言 本文分享VTK样例MergeSelections,并解析接口vtkSelection & vtkExtractSelection ,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U…

修改函数返回地址

资源下载 【免费】突破密码认证程序(修改函数返回地址)资源-CSDN文库 资源内容 源码 /*****************************************************************************To be the apostrophe which changed "Impossible" into "Im po…

linux-firewalld防火墙端口转发

目的:通过统一地址实现对外同一地址暴露 1.系统配置文件开启 ipv4 端口转发 echo "net.ipv4.ip_forward 1" >> /etc/sysctl.confsysctl -p 2.查看防火墙配置端口转发之前的状态 firewall-cmd --statefirewall-cmd --list-all 3.开启 IP 伪装 firewall-cm…

sqlserver对已有的表插入列

现有如下的一个表; 现在要插入一个 人员id 列;如下图在设计视图的行首单击,选择 插入列; 然后添加一个 人员id 列; 保存,出现下图提示,不能保存设计; 这就直接使用sql语句更改&#…

【杂谈】裁我?我是研发,我是研发啊!

闲谈 这两年互联网是越来越不太平了,前有国外互联网裁员的妖风四起,后来寒气又传到国内,让我们这群打工人叫苦连天。最近有部电影蛮火的,叫《年会不能停》,感觉跟我前司很相似,不过好像由于今年业绩不太行…

反转链表【基础算法精讲 06】

视频地址 反转链表【基础算法精讲 06】_哔哩哔哩_bilibili 概念 链表的每一个结点都包含节点值 和1指向下一个结点的next指针 , 链表的最后一个结点指向空; 206 . 反转链表 用cur记录当前遍历到的结点 , 用pre表示下一个结点 , 用nxt表示cur的下一个…

如何修复Microsoft Edge不能以全屏模式打开​?这里提供几个故障排除方法

随着越来越多的Windows 10用户将Edge设置为默认浏览器,各种错误和小故障层出不穷。例如,许多用户抱怨他们无法在全屏模式下启动Edge。如果你正在寻找解决方案来解决这个恼人的问题,请按照下面的故障排除步骤进行操作。 修复Microsoft Edge不…

什么是智慧公厕,智慧公厕有哪些功能

1.什么是智慧公厕? 随着智慧城市的快速发展,公共厕所作为城市基础设施的一部分,也在逐步升级转型。那么,什么是智慧公厕?智慧公厕作为智慧城市的重要组成部分,将公共厕所的建设、设计、使用、运营和管理等…

codeforces 1500分

文章目录 1.[C. Partitioning the Array](https://codeforces.com/contest/1920/problem/C)2.[F. Greetings](https://codeforces.com/contest/1915/problem/F)3.[B. Plus and Multiply](https://codeforces.com/problemset/problem/1542/B)4.[B. Codeforces Subsequences](htt…

第4讲引入JWT前后端交互

引入JWT前后端交互 Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519); JWT就是一段字符串,用来进行用户身份认证的凭证,该字符串分成三段【头部、载荷、签证】 后端接口测试&…

【JavaSE】类和对象

面向对象概述 面向对象编程(简称POP),其核心思想就是参照现实中的事物,将事物的属性特征、行为特征抽象出来,使用类来表示,当涉及到一个具体的实例时,就将类进行实例化,使用一个对象…

【镜头知识】对焦和变焦

前言 变焦 调整某几个镜片的相对位置,从而改变镜片组的焦距,进而改变图像的视场角度。 焦距和视角以及拍摄距离的关系这张图能更好的体现: 视角越窄,也意味着放大的倍数越大! 对焦 物体反射的光线,有很多不…

《Go 简易速速上手小册》第6章:错误处理和测试(2024 最新版)

文章目录 6.1 错误处理机制 - Go 语言中的优雅回旋6.1.1 基础知识讲解6.1.2 重点案例:文件读取器功能描述实现代码 6.1.3 拓展案例 1:网络请求处理器功能描述实现代码 6.1.4 拓展案例 2:数据库查询执行器功能描述实现代码 6.2 编写可测试的代…