在always 语句下有如下情况:
...
if(clk_bps)
begin
num <= num+1'b1;
case (num)
4'd0: rs232_tx_r <= 1'b0; //发送起始位
4'd1: rs232_tx_r <= tx_data[0]; //发送bit0
4'd2: rs232_tx_r <= tx_data[1]; //发送bit1
4'd3: rs232_tx_r <= tx_data[2]; //发送bit2
4'd4: rs232_tx_r <= tx_data[3]; //发送bit3
4'd5: rs232_tx_r <= tx_data[4]; //发送bit4
4'd6: rs232_tx_r <= tx_data[5]; //发送bit5
4'd7: rs232_tx_r <= tx_data[6]; //发送bit6
4'd8: rs232_tx_r <= tx_data[7]; //发送bit7
4'd9: rs232_tx_r <= 1'b1; //发送结束位
default: rs232_tx_r <= 1'b1;
endcase
end
else if(num==4'd11) num <= 4'd0;
第一个问题:如果上述语句中num初始值为0,当clk_bps为真时。那case中为0的语句还执行吗?即num <= num+1'b1;先执行再执行case还是同时执行?
第二个问题:本语句来自特权同学的串口发送语句,想问num在定义为reg类型初始值为x,为什么可以不初始化为0便能正确执行发送8位数据?(补充:在整个串口发送程序中如果clk_bps不为真时,也没有复位信号时,num一直为x,为什么程序能正常运行?)