请问这个代码是在实现什么?
generate
genvar cnt ;
for ( cnt = 0 ; cnt < PN ; cnt = cnt + 1 )
begin
always @ ( posedge s_axis_aclk )
if ( ~s_axis_aresetn )
reg_bank[cnt] <= 0 ;
else if ( s_axis_tvalid )
reg_bank[cnt]<= {reg_bank[cnt][DW*(WL-1)-1:0],s_axis_tdata[(cnt+1)*DW-1-:DW]};
else
reg_bank[cnt] <= reg_bank[cnt] ;
end
endgenerate
这个代码中 DW WL 是什么意思?怎么定义的?
reg_bank s_axis_tdata 这俩是怎么定义的,是数组吗?
其实只要理解这些就能理解这个代码。
我的猜测
reg_bank 是个数组
reg_bank[cnt]<= {reg_bank[cnt][DW*(WL-1)-1:0],s_axis_tdata[(cnt+1)*DW-1-:DW]};
这是对这个数组赋值,就是将 s_axis_tdata 挑选几位数放入 reg_bank[]的低位,将原来的低位数据左移到高位去。