VGA/HDMI显示器驱动设计

浅谈VGA显示器

1、VGA显示器视频时序
VGA/HDMI显示器驱动设计_第1张图片
2、VGA时序参数的定义

//480x272 9Mhz
`ifdef  VIDEO_480_272
parameter H_ACTIVE = 16'd480;  //horizontal active time (行有效数据pixels)
parameter H_FP = 16'd2;        //horizontal front porch (行显示前沿pixels)
parameter H_SYNC = 16'd41;     //horizontal sync time   (行同步pixels)
parameter H_BP = 16'd2;        //horizontal back porch  (行显示后沿pixels)
parameter V_ACTIVE = 16'd272;  //vertical active Time   (场有效数据lines)
parameter V_FP  = 16'd2;       //vertical front porch   (场显示前沿lines)
parameter V_SYNC  = 16'd10;    //vertical sync time     (场同步lines)
parameter V_BP  = 16'd2;       //vertical back porch   (场显示后沿lines)
`endif
//640x480 25.175Mhz
`ifdef  VIDEO_640_480
parameter H_ACTIVE = 16'd640; 
parameter H_FP = 16'd16;      
parameter H_SYNC = 16'd96;    
parameter H_BP = 16'd48;      
parameter V_ACTIVE = 16'd480; 
parameter V_FP  = 16'd10;    
parameter V_SYNC  = 16'd2;    
parameter V_BP  = 16'd33;    
`endif
//800x480 33Mhz
`ifdef  VIDEO_800_480
parameter H_ACTIVE = 16'd800; 
parameter H_FP = 16'd40;      
parameter H_SYNC = 16'd128;   
parameter H_BP = 16'd88;      
parameter V_ACTIVE = 16'd480; 
parameter V_FP  = 16'd1;     
parameter V_SYNC  = 16'd3;    
parameter V_BP  = 16'd21;    
`endif
//800x600 40Mhz
`ifdef  VIDEO_800_600
parameter H_ACTIVE = 16'd800; 
parameter H_FP = 16'd40;      
parameter H_SYNC = 16'd128;   
parameter H_BP = 16'd88;      
parameter V_ACTIVE = 16'd600; 
parameter V_FP  = 16'd1;     
parameter V_SYNC  = 16'd4;    
parameter V_BP  = 16'd23;    
`endif
//1024x768 65Mhz
`ifdef  VIDEO_1024_768
parameter H_ACTIVE = 16'd1024; 	 
parameter H_FP = 16'd24;      	 
parameter H_SYNC = 16'd136;    	 
parameter H_BP = 16'd160;     	 
parameter V_ACTIVE = 16'd768; 	 
parameter V_FP  = 16'd3;      	 
parameter V_SYNC  = 16'd6;    	 
parameter V_BP  = 16'd29;     	 
`endif
//1280x720 
`ifdef  VIDEO_1280_720
parameter H_ACTIVE = 16'd1280;   
parameter H_FP = 16'd110;        
parameter H_SYNC = 16'd40;       
parameter H_BP = 16'd220;        
parameter V_ACTIVE = 16'd720;     
parameter V_FP  = 16'd5;         
parameter V_SYNC  = 16'd5;       
parameter V_BP  = 16'd20;         
`endif
//1920x1080 148.5Mhz
`ifdef  VIDEO_1920_1080
parameter H_ACTIVE = 16'd1920;
parameter H_FP = 16'd88;
parameter H_SYNC = 16'd44;
parameter H_BP = 16'd148; 
parameter V_ACTIVE = 16'd1080;
parameter V_FP  = 16'd4;
parameter V_SYNC  = 16'd5;
parameter V_BP  = 16'd36;
`endif
parameter H_TOTAL = H_ACTIVE + H_FP + H_SYNC + H_BP;//horizontal total time (pixels)
parameter V_TOTAL = V_ACTIVE + V_FP + V_SYNC + V_BP;//vertical total time (lines)

3、VGA驱动设计
VGA的驱动常见以下三种:

  1. 电阻分压式RGB332显示
    VGA/HDMI显示器驱动设计_第2张图片

  2. 电阻分压式RGB565显示
    RGB565转RGB888遵守原则:高位对齐;低位补0。

  3. ADV7123 芯片驱动RGB888显示
    VGA_BLANK_N表示效时间段。
    VGA_SYNC_N 灰电平控制端(TTL 兼容)为低时,使模拟输出 IOR、 IOB、IOG 为灰电平级 ,与 R0-R9、 G1-G9、 B0-B9的输入无关,它在时钟上升沿被锁存。SYNC 同步信号控制端(TTL 兼容)为低时,输出将关掉 40 IRE 的电流,此电流与内部的 IOG 输出相连。由于此端与其它控制端和输入数据信息无关,因此只需在灰电平间隔期间断定。它在时钟上升沿被锁存。SYNC是单独的视频同步控制输入 ,如果不需要把同步信号信息,则 SYNC 输入端应该与逻辑低相连。
    VGA/HDMI显示器驱动设计_第3张图片

4、驱动VGA信号的输出

always @(posedge clk or negedge rst_n) 
begin
	if(!rst_n)
		vga_en	<= 1'b0;//使能信号
	else if(h_cnt >= (H_SYNC + H_BP) && h_cnt < (H_SYNC + H_BP + H_ACTIVE)&& v_cnt >= (V_SYNC + V_BP) && v_cnt < (V_SYNC + V_BP + V_ACTIVE))
		vga_en	<= 1'b1;
	else
		vga_en	<= 1'b0;
end
assign vga_hs = (h_cnt < H_SYNC- 1'b1) ? 1'b0 : 1'b1;//行同步信号
assign vga_vs = (v_cnt < V_SYNC- 1'b1) ? 1'b0 : 1'b1;//场同步信号
assign DE	  = 1'b0;								//同步信号低电平
assign BL 	  = ~((h_cnt<(H_SYNC+H_BP+H_FP))||(h_cnt<(V_SYNC+V_BP+V_FP)));  //当行计数器小于行空白总长或场计数器小于场空白总长时,空白信号低电平

浅谈HDMI显示器

HDMI 是新一代的多媒体接口标准,英文全称是 High-Definition Multimedia Interface,即高清多媒体接口。它能够同时传输视频和音频,简化了设备的接口和连线;同时提供了更高的数据传输带宽,可以传输无压缩的数字音频及高分辨率视频信号。
1.HDMI引脚
HDMI有A,B,C,D,E五种引脚类型,目前市面中比较常见的就是Type A:

VGA/HDMI显示器驱动设计_第4张图片
2.传输原理
TMDS(Transition Minimized Differential signal),最小化传输差分信号
3. 采用技术

  1. 传输最小化
    并行8位数发送至TMDS发送端——并串转换——编码(添加第九位编码位)
  2. 直流平衡
    保证信道中直流偏移为零(添加第十位)
  3. 差分信号
    保证传输期间噪声不会影响最终数据的准确性

4. 传输流程
HDMI TMDS传输的数据类型有三种(加上Hsync与Vsync就算四种):
Preamble(控制信息):主要用于控制接下来传输的数据是Data Island或者Video Data。
Data Island(数据包):各种类型的包信息,包括音频数据包,图像信息包等。
Video Data(视频信息):视频像素数据,HDMI可以传输RGB与YUV两种格式的像素数据。
VGA/HDMI显示器驱动设计_第5张图片

传输格式 功能描述
Hsync/VSync Hsync=Channel0[0];Vsync=Channel0[1]
Preamble {CTL0,CTL1,CTL2,CTL3}={Channel1[1:0],Channel2[1:0]}
Video Data RGB888格式数据会占用三个通道,B=Channel0[7:0];G=Channel1[7:0];R=Channel2[7:0]
Data Island Island Header(包头)=Channel0[3:2];Data Island Content(包内数据)={Channel1[0:3],Channel2[0:3]}

5. 传输周期
VGA/HDMI显示器驱动设计_第6张图片
HDMI传输视频时序及时序参数与VGA显示器是相同的,具体可参考上文。VGA/HDMI显示器驱动设计_第7张图片
6. HDMI驱动设计(I nput-Video Data)

  1. FPGA直接驱动型
    VGA/HDMI显示器驱动设计_第8张图片
  2. Sil9134芯片驱动型
    VGA/HDMI显示器驱动设计_第9张图片

你可能感兴趣的:(Peripheral,Driver)