|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
最近用CPLD控制单片机写数据到RAM中去的一段程序如下,使用Quartus时发现在编译后的报告一个很迷惑的问题:
Total logic elements 0/240 (0%),就是说根本没有进行内部逻辑综合了?好心人帮帮,谢谢!
// fre=50MHZ(20ns),tCPH=80ns;
module TFT(clk,A,D,nCS3,nWE,nOE,
VD_L,VD_H,
VA,VOE,VCE,VWE,UE,LE);
input clk;
input [1:0]A;
input [7:0]D;
input nCS3,nWE,nOE;
inout [7:0]VD_L;
inout [7:0]VD_H;
output[15:0]VA;
output VOE,VCE,VWE,UE,LE;
reg s,y;
reg [7:0]VD_L;
reg [7:0]VD_H;
reg D_XL,D_XH,D_Y,D_DAT;
reg [15:0]VA;
reg [15:0]ADDR;
reg VOE,VCE,VWE,UE,LE;
reg [2:0] cyc_Reg;
reg [1:0] CPU_RAM;
reg [1:0] cyc_cnt;
reg clk_W;
reg [1:0] cnt_W;
///////////第二部分的操作,对于读写RAM的数据//////////////////////
[email=always@(posedge]always@(posedge[/email] clk)//T=40ns
begin
cnt_W=cnt_W+1;
if(cnt_W==2)
clk_W=~clk_W;
end
[email=always@(posedge]always@(posedge[/email] clk_W)
begin
/////二:对RAM的写操作!//////
if(nCS3==0) //有了写操作,这是标志读写的关键!
begin
if(nWE==0) //写起动信号,一旦置低,则根据相应的地址判断!
begin
//******************************************************//
if(CPU_RAM==0)
begin
if(A==2'b10)//根据不同的CMD值来看是显示,清平还是八点写!
begin
if(D==0) //1:基本显示功能!
s=1;
end
if(s==1)//1:基本显示功能!
begin
if(A==2'b00)//X
begin
cyc_Reg=cyc_Reg+1;//ooo
if(cyc_Reg==1)
D_XL=D;
if(cyc_Reg==2)
begin
D_XH=D;
cyc_Reg=0;
end
end
end
if(A==2'b01)//Y
begin
D_Y=D;
end
if(A==2'b11)//DAT
begin
D_DAT=D;
CPU_RAM=1; //把数据存入RAM的标志!
end
end
end
end
//******************************************************//
//////////////////////////////////////////////////////////
if(CPU_RAM==1)
begin
LE=0;
UE=0;
if(cyc_cnt==0)
begin
VWE=1;
if(y<117)
begin
ADDR=D_Y*320+D_XH*256+D_XL;
VA=ADDR;
VD_L=D_DAT;
end
else
begin
ADDR=(D_Y-117)*320+D_XH*256+D_XL;
VA=ADDR;
VD_H=D_DAT;
end
end
if(cyc_cnt==1)
begin
VWE=0;
CPU_RAM=0;
cyc_cnt=0;
end
cyc_cnt=cyc_cnt+1;
end
//////////////////////////////////////////////////////////
end
endmodule |
|