verilog赋值不成功,生成固件丢失代码

请教一下各位,我用的artix 7 100t芯片,vivado2019,我写了一个串口接收模块,部分代码如下,在case 0 状态的时候判断rx为低电平(串口接收引脚)了以后把beginCnt赋值为1开启波特率信号计算并进入1状态,多数时候是正常的,但是有时候重新生成了程序以后case从0进入到1状态以后调试发现beginCnt居然还是0,说明在上一步的赋值没有成功,verilog居然赋值不成功,感觉好像是重新生成了固件以后虽然0状态里面有beginCnt<=1;这个代码,但是实际生成的固件没这个代码一样的,真是太奇怪了,请各位帮助分析一下这是什么情况,感谢
部分代码如下

```c++
always@(posedge clk50m)begin
case(stateRx)
0:begin
if(RX == 0)begin
stateRx <= 1;

            beginCnt<=1;
        end
        rxFinish<=0;
    end
    1:begin//startBit
        if(BaudePulse == 1)begin
            stateRx<= 2;
            bitCntRx<=0;
        end
    end
    2:begin//data bit

        if(halfBaudPulse == 1)begin
               bitCntRx<= bitCntRx + 1;
               rxBuffer[bitCntRx] <= RX;
               if(bitCntRx >= 7)begin
                    stateRx <= 3;
               end
        end
    end
    3:begin // stop bit
        if(halfBaudPulse == 1)begin
            beginCnt <= 0;
            stateRx <= 0;
            rxFinish<=1;
        end

    end
    default:begin
        stateRx<=0;
    end
    endcase
end

ila_0 your_instance_name (
.clk(clk50m), // input wire clk


.probe0(RX), // input wire [0:0]  probe0  
.probe1(BaudePulse), // input wire [0:0]  probe1 
.probe2(rxFinish), // input wire [0:0]  probe2 
.probe3beginCnt// input wire [0:0]  probe3 
.probe4(0), // input wire [15:0]  probe4 
.probe5(stateRx) // input wire [7:0]  probe5

);

Verilog 赋值问题

//******************
// always中的阻塞赋值
always@(*)
begin
    #10 reg1 = D1;
    #20 reg2 = D2;
    #5 reg3 = D3;
    #5 reg1 = D4;
    //表示 t=10,reg1=D1;t=30,reg2 =D2 ;t=35,reg3=D3;t=40, reg1=D4
end
//*****************

//-----------------
//always中的非阻塞赋值
always@(*)
begin
    #10 rega <= D1;
    #20 regb <= D2;
    #5 regc <= D3;
    #5 rega <= D4;
//表示 t=5,rega=D4, regc=D3;t=10,rega =D1 ;t=20,regb=D2;
end
//-----------------