图像格式和HDMI接口,DVI接口

581 阅读8分钟

HDMI介绍

image.png

HDMI是新一代的多媒体接口标准。

high definition multimedia interface 高清多媒体接口

能够同时传输视频和音频,简化了设备的接口和连线。能够提供更高的数据传输带宽,可以传输无压缩的数字音频及高分辨率视频信号。

bps: 每秒传输多少bit数据 数据带宽

HMDI和DVI DVI&HDMI接口

HDMI 向下兼容DVI。

DVI 数字视频接口,只能用来传输视频,而不能同时传输音频。

image.png

DVI和HDMI 接口协议在物理层 均使用TMDS标准传输音视频数据。

TMDS标准

最小化传输差分信号,TMDS是一项高速数据传输技术,在DVI和HDMI视频接口中使用 差分信号 传输高速串行数据。

TMDS差分传输计数使用两个引脚来传输一路信号,利用两个引脚间的电压差的正负极值和大小 来决定传输数据的数值。0或1

DVI或HDMI视频传输所使用的的TMDS连接通过四个串行通道实现。

同时传输 blue green red三个通道,时钟信号通道。 四个通道

DVI: RGB 444

HDMI: RGB 444

          YCrCb 444
          
          Ycrcb 422

image.png

独立的TMDS时钟通道为接收端 提供接收的参考频率,保证数据在接收端能够正确恢复。

图像格式:

1 RAW

图像传感器中,感光阵列由红,绿,蓝三种感光点组成,假如这种每个感光像素点转换成数字信号后直接输出就得到了RAW格式的图像数据。

这种数据保留了很多原始信息,数据量大。保存了更多的细节。

2 RGB

RGB是RAW格式经一系列处理后得到的图像格式,三原色组合的图像格式。

3 YCrCb 即YUV

YcrCb,Y代表亮度分量 灰度值,Cb代表蓝色色度分量,Cr代表红色色度分量。

Ycrcb 分为444 和442.

YUV 中Y代表明亮度,也就是灰度值。 U和V代表色度描述色彩和饱和度。色度定义了颜色的两个方面,色调和饱和度。 Cr反映了RGB输入信号红色部分和RGB信号亮度值的差异。Cb反映了RGB输入信号蓝色部分和亮度值之间的差异。

TMDS连接在逻辑功能上分为两个阶段 编/解码 和并串转换。

编码阶段,编码器把视频源中的像素数据,HDMI的音频数据,,行场信号编码为10位字符流。

串并转换阶段将10位字符流转化为串行数据流,并将三个差分输出通道发送出去。

DVI编码 只有HDMI有音频通道

DVI编码机制

image.png

传输视频图像过程中,数据通道上传输的是编码后的有效像素字符。

每一帧图像行与行间,以及视频不同帧之间的时间间隔 消隐期,数据通道上传输的则是控制字符。

每个通道上有两位控制信号的输入接口,提供四种不同控制字符。 这些控制字符提供了视频的行同步以及场同步信息,在蓝色通道传输。

HDMI编码

编码机制

image.png

HDMI传输的消隐期除了控制字符外,还可以用于传输音频或者附加数据,比如字幕信息。

TMDS为视频编码。

4bit的音频和附加数据 通过TERC4编码机制转换成10bit的TERC7字符,在红色和绿色通道行传输。

在蓝色通道传输的是行场同步信号。

DVI编码器

VDE 用于各个通道选择输出视频像素数据 还是控制数据。

HSYNC和Vsync 信号早蓝色通道进行编码得到10位字符,然后在视频消隐期传输。 VDE=0时候

绿色和红色通道的控制信号C0和C1同样需要编码,并在消隐期输出。

每个通道输入的视频像素值都要使用 DVI规范中的TMDS编码算法进行编码。

image.png

TMDS编码算法:

TMDS和LVDS、TTL相比有更好的电磁兼容性能。

这种算法可以减少传输信号过程的上冲和下冲。 可以用低成本的专用电缆实现长距离、高质量的数字信号传输。

每个通道的8bit像素数据都被转换成460个特定10bit字符中的一个。

这种编码机制大致上实现了传输过程中的直流平衡。

视频字符和控制字符 状态跳转次数 的不同 将会被用于发送和接收设备的同步。

HDMI模块框图:

image.png

HDMI source 发送端:

TMDS四路信号,三路数据一路时钟。

CEC line: 用户电气控制

EDID: 扩展显示 标识数据

DDC: 可以理解为IIC通信。

HDMI引脚定义

image.png

数据和时钟均为差分信号。 TMDS

CEC用户电气控制 SCL和SDA 时钟和数据 IIC的信号线。

地线和电源。

热拔插检测: 换设备时候通过读取EDID,重新对设备连接进行配置。

硬件设计:

TMDS的数据通道和TMDS的时钟通道。

如果只用视频传输可以用DVI来代替HDMI。

HDMI彩条显示实验

驱动ZYNQ上的HDMI接口显示彩条图案。

image.png

视频显示产生视频图案,视频驱动产生一个驱动时序,转换为DVI接口时序。

image.png

行同步和场同步:

消隐期和边界 有效数据 边界和消隐期

场扫描周期以行扫描周期为单位。

常用显示器时序参数:

image.png

分辨率 像素时钟 行时序 帧时序

HDMI模块设计

1产生 rgb hsync vsync de clk信号

2 产生串行10位数据 hdmi控制模块

image.png

image.png

hdmi控制模块

分两部分:

1: 8bit - 10bit 编码过程

2:10bit并行数据到差分数据串行 转换

1: 8bit - 10bit 编码过程

image.png

2:10bit并行数据到差分数据串行 转换

image.png

par_to_ser模块并转串需要调用四次,三次数据一次时钟。转换为差分信号。

encode:调用三次

子模块:encode编码模块

可以直接使用XILINX官方文档程序,TMDS编码。

encode.v

TMDS编码

子模块:par_to_ser模块

三部分组成:

并行 - 串行

单端 - 差分

单沿采样 - 双沿采样

使用ip核: ALTDDIO_OUT可以将单沿信号变为双沿信号。

ALTDDIO_OUT属于DDR双倍数据速率一部分

Double DATE rate:双倍速率的含义是在时钟的上升沿和下降沿采样。

并行数据 - 串行数据 转换部分

10 bit的数据 奇数位下降沿发送5位宽 偶数位上升沿发送5位宽。 而ip核为1位宽。

数据做处理:

通过计数器控制数据移位,完成数据更新。 通过五位的数据移位,完成一个时钟周期一位。 五个时钟周期后传入新的数据。

通过这种方式可以完成串行数据10bit传递。

奇数位偶数位都采用这种方法。

640x480分辨率时钟为25M,我们这里使用125M时钟,完成10bit并行数据转换成10bit串行数据,我们要10倍的速率完成数据同步。而单双沿信号检测,故使用5倍的时钟信号即可,125M。

移位操作:

wire [4:0] data_rise = {data_in[8],data_in[6],data_in[4],data_in[2]};

wire [4:0]data_fall = {data_in[9],data_in[7],data_in[5],data_in[3]};

reg [4:0] data_rise_s = 0;

reg [4:0] data_fall_s = 0;

always@(posedge clk_5x)
    begin
        //cnt 计数范围为0-4,以最高位作为判断
        cnt <= (cnt[2] == 1'b1) ? 3'd0 : cnt +1'b1;
        //高四位给低四位,实现移位。新数据更新或者移位
        data_rise_s <= (cnt[2] == 1'b1) ?data_rise: data_rise_s[4:1];
        data_fall_s <= (cnt[2] == 1'b1) ?data_rise: data_rise_s[4:1];
  
    end


通过移位寄存器和 ALTDDIO_OUT ip核完成了 并行到串行,单沿到双沿信号的处理。

单端到差分 部分

单端输入指信号有一个参考端和一个信号端构成,参考端一般为地端,差分是将单端信号进行差分变换,输出两个信号,一个和原信号同相,一个和原信号反相。

差分信号两根线传输,对单端信号取反,然后分别传输。

单端使用一个线传输 电压值超过一个信号阈值为1,低于为0.

故例化两个ddio_out 模块,将第二个模块信号取反,第一个ip核输出为ser_p,第二个模块输出ser_n。

完成hdmi控制模块

encode模块例化三次 分别对应红绿蓝三部分。

并行到串行模块实例化四次。

image.png

总的框图:

image.png vga_ctrl:

vga_pic:图像数据生成模块 pix_data 图像数据

clk_gen: 可以调用ip核 PLL锁相环。输出25M工作时钟vga_clk 640x480,再生成一个125M时钟 clk_5x

例化vga_pic图像数据生成模块,vga_ctrl vga控制模块生成行场同步信号,图像有效信号等。 实例化hdmi_ctrl控制模块。

image.png

HDMI连接器

8路信号为4个 差分对 还有两个ddc的scl和sda信号,共10路信号。scl和sda信号为高电平。