问题:使用task时,x1,x2,x3,y1,y2,,y3,z2,z3输出都为0,不正常了,帮忙看看task这么使用对不对???
代码(使用task):
task iterative;
input rst_n;
input [4:0] i;
input [23:0] xin;
input [23:0] yin;
input [23:0] zin;
input [23:0] ROT;
output [23:0] xout;
output [23:0] yout;
output [23:0] zout;
reg [23:0] xout;
reg [23:0] yout;
reg [23:0] zout;
//always @(posedge clk or negedge rst_n)
begin
if(rst_n==1'b0)
begin
xout<=#1{(24){1'b0}};
yout<=#1{(24){1'b0}};
zout<=#1{(24){1'b0}};
end
else
begin
if(zin[23]==1'b0)
begin
xout<=#1 xin-(yin>>>i);
yout<=#1 yin+(xin>>>i);
zout<=#1 zin-ROT;
end
else begin
xout<=#1 xin+(yin>>>i);
yout<=#1 yin-(xin>>>i);
zout<=#1 zin+ROT;
end
end
end
endtask
always @(posedge sys_clk or negedge rst_n)
begin
iterative(rst_n,cnt0,x0,y0,z0,ROT1,x1,y1,z1); //第一次迭代
iterative(rst_n,cnt1,x1,y1,z1,ROT2,x2,y2,z2); //第二次迭代
iterative(rst_n,cnt2,x2,y2,z2,ROT3,x3,y3,z3); //第三次迭代
end
仿真图一(使用task):
仿真图二(未使用task):