请教一下各位,我用的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
//-----------------