"); //-->
蓝牙技术已经大量在通信产品中得到应用,然而存在的一些技术细节限制了它的发展,其中一项就是建立蓝牙链路的时延过长。本文参考蓝牙SIG组织最新公布的协议,在详细分析建立蓝牙链路的时延的基础上,给出了两种快速建立蓝牙链路的方案,并对它们的性能进行了比较。
蓝牙设备具有多种工作模式,它们可以根据各自所处的状态和下一步的需要选择合适的工作模式。在一个蓝牙网络(Piconet)建立之前,所有的设备都工作在待命模式。主设备通过查询工作模式来搜集相邻节点的信息,并且通过寻呼工作模式来建立与相邻设备间的连接。在这两个过程中,从设备相应地处于查询扫描和寻呼扫描工作模式,这两个过程又分别称为查询过程和寻呼过程。
主设备首先初始化连接程序,如果它要连接的从设备的地址已知,则通过寻呼过程来建立连接;如果要连接的从设备的地址未知,则通过查询过程来寻找它周围的蓝牙设备,从而获得从设备的地址信息,再通过寻呼过程来建立连接。在查询过程中,主设备发现并搜集由从设备提供的相邻节点的信息;在寻呼过程中,主设备连接到从设备,并获得前一次查询过程中的信息。
在查询过程中,主设备可以获得从设备的时钟值,在接下来的寻呼过程中,主设备通过估测从设备的相位来避免频率同步时延,并且由它来决定从设备的相位并与之建立连接。
查询和寻呼过程间的差别在于:前者使用唯一的跳频序列(FHS),而后者使用点对点的FHS。通过唯一的查询跳频序列,主设备广播一个IAC供从设备侦听。在寻呼过程中,主设备使用某个从设备的寻呼跳频序列,通过发送一个设备接入码(DAC)来进行连接初始化,该帧通常只被相应的从设备侦听到。因此,很多设备参与查询过程,即主设备能够发现多个从设备。但是只有两个设备参与某个特定的寻呼过程,之后主设备就可以与某个特定的从设备建立连接。
建立蓝牙链路的过程
链路的建立过程由处于查询工作模式下的主设备启动,而此时从设备处于查询扫描工作模式。正如前面所述,在主设备以从设备侦听的频率发送数据之前,会有一个频率同步时延。这里的频率同步时延是指:从主设备发送查询接入码(IAC)开始,直到从设备侦听到该帧之间所经历的时间。从设备在接收到IAC帧之后,将随机地等待一段时间,这个时间均匀分布在0~639.375毫秒之间,以避免两个从设备同时侦听到同一个跳频而发生冲突,我们称这个等待时间为随机退避时延(RB Delay)。当从设备被重新唤醒时,它再次以退避之前侦听到的跳频频率启动侦听,经过另一个FS 时延后(类似前者),第二个来自主设备的IAC 帧将被接收到,这时从设备将对主设备返回一个FHS帧,该帧含有以下内容:
1. 从设备地址: 主设备利用它导出从设备的DAC和稍后在寻呼从设备的过程中用到的寻呼跳频序列。
2. 从设备的时钟值:它被用于估测从设备的相位,并以此来消除在后面的寻呼过程中的频率同步时延。
蓝牙链路的建立过程如图1所示,虚线箭头指出了收发设备每个事件的时间线,每个事件按照其在连接过程中发生的顺序编号。该连接过程表明:从设备在发给主设备查询响应FHS帧后,进入寻呼扫描工作模式;主设备收到这个FHS帧后,进入寻呼工作模式。主设备利用从设备响应的FHS帧中的时钟信息,以从设备在寻呼扫描状态中的侦听频率发送DAC帧,而从设备也用DAC 帧来响应它。之后,主设备发送一个FHS帧,从设备从这个FHS帧中得到跳频序列通道信息以及主设备的相位信息,真正成为点到点连接中的从设备。随后,从设备用另一个DAC帧来响应这个FHS 帧,一旦主设备接收到这个响应,它就真正成为点到点连接中的主设备,开始与从设备交换数据。
建立蓝牙链路的时延分析
如图1所示,可以很容易看出连接过程中的时延因素,它包括查询过程的时延、寻呼过程的时延以及因为相位失锁引起的相位时延。比较之下,寻呼过程的时延可以忽略,因为它紧跟着查询过程。只要从设备收到第一个DAC 帧,在接下来的4个625us时隙中将会完成寻呼过程。
查询过程的时延包括:第一个FS 时延(频率同步时延)、RB 时延和第二个FS 时延。第一个FS 时延是从主设备发送查询接入码开始,直到从设备侦听到该帧之间所经历的时间。从设备在接收到IAC帧之后,将随机地等待一段时间,这个时间均匀分布在0~639.375毫秒之间,以避免两个从设备同时侦听到同一个跳频而发生冲突,即产生一个随机退避时延。第二个FS 时延发生在接收端被唤醒后,等待第二个IAC 帧的到来时。
这样我们近似用下面的方程表达链路连接时延Tconnect:
Tconnect = 2FS + RB (1)
这里 FS 和RB 分别是定义域为[0,Tcoverge]和[0,rmax] 的随机变量,这里的Tcoverge和rmax是FS时延 和RB时延的最大可能取值,Tcoverge为1.28秒,rmax为639.375毫秒。按照方程(1),建立蓝牙链路的最大连接时延为2Tcoverge+ rmax = 2.56s+639.375ms=3.2s.
另外,尽管主设备和从设备使用同一个跳频序列,但它们仍有可能相位失锁。这是因为每个设备都会以源自本地时钟值的不同跳频启动,因此设备间的相位差不可避免地存在不确定性。这样,就会有一个因为相位失锁引起的相位时延。从设备每过一段时间将调整相位,重新扫描。
快速建立蓝牙链路的方案
1. 取消随机退避时延
从上面对时延的分析我们可以看到:
从设备在接收到第一个IAC帧之后将随机地等待一段时间,以避免两个从设备同时侦听到同一个跳频而发生冲突。我们可以将这个过程省略,因为从概率说,在主设备发出第一个IAC帧和第二个IAC帧的过程中,两个从设备同时侦听到同一个跳频而发生冲突的概率是一样的,即经过一个退避时延并不能保证第二次不冲突。这样,在相位一致的情况下,蓝牙的连接过程中就节省了一个FS时延和一个RB时延。
2. 采用交织扫描技术
在通常情况下,如果从设备在2.56秒之内没有侦听到主设备的IAC帧,就会调整相位继续侦听。这样就白白浪费了2.56秒时间。如果从设备在每一个扫描窗口(11.25ms,远小于2.56秒)下,都调整一次相位侦听,这样就可以大大减小相位时延。具体的做法就是:如果第一次的扫描频率是f(n),并且没有侦听到来自主设备的IAC帧,它将在下一个扫描窗口来到时,自动换到f(n+16),依此类推。
3. 几种建立蓝牙链路方案的性能比较
下面两个图介绍了两种快速建立蓝牙链路方案与普通建立蓝牙链路方案的性能比较。
作者: 吴瑞
上海斯图曼电信技术有限公司
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。