always @ (posedge lcd_pclk or negedge rst_n) begin
if (!rst_n) begin
lcd_bl <= 1'b1;
lcd_rst <= 1'b1;
lcd_de <= 1'b0;
end else begin
lcd_bl <= 1'b1;
lcd_rst <= 1'b1;
lcd_de <= 1'b0;
end
end
//行场信号的启动边沿是同时动作的
//行计数器对像素时钟计数
always@ (posedge lcd_pclk or negedge rst_n) begin
if(!rst_n)
h_cnt <= 11'd0;
else begin
if(h_cnt == H_TOTAL_7016 - 1'b1)
h_cnt <= 11'd0;
else
h_cnt <= h_cnt + 1'b1;
end
end
//场计数器对行计数
always@ (posedge lcd_pclk or negedge rst_n) begin
if(!rst_n)
v_cnt <= 11'd0;
else begin
if(h_cnt == H_TOTAL_7016 - 1'b1) begin
if(v_cnt == V_TOTAL_7016 - 1'b1)
v_cnt <= 11'd0;
else
v_cnt <= v_cnt + 1'b1;
end
end
end
always @ (posedge lcd_pclk or negedge rst_n) begin
if (!rst_n) begin
lcd_hs <= 1'b1;
end else if( h_cnt == ( H_TOTAL_7016 - 1 ) ) begin
lcd_hs <= 1'b0;
end else if( h_cnt == ( H_SYNC_7016 - 1 ) ) begin
lcd_hs <= 1'b1;
end
end
always @ (posedge lcd_pclk or negedge rst_n) begin
if (!rst_n) begin
lcd_vs <= 1'b1;
end else if( (v_cnt == ( V_TOTAL_7016 - 1 ))&&( h_cnt == H_TOTAL_7016 - 1'b1 ) ) begin
lcd_vs <= 1'b0;
end else if( v_cnt == ( V_SYNC_7016 - 1 )&&( h_cnt == H_TOTAL_7016 - 1'b1 ) ) begin
lcd_vs <= 1'b1;
end
end
parameter WHITE = 24'hFFFFFF; //白色
parameter BLACK = 24'h000000; //黑色
parameter RED = 24'hFF0000; //红色
parameter GREEN = 24'h00FF00; //绿色
parameter BLUE = 24'h0000FF; //蓝色
//像素点x坐标
always@ (posedge lcd_pclk or negedge rst_n) begin
if(!rst_n) begin
pixel_xpos <= 11'd0;
end else if(de_reg)
pixel_xpos <= h_cnt + 2'd2 - H_SYNC_7016 - H_BACK_7016 ;
else
pixel_xpos <= 11'd0;
end