一种基于FPGA的状态机状态监控处理方法及系统与流程

文档序号:21263982发布日期:2020-06-26 22:35阅读:216来源:国知局
一种基于FPGA的状态机状态监控处理方法及系统与流程

本发明属于服务器技术领域,尤其涉及一种基于fpga的状态机状态监控处理方法及系统。



背景技术:

fpga是可编程逻辑器件,用于实现各种算法、状态控制、数字逻辑等功能,已广泛应用于电子信息、通信工程等领域。状态机是应用于fpga系统中的数字电路,由触发器、组合逻辑电路组成,通过状态之间的转换和数字逻辑的输出完成系统的功能。

在状态机设计中,需要对每个状态进行编码,例如采用二进制枚举编码、one-hot(一位独热编码)以及格雷码等方式,不管利用哪种编码方式,总是不可避免地出现大量剩余状态,即未被定义的编码组合,这些状态在状态机的正常运行中是不需要出现的,即“非法”状态。由于外界干扰、系统自身可靠性、设计等原因,状态机在运行过程中可能会进入“非法”状态,影响系统正常运转,出现系统非预期的功能。

目前,当状态机进入“非法”状态时,通常使用复位控制信号reset对系统进行复位,使系统恢复到正常的初始状态后再继续执行状态机,但是这种复位方式解决状态机进入非法状态的方案适用于系统具备复位信号reset、以及人为可以控制的场景,但在无人控制的情况下、或系统自身就未设置复位信号等情景,就无法获取复位信号了。此外,系统进入“非法”状态后通过reset信号使系统复位,状态机会失去当前状态的运行上下文,而直接返回初始状态,从而影响状态机运行的连贯性。



技术实现要素:

针对现有技术中的缺陷,本发明提供了一种基于fpga的状态机状态监控处理方法,旨在解决现有技术中状态机在运行过程中可能会进入“非法”状态,影响系统正常运转,出现系统非预期的功能的问题。

本发明所提供的技术方案是:一种基于fpga的状态机状态监控处理方法,所述方法包括下述步骤:

fpga的状态机上电后,以轮询的方式实时读取状态机的每一个状态编码,将读取到的每一个状态编码与预先配置生成的与当前读取的状态相匹配的状态参考编码相比较,判断两者是否一致;

当判定读取到的当前的状态编码与预先配置生成的状态参考编码相一致时,则判定当前状态处于正常状态;

当判定读取到的当前的状态编码与预先配置生成的状态参考编码不一致时,则应用预先配置生成的状态参考编码替换当前读取状态的状态编码。

作为一种改进的方案,所述fpga的状态机上电后,以轮询的方式实时读取状态机的每一个状态编码的步骤之前还包括下述步骤:

对所述fpga的状态机的各个状态进行编码,并将状态编码存储到合法状态编码存储区。

作为一种改进的方案,所述方法还包括下述步骤:

接收对所述状态机的状态编码的修改指令,所述修改指令包括状态编码的编码方式、状态编码的增加以及状态编码的删除;

根据所述修改指令,对所述状态机的状态编码执行响应的动作。

作为一种改进的方案,所述fpga的状态机上电后,以轮询的方式实时读取状态机的每一个状态编码,将读取到的每一个状态编码与预先配置生成的与当前读取的状态相匹配的状态参考编码相比较,判断两者是否一致的步骤具体包括下述步骤:

控制预先配置的第一寄存器依次从所述合法状态编码存储区读取一个状态编码;

控制预先配置的第二寄存器读取所述状态机当前与从所述合法状态编码存储区读取一个状态编码相对应的一个状态编码;

将从所述合法状态编码存储区读取状态编码与读取到的状态机当前的状态编码进行比较,判断两者是否一致;

当判定读取到的当前的状态编码与预先配置生成的状态参考编码相一致时,生成第一标识信号;

当判定读取到的当前的状态编码与预先配置生成的状态参考编码不一致时,生成第二标识信号。

作为一种改进的方案,所述方法还包括下述步骤:

预先配置第一寄存器和第二寄存器,所述第一寄存器和第二寄存器分别用于读取状态机的状态编码。

本发明的另一目的在于提供一种基于fpga的状态机状态监控处理系统,所述系统包括:

状态读取判断模块,用于fpga的状态机上电后,以轮询的方式实时读取状态机的每一个状态编码,将读取到的每一个状态编码与预先配置生成的与当前读取的状态相匹配的状态参考编码相比较,判断两者是否一致;

正常状态判定模块,用于当判定读取到的当前的状态编码与预先配置生成的状态参考编码相一致时,则判定当前状态处于正常状态;

状态编码替换模块,用于当判定读取到的当前的状态编码与预先配置生成的状态参考编码不一致时,则应用预先配置生成的状态参考编码替换当前读取状态的状态编码。

作为一种改进的方案,所述系统还包括:

状态编码模块,用于对所述fpga的状态机的各个状态进行编码;

状态编码存储模块,用于将状态编码存储到合法状态编码存储区。

作为一种改进的方案,所述系统还包括:

修改指令接收模块,用于接收对所述状态机的状态编码的修改指令,所述修改指令包括状态编码的编码方式、状态编码的增加以及状态编码的删除;

修改动作响应模块,用于根据所述修改指令,对所述状态机的状态编码执行响应的动作。

作为一种改进的方案,所述状态读取判断模块具体包括:

第一读取模块,用于控制预先配置的第一寄存器依次从所述合法状态编码存储区读取一个状态编码;

第二读取模块,用于控制预先配置的第二寄存器读取所述状态机当前与从所述合法状态编码存储区读取一个状态编码相对应的一个状态编码;

比较判断模块,用于将从所述合法状态编码存储区读取状态编码与读取到的状态机当前的状态编码进行比较,判断两者是否一致;

第一标识信号生成模块,用于当判定读取到的当前的状态编码与预先配置生成的状态参考编码相一致时,生成第一标识信号;

第二标识信号生成模块,用于当判定读取到的当前的状态编码与预先配置生成的状态参考编码不一致时,生成第二标识信号。

作为一种改进的方案,所述状态读取判断模块还包括:

预先配置模块,用于预先配置第一寄存器和第二寄存器,所述第一寄存器和第二寄存器分别用于读取状态机的状态编码。

在本发明实施例中,fpga的状态机上电后,以轮询的方式实时读取状态机的每一个状态编码,将读取到的每一个状态编码与预先配置生成的与当前读取的状态相匹配的状态参考编码相比较,判断两者是否一致;当判定读取到的当前的状态编码与预先配置生成的状态参考编码相一致时,则判定当前状态处于正常状态;当判定读取到的当前的状态编码与预先配置生成的状态参考编码不一致时,则应用预先配置生成的状态参考编码替换当前读取状态的状态编码,从而能够检测出状态机的非法状态并将状态机恢复到正常状态,保障状态机运行的连贯性,以及状态机的容错性和可靠性。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。在所有附图中,类似的元件或部分一般由类似的附图标记标识。附图中,各元件或部分并不一定按照实际的比例绘制。

图1是本发明提供的基于fpga的状态机状态监控处理方法的实现流程图;

图2是本发明提供的fpga的状态机上电后,以轮询的方式实时读取状态机的每一个状态编码,将读取到的每一个状态编码与预先配置生成的与当前读取的状态相匹配的状态参考编码相比较,判断两者是否一致的实现流程图;

图3是本发明提供的基于fpga的状态机状态监控处理系统的结构框图;

图4是本发明提供的状态读取判断模块的结构框图。

具体实施方式

下面将结合附图对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的、技术方案,因此只作为示例,而不能以此来限制本发明的保护范围。

图1是本发明提供的基于fpga的状态机状态监控处理方法的实现流程图,其具体包括下述步骤:

在步骤s101中,fpga的状态机上电后,以轮询的方式实时读取状态机的每一个状态编码,将读取到的每一个状态编码与预先配置生成的与当前读取的状态相匹配的状态参考编码相比较,判断两者是否一致。

在步骤s102中,当判定读取到的当前的状态编码与预先配置生成的状态参考编码相一致时,则判定当前状态处于正常状态。

在步骤s103中,当判定读取到的当前的状态编码与预先配置生成的状态参考编码不一致时,则应用预先配置生成的状态参考编码替换当前读取状态的状态编码。

其中,该步骤s103即为对状态的纠错过程,在此不再赘述。

在本发明实施例中,在执行上述步骤s101之前还需要执行下述步骤:

对所述fpga的状态机的各个状态进行编码,并将状态编码存储到合法状态编码存储区;

其中,以二进制编码方式的状态编码为例进行说明,one-hot编码和格雷码方式的原理与二进制编码是一致的,假设状态机由5个状态组成:状态1、状态2、状态3、状态4和状态5,对应5个状态的二进制合法编码分别为0x001、0x010、0x011、0x100和0x101。该5个状态编码写入合法状态存储区,即rom单元,除了以上5种编码外,其余编码都视为“非法”状态,例如状态6(0x110)。

在该实施例中,可以对上述状态编码进行状态修改,具体为:

(1)接收对所述状态机的状态编码的修改指令,所述修改指令包括状态编码的编码方式、状态编码的增加以及状态编码的删除;

(2)根据所述修改指令,对所述状态机的状态编码执行响应的动作。

在本发明实施例中,fpga的状态机上电后,以轮询的方式实时读取状态机的每一个状态编码,将读取到的每一个状态编码与预先配置生成的与当前读取的状态相匹配的状态参考编码相比较,判断两者是否一致的步骤具体包括下述步骤:

在步骤s201中,控制预先配置的第一寄存器依次从所述合法状态编码存储区读取一个状态编码;

在步骤s202中,控制预先配置的第二寄存器读取所述状态机当前与从所述合法状态编码存储区读取一个状态编码相对应的一个状态编码;

在步骤s203中,将从所述合法状态编码存储区读取状态编码与读取到的状态机当前的状态编码进行比较,判断两者是否一致,是则执行步骤s204,否则执行步骤s205;

在步骤s204中,当判定读取到的当前的状态编码与预先配置生成的状态参考编码相一致时,生成第一标识信号;

在步骤s205中,当判定读取到的当前的状态编码与预先配置生成的状态参考编码不一致时,生成第二标识信号。

其中,该第一标识信号和第二标识信号作为后续判断执行的参考信号,即执行上述步骤s102和步骤s103的依据,在此不再赘述。

在本发明实施例中,在执行上述步骤s201之前还需要执行下述步骤:

预先配置第一寄存器和第二寄存器,所述第一寄存器和第二寄存器分别用于读取状态机的状态编码。

在本发明实施例中,在轮询检测状态机的状态过程中,在每一个状态的检测过程之间需要进行状态控制切换,在此不再赘述。

图3示出了本发明提供的基于fpga的状态机状态监控处理系统的结构框图,为了便于说明,图中仅给出了与本发明实施例相关的部分。

基于fpga的状态机状态监控处理系统包括:

状态读取判断模块11,用于fpga的状态机上电后,以轮询的方式实时读取状态机的每一个状态编码,将读取到的每一个状态编码与预先配置生成的与当前读取的状态相匹配的状态参考编码相比较,判断两者是否一致;

正常状态判定模块12,用于当判定读取到的当前的状态编码与预先配置生成的状态参考编码相一致时,则判定当前状态处于正常状态;

状态编码替换模块13,用于当判定读取到的当前的状态编码与预先配置生成的状态参考编码不一致时,则应用预先配置生成的状态参考编码替换当前读取状态的状态编码。

在该实施例中,所述系统还包括:

状态编码模块14,用于对所述fpga的状态机的各个状态进行编码;

状态编码存储模块15,用于将状态编码存储到合法状态编码存储区;

修改指令接收模块16,用于接收对所述状态机的状态编码的修改指令,所述修改指令包括状态编码的编码方式、状态编码的增加以及状态编码的删除;

修改动作响应模块17,用于根据所述修改指令,对所述状态机的状态编码执行响应的动作。

在本发明实施例中,如图4所示,所述状态读取判断模块11具体包括:

第一读取模块18,用于控制预先配置的第一寄存器依次从所述合法状态编码存储区读取一个状态编码;

第二读取模块19,用于控制预先配置的第二寄存器读取所述状态机当前与从所述合法状态编码存储区读取一个状态编码相对应的一个状态编码;

比较判断模块20,用于将从所述合法状态编码存储区读取状态编码与读取到的状态机当前的状态编码进行比较,判断两者是否一致;

第一标识信号生成模块21,用于当判定读取到的当前的状态编码与预先配置生成的状态参考编码相一致时,生成第一标识信号;

第二标识信号生成模块22,用于当判定读取到的当前的状态编码与预先配置生成的状态参考编码不一致时,生成第二标识信号。

在该实施例中,所述状态读取判断模块还包括:

预先配置模块23,用于预先配置第一寄存器和第二寄存器,所述第一寄存器和第二寄存器分别用于读取状态机的状态编码。

其中,上述各个模块的功能如上述方法实施例所记载,在此不再赘述。

在本发明实施例中,fpga的状态机上电后,以轮询的方式实时读取状态机的每一个状态编码,将读取到的每一个状态编码与预先配置生成的与当前读取的状态相匹配的状态参考编码相比较,判断两者是否一致;当判定读取到的当前的状态编码与预先配置生成的状态参考编码相一致时,则判定当前状态处于正常状态;当判定读取到的当前的状态编码与预先配置生成的状态参考编码不一致时,则应用预先配置生成的状态参考编码替换当前读取状态的状态编码,从而能够检测出状态机的非法状态并将状态机恢复到正常状态,保障状态机运行的连贯性,以及状态机的容错性和可靠性。

以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1