一种基于单总线通信协议的总线仲裁系统及方法与流程

文档序号:14950611发布日期:2018-07-17 22:27阅读:448来源:国知局

本发明涉及通信协议技术领域,具体涉及集成电路芯片间或是分布式数据采集节点间单总线通信的仲裁机制。



背景技术:

单总线(1-wire总线)是maxim全资子公司dallas的一项专有技术,能够在单线条件下完成主从机之间数据通信和电流传输功能,具有节省i/o口线资源、结构简单、成本低廉、便于总线扩展和维护等诸多优点。但1-wire总线数据传输速率较低,有两种速率:标准模式16kbps,高速(超驱动)模式为142kbps。通信采用主从结构,为一主机对一或多从机。1-wire设备拥有一个64位唯一标识码(rom码),利用这个唯一特性,在同一条总线上可以同时挂接多个1-wire设备。

设备按照1-wire通信协议进行工作是保障系统可靠的基本条件。1-wire总线系统主从机之间以单双工方式在同一数据总线上分时交换数据,通过对总线上电平的高低设置来传递数据位1和0。要保证1-wire总线系统的可靠运行,主从机之间必须严格遵守1-wire通信事务序列,进行满足时序要求的数据通信。而1-wire事务序列都是由一系列工作时序组成,最基本的工作时序包括设备初始化、主机写时序、主机读时序。1-wire总线上的所有事务序列(由前述3种时序组成)均以初始化开始,初始化由主机发出的复位脉冲和从机响应的应答脉冲组成。应答脉冲使主机知道总线上有从机且准备就绪。初始化之后主从机之间通过读写时序开始命令传递及数据交换,写时序分为写0和写1,写时序开始后,1-wire设备在采样窗口内对数据总线进行检测以得到主机发送的位数据。读时序同样分为读0和读1,读时序开始后,主机在采样窗口内对数据总线进行检测以得到设备发送的位数据。

因此,现有的单总线仲裁机制会导致额外时序开销,从而增加系统负担,降低系统的反应速度。



技术实现要素:

为解决以上问题,本发明是继承原单总线特性下提出一种总线仲裁机制,使用分时段位仲裁法,并将其用于搭建遵循单总线(1-wire)通信协议的多主机多节点互连单总线网络,且兼容原1-wire器件。

具体的,根据本发明的一个方面,提供了一种基于单总线通信协议的总线仲裁系统,用于单总线网络,包括:

多个主机,对所述单总线网络的总线进行传输控制;所述多个主机之间依据分时段位仲裁机制进行仲裁,通过分析所述总线的事务序列,采用总线空闲判定,在所述事务序列的仲裁域上进行分布式仲裁,并利用总线竞争命令进行有限竞争。

优选的,所述仲裁域是指在所述总线上的总线信号:初始化序列、读/写时隙中由且仅由主机方驱动总线并将总线拉低的时段。

更优选的,所述由主机方驱动总线并将总线拉低的时段包括:初始化序列中的复位脉冲时段、写时隙中从时隙开始总线被拉低到最后被释放为高的时段、读时隙中从时隙开始拉低总线保持1微秒为止的时段。

优选的,所述总线空闲判定的具体方法为:若所述总线使用统一的电源供电且无其它独立电源节点时,当所述单总线网络的节点设备上电复位后、或完成一个总线事务序列后监测到总线为高时即可认定总线空闲;若所述总线具有多个独立电源节点,则当节点设备在其上电复位后、监测到总线为高时,再连续监测总线一个延时时间段后认定总线空闲。

更优选的,所述延时时间段为总线操作序列中最长的等待时延,即其取值为以下时延中的最大值:在线侦测高时延、总线操作时隙间的恢复时延、读写1时隙中的时延、及功能操作中的等待时延。

优选的,所述总线竞争命令的rom命令码为8位的全0,后面是启动事务序列的主机的64位rom码。

优选的,所述有限竞争是指,当一主机的连续竞争失败次数大于等于其内部预设值时,该主机在随后的总线竞争中可以使用总线竞争命令对总线进行预约。

优选的,所述主机使用空选搜索命令显性地标示一串连续事务序列中的最后一个,以此标示一串连续事务序列的结束。

更优选的,所述空选搜索命令的rom命令码为8位的f0,后跟64次读-读-写第0位至第63位的rom码周期;在所述周期中,从某位开始两次读时隙的返回值是1,即显性地标示本次搜索不选择任何一个总线上的节点设备。

根据本发明的另一个方面,还提供了一种基于单总线通信协议的总线仲裁方法,用于单总线网络,其使用上述的系统。

本发明的优势在于:作为从机,不需要做任何修改即可直接接入依据本发明搭建的单总线系统,并且由于所搭建总线的控制权只由初始化序列和命令字、rom码以及主设备发送、接收的数据决定,没有中央主机,所以总线没有任何预定的优先权。特殊情况下,如需支持ibutton,搭建总线系统时可指定一个缺省主机。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1为本发明的初始化序列仲裁域图;

图2为本发明的写时隙仲裁域图;

图3为本发明的读时隙仲裁域图;

图4为本发明的主机的仲裁过程示意图。

具体实施方式

下面将参照附图更详细地描述本发明的示例性实施方式。虽然附图中显示了本发明的示例性实施方式,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。

本发明是在继承原单总线特性下提出的一种总线仲裁机制,使用分时段位仲裁法,并将其用于搭建遵循单总线(1-wire)通信协议的多主机多节点互连单总线网络,且兼容原1-wire器件:即其作为一个从机,不需要做任何修改即可直接接入依据本机制搭建的单总线系统。通过对原单总线事务序列分析,采用特有总线空闲判定方法、在专属的仲裁域上进行分布式仲裁,并利用特殊命令进行有限竞争,且总线的竞争开销为零。由于所搭建总线的控制权只由初始化序列和命令字、rom码以及主设备发送、接收的数据决定,没有中央主机,所以总线没有任何预定的优先权。特殊情况下,如需支持ibutton,搭建总线系统时可指定一个缺省主机。

本发明提出的单总线的仲裁机制采用分布式、无额外时序开销的分时段位仲裁机制。针对1-wire总线多节点互连网络是否采用多电源(分布式)供电方式的不同则其仲裁算法略有不同。依据本发明提出的仲裁机制搭建的多主机多节点互连单总线网络中所接入的节点设备功能上可分为从机或主机。主机为总线事务序列的发起者并执行仲裁(同时也响应该事务序列);从机仅响应并反馈相应的数据。而本发明中单总线的仲裁基本规则为:在仲裁时域期间监测总线值是否与本主机的驱动值相同,若不同则意味着总线发生竞争,此主机立刻停止操作同时放弃对总线的控制;由于1-wire总线采用“线与”连接,则当其驱动为“1”时而发现总线为“0”,即代表本主机竞争失败应即刻放弃操作。

考虑1-wire网络中有节点设备采用寄生供电,则主机在监测到总线空闲且同时满足网络中所有节点设备(主要为采用寄生供电的节点设备)电源条件时才能启动传输。而如何判断总线当前时刻是否空闲着?本发明中,针对当前1-wire网络是否采用多电源供电方式其判断机制是不同的,下面详细论述本发明提出的总线仲裁机制。

本发明提出了一种基于单总线通信协议的总线仲裁系统,用于单总线网络,包括:

多个主机,对所述单总线网络的总线进行传输控制;所述多个主机之间依据分时段位仲裁机制进行仲裁,通过分析所述总线的事务序列,采用总线空闲判定、在所述事务序列的仲裁域上进行分布式仲裁,并利用总线竞争命令进行有限竞争。以下具体的阐述上述主机采用的仲裁机制各个过程:

(1)判断总线空闲方法

若组建的总线系统使用统一的电源供电且无其它独立电源节点时,当此系统中的节点设备上电复位后、或完成一个总线事务序列后监测到总线为高时即可认定总线空闲。否则,节点设备在其上电复位后在监测到一个总线高时还应连续监测总线一个延时tdelay时间段后(此间总线一直为高)才能认定总线空闲。延时tdelay为组建总线系统时所涉及的总线操作序列中最长的等待时延,即其取值为在线侦测高时延、总线操作时隙间的恢复时延、读写1时隙中的时延、及功能操作中的等待时延这些时延中的最大值。而在完成一个事务序列后判断总线空闲时二者方法相同。

主机在判断总线空闲后还应判断1-wire网络中所有采用寄生供电的节点设备满足电源条件,或在判断总线空闲时已自动满足时才能启动传输。满足电源条件是指这些采用寄生供电的节点设备均已充电至正常工作状态(电容充到满值)。而它们的充电时间(总线这时为高)与具体组建总线系统时采用寄生供电的节点设备数、总线上拉电压、通信速率、工作温度、电缆长度以及节点设备驱动类型均有关。其取值主要由系统中使用寄生供电的节点设备数决定,其取值与总线操作时隙间的恢复时延相同(见“总线操作时隙间的恢复时延”部分)。

在1-wire通信事务序列中的仲裁时域(见“单总线的仲裁域”部分)期间监测总线值是否与本主机所驱动值是否相同,若不同则意味着总线发生竞争且本主机丧失仲裁,即竞争失败,此主机立刻停止操作同时放弃对总线的控制。但应注意,此主机对总线操作的响应还可能继续直至发现本次总线操作序列与己无关为止。

(2)有限竞争规则

主机在观察到总线空闲且也满足当前系统中所接设备们的电源条件并发起一个事务序列,若该主机在这过程中(到该事务序列完成时刻前)丧失仲裁,记为一次竞争失败,其单位为所搭建系统的总线事务序列。每个主机内部设一随机数,其取值范围最小为所搭建系统中的主机数,最大为系统中的总节点数。当一主机的连续失败次数大于等于该随机数时,主机在随后的总线竞争中使用竞争命令序列(见“总线竞争命令”部分)。这里特别申明的是对待总线搜索类命令的计次是不同的。对于连续的搜索事务序列(使用同一搜索命令),若在该连续搜索事务序列开始的第一个搜索事务序列竞争失败,则在该连续搜索事务序列的后续搜索事务序列中不得对总线进行竞争(即不得发起总线操作)且将其记为一次失败。这里使用空选搜索命令序列(与前事务序列命令码相同见“空选搜索命令”部分)标示此次搜索事务序列是这一连续搜索事务序列中的最后一个搜索事务序列(同时潜在地对主机的搜索算法提出了更高的要求)。下面分别对仲裁域、总线不同时延及特殊命令做详细说明。

(3)单总线的仲裁域

在单总线的事务序列中由主机驱动总线(1-wirebus)并将总线拉低的时段即为总线仲裁域。下面针对1-wire通信协议中定义的几种总线信号时序分别分析说明总线仲裁域。在说明前先给出要用到的一些时序参数(见以下的表1.单总线时序特性参数),以下将直接使用这些参数的标示符号来作说明。

表1单总线时序特性参数

注释1:δ表示主机采样时间

(4)初始化序列中的仲裁域

一个初始化序列以复位脉冲(主机拉低单总线trstl微秒直至总线状态回到高)起始,并且等待延时tpdhigh微秒后以在线应答脉冲(拉低单总线tpdlow微秒)结束。这其中只有复位脉冲区域为仲裁域(图1中斜纹阴影区域),其初始化序列仲裁域见图1所示。

(5)写时隙中的仲裁域

写时隙有两种,即写0时隙和写1时隙。它们的仲裁域都是从单总线被拉低到最后释放总线使其被拉高为止(图2中密斜纹阴影区域)。写时隙仲裁域图见图2所示。

(6)读时隙中的仲裁域

主机读0时隙和读1时隙的仲裁域都是从主机把总线拉低并保持至少1微秒后释放总线这段时间(图3中密斜纹阴影区域)。由于原1-wire协议中对读时隙初始化下拉时序参数tril定义为>1μs,则这里取最大公约数1微秒即读时隙的仲裁域为从时隙开始(主机把总线拉低)1微秒时段。读时隙仲裁域见图3所示。

(7)单总线事务序列中的等待时延

依据1-wire协议,所有节点设备必须遵循下面所示的总线事务序列,任何步骤的缺失或乱序都会导致节点设备不回应主机。其操作序列如下:

步骤1、初始化复位/在线应答检测周期

步骤2、rom命令操作周期

步骤3、功能命令操作周期

则对单总线事务序列中等待时延(此时总线状态为高电平)的分析如下:

(8)在线侦测高时延

在线侦测高时延tpdhigh是在初始化步骤中由复位脉冲结束到在线应答脉冲开始间的等待时延(图1中的从机等待时间),1-wire协议中其取值为15微秒~60微秒,是初始化步骤中总线为高电平的最长等待时间。

(9)总线操作时隙间的恢复时延

总线操作时隙间的恢复时延trec包括在线应答脉冲与写时隙间的、读写时隙间的总线恢复时间,1-wire协议中其取值范围为〉1微秒;而读写时隙间的总线恢复时间其意义在于使1-wire网络中采用寄生供电的节点设备充电至正常工作状态(电容充到满值)。在线应答脉冲与写时隙间的恢复时延开始于在线应答脉冲之后,并在下一个时隙(写命令码的最低位)的下降沿结束。通常情况下,所选取的trstl和trsth持续时间相同。标准速率下,此时trec取值为180微秒~405微秒。高速模式下,则上述时间值较短,通常是标准速率下的十分之一,trec减少为18微秒~40微秒。而写时隙间的总线恢复时延与具体组建总线系统时的节点设备(其使用寄生供电)数、总线上拉电压、通信速率、工作温度、电缆长度以及节点设备驱动类型均有关。其取值主要由系统中使用寄生供电的节点设备数决定,依从下列公式:

trec=f×n+s

f-依据电压、温度等所选系数;推荐值如下,标准速率:1.54~3.52,高速模式:1.18~1.8

n-系统中使用寄生供电的节点设备数

s-系统速率基值;推荐值如下,标准速率:1微秒,高速模式:0.5微秒。

(10)读写1时隙中的时延

读写1时隙中的时延是指在读/写1时隙中总线为高电平的时间(见图2中写1时隙和图3中读1时隙),即tslot-tril值为45+δ1微秒~119微秒。这里δ指主机采样时间,由具体组建总线系统时所选用的主机决定。

(11)功能操作中的等待时延

功能操作中的等待时延是指在某些功能操作中的主机等待从机设备完成功能操作所花费的等待时间(此时总线状态为高电平),如在ds18b20微局域网中的测温命令等待时间为93.75毫秒~750毫秒。

(12)总线竞争命令

总线竞争命令遵循下面所示的事务序列,其操作序列如下:

步骤1、初始化复位/在线应答检测周期

步骤2、rom命令操作周期

步骤2完成表示此次总线事务序列结束。在主机发出总线竞争命令码(h'00)后,跟着的是本次主机(启动此次事务序列的主机)的64位rom码(见表2)。总线竞争命令用于声明主机rom码,同时表明会启动紧接着的下一个总线事务序列即预约总线使用权。

(13)空选搜索命令

空选搜索命令遵循下面所示的事务序列,其操作序列如下:

步骤1、初始化复位/在线应答检测周期

步骤2、64次读-读-写该位(第0位至第63位)rom码操作周期

步骤2完成表示此次总线事务序列结束。在主机发出搜索命令码(h'f0)后,跟着的是64次读-读-写该位(第0位至第63位)rom码周期(见表2);在这些读-读-写(选择)周期中,必须从某位开始两次读时隙的返回值是‘1’,即显性地标示本次搜索不选择任何一个总线上的节点设备。空选搜索命令用于声明本次搜索事务是该次总线连续搜索事务序列中的最后一次搜索事务序列。

表2特殊rom命令表

实施例1

以下为根据本发明的基于单总线通信协议的总线仲裁系统的工作过程示例:

如图4所示,主机在监测到总线空闲且同时满足电源条件时便可启动总线事务序列。两个或多个主机在其各自的时钟周期误差内可能同时发起一个复位脉冲,结果在总线上产生一个规定的复位脉冲时序。这里的时钟周期误差e指启动总线事务序列的主机所产生的复位脉冲下降沿与最终总线上的复位脉冲下降沿的时差小于该主机的时钟周期(这取决于主机的监测总线方式)。

当总线为低处于复位脉冲或其它主机下拉低(仲裁时域)时,仲裁由发起操作的主机各自进行;仲裁规则为监测总线值是否与本主机所驱动值相同,若不同则意味着总线发生竞争,则此主机立刻停止操作同时放弃对总线的控制;由于1-wire总线采用“线与”连接,则当其驱动为“1”时发现总线为“0”即代表本主机竞争失败应即刻放弃操作。由于单总线的数据线状态由赢得仲裁的主机决定,在仲裁过程中不会丢失任何传输信息。由于每个主机结合了主机与从机的功能,所以任何一个主机对总线的操作都应响应直至发现本次总线操作序列与己无关为止。

图4显示了三个主机的仲裁过程。当然,仲裁过程可能涉及更多的内容,这由连接到总线的主机所预发起的操作而决定。在复位脉冲期间(图4中左方斜纹阴影区域),产生dq1的主机的内部驱动数据电平与1-wire总线的实际电平不一致,则该主机在它的在线应答等待时间关闭数据驱动(即其失去仲裁)。在写命令期间(图4中右方斜纹阴影区域),产生dq2的主机的内部驱动数据电平与1-wire总线的实际电平不一致,则该主机在它本次写时隙结束后关闭数据驱动(即其失去仲裁)。可以由图4看到仲裁过程并不会影响由赢得仲裁的主机所发起的总线事务序列进行的数据传输。

由于单总线的控制只由初始化序列和命令字、rom码以及主机发送的数据决定,没有中央主机,所以总线也没有任何预定的优先权。但注意通过有限竞争规则所设置的随机数会带来一个潜在的优先级。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

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