802.11协议笔记(二)——PHY物理层的帧格式(802.11b)

来源:互联网 发布:新开淘宝店物流 编辑:程序博客网 时间:2024/06/18 08:12

该文内容主要取自http://blog.chinaunix.net/uid-26611973-id-3431390.html,用于整理个人学习记录。

这篇文章主要介绍layer1物理层802.11b的内容。

IEEE802.11b是一个工作在2.4GHz ISM频段、物理层为改进的高速直接序列扩频HR/DSSS(Barker,CCK,PBCC)、传输速率可高达11Mbps的无线局域网标准。该标准被IEEE组织于1999年正式批准。

为了获得高的传输速率,IEEE802.11b协议定义了高速PLCP子层,用于HR/DSSS扩频方式,以实现2、5.5和11Mbps的传输速率。
IEEE802.11b物理层满足以下规范:
1.工作频段:ISM 2.400-2.4835GHz
2.数据有效负载通信能力:1、2、5.5、和11Mbps
3.调制方式为:差分二进制相移键控(DBPSK)、差分正交相移键控(DQPSK)、补码键控(CCK)和可选的分组二进制卷积码(PBCC)

前面有介绍,MPDU进入PLCP层以后,它的名字就换成了PSDU,PSDU加上前导码和PLCP头部以后,就形成了PPDU。在传输的过程中,发送端通过向接收端发送PLCP前导码来提醒对方。前导码是一序列0/1比特串,用于同步即将发生的传输。在802.11-2007 协议中有定义三种类型的前导码格式:the Long PPDU format, the Short PPDU format, and the OFDM PLCP preamble。然而在802.11n中又定义了另外三种不同的PPDUs :non-HT legacy PPDU, HT-mixed PPDU, and HT-Greenf eld PPDU。下面来讨论一下这些前导码的格式。

1.Long PLCP Preamble
长前导码的长度是144bit,前面128bit是同步域(sync field),后面16bit是Start of Frame Delimiter (SFD),如下图:

同步码(SYNC)是128位经过扰码后的“1”(扰码器的种码为“1101100”),它被用于唤醒接收设备,使其与接收信号同步。起始帧界定符(SFD)用于通知接收机,在SFD结束后紧接着就开始传送与物理介质相关的一些参数。

128bit的sync field是用来提醒接收端一个潜在的可接收信号已经到来,当接收端收到这个提醒的sync field以后,接收端将会开始和这个信号同步。

在sync field后面的是16bit的SFD,这里的值是1111 0011 1010 0000,当收到SFD的时候,表示接下来的PLCP头部也将发送。这个长PPDU前导码是使用差分二进制相移键控(DBPSK)进行调制的,以1M的速率进行发送。长前导码的调制算法是固定的,PLCP Header的调制算法也是固定的,但是PSDU可以使用其他的调制算法。

当发送端发送sync field的时候,接收端未必能够马上识别的到,但是没关系,因为接收端没必要接收全部的sync field,主要SFD接收并识别到了就行了。

前导码结束后,就是PLCP头信息(PLCP Header),这些信息中包含了与数据传输相关的物理参数。这些参数包括:信令(SIGNAL)、业务(SERVICE)、将要传输的数据的长度(LENGTH)和16位的CRC校验码。接收机将按照这些参数调整接收速率、选择解码方式、决定何时结束数据接收。信令(SIGNAL)字段长8位,定义数据传输速率,它有四个值:0Ah、14h、37h和6Eh,分别指定传输速率为1Mbps、2Mbps、5.5Mbps和11Mbps,接收机将按此调整自己的接收速率。业务(SERVICE)字段长度也是8位,它指定使用何种调制码(CCK还是PBCC)。长度(LENGTH)字段长16位,用于指示发送后面的PSDU需用多长时间(单位为微秒)。16位CRC校验码用于检验收到的信令、业务和长度字段是否正确。
前导码和PLCP头部信息以固定的1Mbps速率发送,而PSDU数据部分则可以1Mbps(DBPSK调制)、2Mbps(DQPSK调制)、5.5Mbps(CCK或PBCC)和11Mbps(CCK或PBCC)速率进行传送。


2.Short PLCP Preamble

短PLCP的preamble长度是72bit(是long PLCP preamble 144的一半),它由56bit的sync field和16bit的SFD组成:

16bit的SFD是0000 0101 1100 1111,和long SFD的顺序相反,和长PLCP的一样,Short PLCP Preamble使用的是DBPSK调制,以1M的速率进行传输;但是Short PLCP Header使用的是DQPSK调制,传输速率是2M。前导码的调制算法是固定的,PLCP Header的调制算法也是固定的,但是PSDU可以使用其他的调制算法。

短PPDU帧结构的前导码传输速率为1Mbps(DBPSK调制),整个PLCP头部信息的传输速率为2Mbps,PSDU数据传输速率为2Mbps、5.5Mbps、11Mbps。

3. OFDM PLCP Preamble(了解)

它也称作OFDM训练结构,它由10 short symbols and 2 long symbols组成:

t1-t10叫做short training symbols, GI2叫做long guard interval,T1和T2是两个long training symbols,接下来的是SIGNAL feld and the DATA
felds
,每个域都带一个GI(守卫间隔)。前导码的总长度是16us,短OFDM训练字符由12个子载波组成,长OFDM训练字符由53个子载波组成.


4. PPDU数据包的发送过程

(以下内容来自http://blog.chinaunix.net/uid-26611973-id-3431390.html,也可以查看《802.11-2012》17.2.5 Transmit PLCP)

    当数据按上述帧格式封装好后,就可以进入PPDU数据包发送过程了。IEEE定义了一系列指令(Primitives),用这些指令对MAC层管理体(MLME)和PHY层管理体(PLME)进行控制,即通过修改、更新管理信息库MIB实现MAC层和PHY层的动作,从而实现PPDU数据包的发送和接收。下图是PPDU包的发送过程。
MAC层通过发送一个“请求开始发送”指令PHY-TXSTART.req(带参数TXVECTOR)来启动PPDU的发送。除DATARATE(数据传输速率)和LENGTH(数据长度)两个参数外,其他象PREAMBLE_TYPE(前导码类型)和MODULATION(调制类型)等参数也与PHY-TXSTART.req(带参数TXVECTOR)指令一起,经由物理层业务访问点(PHY-SAP)被设定。物理层的PLCP子层在收到MAC层的发送请求后,就向PMD子层发出“天线选择请求”指令(PMD_ANTSEL.req)、“发送速率请求”指令(PMD_RATE.req)和“发射功率请求”指令(PMD_TXPWRLVL.req)对PHY进行配置。

    配置好PHY后,PLCP子层立即向PMD子层发出“请求开始发送”指令(PMD_TXSTART.request),同时PHY实体(PLME)开始对PLCP前导码(Preamble)进行编码并发送。发射功率上升所需的时间应该包括在PLCP的同步(SYNC)字段中。一旦PLCP前导码发送完毕,数据将在MAC层和PHY层之间通过一系列“数据发送请求”指令(PHY_DATA.reqest)和“数据发送确认”指令(PHY_DATA.confirm)完成频繁的数据交换。
从PSDU数据包中第一个数据符号发送开始,数据传输速率及调制方式就有可能根据PLCP头信息的定义而发生改变。随着MAC层的数据字节不断流入,PHY层持续按8位一组地按由低到高的顺序把PSDU数据包发送出去。
     发送过程也可以被MAC层用指令PHY_TXEND.request提前终止。只有在PSDU最后一个字节被发送出去后,发送才算正常结束。PPDU数据包发送结束后,PHY管理实体就立即进入接收状态。

5.PPDU数据包接收过程

(以下内容来自http://blog.chinaunix.net/uid-26611973-id-3431390.html,也可以查看《802.11-2012》17.2.6 Recieve PLCP)

    讨论PPDU的接收时,就必须介绍一个重要概念CCA(Clear Channel Assessment):空闲信道评估,它的作用是PHY根据某种条件来判断当前无线介质是处于忙还是空闲状态,并向MAC通报。高速PHY至少应该按照下面三个条件中的一个来进行信道状态评估:
-CCA模式1:根据接收端能量是否高于一个阈值进行判断。如果检测到超过ED(能量检测,Energy Detection)阈值的任何能量,CCA都将报告介质当前状态为忙。
-CCA模式2:定时检测载波。CCA启动一个3.65ms长的定时器,在该定时范围内,如果检测到高速PHY信号,就认为信道忙。如果定时结束仍未检测到高速PHY信号,就认为信道空闲。3.65ms是一个5.5Mbps速率的PSDU数据帧可能持续的最长时间。
-CCA模式3:上述两种模式的混合。当天线接收到一个超过预设电平阈值ED的高速PPDU帧时,认为当前介质为忙。
当接收机收到一个PPDU时,必须根据收到的SFD字段来判断当前数据包是长PPDU还是短PPDU。如果是长PPDU,就以1Mbps速率按BPSK编码方式对长PLCP头信息进行解调,否则以2Mbps速率按QPSK编码方式对短PLCP头信息进行解调。接收机将按照PLCP头信息中的信令(SIGNAL)字段和业务(SERVICE)字段确定PSDU数据的速率和采 用的调制方式。
    为了接收数据,必须禁止PHY_TXSTART.request指令的使用,以保证PHY管理实体处于接收状态。此外,通过PLME(物理层管理实体)将站点的物理层PHY设置到合适的信道并指定恰当的CCA规则。其他接收参数,如接收信号强度指示(RSSI)、信号质量(SQ)及数据速率(DATARATE)可经由物理层业务访问点(PHY-SAP)获取。
当接收到发射能量后,按选定的CCA规则,随着RSSI强度指示逐渐达到预设阈值(ED_THRESHOLD),PMD子层将向PLCP子层发出PMD_ED指令,意思是通知PLCP,介质上的能量已到达可接收水平,并且/或者在锁定发射信号的编码方式后,PMD继续向PLCP发出一个PMD_CS指令,即通知PLCP已检测到信号载波。在正确接收发射信号的PLCP头信息之前,这些当前已被PHY探知的接收条件都将被PLCP子层用PHY_CCA.indicate(BUSY)指令通报MAC。 PMD子层还将用PMD_SQ和PMD_RSSI指令刷新通报给MAC的SQ(接收信号质量)和RSSI(接收信号的强度)参数。
     在发出PHY_CCA.indicate消息后,PHY实体就将开始搜索发射信号的SFD字段。一旦检测到SFD字段,就立即启动CRC-16冗余校验处理,然后开始接收PLCP的信令(SIGNAL)、业务(SERVICE)和长度(LENGTH)字段。如果CRC校验出错,PHY接收机将返回接收空闲状态(RX IDLE State),CCA状态也回到空闲。
如果PLCP头信息接收成功(并且信令字段的内容完全可识别,且被当前接收机支持),接收机PLCP子层就向MAC发出一个带接收参数的请求开始接收指令PHY_RXSTART.indicate(RXVECTOR),通知MAC准备开始接收数据。此后,PHY不断将收到的PSDU的bit按8位一组重组后,通过与MAC之间不断交换一系列的PHY_DATA.indicate(DATA)指令完成数据向MAC的传递。当接收完PSDU的最后一位后,接收机返回空闲态,PHY向MAC发出一个接收完成指令PHY_RXEND.indicate,通知MAC接收信息已完成,最后向MAC发出一个信道空闲指示PHY_CCA.indicate(IDLE)。


0 0