/*************LCD 视频输出测试************* --版本号1.1 --使用VTC产生视频时序 --使用TPG产生测试图像数据 *********************************************************************/ `timescale 1 ps / 1 ps
module display( input I_sysclk,//系统时钟输入 output O_lcd_pwm,//背光PWM output O_lcd_pclk, output [7:3] O_lcd_r, output [7:2] O_lcd_g, output [7:3] O_lcd_b, output O_lcd_hs, output O_lcd_vs, output O_lcd_de, output O_card_power_en );
wire vid_rst,vid_clk,vid_vs,vid_hs,vid_de;
assign O_card_power_en = 1'b1;//子卡上电 assign O_lcd_pwm = 1'b1;//设置背光PWM,设置1背光全开 assign O_lcd_pclk = vid_clk;
//MMCM/PLL 时钟模块 clk_wiz_0 u_clk(.clk_in1(I_sysclk),.clk_out1(vid_clk),.locked(vid_rst));
//例化uivtc VTC 产生视频时序,液晶屏分辨率1024*600 uivtc# ( .H_ActiveSize(1024), //视频时间参数,行视频信号,一行有效(需要显示的部分)像素所占的时钟数,一个时钟对应一个有效像素 .H_FrameSize(1344), //视频时间参数,行视频信号,一行视频信号总计占用的时钟数 .H_SyncStart(1048), //视频时间参数,行同步开始,即多少时钟数后开始产生行同步信号 .H_SyncEnd(1184), //视频时间参数,行同步结束,即多少时钟数后停止产生行同步信号,之后就是行有效数据部分 .V_ActiveSize(600), //视频时间参数,场视频信号,一帧图像所占用的有效(需要显示的部分)行数量,通常说的视频分辨率即H_ActiveSize*V_ActiveSize .V_FrameSize(628), //视频时间参数,场视频信号,一帧视频信号总计占用的行数量 .V_SyncStart(601), //视频时间参数,场同步开始,即多少行数后开始产生场同步信号 .V_SyncEnd (602) //视频时间参数,场同步结束,即多少行数后停止产生场同步信号,之后就是场有效数据部分 ) uivtc_inst ( .I_vtc_rstn(vid_rst),//系统时钟,像素时钟 .I_vtc_clk(vid_clk),//系统复位 .O_vtc_vs(vid_vs),//场同步输出 .O_vtc_hs(vid_hs),//行同步输出 .O_vtc_de_valid(vid_de) //视频数据有效 );
//例化TPG 产生测试视频数据 uitpg uitpg_inst ( .I_tpg_rstn(vid_rst),//系统复位 .I_tpg_clk(vid_clk),//系统时钟,像素时钟 .I_tpg_vs(vid_vs),//场同步输入 .I_tpg_hs(vid_hs),//行同步输入 .I_tpg_de(vid_de),//视频数据有效 .O_tpg_vs(O_lcd_vs),//场同步输出 .O_tpg_hs(O_lcd_hs),//行同步输出 .O_tpg_de(O_lcd_de), .O_tpg_data({{O_lcd_r,3'd0},{O_lcd_g,2'd0},{O_lcd_b,3'd0}}) //测试图像数据输出 );
endmodule
|