module full_color_b(
GCLK,
IO,
ADR_A,ADR_W_IN,DB_IN,
CE1,OE,
R_OUT,G_OUT,B_OUT,DCLK,DENA,HD,VD,CE2,_WE,CE3
);
//PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
/**************/
/**************/
input GCLK;
inout [15:0] IO;
input [18:0] ADR_W_IN;
input [15:0] DB_IN;
output [18:0] ADR_A;
//////////LCD interface/////////////
output DCLK,DENA,HD,VD;
output [7:0] R_OUT;
output [7:0] G_OUT;
output [7:0] B_OUT;
output CE1,OE,CE2,CE3;
output _WE;
parameter tHB=128,tHA=800,tVB=45,tVA=480,tHFP=40,tHBP=88,tVFP=13,tVBP=16,PIXEL='d384000;
assign _WE=GCLK_D==0?1:(~GCLK);
reg OE_R;
assign OE=0;
assign CE1=0;
assign CE2=0;
assign CE3=1;
reg GCLK_H;
reg VD_R,HD_R;
reg [18:0] ADR_R;
reg [18:0] ADR_OUT;
reg [10:0] H_ADD;
reg [9:0] V_ADD;
reg DENA_R;
reg [7:0] R_R;
reg [7:0] G_R;
reg [7:0] B_R;
assign HD=HD_R;
assign VD=VD_R;
reg [18:0] ADR_A_R;
assign ADR_A[18:0]=ADR_A_R[18:0];
always @(posedge GCLK)
begin
if(GCLK_D==1)
begin
ADR_A_R[18:0]<=ADR_W_IN[18:0];
end
else
begin
ADR_A_R[18:0]<=ADR_R[18:0];
end
end
/****************************/
reg [15:0] IO_R;
assign IO[15:0]=IO_R[15:0];
always @(posedge GCLK)
begin
if(GCLK_D==1)
begin
IO_R[15:0]<=DB_IN[15:0];
end
else
begin
IO_R[15:0]<=16'hzz;
end
end
assign DCLK=~GCLK_D;
/***************************/
assign R_OUT[7:0]=R_R[7:0];
assign G_OUT[7:0]=G_R[7:0];
assign B_OUT[7:0]=B_R[7:0];
assign DENA=DENA_R;
reg GCLK_H_R;
always @(posedge GCLK)
begin
GCLK_H<=~GCLK_H;
end
reg GCLK_D;
always @(negedge GCLK)
begin
GCLK_D<=~GCLK_D;
end
always @(posedge GCLK)
begin
//if(GCLK_H==1)
if(GCLK_D==1)
begin
/**************/
B_R[7:0]<={IO[4:0],3'b111};
G_R[7:0]<={IO[10:5],2'b11};
R_R[7:0]<={IO[15:11],3'b111};
/**************
B_R[7:3]<=IO_R[4:0];
G_R[7:2]<=IO_R[10:5];
R_R[7:3]<=IO_R[15:11];
/*********/
end
end
reg [9:0] xa;
reg [8:0] ya;
/********************************/
/////////////////行计数////////////////////
always @(negedge GCLK)
begin
if(GCLK_H==1)
begin
if(H_ADD==tHB+tHA)
H_ADD<=0;
else
H_ADD<=H_ADD+1;
end
end
/////////////////列计数//////////////////////
always @(negedge GCLK)
begin
if(GCLK_H==1)
begin
if(H_ADD==tHB+tHA)
begin
if(V_ADD==tVB+tVA)
V_ADD<=0;
else
V_ADD<=V_ADD+1;
end
end
end
//////////////行场扫描////////////////////
always @(negedge GCLK)
begin
if(GCLK_H==1)
begin
if((V_ADD>=tVB)&&(V_ADD<tVB+tVA))
begin
if((H_ADD>=tHB)&&(H_ADD<tHB+tHA))
DENA_R<=1;
else
DENA_R<=0;
end
else
begin
DENA_R<=0;
end
end
end
//////////////VD扫描////////////////////
always @(negedge GCLK)
begin
if(GCLK_H==1)
begin
if((V_ADD>=tVFP)&&(V_ADD<tVBP))
begin
VD_R<=0;
end
else
begin
VD_R<=1;
end
end
end
//////////////HD/////////////////////////////
always @(negedge GCLK)
begin
if(GCLK_H==1)
begin
if((H_ADD>=tHFP)&&(H_ADD<tHBP))
begin
HD_R<=0;
end
else
begin
HD_R<=1;
end
end
end
///////////////寻址///////////////////////
always @(negedge GCLK)
begin
if(GCLK_H==1)
begin
if(DENA_R==1)
begin
if(ADR_R==PIXEL)
begin
ADR_R<=1;
end
else
begin
ADR_R<=ADR_R+1'b1;
end
end
end
end
/***************************************/
endmodule
lcd_driver.zip_verilog lcd
版权申诉
195 浏览量
2022-09-21
19:03:04
上传
评论
收藏 1KB ZIP 举报
寒泊
- 粉丝: 75
- 资源: 1万+
最新资源
- CISCN2024-re3-rust-baby(Frida多字节程序插桩爆破)
- soft:磁盘清理工具
- .netcore控制台使用Nssm打包windows服务,加winform管理服务界面
- db-college.sql
- wpf-dragdrop-treeview(WPF较好拖拽效果).7z
- img-1716258776282bf88540b0e387ddd2ea677d02c7f3594ad72383f796d86b02fb7d2ae2543915d.jpg
- 《伦敦共享单车数据分析与代码》
- SKIP-v2.1.1.apk
- IMG20240521103815.jpg
- 松下A4系列伺服参数调试软件
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈