|  | 
 
| 
最近用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
 | 
 |