求助,帮忙看看代码什么问题
功能是 串口接收一帧数据,保存下来,然后判断, 发现发送第一帧数据的时候程序正常执行, 第二帧数据就不对了,然后第三次OK ,第四4 NG,看了半天找不到问题always@(posedge clk or negedge rst_n)
if(!rst_n)
begin
sync_state <= IDEL;
end
else
if(neg_rx_int==1) begin
case(sync_state)
IDEL:
if(rx_data == 8'hee) //开始字符
begin
sync_state <= S2;
rxcounter <= 8'h00;
end
else ;
S2:
if(rx_data == 8'hff) begin //结束字符
sync_state <= S3;
rxcounter <= 8'h00;
end
else if(rx_data ==8'hee) begin //开始字符
rxcounter <= 8'h00;
sync_state<=S2;
end
else begin
rx_store <= rx_data; //串口接收的数据保存
rxcounter <= rxcounter +1'b1;
end
S3: begin sync_state <= IDEL;
end
default: ;
endcase
end
else ; 看起来你把s3放到enable里面去了,这样在s3状态会丢1个字。解决方案:去掉s,或者把enable放里面让s3可以立即到idle
页:
[1]