首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

[求助]那位大侠给看一下呀

[求助]那位大侠给看一下呀

我刚学QUARTUS,编了一个程序,但是综合的时候出错,怎么改都该不了,希望哪位能帮看看,谢谢了~~~
module register(Din,Dout,RA,WR,RD,WP,RST,RB,CP,M,ALE,OE,ADR);
input [7:0] Din;     //8位双向数据输入输出
input [1:0] RA;       //寄存器选择
input RD,WR,RB,WP,CP,ALE,RST,M,OE;
output [7:0] Dout;
output [15:0] ADR;
reg [7:0] R0,R1,R2,R3,Dout,PCH,PCL;
reg [15:0] PC,Q,ADR;
always @(negedge WR)  //8位通用寄存器组的输入
   case(RA)
      2'b00:R0=Din;
      2'b01:R1=Din;
      2'b10:R2=Din;
      2'b11:R3=Din;
   endcase
always @(negedge RD)  //8位通用寄存器组的输出
   case(RA)
      2'b00out=R0;
      2'b01out=R1;
      2'b10out=R2;
      2'b11out=R3;
   endcase
always @(negedge WP)  //PC寄存器的预置,分两次进行
     if(!RB) PC[7:0]=Din;
     else PC[15:8]=Din;
always @(negedge RST or posedge CP)
 begin
      if(!RST) PC=16'b0;   //pc清零
      else if(!M) PC=PC+1; //pc加1
           else PC=PC-1;   //pc减1
 end
always @(posedge ALE or negedge OE)
   begin
      if(ALE)   Q=PC;      //pc内容锁存
      else if(!OE)  ADR=Q; //锁存器输出到地址线
   end
endmodule
错误是PC预置那,错误有下面几项:
can't reslove multiple constant drivers for net PC[15] ;
can't elaborate top-level user hierarch
你不能在两个always中都对pc进行赋值
美梦成真-->噩梦降临!
返回列表