hspydf 发表于 2020-11-8 17:00:21

求助,帮忙看看代码什么问题

功能是 串口接收一帧数据,保存下来,然后判断, 发现发送第一帧数据的时候程序正常执行, 第二帧数据就不对了,然后第三次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 ;

wye11083 发表于 2020-11-8 22:30:45

看起来你把s3放到enable里面去了,这样在s3状态会丢1个字。解决方案:去掉s,或者把enable放里面让s3可以立即到idle
页: [1]
查看完整版本: 求助,帮忙看看代码什么问题