简介:
HDMI 是新一代的多媒体接口标准,英文全称是High-Definition Multimedia Interface,即高清多媒体接口。它能够同时传输视频和音频,简化了设备的接口和连线;同时提供了更高的数据传输带宽,可以传输 无压缩的数字音频及高分辨率视频信号。HDMI 1.0 版本于 2002 年发布,最高数据传输速度为 5Gbps;而 2017 年发布的HDMI 2.1 标准的理论带宽可达 48Gbps
参考资料:(22条消息) FPGA纯verilog手写HDMI发送IP 提供源码和技术支持_fpga ip源码_9527华安的博客-CSDN博客
正点原子hdmi彩条显示例程
显示原理:
一个hdmi显示系统由发送端和接收端组成。4个通道对应硬件上的4对差分信号(三对视频数据信号,一对时钟信号)。一个ddc通道(类似IIC),发送端可以通过此通道读取接收端的显示模式等相关信息。将控制信号和视频数据信号转化成四对差分信号传输的技术称为TMDS:
接口定义:
引脚1、4、7,3、6、9共同组成了三对差分信号对。中间的引脚2、5、8作为数据屏蔽
引脚10、11、12组成了一对时钟差分对
13脚CEC:保留的信号引脚,在工业用途上会使用。
17脚DDC:身份识别
硬件电路:
(这是正点原子启明星V2的拓展板HDMI原理图)
TMDS技术:
名称:最小化传输差分信号(Transition Minimized Differential Signaling)
发送端将接收到的8为并行数据转化成串行数据,
TMDS技术的优点:
相比于LVDS与TTL技术,TMDS算法可以减少传输信号过程中的上冲和下冲。直流平衡使信号对信号线的电磁干扰减少。可以使用低成本的专用电缆实现长距离,高质量的数字信号传输。
TMDS传输原理
算法流程图:
其中:
1、视频数据8bit到10bit的转换
通过异或或者异或非运算逻辑运算得到前8位数据,第9位是编码位的添加,第十位是
直流均衡的处理 (保证这10位数据中1和0的个数相同)。
2、并行数据转化为差分信号
程序设计:
系统框图:
程序文件
1,hdmi_color_bar_top.v 顶层模块
1),端口包含:系统时钟与复位,三对RGB差分信号线,一对TMDS时钟差分信号线,一个TMDS输出使能信号(TMDS_oen)。
module hdmi_colorbar_top( input sys_clk, input sys_rst_n,
output tmds_clk_p, // TMDS 时钟通道 output tmds_clk_n, output [2:0] tmds_data_p, // TMDS 数据通道 output [2:0] tmds_data_n, output tmds_oen // TMDS 输出使能 ); |
2),例化的模块:
//例化MMCM/PLL IP核 clk_wiz_0 clk_wiz_0( .clk_in1 (sys_clk), .clk_out1 (pixel_clk), //像素时钟 .clk_out2 (pixel_clk_5x), //5倍像素时钟
.reset (~sys_rst_n), .locked (clk_locked) ); |
作用:使用MMCM ip核产生其他模块所需的时钟信号
//例化视频显示驱动模块 video_driver u_video_driver( .pixel_clk (pixel_clk), .sys_rst_n (sys_rst_n), .video_hs (video_hs), .video_vs (video_vs), .video_de (video_de), .video_rgb (video_rgb), .pixel_xpos (pixel_xpos_w), .pixel_ypos (pixel_ypos_w), .pixel_data (pixel_data_w) ); |
作用:产生彩条图案数据
//例化视频显示模块 video_display u_video_display( .pixel_clk (pixel_clk), .sys_rst_n (sys_rst_n), .pixel_xpos (pixel_xpos_w), .pixel_ypos (pixel_ypos_w), .pixel_data (pixel_data_w) ); |
作用:产生行场同步信号时序
//例化HDMI驱动模块 dvi_transmitter_top u_rgb2dvi_0( .pclk (pixel_clk), .pclk_x5 (pixel_clk_5x), .reset_n (sys_rst_n & clk_locked),
.video_din (video_rgb), .video_hsync (video_hs), .video_vsync (video_vs), .video_de (video_de),
.tmds_clk_p (tmds_clk_p), .tmds_clk_n (tmds_clk_n), .tmds_data_p (tmds_data_p), .tmds_data_n (tmds_data_n), .tmds_oen (tmds_oen) ); |
作用:并串转换
oserdese2并串转换器:
在xlinx7系列的fpga中提供了专用的并串转换器:oserdese2,它还可以实DDR(双倍数据速率)的功能
OBUFDS:差分输出转换器
用于将来自FPGA内部逻辑的信号转换成差分信号输出,并支持TMDS电平标准
RGB2DVI模块框图: