基于arinc659协议的指令译码电路的实现方法
【专利摘要】本发明涉及一种基于ARINC659协议的指令译码电路的实现方法,该方法包括:1)对ARINC659协议规定的不同系统参数定义机器码,并将不同系统参数所对应的机器码存放于与其位宽相应的寄存器中;2)对ARINC659协议规定的指令定义对应的指令编码;3)采用通用静态存储器SRAM存放所有指令的机器码;4)采用状态机对所有指令的机器码进行译码;5)将译码后的所有指令的机器码存放于通用同步FIFO中,通用同步FIFO的数据位宽是256位。本发明提供了一种有效解决ARINC659总线上BIU对帧描述语言指令的解析问题、可进行推广完成类似总线自定义指令集的机器码定义、指令译码、译码状态指示等工作的基于ARINC659协议的指令译码电路的实现方法。
【专利说明】基于ARINC659协议的指令译码电路的实现方法
【技术领域】
[0001]本发明属于计算机控制【技术领域】,涉及一种电路实现方法,尤其涉及一种基于ARINC659协议的指令译码电路的实现方法。
【背景技术】
[0002]ARINC659底板数据总线是满足高可靠性需求的串行容错总线标准。ARINC659协议规定帧描述语言,定义了总线上在线可更换模块之间通信数据的时序。作为BIU的开发商,需要定义帧描述语言的机器码格式,并对机器码进行解析,完成与总线上其他BIU之间的通信。目前没有同类技术。
【发明内容】
[0003]为了解决【背景技术】中存在的上述技术问题,本发明提供了一种有效解决ARINC659总线上BIU对帧描述语言指令的解析问题、可进行推广完成类似总线自定义指令集的机器码定义、指令译码、译码状态指示等工作的基于ARINC659协议的指令译码电路的实现方法。
[0004]本发明的技术解决方案是:本发明提供了一种基于ARINC659协议的指令译码电路的实现方法,其特殊之处在于:所述方法包括以下步骤:
[0005]I)对ARINC659协议规定的不同系统参数定义机器码,并将不同系统参数所对应的机器码存放于与其位宽相应的寄存器中;所述每个系统参数占用若干个32位机器码;
[0006]2)对ARINC659协议规定的指令定义对应的指令编码,所述每条指令编码占用若干个32位机器码;
[0007]3)采用通用静态存储器SRAM存放所有指令的机器码,所述通用静态存储器SRAM的数据位宽是32位;
[0008]4)采用状态机对所有指令的机器码进行译码;
[0009]5)将译码后的所有指令的机器码存放于通用同步FIFO中;所述通用同步FIFO的数据位宽是256位,所述通用同步FIFO的空满指示信号用来启动或停止译码。
[0010]上述步骤4)的具体实现方式是:
[0011]4.1)从通用静态存储器SRAM中对应的起始位置和固定地址空间,依次读取系统参数所对应的机器码,并对需要进行校对的系统参数进行校验;若校验成功,则继续读取下一个系统参数;若校验失败,则将地址指针值赋O ;当系统参数全部校验结束后进行步骤4.2);
[0012]4.2)判断通用同步FIFO的状态,若通用同步FIFO为满时,则地址指针保持不变;若通用同步FIFO不满时,则进行步骤4.3);
[0013]4.3)根据指令类型对所有指令的机器码进行译码。
[0014]上述步骤4.3)的具体实现方式是:
[0015]4.3.1)按指令长度所需要的32位数的个数判断指令类型,对于指令长度所需要的32位数的个数大于I的非跳转指令,对第一个32位数进行译码,将译码的结果存放到通用同步FIFO中,地址指针加I ;对于指令长度所需要的32位数的个数大于I的跳转类指令,保存当前指令的地址,根据指令的机器码的格式译码出目的地址,将目的地址值赋给地址指针;若指令长度所需要的32位数的个数等于I时,则进行步骤4.1);
[0016]4.3.2)按指令长度所需要的32位数的个数判断指令类型,若指令长度所需要的32位数的个数大于2,则对指令的第二个32位数进行译码,将译码的结果存放到通用同步FIFO中,地址指针加I ;若指令长度所需要的32位数的个数等于2时,则进行步骤4.1); [0017]4.3.3)按指令长度所需要的32位数的个数判断指令类型,若指令长度所需要的32位数的个数大于3,则对指令的第三个32位数进行译码,将译码的结果存放到通用同步FIFO中,地址指针加I ;若需要的32位数的个数等于3时,则进行步骤4.1);
[0018]4.3.4)对指令的第四个32位数进行译码,将译码的结果存放到通用同步FIFO中,地址指针加I。
[0019]本发明的优点是:
[0020]本发明提供了一种基于ARINC659协议的指令译码电路的实现方法,该方法实现了 ARINC659协议规定的帧描述语言指令译码功能;根据该电路设计,可进行推广完成类似总线自定义指令集的机器码定义、指令译码、译码状态指示工作。
【专利附图】
【附图说明】
[0021]图1是本发明所提供的解析方法中所采用的状态机流程示意图。
【具体实施方式】
[0022]本发明提供了一种基于ARINC659协议的指令译码电路的实现方法,该方法包括以下步骤:
[0023]I)对ARINC659协议规定的不同系统参数定义机器码,每条系统参数占用若干个32位。以参数GAP为例,机器码格式为:
[0024]
【权利要求】
1.一种基于ARINC659协议的指令译码电路的实现方法,其特征在于:所述方法包括以下步骤: 1)对ARINC659协议规定的不同系统参数定义机器码,并将不同系统参数所对应的机器码存放于与其位宽相应的寄存器中;所述每个系统参数占用若干个32位机器码; 2)对ARINC659协议规定的指令定义对应的指令编码,所述每条指令编码占用若干个32位机器码; 3)采用通用静态存储器SRAM存放所有指令的机器码,所述通用静态存储器SRAM的数据位宽是32位; 4)采用状态机对所有指令的机器码进行译码; 5)将译码后的所有指令的机器码存放于通用同步FIFO中;所述通用同步FIFO的数据位宽是256位,所述通用同步FIFO的空满指示信号用来启动或停止译码。
2.根据权利要求1所述的基于ARINC659协议的指令译码电路的实现方法,其特征在于:所述步骤4)的具体实现方式是: .4.1)从通用静态存储器SRAM中对应的起始位置和固定地址空间,依次读取系统参数所对应的机器码,并对需要进行校对的系统参数进行校验;若校验成功,则继续读取下一个系统参数;若校验失败,则将地址指针值赋O ;当系统参数全部校验结束后进行步骤4.2); .4.2)判断通用同步FIFO的状态,若通用同步FIFO为满时,则地址指针保持不变;若通用同步FIFO不满时,则进行步骤4.3); . 4.3)根据指令类型对所有指令的机器码进行译码。
3.根据权利要求2所述的基于ARINC659协议的指令译码电路的实现方法,其特征在于:所述步骤4.3)的具体实现方式是: .4.3.1)按指令长度所需要的32位数的个数判断指令类型,对于指令长度所需要的32位数的个数大于I的非跳转指令,对第一个32位数进行译码,将译码的结果存放到通用同步FIFO中,地址指针加I ;对于指令长度所需要的32位数的个数大于I的跳转类指令,保存当前指令的地址,根据指令的机器码的格式译码出目的地址,将目的地址值赋给地址指针;若指令长度所需要的32位数的个数等于I时,则进行步骤4.1); .4.3.2)按指令长度所需要的32位数的个数判断指令类型,若指令长度所需要的32位数的个数大于2,则对指令的第二个32位数进行译码,将译码的结果存放到通用同步FIFO中,地址指针加I ;若指令长度所需要的32位数的个数等于2时,则进行步骤4.1); . 4.3.3)按指令长度所需要的32位数的个数判断指令类型,若指令长度所需要的32位数的个数大于3,则对指令的第三个32位数进行译码,将译码的结果存放到通用同步FIFO中,地址指针加I ;若需要的32位数的个数等于3时,则进行步骤4.1); . 4.3.4)对指令的第四个32位数进行译码,将译码的结果存放到通用同步FIFO中,地址指针加I。
【文档编号】G06F9/30GK103577155SQ201210261487
【公开日】2014年2月12日 申请日期:2012年7月26日 优先权日:2012年7月26日
【发明者】田泽, 刘宁宁, 郭亮, 许宏杰, 杨峰, 马宁, 张玲 申请人:中国航空工业集团公司第六三一研究所