m=0;
for (i=0;i<4;i=i+1) begin
fork
begin
while(1) begin
@(clk);
if (vld & ready) begin
addr[i] =top.addr;
break;
end
end
end
begin
while(1) begin
@(clk);
if (a_vld & a_ready) begin
data[3*i +m] = data;
m= m+1;
if(last) begin
m=0;
break;
end
end
end
end
join
end
while(1)永远执行while循环体;break跳出while循环到for循环,之后重新进入while循环;如果m=2时退出符合 break;则此时跳出while进入for
data[3*i+m] 第一次循环可取到i=0,m=0,1,2 data[0] data[1] data[2]
第二次 i=1,m=0,1,2 data[3] data[4] data[5]
第三次 i=2,m=0,1,2 data[6] data[7] data[8]
第四次 i=3,m=0,1,2 data[9] data[10] data[11]