上网看了一下,latch就是不好,避免就对了。
自己写了一个UDP传输的简单模块,传ram的数据给pc,写到有这么一段
always@(*)
begin
case(data_cnt)
......
default:begin
case(data_cnt%4)
4'd0:DATA = Data_in[11:8];
4'd1:begin
DATA = Data_in[15:12];
Address = Address + 1;
end
4'd2:DATA = Data_in[3:0];
4'd3:DATA = Data_in[7:4];
default:begin
DATA = 0;
end
endcase
end
address 这一段会报错,latch的问题,想想也对,在data_cnt%4的值符合条件的情况下,address会一直自加,显然不合理。
所以不能自加。
其他关于latcch报错的情况我查了查,有:
1:组合逻辑中,always@(*)块中if要有else分支,case要有default分支
2:不要自加。