一 理论
使用640*480@60显示模式,将数字信号转换位模拟信号,经由VGA进行显示。
使用3GM723,3路高清视频编码芯片。
3GM7123编码芯片:
该芯片的主要功能是将RGB888的颜色数据转换成模拟的电压信号,然后进入到VGA接口的3个RGB接口。例如RGB888的数据,最后颜色数据就是24位,共有2*24中颜色,当然这种芯片也适用于RGB565,RGB555,RGB444等图像数据类型。
二 电路
使用GB712芯片与VGA接口。
三 信号
框图:
VGA时序图:
四 代码
module VGA_CTRL(
input sys_clk,
input sys_rst_n,
output VGA_HS,
output VGA_VS,
output VGA_BLK,
output [23:0]VGA_RGB
);
localparam Hsync_End ==800;
localparam Hs_End ==96;
localparam Vsync_End ==525;
localparam Vs_End ==2;
localparam Hdat_begin ==144;
localparam Hdat_End ==784;
localparam Vdat_begin ==35;
localparam Vdat_End ==515;
reg [9:0] hcnt;
always@(posedge sys_clk or negedge sys_rst_n)
if(!Reset_n)
hcnt <= 0;
else if(hcnt >=Hsync_End -1)
hcnt <=0;
else
hcnt <= hcnt +1'b1;
//Hcnt
assign VGA_HS = (hcnt < HS_End - 1'd1)? 0:1;
//VGA_HS
reg [9:0]vcnt;
always@(posedge sys_clk or negedge sys_rst_n)
if(!Reset_n)
Vcnt <= 0;
else if(Vcnt >=Vsync_End -1)
Vcnt <=0;
else
Vcnt <= Vcnt +1'b1;
//Vcnt
assign VGA_VS = (Vcnt < VS_End - 1'd1)? 0:1;
//VGA_VS
assign VGA_BLK = ((hcnt >= Hdat_begin - 1) && (hcnt <Hdat_End -1) && (Vcnt <Vdat_End))?1:0;
//VGA_BLK
assign VGA_RGB =VGA_BLK?Data:0;
endmodule