ids & hdmi 原理
http://www.taiwanwebinar.com/zh_TW/STATIC/SITE/dwc_hdmi_tx.pdf
http://blog.csdn.net/g_salamander/article/details/21019845
一、IDS 学习笔记
1、Overlay Controller
图像数据格式和4窗口融合由叠加控制器处理。叠加控制器可以根据窗口的中断
生成一个窗口时隙,用户可以根据时隙中断更新帧缓冲的数据,比如:播放视频的时候。通常,视频的解码速度为 30 fps,LCD 的刷新率为
60-70 Hz,叠加控制器采用两路 PWM 定时器中断来避免潜在的风险。同步的过程如下图所示:
时隙中断同步于 PWM_INT2/3 和
VSYNC,在第一阶段:时隙中断产生后,下一帧的视频数据可以安全的解码并写入 buffer1,因为此时叠加控制器是从 buffer0
中读取视频数据到 LCD。同样的,在第二阶段 buffer0 的内容可以被更新。注:在使用窗口时隙中断时必须先设置好 PWM_INT2/3。
窗口坐标和虚拟显示示意图如下:
2、LCD Controller
LCD 控制器用于发送视频数据到外部的 TFT LCD
并生成必要的控制信号,如: VSYNC、HSYNC、VCLK等。LCD 控制器通过 16 个 24-bit RGB FIFO
与叠加控制器交换数据。LCD 控制器可以通过寄存器设置 LCD 电源引脚的状态。
3、TV Controller
电视控制器将 RGB FIFO 中的 RGB 数据转换成 YCbCr
数据并发送到外部电视机的编码芯片,YCbCr 数据将被加入消隐区数据并打包,使之与 ITU-R BT 601/656
接口格式兼容。接口发送数据的频率依赖于图像的大小,接口信号由视频数据和必须的控制信号(VSYNC、HSYNC、HREF、FIELD等)组成。内部
的 RGB -> YCbCr 颜色空间转换矩阵系数可以由软件配置。当前支持两种接口时序:一、行从消隐区开始,二、行从
EAV(有效视频结束) 开始。第二种时序如下图所示(SAV-有效视频开始):
TV 控制器支持 4 种类型的数据格式:ITU656 8-bit
YCbCr422、ITU601 8-bit YCbCr422、ITU601 16-bit YCbCr422、ITU601 24-bit
RGB888。当输出数据宽度为 8-bit 时,2 个时钟周期发送一个像素的数据。
4、双屏显示
当前支持4种工作模式:复制模式(本地显示为主,远程显示通过缩放获得)、高清模式(远程高清、本地为缩放所得)、扩展模式(将同一个 buffer 里面的内容分割显示)、独立模式(各自的不同内容)。
二、HDMI 学习笔记
HDMI - 高清晰度多媒体接口,接口使用 5V 电压驱动,采用了 Silicon Image 公司发明的TMDS(时
间最小化差分信号)传输技术,视频信号的 R、G、B、H、V 五种信号都用 TDMS 技术编码。每一个标准的 HDMI 连接,都包含了 3
路用于传输数据的 TMDS 传输通道,还有 1 路独立的 TMDS 时钟通道。在一个时钟周期内,每个 TMDS 通道都能传送
10bit 的数据流,这个数据流可以由若干种不同的编码格式构成。TMDS 对每个像素点种的 RGB 三原色分别按 8bit 编码,如下图所示:
一般来说,HDMI 传输的编码格式中要包含视频数据(HDMI1.3版本前每个像素采用24bit)、控制数据和数据岛(数据岛中包含音频数据和附加信息数据,如纠错码等)。TDMS 每个通道在传输时要包含一个 2bit 的控制数据、8bit 的视频数据或者 4bit 的数据包,在 HDMI 信息传输过程中,可以分为三个阶段:视频数据传输周期、控制数据传输周期和数据岛传输周期,如下图所示:
下表展示在数据传输中每种操作模式的编码类型
HDMI 1.0 的带宽为 4.96Gbps(25MHz - 165MHz),HDMI 1.3 为10.2Gbps(340M),计算公式如下:
带宽 = 系统时钟频率 x 数据量 = 340MHz x 10bit = 3.4Gbit x 3 = 10.2Gbit
* 典型的 720p@60Hz 时钟频率为 74.25MHz,1080p@60Hz 时钟频率为 148.5MHz
Type A 型 HDMI 接口引脚定义如下图所示:
在广播电视行业使用的 TV 格式中,支持标清格式的 480i、480p(含 16:9 格式)、576i、576p规格以及高清 HDTV 中的 720p、1080i、1080p 规格。在 HDMI 中还加入了版权保护机制 -HDCP(高带宽数字内容保护),是在使用数字格式进行传输信号的基础上,再加入一层版权认证保护技术。
HDMI Source 和 Sink 的上电协商过程:
a、Source 设备上电后会检测 HPD 引脚是否被上拉到 2V 以上
b、Source 设备通过 DDC(显示数据通道) 读取 EDID(增强扩展显示识别数据) 的信息以确定 Sink 能支持的分辨率
c、Source 设备检测 TMDS 信号是否被上拉到 3.3V
d、Source 设备输出目前设置的分辨率的信号到 Sink 端
TMDS 技术差分信号上拉电压为 +3.3V(由 Sink 提供),差分信号的逻辑摆幅在 800-1200mV 之间,实际电压摆幅可以在 150-1200mV 之间变化。CEC 引脚为消费电子控制通道,用于控制视听设备工作。
* synopsys - IP
核提供商,为大多数芯片公司节省了大量的时间和资源,其 IP 核包括:HDMI、DDR、MIPI、PCIe、SATA、USB、Ethernet
等,并提供了相应的验证软件包。平台 HDMI 接口就是采用的 synopsys 公司的 IP 核,编程指南 《DesignWare Cores
HDMI Transmitter Controller Databook》 - DWC_hdmi_tx。软件流程主要为两个阶段:
1、Initialization
a、Wait for Hot Plug Detect(HPD)
b、Configure VGA DVI Video Mode
c、Read Sink's E-EDID
2、Configuration
d、Configure Video Mode
e、Configure Audio Mode
f、Configure Infoframes
g、Configure HDCP
在 a 阶段,通过向寄存器 PHY_CONF0.PDZ 写 1 让 HDMI TX PHY HPD Detector 上电,然后检测 HPD 状态位,当HPD = 1 时,即代表检测到了 Sink 设备,便可进入 b 阶段。
在 b 阶段,需要先用 DVI 模式向接收器发送视频数据,因为读取 E-EDID 的操作需要视频数据来提供准确的时钟源,发送数据的分辨率为 VGA(640 x 480p),所有的发送器和接收器都必须支持这个分辨率,因为这个分辨率的数据率最低。HDMI TX PHY 有一个内部 PLL用于产生TMDS 信号的时钟。
在 c 阶段,发送器将会通过 E-DDC 通道从接收器读取 E-EDID 数据,这个数据包含了接收器支持的音频和视频功能,并保存在接收器的存储器中。E-DDC 通道基于 I2C 协议,所以发送器有一个 I2C 主控制器。E-DDC 扩展读操作流程如下:设置从设备 I2C 地址 -> 设置 I2C 段地址 -> 设置 I2C 段指针 -> 开启扩展读功能 -> 读取结果寄存器。
在 d 阶段,将会匹配发送器和接收器都
支持的视频模式,然后首先关闭 HDMI TX PHY Detector
以免接收器产生异常行为,接着开始配置发送器的视频模式(选择视频输入映射模式 -> 设置视频信号时序 -> 选择 HDMI 或者
DVI 模式 -> 使能 PHY 内部 PLL -> 复位 PHY -> 通过读取 TX_PHY_LOCK
判断配置是否正确完成)
在 e 阶段,将会为 HDMI 输出配置音频模式(DVI 模式没有音频输出),可选的模式有:I2S、S/PDIF、HBR、DMA、GPA 。
在 f 阶段,将会为 HDMI 输出设置辅助信息,以告知接收器收到的视频和音频数据的格式等信息。
* HDMI 如同 MIPI 接口,只是对 IDS 产生的视频数据以及音频数据进行格式转换后再通过 HDMI TX PHY 单元传输出去,即HDMI 只是一种传输方式。
HDMI 功能单元
a、Video Input Interface - 视频输入接口,接收来自 IDS 的视频数据,其引脚如下图所示:
其中 ivdata 为 48bits,其他都为 1bit,可以看到这是一个典型的视频信号接口。
b、Audio Input Interface - 音频输入接口,接收来自处理器的音频数据
c、System and Slave Register Interface - 系统和从设备寄存器接口,控制内部寄存器的读写
d、E-DDC Interface - 扩展显示数据通道接口,该功能通过 I2C 协议实现,这个接口就是 I2C 时钟和数据读写引脚
e、CEC Interface - 消费电子控制接口,使用 32.768 KHz 的时钟
f、HDCP Encryption Engine - 高带宽数字内容保护加密引擎
g、Scan Test Interface - 扫描测试接口
h、HDMI TX PHY Interface - HDMI 发送器物理接口,大部分信号将会连接到外部引脚,示意图如下:
其中 ihpd 连接到 HPD 引脚,otmdsdatap、otmdsdatan 连接到外部的 3 路数据传输引脚,otmdsclkp、otmdsclkn 连接到外部时钟引脚。
i、HDMI 3D TX PHY Interface - HDMI 3D 发送器物理接口
j、HDMI HEAC PHY Interface - HDMI 以太网和音频回传通道物理接口
HDMI 函数解析
* 初始化阶段
hdmi_probe() - hdmi 探测函数,建立了内核线程
hdmi_wk 以及4个工作队列
hdmi_handler_wk(中断后续处理)、hpd_wk(热插拔检测)、edid_wk(E_EDID读取和解析)、check_wk(当前状态
检测),可以设置 items - P_HDMI_DIRECT 是否直接输出 hdmi 信号
hdmi_initialize() - hdmi 内存、中断等资源管理
api_Initialize() - 初始化 VGA 显示参数,以及 hdmi 模块内的寄存器、PHY 等
* 连接检测阶段
hdmi_handler() - 中断函数,当 HPD 引脚状态变化时启动,然后启动 hdmi_handler_wk()
hdmi_handler_wk() - 处理 hpd_on、hpd_off、ddc_i2c 等事件,如果是 hpd_on,则开始读取 E-EDID
api_EventHandler() - api 层事件处理器,根据
api_mCurrentState 即当前状态做出相应处理,当 E-EDID 读取完成后,启动 edid_EventHandler()
解析,其中重要的函数有 edid_ParseBlock()、dtd_Parse()、dtd_Fill(),解析完成后设置
api_mCurrentState = API_EDID_READ
hdmi_update_strategy() - E-EDID 解析完成后根据 PHY 和 sink 支持的分辨率选取合适的输出格式
hdmi_config() - 根据输出格式通过 hdmi_params_config() 配置视频、音频等参数,然后通过 api_Configure() 配置相关寄存器打开 hdmi 信号输出
ids & hdmi 原理的更多相关文章
- LVDS/DVI/HDMI Interface
数字视频信号 以SXGA为例,其时序如下: 垂直: 水平: 图中DSPTMG为使能信号,VSYNC为场同步信号,HSYNC为行同步信号.在行场的消隐期(T1与T7),DSPTMG为低电 ...
- Snort 入侵检测系统
Snort 入侵检测系统 一.实验目的 1.掌握snort IDS工作原理 2.应用snort 三种方式工作 二.实验环境 系统环境:Windows环境, kali环境 三.实验原理 1.snort ...
- HDMI热插拔检测原理
HDMI(19Pin)/DVI(16 pin)的功能是热插拔检测(HPD),这个信号将作为主机系统是否对HDMI/DVI是否发送TMDS信号的依据.HPD是从显示器输出送往计算机主机的一个检测信号.热 ...
- HDMI传输原理:TMDS
参考资料:http://blog.sina.com.cn/s/blog_679686370100vgg1.html: http://www.eeworld.com.cn/mndz/2011/0818/ ...
- HDMI/DVI 显示器热插拔与检测原理(HPD)
HDMI(19Pin)/DVI(16 pin)的功能是热插拔检测(HPD),这个信号将作为主机系统是否对HDMI/DVI是否发送TMDS信号的依据.HPD是从显示器输出送往计算机主机的一个检测信号.热 ...
- 【硬件】HDMI接口HPD原理
目录 一.什么是HPD? 二.HDMI的HPD(热插拔)原理 三.HDMI源端对HPD信号有什么要求? 由于项目需要通过HDMI获取EDID的数据,需要学习一下其获取的工作原理,所以在这里记录下. 一 ...
- 03 Yarn 原理介绍
Yarn 原理介绍 大纲: Hadoop 架构介绍 YARN 产生的背景 YARN 基础架构及原理 Hadoop的1.X架构的介绍 在1.x中的NameNodes只可能有一个,虽然可以通过Se ...
- Zookeeper 原理
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等.Zookeeper是hadoop的一个子项目,其 ...
- kafka入门:简介、使用场景、设计原理、主要配置及集群搭建(转)
问题导读: 1.zookeeper在kafka的作用是什么? 2.kafka中几乎不允许对消息进行"随机读写"的原因是什么? 3.kafka集群consumer和producer状 ...
随机推荐
- linux(ubuntu)和windows下面快速搭建android开发环境
在windows和linux下面搭建android开发环境,一般要安装以下几个软件: 1.JDK安装 2.Eclipse安装 3.Android SDK安装 4.在eclipse里面安装ADT 5.e ...
- 仿《雷霆战机》飞行射击手游开发--GameObject
转载请注明:http://www.cnblogs.com/thorqq/p/5646509.html 在上一篇中,我们介绍了各种游戏对象的功能及类的集成关系,现在我们来看看GameObject的源代码 ...
- 对整站的a链接进行监控,对匹配规则进行指定页面的跳转
项目中有个需求,就是将非本站的链接跳转到过渡页(提示即将离开本站的那种页面).这个时候想起了腾讯邮箱,不安全链接会有新的页面提示,如下图: 本以为ASP.NET中有全局的方法获取到点击或者跳转的链接, ...
- DEDECMS中,channel标签
获取栏目列表标签 dede:channel 标签: {dede:channel type='top' row='8' currentstyle="<li><a href=' ...
- ubuntu grub配置
一.Grub 2包含如下几部分内容:1./boot/grub/grub.cfg 文件2./etc/grub.d/ 文件夹3./etc/default/grub 文件 二.配置和意义: 1.修改grub ...
- 第八章 Qt GUI之对话框使用
第八章 Qt GUI之对话框使用 对话框可以是模态(modal)的或非模态(modeless)两种.当我们在一个用户界面程序里面对一个对话框(比如选择文件对话框)的操作没有结束前,界面的其他窗口无法操 ...
- Jquery 页面元素动态添加后绑定事件丢失方法,非 live
代码1: 以此方法绑定的input框事件,在通过add按钮后用jquery绑定的事件 alert就会丢失 <input type="button" value="A ...
- DirectSound学习(三)--类、方法、属性翻译
DirectSound.Device :Contains methods and properties used to create buffer objects, manage devices, a ...
- C#委托的异步调用1
本文将主要通过“同步调用”.“异步调用”.“异步回调”三个示例来讲解在用委托执行同一个“加法类”的时候的的区别和利弊. 首先,通过代码定义一个委托和下面三个示例将要调用的方法: /*添加的命名空间 u ...
- WinForm窗体间如何传值的几种方法
(转) 窗体间传递数据,无论是父窗体操作子窗体,还是子窗体操作符窗体,有以下几种方式: 公共静态变量: 使用共有属性: 使用委托与事件: 通过构造函数把主窗体传递到从窗体中: 一.通过静态变量 特点: ...