if(clk_bps) begin num <= num+1'b1;
case (num)
4'd1: rx_temp_data[0] <= rs232_rx; //锁存第0bit
4'd2: rx_temp_data[1] <= rs232_rx; //锁存第1bit
4'd3: rx_temp_data[2] <= rs232_rx; //锁存第2bit
4'd4: rx_temp_data[3] <= rs232_rx; //锁存第3bit
4'd5: rx_temp_data[4] <= rs232_rx; //锁存第4bit
4'd6: rx_temp_data[5] <= rs232_rx; //锁存第5bit
4'd7: rx_temp_data[6] <= rs232_rx; //锁存第6bit
4'd8: rx_temp_data[7] <= rs232_rx; //锁存第7bit
default: ;
endcase
end
这是特权同学串口收发试验中的一段代码,很简单,就是clk_bps为1时,num计数,并通过判断num值读取串口各位数据的一段代码。
不过刚接触verilog代码,有一点地方不明白:begin和end之间的语句是顺序执行的么?也就是说当执行case语句的时候,case(num)中的num是已经自加1之后的num还是没有自加1的num。
如果是顺序执行,即先自加1之后再用case语句判断,那么当num=1时,rx_temp_data[0] 中读取的数据岂不是起始位的数据
很弱智的问题,望各位解答