|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
最近在做液晶驱动,里面的一部分是:我通过接收51单片机的nWE信号来开始接收地址和数据,可是检验后发现数据没有读到RAM中去,能帮我分析一下么?
module TFT(clk,A,D,nCS3,nWE,nOE,
VD_L,VD_H,
VA,VOE,VCE,VWE,UE,LE);
input clk;
input [1:0]A; //address
input [7:0]D; //data
input nCS3,nWE,nOE;
inout [7:0]VD_L; //ram's low data line
inout [7:0]VD_H; // ram's high data line
output[15:0]VA; //ram's address line
output VOE,VCE,VWE,UE,LE; //ram's control signal
reg [15:0]VA;
reg [15:0]ADDR;
reg VOE,VCE,VWE,UE,LE;
reg [7:0]VD_L;
reg [7:0]VD_H;
//定义四个寄存器变量!
reg [7:0]CMD;
reg [7:0]Y;
reg [7:0]DAT;
//二个X值得高低寄存器.
reg [7:0]D_XL;
reg [7:0]D_XH;
reg [1:0]D_LH;//用于判断X的高低八位
//用于标志功能的位!
reg [8:0]i;
reg [2:0]cyc_cnt;
//////////////////单片机的写操作///////////////////////
[email=always@(posedge]always@(posedge[/email] nWE)
begin
if(A==2'b10)
begin
CMD=D;//根据不同的CMD值来看是显示,清平还是八点写!
i=0;
end
//////////这一部分用于输入的X,Y,Data值///////////////////
else if(A==2'b00)//X时分为高低八位,要分别处理!
begin
D_LH=D_LH+1;
if(D_LH==1)
D_XL=D;
else //D_LH=2;
begin
D_XH=D;
D_LH=0;
i=0;//用于多点连写的标志
end
end
else if(A==2'b01)//Y只有八位
begin
Y=D;
i=0;//用于多点连写的标志
end
else //(A==11)
begin
//基本显示功能下的形成RAM的原始地址
DAT=D;
if(Y<117)
begin
ADDR=Y*234+D_XH*256+D_XL;
end
else
ADDR=(Y-117)*234+D_XH*256+D_XL;
i=i+1;
end
end//
/////////////////存储操作(61lv6416)//////////////////////////////////
[email=always@(posedge]always@(posedge[/email] clk)
begin
VCE=0;
LE=0;
UE=0;
if(cyc_cnt==2)
begin
VWE=1;
VA=ADDR+i;
if(Y<117)
VD_L=DAT;
else
VD_H=DAT;
end
if(cyc_cnt==4)
begin
VWE=0;
cyc_cnt=0;
end
cyc_cnt=cyc_cnt+1;
end
endmodule |
|