一种自恢复SPI总线通讯接口及其自恢复方法与流程

文档序号:18464440发布日期:2019-08-17 02:19阅读:981来源:国知局
一种自恢复SPI总线通讯接口及其自恢复方法与流程

本发明提供一种自恢复spi总线通讯接口,属于数字电路技术领域,涉及自测试机制、自恢复机制以及故障编码的设计,特别适用于具有高可靠性、高测试性要求的多可编程逻辑器件间通讯的情况。



背景技术:

spi串行总线是一种常用的标准总线接口,具有结构简单、占用资源少、灵活性高等特点,被广泛工业领域。典型spi总线接口由时钟信号sck、片选信号csn、输入通道sdi和输出通道sdo组成,如果任意一个信号发生故障,都会导致数据无法正确解析,从而导致通讯失败。所以,在航空航天等具有高可靠要求的机载电子领域中,对spi总线的串行数据通道进行自检测,根据故障信息自主恢复,并实时地向cpu行为层和上位机反馈故障信息和总线状态具有重要的应用价值。



技术实现要素:

发明目的:

提供了一种适用于具有高可靠性要求的多cpld、fpga等可编程逻辑器件间通讯场景的自恢复spi总线通讯接口及其自恢复方法。

技术方案:

第一方面,提供了一种自恢复spi总线通讯接口,其特征在于,所述自恢复spi总线通讯接口包括主通道和一条方向可配置的备用通道,当主通道故障时,备用通道可以被配置为与主通道方向相同的通道。

第二方面,提供了一种基于自恢复spi总线通讯接口的自恢复方法,应用于主设备,其特征在于,所述方法包括:

基于自测试自恢复机制检测输入通道、输出通道是否故障,且在检测到故障时,启用备用通道替换故障通道;

配置故障编码;

通过故障编码将检测的结果和备用通道的使用情况反映给上位机。

可选地,所述方法还包括:

基于spi总线协议构造spi帧数据格式;

基于spi帧数据格式构造自测试自恢复机制。

可选地,启用备用通道替换故障通道是当输出通道故障时,将备用通道配置成输出通道,当输入通道故障时,将备用通道配置成输入通道。

可选地,构造spi帧数据格式包括将spi帧数据设计成包括q位的总线命令、m位的地址位、n位的数据位以及1位的校验位。

可选地,构造自测试自恢复机制包括:

从设备的自测试寄存器存储有输出通道正常码和输出通道故障码;

主设备从从设备的自测试寄存器读取握手码,并对测试次数进行计数;

主设备对读取的握手码的类型和所述计数的值进行判断;

若握手码是输出通道正常码,且所述计数的值为1,则输入通道和输出通道正常;

若握手码是输出通道故障码,且所述计数的值为1,则将备用通道切换为输出通道;

若握手码既不是输出通道正常码也不是输出通道故障码,且所述计数的值为1,则将备用通道切换为输入通道;

若握手码是输出通道正常码,且所述计数的值为2,则备用通道正常;

若握手码是输出通道故障码,且所述计数的值为2,则备用通道故障;

若握手码既不是输出通道正常码也不是输出通道故障码,且所述计数的值为2,则输入通道故障且备用通道故障。

可选地,故障编码包括输入通道故障信息、输出通道故障信息和备用通道的故障信息以及总线恢复情况。

可选地,将备用通道切换为输出通道是在从设备接收测试命令或地址非法时,将备用通道切换到输出通道,同时向主设备返回输出通道错误码,主设备接收到输出通道错误码后,将备用通道切换到输出通道。

可选地,将备用通道切换为输入通道是主设备将备用通道切换到输入通道,并向从设备发送切备用通道命令,从设备接收到切备用通道命令后,将备用通道切换为其输入通道。

有益效果:

本发明在spi接口的基础上增加了方向可配置的备用通道,基于spi协议构建了帧数据格式,设计接口自测试自恢复机制和故障编码,通过总线自测试操作,可有效检测到输入通道和输出通道故障情况,自主启用备用通道替换故障通道,并实时地通过故障编码向cpu行为层和上位机反馈故障信息和总线状态。本发明在仅增加一个备用通道的代价下,显著的提高了spi总线接口的可靠性和测试性,可广泛应用于工业领域。

附图说明

图1是一种自恢复spi总线通讯接口的自测试自恢复机制流程图。

具体实施方式

下面结合附图与具体实施方式对本发明做进一步的描述。

图1是本发明提供的一种自恢复spi总线通讯接口及其自恢复方法的流程图。本发明在spi总线的基础上增加了一个方向可配置的备用通道,并基于spi协议设计了spi帧数据格式,假设总线命令位宽q为3,且包含总线自测试、读数据,写数据和切备用通道等四类操作,其总线命令分别为3'b000,3'b011,3'b110,3'b101,地址位宽m为12,数据位宽n为16,校验类型为奇校验。当主设备依据校验位检测到数据错误时,启动自测试操作,置总线命令为3'b000,读取从设备地址为12'hfff的自测试寄存器,获得握手码codehandshake。当从设备接收到的测试命令和地址均正确时,向主设备返回握手码codehandshake等于输出通道正常码codecorrent,否则,向主设备返回握手码codehandshake等于输出通道错误码codeerror。使用计数器count对测试次数计数,每启动一次自测试count加1。假设输出通道正常码codecorrent等于16'h55aa,输出通道错误码codeerror等于16'haa55,主设备依据校验位对接收数据的正确性进行判断,并执行自测试自恢复流程,具体步骤如下:

步骤一:依据校验位判断数据的正确性,若正确,则结束流程,否则进行第二步;

步骤二:初始化spi自测试,置自测试计数器count为0;

步骤三:主设备启动自测试操作,置总线命令为3'b000,读取从设备的地址为12'hfff的自测试寄存器,获得握手码codehandshake,并测试计数器count++;

步骤四:判断握手码codehandshake的类型和count的值。如果codehandshake等于codeerror并且count等于1,启用备用通道替换输出通道,跳至步骤三;如果codehandshake不等于codecorrect且不等于codeerror,并且count等于1,启用备用通道替换输入通道,跳至步骤三;如果codehandshake等于codecorrect或者count等于2时,则结束流程。

当自测试流程结束时,依据count和codehandshake的过程值,将自测试自恢复过程分为以下六种情况:

1.当count等于1时,codehandshake等于codecorrect,测试结束。表明从设备能正确的接收到总线命令和地址,且主设备能正确的接收数据,输出通道和输入通道工作正常,总线通讯功能正常,且未启用备用通道;

2.当count等于1时,codehandshake不等于codecorrect且不等于codeerror;当count等于2时,codehandshake不等于codecorrect且不等于codeerror,测试结束。count等于1时,codehandshake不等于codecorrect且不等于codeerror,表明主设备不能正确的接收数据,即输入通道故障,主设备启用备用通道替换输入通道,并发送总线命令3'b101,指示从设备启用备用通道替换输入通道,并启动第二次自测试;count等于2时,codehandshake不等于codecorrect且不等于codeerror,表明主设备依然不能正确的接收数据,即备用通道替换输入通道失败,备用通道故障,已启用备用通道,总线通讯功能恢复失败;

3.当count等于1时,codehandshake等于codeerror;当count=2时,codehandshake等于codecorrent,测试结束。count等于1时,codehandshake等于codeerror,表明从设备不能正确的接收总线命令或地址,但主设备能够正确的接收数据,即输出通道故障,而输入通道正常,此时从设备启用备用通道替换输出通道,并向主设备返回输出通道错误码codeerror,当主设备接收到codeerror时,也启用备用通道替换输出通道,并启动第二次自测试;count等于2时,codehandshake等于codecorrent,表明从设备能正确的接收到总线命令和地址,且主设备能正确的接收数据,表明输入通道工作正常,且备用通道替换输出通道成功,备用通道正常,已启用备用通道,总线通讯功能恢复成功;

4.当count等于1时,codehandshake等于codeerror;当count=2时,codehandshake等于codeerror,测试结束。count等于1时,codehandshake等于codeerror,表明从设备不能正确的接收总线命令或地址,但主设备能够正确的接收数据,即输出通道故障,而输入通道工作正常,此时从设备启用备用通道替换输出通道,并向主设备返回输出通道错误码codeerror,当主设备接收到codeerror时,也启用备用通道替换输出通道,并启动第二次自测试;count等于2时,codehandshake等于codeerror,表明从设备依然不能正确的接收总线命令或地址,即备用通道替换输出通道失败,备用通道故障,已启用备用通道,总线通讯功能恢复失败;

5.当count等于1时,codehandshake不等于codecorrect且不等于codeerror;当count等于2时,codehandshake等于codeerror,测试结束。count等于1时,codehandshake不等于codecorrect且不等于codeerror,表明主设备不能正确的接收数据,即输入通道工作异常,主设备启用备用通道替换输入通道,并发送总线命令3'b101,指示从设备启用备用通道替换输入通道,并启动第二次自测试;count等于2时,codehandshake等于codeerror,表明从设备不能正确的接收总线命令或地址,但主设备能够正确的接收数据,即备用通道替换输入通道成功,备用通道工作,但是输出通道故障,虽然已启用备用通道,但是总线通讯功能恢复失败;

6.当count等于1时,codehandshake不等于codecorrect且不等于codeerror;当count等于2时,codehandshake等于codecorrect,测试结束。count等于1时,codehandshake不等于codecorrect且不等于codeerror,表明主设备不能正确的接收数据,即输入通道故障,主设备启用备用通道替换输入通道,并发送总线命令3'b101,指示从设备启用备用通道替换输入通道,并启动第二次自测试;count等于2时,codehandshake等于codecorrect,表明从设备能正确的接收到总线命令和地址,且主设备能正确的接收数据,即备用通道替换输入通道成功,备用通道正常,输出通道正常,已启用备用通道,总线通讯功能恢复成功;

在总线自测试过程中,主设备对故障信息及恢复情况进行编码记录,用于指示spi总线的状态,增强总线接口的测试性和维修性。本方法可有效检测输出通道、输入通道和备用通道的故障情况,可对输入通道和输出通道的单点故障进行恢复,并可将故障信息和恢复情况上报给上位机,为上位机的行为决策提供依据。

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