FPGA 关于 Only one always block can assign a given variable write_rdy

编译FPGA 代码出现 Only one always block can assign a given variable write_rdy
错误。
原因是在连个alway中和命令中对reg 变量write_rdy进行了幅值操作。这样是不允许的。
错误代码如下:


always @ (posedge clk or negedge rst_n) 
begin 
if(!rst_n)
 begin
                        delay_500us=0;
                  write_rdy=0;
delay_init=0;
sys_addr_r=20'hFFF80;
writecnt=21'hFFF80;
write_per=0;
sdram_wr_req2=0;
sdram_wr_req1=0;
read_per=0;
 end
else
 begin
if(delay_500us < 16'd21_000)
 begin
     delay_500us<=delay_500us+1;
       end
       delay_init<=(delay_500us==16'd21_000); 
     end
end


always @ (posedge clk or negedge rst_n) 
if(!rst_n)
begin
    sys_addr_r=20'hFFF80;
endwrite=0;
end
else
           begin
    if(endwrite==0&delay_init&write_per==0)
      begin
      
        if(writecnt==21'h100000)
          begin
            sys_addr_r<=20'h0;
            endwrite<=1;
          end
          else
          begin
            write_per<=1;
            write_rdy<=0; 
            sys_addr_r<=sys_addr_r+8;
            writecnt<=writecnt+8;
          end
       end
            if(write_per==1&endwrite==0)
        write_rdy<=1;
 end 
write_rdy 变量出现在两个always语句中虽然第一个always语句中也只是对其上电复位赋值。
将其上电初始化移到第二个语句中编译通过。

注 在仿真时 不会出现上述错误的。呵呵估计仿真没有考虑到硬件综合的问题所以不会爆出这个问题吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值