编译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语句中也只是对其上电复位赋值。
将其上电初始化移到第二个语句中编译通过。
注 在仿真时 不会出现上述错误的。呵呵估计仿真没有考虑到硬件综合的问题所以不会爆出这个问题吧!
FPGA 关于 Only one always block can assign a given variable write_rdy
最新推荐文章于 2023-03-06 08:13:51 发布