蓝牙无线连接可靠性的研究与实现

  1 引言
  蓝牙(Bluetooth )是一种低成本、短距离的无线连接技术标准。它是由爱立信(Ericsson ) ,国际商用机器(IBM ) ,英特尔( Intel ) ,诺基亚(Nokia )和东芝(Toshiba ) 5 家公司共同倡导的一种全球无线技术标准。其目的就是将智能移动电话与笔记本电脑、掌上电脑以及各种数字信息的外部设备用无线方式连接起来。目前,无线连接飞速普及、大受欢迎,蓝牙技术的广泛应用对无线移动数据通信将起到巨大的促进作用。
  
  2 蓝牙无线频段的选择和抗干扰
  蓝牙技术采用2400~2483.5MHz 的ISM (工业、科学和医学)频段,这是因为:
  
  ( l )该频段内没有其它系统的信号干扰,同时频段向公众开放,无须特许;
  
  ( 2 )该频段在全球范围内有效。
  
  此时,抗干扰问题便变得非常重要。因为2400~2483.5MHz ISM 频段为开放频段,使用其中的任何频段都会遇到不可预测的干扰源(如某些家用电器、无绳电话和汽车开门器等),此外,对外部干扰源和其它蓝牙设备的干扰也应作充分估计。
  
  抗干扰方法分为避免干扰和抑制干扰。避免干扰可通过降低各通信单元的信号发射电平来达到;抑制干扰则通过编码或直接序列扩频来实现。然而,在不同的无线环境下,专用系统的干扰和有用信号的动态范围变化极大。在超过50dB 的远近比和不同环境功率差异的情况下,要达到1Mb/s 以上速率,仅靠编码和处理增益是不够的。相反,由于信号可在没有干扰时(或干扰低时)发送,故避免干扰更容易一些。若采用时间避免干扰法,当遇到时域脉冲干扰时,发送的信号将会中止。另一方面,大部分无线系统是带宽受限的,而在2.45 GHZ 频段上,系统带宽为80MHz,可找到一段无明显干扰的频谱,同时利用频域滤波器对无线频带其余频谱进行抑制,以达到理想效果。因此,以频域避免干扰法更为可行。
  
  3 蓝牙基带协议中的可靠性措施
  蓝牙基带协议把保证蓝牙无线连接的可靠性放在了至关重要的位置上,确保匹克网内各蓝牙设备之间由射频构成可靠的物理连接。实际上,为了提高蓝牙无线连接的可靠性,以较小的开销有效地降低误码率、切实提高蓝牙无线连接的可靠性,蓝牙基带协议中定义了一系列提高蓝牙无线连接可靠性的措施,主要包括:差错检测和校正、进行数据编解码、差错控制、数据加噪等。下面,我们对这些可靠性措施一一进行阐述:
  
  3.1 蓝牙基带协议中的差错控制方案
  
  在蓝牙基带协议中采用的差错控制方案有:1/3 比例前向纠错码(FEC);2/3比例前向纠错码(FEC);数据的自动重传请求(ARQ, Automatic Repeat Request)方案。
  
  其中,FEC(前向纠错)的目的是为了减少数据载荷重发的次数,使用FEC码,检错、纠错以及编解码的过程变得简单迅速,这对RX 和TX 间的有限处理时间非常重要。但是,采用FEC的缺点是还是会降低实际数据传输速率。所以,在纠错要求不高的环境中,可以不采用FEC。蓝牙规范基带协议中的分组的定义对于在有效载荷中是否采用FEC 给出了相当的灵活度,由此而定义了ACL链接中使用的DM 和DH分组以及SCO链接中使用的HV分组。分组头通常采用1/3比例前向纠错码保护,它含有很重要的链接信息,能够容忍多位错误。
  
  3.1.1 1/3 比例前向纠错码(FEC)
  
  在这种3位重复方案中,分组头中的每一位都重复三次。主要用来屏蔽头中的错误,因为分组头中包含有重要的连接信息。实际上在整个分组头里都采用了三位重复码。在这种3 位重复方案中,重复码大部分在接收端判决,既可用于数据包头,也可用于SCO链接的分组。例如,在SCO链接中使用的HV1分组里的话音段中也采用了这种编码格式。
  
  3.1.2 2/3比例前向纠错码(FEC)
  
  在这一方案中,采用了一种(15, 10)精简的(缩短的)汉明码表示方式。每10个信息位被编码为15位的码字,生成多项式为:g(D)= (D+1) (D4+D+1)。此类错误校正方法主要用来以最可靠的方式来发送数据分组。该方案能够在各代码字中纠正所有奇数位错和检测所有偶数位错,误码检测用于数据纠错。它既可用于SCO链接的同步分组,也可用于ACL 链接的异步分组。具体而言,2/3比例前向纠错码可用于DM分组、DV分组中的数据段、FHS 分组以及SCO链接中使用的HV2分组中。由于编码器采用长度为10 的信息段,所以值为O的尾位可附加在CRC位之后。而所有需要编码的位数(即:有效载荷头、用户数据、CRC和尾部数位)必须是10 的整倍数。通常是用线性反馈移位寄存器LFSR来生成2/3比例前向纠错码。
  
  3.1.3 自动重传请求(ARQ)
  
  在蓝牙无线连接中,为了保证可靠传送,常用做法是采用自动重传请求(ARQ)方案,由接收方发回特殊的控制帧,作为对输人肯定或否定性的确认(ACK/NACK)。如果出现丢帧或丢掉确认消息的情况,则计时器在超时后会发出超时信号,提醒发送方可能出现了问题,必须重传此帧。而且收方必须能够辨别收到的是重复帧还是新帧。在蓝牙采用的ARQ方案中,蓝牙的DM、DH和DV分组的数据段可以进行传输或重发,直到收端返回成功接收确认信息(或超时)为止。该确认信息包含在返回分组头里,即捎带( Piggy backing) 。为了确定有效载荷正确与否,循环冗余校验码应该加载于有效载荷中。ARQ方案只工作在分组的有效载荷上(仅针对具有CRC的有效载荷)。分组头和话音有效载荷不受ARQ 保护。
  
  蓝牙使用快速、无编号确认方案。为了应答前次接收分组,应返回ACK (ARQN=1)或NAK (ARQN=0)。在返回分组的分组头里,生成ACK / NACK 域,同时,接收分组的分组头中的ACK / NACK域可表明前面的负载是否正确接收,决定是否需要重发或发送下一个分组。从单元将在主-从时隙后紧跟在从-主时隙中进行应答。主单元则将在下一个事件中应答,该事件将给出同一从单元地址。由于处理时间短,当分组接收时,解码选择在空闲时间进行,并要简化FEC编码结构,以加快处理速度。快速ARQ方案与停止等待ARQ方案相似,但时延最小,实际上没有由ARQ方案引起的附加时延。该结构比退后n帧ARQ更有效,并与选择重传ARQ 效率相同,但由于只有失效的分组被重发,可减少开销。
  
  在快速ARQ方案中,收方为了辨别是重复帧还是新帧(即过滤重传数据),头部将附加SEQN位。通常,每次新的CRC数据有效载荷传输,SEQN位将交替变化。而在重传中,SEQN位不发生变化。这样,通过辨认SEQN位是否发生变化,收方即可辨别出是重复帧还是新帧。
  
  3.2 蓝牙基带协议中的错误校验
  
  在蓝牙无线连接中,至少应该对HEC进行分组头校验。另外,必要时其有效载荷也必须进行CRC校验。使用分组头HEC信息和有效载荷中的CRC信息,可以检测分组错误和传输错误。
  
  3.2.1 分组头HEC检测
  
  为了检测蓝牙分组头,每个分组头的最高8位定义为HEC ( Header-Error-Check,头部错误检测)信息。HEC由多项式647(八进制数)生成,在生成HEC之前,HEC生成器用一个8 位值来初始化。在初始化后,对分组头的其它10位进行计算,得到8位的HEC值。另外,在接收方校验HEC之前,也必须先进行适当的初始化。在接收分组时,首先校验的是访问码,由于在信道访问码中的64位同步字来源于24位主单元的低地址部分(LAP),这样就可以校验LAP是否正确,并可以防止接收方接收来自其它匹克网的分组。
  
  3.2.2 有效载荷的CRC校验
  
  CRC校验即循环冗余码校验,是一种常用的检错编码,而且已经有相应的国际标准,如CRC-CCITT。在蓝牙无线连接中,发送方按照国际标准CRC-CCITT ,即g (D) = ( D + 1 ) ( D7 +D4+D3+D2+D+1),并用线性反馈移位寄存器LFSR硬件电路生成有效载荷(数据信息)的CRC校验码,附加在数据信息后面构成完整的数据帧,由接收方在接收时检查。若出错,返回NAK,发送方收到NAK 后重发该数据帧。
  
  3.3 蓝牙基带协议中的其它可靠性措施
  
  3.3.1 教据加噪
  
  所有的分组头和载荷信息在发送前都要利用数据加噪字进行加噪处理。这主要是为了避免在传输过程中出现过长的连续0或1的位流模式。基带处理器需要从接收到的模拟数据信号中判断数据是0还是1,但过长的连续0或1位流会造成问题。因为在接收到的模拟数据信号中并不存在象直流信号中那样的参考点,因此必须依靠接收到的最后几个传输信号进行校正。任何连续的0或1的长序列位流串都可能导致校正失败。因此需要采用数据加噪技术对信号进行扰码处理,以大大降低出现长序列0或1位流串的可能性。
  
  在蓝牙无线连接的发送方,这种加噪过程先于FEC编码完成。在接收端,接收数据使用相同的数据加噪字进行还原处理,该还原处理在FEC解码后完成。
  
  3.3.2 链路监测
  
  在无线连接中,有很多原因能够引起连接中断,比如,设备关闭、设备移出了蓝牙通信范围。而且在连接中断发生时,通常不会有任何提前报警,所以,在蓝牙主、从单元两端对链路进行监测是非常必要的。
  
  为此,在蓝牙主、从单元均使用链路监测定时器。一旦收到经过HEC校验的分组和正确的蓝牙活动成员地址(AMADDR),定时器就复位。如果在连接状态的任何时刻,定时器达到阈值(该阈值可协商),则连接复位。SCO和ACL 连接使用同一阈值。这样,就能够在蓝牙主、从单元两端对链路进行监测了。
  
  4 蓝牙链路管理层(LM)中的可靠性措施
  类似地,在蓝牙链路管理层(LM )中,也定义有保证可靠的无线连接的措施。
  
  在蓝牙接收和发送设备的链路管理层之间是通过协议数据单元(PDU)来相互通信的。PDU 由操作码、事件ID和内容参数组成,其中,7 位操作码用来标识不同类型的PDU。
  
  如果链路管理器收到不能识别操作码的PDU,就用LMP no accepted协议数据单元(PDU)应答,并且LMP no accepted PDU中含有原