1. 概述

本设计采用FPGA技术,将CMOS摄像头(DVP接口)的视频数据经过采集、存储、处理、帧率转换,最终通过HDMI接口显示在电视屏幕上。


2. 硬件系统框图

CMOS采用分辨率为1080p的摄像头芯片,FPGA采用ALTERA公司的CYCLONE IV,FLASH采用EPCS64,DDR2采用Hynix公司的1Gb内存条,HDMI采用Silicon Image公司的SiI9134。


3. FPGA逻辑框图

FPGA各部分逻辑模块如下图所示:

FPGA设计——CMOS摄像与HDMI显示(DVP版)_第1张图片

CMOS Capture,采集CMOS摄像头视频数据;

I2C Master,配置CMOS芯片;

DDR2 Control,配置与控制DDR2芯片组,实现读写仲裁;

FIFO Write,将采集到的视频数据跨时钟域地写进DDR2中;

FIFO Read,将DDR2中的数据跨时钟域地读出给后续图像处理模块;

Frame Buffer,负责FIFO Write和FIFO Read的调度,实现帧率转换;

RAW to RGB,将原始RAW8数据转换成RGB888数据;

RGB to YCbCr,将RGB888数据转换成YCbCr444数据;

YC444 to YC422,将YC444的数据转换成YC422的数据给HDMI TX模块;

HDMI TX,将处理好的视频数据发送给HDMI PHY芯片,同时通过I2C接口配置HDMI PHY芯片。


4. CMOS配置

摄像头芯片支持最高1080p30帧的输出,参考寄存器配置如下:

module i2c_cfg_par(
	input  clk,
	input  [07:0] lut_index,
	output reg [23:0] lut_data
);

always @(*)
begin
	case(lut_index)
	//27M input 67.5M output	
	'd0	:	lut_data <=  'h3105_02;
	'd1	:	lut_data <=  'h0103_01;
	'd2	:	lut_data <=  'h3105_02;
	'd3	:	lut_data <=  'h0100_00;	
	'd4	:	lut_data <=  'h301e_b0;
	'd5	:	lut_data <=  'h320c_03;
	'd6	:	lut_data <=  'h320d_e8;
	'd7	:	lut_data <=  'h3231_24;	
	'd8	:	lut_data <=  'h320E_04;
	'd9	:	lut_data <=  'h320F_65;
	'd10	:	lut_data <=  'h3211_08;		//x start
	'd11	:	lut_data <=  'h3213_10;		//y start
	'd12	:	lut_data <=  'h3e03_01;			
	'd13	:	lut_data <=  'h3e01_46;
	'd14	:	lut_data <=  'h3e08_00;
	'd15	:	lut_data <=  'h3e09_10;	
	'd16	:	lut_data <=  'h3518_03;
	'd17	:	lut_data <=  'h3518_03;
	'd18	:	lut_data <=  'h5025_09;
	'd19	:	lut_data <=  'h3908_c0;	
	'd20	:	lut_data <=  'h3416_10;
	'd21	:	lut_data <=  'h3e0f_90;
	'd22	:	lut_data <=  'h3638_85;
	'd23	:	lut_data <=  'h3637_bf;
	'd24	:	lut_data <=  'h3639_98;
	'd25	:	lut_data <=  'h3035_01;
	'd26	:	lut_data <=  'h3034_ba;
	'd27	:	lut_data <=  'h3300_10;	
	'd28	:	lut_data <=  'h3301_18;
	'd29	:	lut_data <=  'h3308_38;
	'd30	:	lut_data <=  'h3306_34;
	'd31	:	lut_data <=  'h330a_00;	
	'd32	:	lut_data <=  'h330b_90;
	'd33	:	lut_data <=  'h3303_18;
	'd34	:	lut_data <=  'h3309_18;
	'd35	:	lut_data <=  'h331e_0e;
	'd36	:	lut_data <=  'h331f_0e;
	'd37	:	lut_data <=  'h3320_14;
	'd38	:	lut_data <=  'h3321_14;
	'd39	:	lut_data <=  'h3322_14;	
	'd40	:	lut_data <=  'h3323_14;
	'd41	:	lut_data <=  'h3626_03;
	'd42	:	lut_data <=  'h3621_28;
	'd43	:	lut_data <=  'h3f08_04;	
	'd44	:	lut_data <=  'h3f09_44;
	'd45	:	lut_data <=  'h4500_25;
	'd46	:	lut_data <=  'h3c09_08;	
	'd47	:	lut_data <=  'h335d_20;
	'd48	:	lut_data <=  'h3368_02;
	'd49	:	lut_data <=  'h3369_00;
	'd50	:	lut_data <=  'h336a_04;
	'd51	:	lut_data <=  'h336b_65;	
	'd52	:	lut_data <=  'h330e_50;
	'd53	:	lut_data <=  'h3367_08;
	'd54	:	lut_data <=  'h3f00_06;
	'd55	:	lut_data <=  'h3f04_01;
	'd56	:	lut_data <=  'h3f05_c8;
	'd57	:	lut_data <=  'h3905_1c;
	'd58	:	lut_data <=  'h5780_7f;
	'd59	:	lut_data <=  'h5782_0a;
	'd60	:	lut_data <=  'h5783_08;
	'd61	:	lut_data <=  'h5786_20;
	'd62	:	lut_data <=  'h5787_0c;	
	'd63	:	lut_data <=  'h5789_01;	
	'd64	:	lut_data <=  'h578a_0f;
	'd65	:	lut_data <=  'h5000_06;
	'd66	:	lut_data <=  'h3632_48;
	'd67	:	lut_data <=  'h3622_0e;	
	'd68	:	lut_data <=  'h3627_02;
	'd69	:	lut_data <=  'h3630_b4;
	'd70	:	lut_data <=  'h3633_94;
	'd71	:	lut_data <=  'h3620_42;
	'd72	:	lut_data <=  'h363a_0c;
	'd73	:	lut_data <=	 'h3334_60;
	'd74	:	lut_data <=  'h303f_81;
	'd75	:	lut_data <=  'h501f_00;	
	'd76	:	lut_data <=  'h3b00_f8;
	'd77	:	lut_data <=  'h3b01_40;
	'd78	:	lut_data <=  'h3c01_14;
	'd79	:	lut_data <=  'h4000_00;
	'd80	:	lut_data <=  'h3d08_00;//'h3d08_01;
	'd81	:	lut_data <=	 'h3640_00;
	'd82	:	lut_data <=  'h0100_01;
	'd83	:	lut_data <=  'h303a_09;	
	'd84	:	lut_data <=  'h3039_66;
	'd85	:	lut_data <=  'h303f_82;
	'd86	:	lut_data <=  'h3636_88;
	'd87	:	lut_data <=  'h3631_90;
	'd88	:	lut_data <=  'h3635_08;
	'd89	:	lut_data <=	 'h3105_04;
	'd90	:	lut_data <=	 'h3105_04;
	`endif
	default	:	lut_data <= 'h0000;
	endcase
end	

endmodule


5. 显示结果

电视显示1080p30的视频信号,图像中的色卡表明颜色显示正常。

FPGA设计——CMOS摄像与HDMI显示(DVP版)_第2张图片