本发明属于串行总线通信领域,尤其涉及一种动态优先级的串行总线设计方法。
背景技术:
传统的具有线与功能的多主串行总线(如can、ipmb等)存在发送冲突问题,通常采用回读发出的本节点id是否正确来判断是否获得总线的控制权(节点的优先级由节点id决定,id号小的节点优先级高)。2个节点同时发送时,具有较高优秀级id的节点获得总线,具有较低优秀级id的节点则会退出发送,等待一定时间后重新尝试发送。当总线繁忙时,较低优先级的节点有可能多次尝试发送失败,因而长期得不到总线的控制权,从而导致系统故障。
技术实现要素:
本发明旨在解决上述问题,提供一种在具有线与功能的多主串行总线上实行动态优先级管理的动态优先级的串行总线设计方法。
本发明所述动态优先级的串行总线设计方法,使总线上id优先级较低的节点在多次发送失败后逐步提升优先级,以获得总线的控制权;如该节点经过数次尝试,仍然无法获得总线的控制权,则该节点将继续提高优先级直至获得总线控制权;当该节点获得总线控制权并完成通讯后又恢复原优先级。
进一步,本发明所述动态优先级的串行总线设计方法,包括如下步骤:
1)总线上每个节点发送的数据包头均由优先级别码和本节点id构成;节点的优先级由优先级别码和本节点id组合字段的值大小共同决定,值小的节点具有更高优先级;
2)当节点发送包头数据时回读总线上的电平,并判断是否与发送电平一致;若一致则继续发送,若不一致则退出,说明本次发送失败,并将失败次数+1;
3)当节点的失败次数大于设定阈值,则提升该节点的优先级别码,并在总线空闲时继续尝试发送,并按此方式直至数据发送成功;
4)当节点数据发送成功则将其优先级别码恢复为原优先级。
更进一步,本发明所述动态优先级的串行总线设计方法,每个所述节点发送的数据包头中初始状态下优先级别码的优先级为最低。
本发明所述动态优先级的串行总线设计方法,能够降低低优先级节点长期得不到控制权限的风险;在优先级调整时,可以保持总线上每个节点的id不变,便于数据发送和接收;节点在数据发送成功后,优先级会恢复原有级别,便于其他节点获得访问权限;实现方式简便,能够支持市场现有多种收发器。
附图说明
图1为本发明所述数据包结构示意图;
图2为本发明所述动态优先级的串行总线设计方法流程示意图。
具体实施例方式
下面通过附图及实施例对本发明所述动态优先级的串行总线设计方法进行详细说明。
本发明所述动态优先级的串行总线设计方法所述总线上id优先级较低的节点在多次发送失败后能够提升优先级,以便获得总线的控制权。如果该节点经过数次尝试,仍然无法获得总线,则该节点将继续提高优先级直至或获得总线。当该节点获得总线并完成通讯后又恢复原优先级,使得其他节点有机会获得总线。
本发明所述动态优先级的串行总线设计方法,总线上每个节点拥有唯一且固定的id;在初始状态时,每个节点的优先级别最低;数据包传输通过其中的目标id寻址(确定接收节点)。
如图1所示数据包的包头由优先级别码和发送节点id组成。数据包的优先级由包头(优先级别码+id)的数值大小决定,数值小的数据包具有更高的优先级,两各节点同时发送数据时(产生竞争),包头数值小的节点会赢得竞争获得总线。初始状态下,所有节点的优先级别码都为全“高”。每个节点id唯一且固定不变(在优先级别码相同时,id数值小的节点优先级高)。若某一节点连续多次发送都因包头优先级别低,而无法赢得总线竞争导致发送失败,则自动将优先级别码减“1”,并等待一段时间后重新尝试发送,若仍然多次无法赢得总线竞争则优先级别码继续减“1”并延时尝试重发,直到发送成功或优先级别码为全“低”。当发送成功后将优先级别码恢复为全“高”(初始态),以便其他节点能够获得总线。
如图2所示,本发明所述动态优先级的串行总线设计方法具体包括如下步骤:
1)串行总线上各节点发送的数据包头由n位优先级别码和id构成,节点的优先级由优先级别码和id共同决定,包头数值小的节点优先级高;
2)当任意一个总线节点需要发送数据时先检测总线是否处于“空闲”状态,若“空闲”,则先向总线发送数据包头(优先级别码+id);每发送一个bit时都回读总线电平,并判断与发送电平是否一致;若一致则继续发送,若不一致则退出,表明总线冲突,竞争失败。优先级别码较小的拥有更高优先级,在优先级别码相同时,id码较小的节点拥有更高优先级;
3)发送失败的节点在等待一段时间后再次尝试发送,若同一个节点连续m次发送都失败(m值由用户设定),则将本节点的优先级别码减1(即提升优先级),且等待总线空闲时继续发送;若再尝试m次后仍然发送失败,则将本节点的优先级别码继续减1,直至优先级别最高或发送成功;
4)每一总线上的节点在发送成功后将优先级别码恢复至原优先级。
本发明为具有线与功能的多主串行总线提供了一种动态优先级管理方法,能够有效降低低优先级节点长期得不到控制权限的风险。
1.一种动态优先级的串行总线设计方法,其特征在于:使总线上id优先级较低的节点在多次发送失败后逐步提升优先级,以获得总线的控制权;如该节点经过数次尝试,仍然无法获得总线的控制权,则该节点将继续提高优先级直至获得总线控制权;当该节点获得总线控制权并完成通讯后又恢复原优先级。
2.根据权利要求1所述动态优先级的串行总线设计方法,其特征在于包括如下步骤:
1)总线上每个节点发送的数据包头均由优先级别码和本节点id构成;节点的优先级由优先级别码和本节点id组合字段的值大小共同决定,值小的节点具有更高优先级;
2)当节点发送包头数据时回读总线上的电平,并判断是否与发送电平一致;若一致则继续发送,若不一致则退出,说明本次发送失败,并将失败次数+1;
3)当节点的失败次数大于设定阈值,则提升该节点的优先级别码,并在总线空闲时继续尝试发送,并按此方式直至数据发送成功;
4)当节点数据发送成功则将其优先级别码恢复为原优先级。
3.根据权利要求2所述动态优先级的串行总线设计方法,其特征在于:每个所述节点发送的数据包头中初始状态下优先级别码的优先级为最低。