蓝牙基带协议分析。

蓝牙(Bluetooth)是一种新型、开放、低成本、短距离的无线连接接技术,可取代短距离的电缆,实现话音和数据的无线传输。这种有效、廉价的无线连接技术可以方便地将计算机及外设、移动电话、掌上电脑、信息家电等设备连接起来,在它可达到的范围内使各种信息化移动便携设备都能实现无缝资源共享,还可通过无线局域网(WirelessLAN)与Internet连接,实现多媒体信息的无线传输。

    蓝牙系统采用分散式(SCAtter)结构,设备间以及从方式构成微微网(Piconet),支持点对点和点对多点通信。它采用GFSK调制,抗干扰性能好,通过快速跳频和短包技术来减少同频干扰,保证传输的可靠性。使用的频段为无需申请许可的2.4GHz的ISM频段。

    蓝牙协议从协议来源大致分为四部分:核心协议、电缆替代协议(RECOMM)、电路控制协议和选用协议。其中核心协议是蓝牙专利协议,完全由蓝牙SIG开发,包括基带协议(BB)、连接管理协议(LMP)、逻辑链路控制和适配协议(L2CAP)以及服务发现协议(SDP)。蓝牙协议从体系结构又可分为底层硬件模块、中间协议层和高端应用层三大部分,其中链路管理层(LM)、基带(BB)和射频层(RF)构成蓝牙的底层模块。由此可见,基带层是蓝牙协议的重要组成部分。本文主要对蓝牙技术中最重要的基带数据传输机理进行分析。

    1  基带协议概述

    图1给出蓝牙系统结构示意图。在蓝牙系统中,使用蓝牙技术将设备连接起来的网络称作微微网(Piconet),它由一个主节点(MasterUnit)和多个从节点(SlaveUnit)构成。主节点是微微网中用来同步其他节点的蓝牙设备,是连接过程的发起者,最多可与7个从节点同时维持连接。从节点是微微网中除主节点外的设备。两个或多个微微网可以连接组成散射网(Scatternet)。

 

    图2给出蓝牙协议结构示意图。基带层位于蓝牙协议栈的蓝牙射频之上,并与射频层一起构成蓝牙的物理层。从本质上说,它作为一个链接控制器,描述了基带链路控制器的数字信号处理规范,并与链路管理器协同工作,负责执行象连接建立和功率控制等链路层的,如图3所示。基带收发器在跳频(频分)的同时将时间划分(时分),采用时分双工(TDD)工作方式(交替发送和接收),基带负责把数字信号写入并从收发器中读入数据。主要管理物理信道和链接,负责跳频选择和蓝牙数据及信息帧的传输、象误码纠错、数据白化、蓝牙安全等。基带也管理同步和异步链接,处理分组包,执行寻呼、查询来访及获取蓝牙设备等。

 

    在蓝牙基带协议中规定,蓝牙设备可以使用4种类型的地址用于同场合和状态。其中,48位的蓝牙设备地址BD_ADDR(IEEE802标准),是蓝牙设备连接过程的唯一标准;3位的微微网激活节点地址AM_ADDR,用以标识微微网中激活成员,该地址3位全用作广播信息;8位的微微网休眠节点地址 PM_ADDR,用以标识微微网中休眠的从节点。微微网接入地址AR_ADDR,分配给微微网中要启动唤醒过程的从节点。

    当微微网主从节点通信时,彼此必须保持同步。同步所采用的时钟包括自身不调整也不关闭的本地设备时钟CLKN,微微网中主节点的系统时钟CLK以及为主节点时钟对从节点本地设备时钟进行周期更新以保持主从同步的补偿时钟CLKE。

    与其它无线技术一样,蓝牙技术中微微网通过使用各种信道来实现数据的无线传输。其中,物理信道表示在79个或者23个射频信道上跳变的伪随机跳频序列,每个微微网的跳频序列是唯一的,并且由主节点的蓝牙设备地址决定;此外,蓝牙有5种传送不同类型信息的逻辑信道,它们分别为:

    (1)LC信道:控制信道,用来传送链路层控制信息;

    (2)LMC信道:链接管理信道,用在链路层传送链接管理信息;

    (3)UA信道:用户信道,用来传送异步的用户信息;

    (4)UI信道:用户信道,用来传送等时的用户信息;

    (5)US信道:用户信道,用来传送同步的用户信息。

    在蓝牙系统中,主从节点以时分双工(TDD)机制轮流进行数据传输。因此,在信道上又可划分为长度为625μs的时隙(TimeSlot),并以微微网主节点时钟进行编号(0-227-1),主从节点分别在奇、偶时隙进行数据发送。

 

    2  蓝牙数据传输

    蓝牙支持电路和分组交换,数据以分组形式在信道中传输,并使用流控制来避免分组丢失和拥塞。为确保分组包数据正确传输,还进行数据的白化和纠错,下面分别对这些传输机制进行分析。

    2.1蓝牙分组

    分组包数据可以包含话音、数据或两者兼有。分组包可以占用多个时隙(多时隙分组)并且可以在下一个时隙继续发送,净荷(Payload)也带有16位的错误校验识别和校验(CRC)。有5种普通的分组类型,4个SCO分组包和7个ACL分组包。一般分组包格式如图4。

    其中,接入码(Accesscode)用来定时同步、偏移补偿、寻呼和查询。蓝牙中有三种不同类型的接入码:

    (1)信道接入码(CAC):用来标识一个微微网;

    (2)设备接入码(DAC):用作设备寻呼和它的响应;

    (3)查询接入码(IAC):用作设备查询目的。

    分组头(Header)包含6个字段,用于链路控制。其中AM_ADDR是激活成员地址,TYPE指明分组类型,FLOW用于ACL流量控制位,ARQN 是分组包确认标识,SEQN用于分组重排的分组编号,HEC对分组头进行验。蓝牙使用快速、不编号的分组包确认方式,通过设置合适的ARQN值来区别确定是否接收到数据分组包。如果超时,则忽略这个分组包,继续发送下一个。

    2.2链接及流控制

    蓝牙定义了两种链路类型,即面向连接的同步链路(SCO)和面向无连接的异步链路(ACL)。SCO链接是一个对称的主从节点之间点对点的同步链接,在预留的时间里发送SCO分组,属于电路交换,主要携带话音信息。主节点可同时支持3个SCO链接,从节点可同时支持2~3个链接SCO,SCO分组包不支持重传。SCO链路通过主节点LMP发送一个SCO建立消息来建立,该消息包含定时参数(Tsco和Dsco)。

    ACL链接是为匹克网主节点在没有为SCO链接保留的时隙中,提供可以与任何从节点进行异步或同步数据交换的机制。一对主从节点只可以维持一个ACL链接。使用多个ACL分组时,蓝牙采用分组包重发机制来保证数据的完整性。ACL分组不指定确定从节点时,被认为是广播分组,每个从节点都接收这个分组。

    蓝牙建议使用FIFO(先进先出)队列来实现ACL和SCO链接的发送和接收,链接管理器负责填充这些队列,而链接控制器负责自动清空队列。接收FIFO 队列已满时则使用流控制来避免分组丢失和拥塞。如果不能接收到数据,接收者的链接控制器发送一个STOP指令,并插入到返回的分组头(Header)中,并且FLOW位置1。当发送者接收到STOP指示,就冻结它的FIFO队列停止发送。如果接收器已准备好,发送一个GO分组给发送方重新恢复数据传输, FLOW位置0。

    2.3数据同步、扰码和纠错

    由于蓝牙设备发送器采用时分双工(TDD)工作机制,它必须以一种同步的方式来交替发送和接收数据。微微网通过主节点的系统时钟来实现同步,并决定其跳频序列中的相位。在微微网建立时,主节点的时钟传送给从节点,每个从点节给自己的本地时钟加上一个偏移量,实现与主节点的同步。在微微同生存期内,主节点不会调整自己的系统时钟。为了与主节点的时钟匹配,从节点会偏移量进行周期的更新。蓝牙时钟应该至少具有312μs的分首辨率。主节点分组发送的平均定时与理想的625ms时隙相比,偏移不不能超过20ppm,抖动(Jitter)应该少于1ms。

    在分组数据送出去并且在FEC编码之前,分组头和净荷要进行扰码,使分组包随机化。接收数据分组包时,使用盯同的白化字进行去扰处理。

    为了提高数据传输可靠性及系统抗干扰性,蓝牙数据传输机制采用三种纠错方式:1/3率FEC编码方式(即每一数据位重复3次)、冗余2/3率FEC编码方式(即用一个多项式发生器把10位码编码成15位码)以及数据自动请求重发方式(即发送方在收到接收方确认消息之前一直重发数据包,直到超时)。

 

    图4  蓝牙分组包格式

    3  蓝牙设备连接

    蓝牙链接控制器工作在两种主要状态:待令(Standby)和连接(Connection)。在蓝牙设备中,Standby是缺省的低功率状态,只运行本地时钟且不与任何其他设备交互。在连接状态,主节点和从节点能交换分组包进行通信,所以要实现蓝牙设备之间的互相,彼此必须先建立连接。由于蓝牙使用的 ISM频带是对所有无线电系统都开放的频带,会遇到各种各样的干扰源,所以蓝牙采用分组包快速确认技术和跳频方案来确保链路和信道的稳定。在建立连接和通信过程中使用跳频序列作为物理信道,跳频选择就是选择通信的信道。

    3.1跳频选择

    跳频技术把频带分成若干个跳频信道(HopChannel)。无线电收发器按一定的码序列(以产生随机数的方式)不断地从一个信道跳到另一个信道,并且收发双方都按这个规律才能通信并同步。跳频的瞬时带宽很窄,通过扩频技术展成宽频带,使干扰的影响最小。当一个设备被激活时,该设备被分配32个跳频频点,以后该设备就在这些跳频点上接收和发送信息。通用跳频选择方案由两部分组成,即选择一个序列并在跳频频点上映射该序列。对于每一情况,都需要从-主和主- 从两种跳频序列。蓝牙系统中使用的跳频序列有如下几种:

    (1)呼叫跳频序列:在呼叫(Page)状态使用;

    (2)呼叫应答序列:在呼叫应答(PageResponse)状态使用;

    (3)查询序列:在查询(Inquiry)状态使用;

    (4)查询应答序列:在查询应答(InquiryResponse)状态使用;

    (5)信道跳频序列:在连接(Connection)状态使用。

    3.2蓝牙连接建立

    从待令状态到连接状态的过程就是连接建立过程。通常来讲,两个设备的连接建立过程如下:

    首先,主节点使用GIAC和DIAC来查询范围内的蓝牙设备(查询状态)。如果任何附近的蓝牙设备正在监听这些查询(查询扫描状态),就发送它的地址和时钟信息后,从节点可以开始监听来自主节点的寻呼消息(寻呼扫描),主节点在发现附近的设备之间可以寻呼这些设备(寻呼状态),建立链接。在寻呼扫描的从设备被这个主节点寻呼后,就会以DAC(设备访问码)来响应(Slaveresponsesubstate)。主节点在接收到从节点的响应后,便可以以送主节点的实时时钟、BD_ADDR、BCH奇偶位和设备类(FHS分组包),最后在从节点已经接收到这个FHS分组之后,进入连接状态。具体过程如图5。

    由图5可见,在蓝牙连接建立的呼个不同阶段,主节点和从节点分别处于不同的状态,这些状态包括:

    查询(Inquiry):查询是主节点用来查找可监视区域中的蓝牙设备,以便通过收集来自从节点响应查询消息中得到该节点的设备地址和时钟,查询过程使用IAC;

    查询扫描(InquiryScan):蓝牙设备周期地监听来自其他设备的查询消息,以便自己能被发现。扫描过程中,设备可以监听普通查询接入码(GIAC)和特定查询接入码(DIAC);

    查询响应(Inquiryresponse):从节点以FHS分组响应查询消息,它携带从节点的DAC、本地时钟等信息;

    寻呼(Page):主节点通过在不同的跳频序列发送消息,来激活一个从节点并建立连接,寻呼过程使用DAC;

    寻呼扫描(PageScan):从节点周期性地在扫描窗间隔时间内唤醒自己,并监听自己的DAC,从节点每隔1.28s在这个扫描窗上根据寻呼跳频序列选择一个扫描频率;

    从节点响应(SlaveResponse):从节点在寻呼扫描状态收到主节点对自己的寻呼消息即进入响应状态,响应主设备的寻呼消息;

    主节点响应(MasterResponse):主节点在接收到从节点对它的寻呼消息的响应后,主节点发送一个FHS分组给从节点,如果从节点响应回答,主节点就进入连接状态。

    3.3连接状态

    连接(connection)状态以主节点发送一个POLL分组开始,表示连接已经建立,此时分组包可以在主从节点之间来回发送。连接两端即主从节点都使用主节点的接入码和时钟,并且使用的跳频为信道跳频序列。即在连接建立后,主节点的蓝牙设备地址(BD_ADDR)决定跳频序列和信道接入码。在连接状态的蓝牙设备,可以有以下几个子状态:

    Active:在这个模式下,主从节点都分别在信道通过监听,发送和接收分组包,并彼此保持同步;

    Sniff:在这个模式下,从节点可以暂时不支持ACL分组,也就是ACL链路进入低能源sleep模式,空出资源,使得象寻呼、扫描等活动、信道仍可用;

    Park:当从节点不必介入微微网信道,但仍想与信道维持同步,它能进入park(休眠)模式,此时具有很少的活动而处于低耗模式,从节点放弃AM_ADDR,而使用PM_ADDR。

 

    4  蓝牙完全机制

    如果允许利用蓝牙技术来实现无锁门或者在超市自动买单,则蓝牙完全性非常重要。蓝牙协议为用户进行数据传输提供了一套可靠的安全机制。首先,蓝牙基带部分在物理层为用户提供保护和信息加密机制,而在链路层通过同等鉴权并对用户信息进行加密。蓝牙设备在连接过程中采用查询/应答方式进行鉴权。一个设备发送一个口令或查询,而从设备则响应这个口令,这样可以防止盗用和误用。信息加密机制是在蓝牙设备连接建立后,采用序列密码加密算法对用户数据或信息进行加密,从而增加系统安全性。链路层共有四种参数来保证通信的安全,分别是蓝牙设备地址BD_ADDR、认证私钥、加密私钥和随机码RAND。如果用户有更高级别的保密要求,则可采用更为有效的传输层和应用层完全机制。总之,蓝牙完全机制的目的在于提供适当级别的完全保护。由于蓝牙完全是蓝牙一个非常复杂的问题,限于篇幅在此不做进一步的讨论。

    本文主要对蓝牙技术中最基础和最重要的基带层进行了分析和讨论,为进一步对蓝牙技术进行全面深入的研究和开发应用奠定了基础。蓝牙技术主要应用于小范围的家庭和办公室信息传输系统和信息家电,因此对蓝牙技术进行开发和应用,具有重要的现实意义。尤其我国人口密集,具有广阔的应用前景,并将对我国国民经济建设产生重大影响

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/sdlcgxcqx/archive/2009/07/03/4315722.aspx

你可能感兴趣的:(蓝牙基带协议分析。)