藍牙無線連接可靠性分析論文

時間:2022-06-25 09:39:00

導語:藍牙無線連接可靠性分析論文一文來源于網友上傳,不代表本站觀點,若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。

藍牙無線連接可靠性分析論文

摘要:本文敘述了藍牙無線連接在封頻、基帶協議、鏈路管理協議(LMP)中采用的可靠性措施。特別對提高藍牙文件傳拾的可靠性做了深入的研究,在藍牙RFCOMM協議的基礎之上建立了本文所描述的藍牙的文件傳輸協議,稱之為RBTFT,其中,創(chuàng)造性地提出了支持文件斷點續(xù)傳的辦法。并得到了實現,從而在應用層有效地提高了藍牙無線連接的可靠性。

關鍵詞:藍牙,無線,可靠性,研究與實現

1引言

藍牙(Bluetooth)是一種低成本、短距離的無線連接技術標準。它是由愛立信(Ericsson),國際商用機器(IBM),英特爾(Intel),諾基亞(Nokia)和東芝(Toshiba)5家公司共同倡導的一種全球無線技術標準。其目的就是將智能移動電話與筆記本電腦、掌上電腦以及各種數字信息的外部設備用無線方式連接起來。目前,無線連接飛速普及、大受歡迎,藍牙技術的廣泛應用對無線移動數據通信將起到巨大的促進作用。

2藍牙無線頻段的選擇和抗干擾

藍牙技術采用2400~2483.5MHz的ISM(工業(yè)、科學和醫(yī)學)頻段,這是因為:

(l)該頻段內沒有其它系統(tǒng)的信號干擾,同時頻段向公眾開放,無須特許;

(2)該頻段在全球范圍內有效。

此時,抗干擾問題便變得非常重要。因為2400~2483.5MHzISM頻段為開放頻段,使用其中的任何頻段都會遇到不可預測的干擾源(如某些家用電器、無繩電話和汽車開門器等),此外,對外部干擾源和其它藍牙設備的干擾也應作充分估計。

抗干擾方法分為避免干擾和抑制干擾。避免干擾可通過降低各通信單元的信號發(fā)射電平來達到;抑制干擾則通過編碼或直接序列擴頻來實現。然而,在不同的無線環(huán)境下,專用系統(tǒng)的干擾和有用信號的動態(tài)范圍變化極大。在超過50dB的遠近比和不同環(huán)境功率差異的情況下,要達到1Mb/s以上速率,僅靠編碼和處理增益是不夠的。相反,由于信號可在沒有干擾時(或干擾低時)發(fā)送,故避免干擾更容易一些。若采用時間避免干擾法,當遇到時域脈沖干擾時,發(fā)送的信號將會中止。另一方面,大部分無線系統(tǒng)是帶寬受限的,而在2.45GHZ頻段上,系統(tǒng)帶寬為80MHz,可找到一段無明顯干擾的頻譜,同時利用頻域濾波器對無線頻帶其余頻譜進行抑制,以達到理想效果。因此,以頻域避免干擾法更為可行。

3藍牙基帶協議中的可靠性措施

藍牙基帶協議把保證藍牙無線連接的可靠性放在了至關重要的位置上,確保匹克網內各藍牙設備之間由射頻構成可靠的物理連接。實際上,為了提高藍牙無線連接的可靠性,以較小的開銷有效地降低誤碼率、切實提高藍牙無線連接的可靠性,藍牙基帶協議中定義了一系列提高藍牙無線連接可靠性的措施,主要包括:差錯檢測和校正、進行數據編解碼、差錯控制、數據加噪等。下面,我們對這些可靠性措施一一進行闡述:

3.1藍牙基帶協議中的差錯控制方案

在藍牙基帶協議中采用的差錯控制方案有:1/3比例前向糾錯碼(FEC);2/3比例前向糾錯碼(FEC);數據的自動重傳請求(ARQ,AutomaticRepeatRequest)方案。

其中,FEC(前向糾錯)的目的是為了減少數據載荷重發(fā)的次數,使用FEC碼,檢錯、糾錯以及編解碼的過程變得簡單迅速,這對RX和TX間的有限處理時間非常重要。但是,采用FEC的缺點是還是會降低實際數據傳輸速率。所以,在糾錯要求不高的環(huán)境中,可以不采用FEC。藍牙規(guī)范基帶協議中的分組的定義對于在有效載荷中是否采用FEC給出了相當的靈活度,由此而定義了ACL鏈接中使用的DM和DH分組以及SCO鏈接中使用的HV分組。分組頭通常采用1/3比例前向糾錯碼保護,它含有很重要的鏈接信息,能夠容忍多位錯誤。

3.1.11/3比例前向糾錯碼(FEC)

在這種3位重復方案中,分組頭中的每一位都重復三次。主要用來屏蔽頭中的錯誤,因為分組頭中包含有重要的連接信息。實際上在整個分組頭里都采用了三位重復碼。在這種3位重復方案中,重復碼大部分在接收端判決,既可用于數據包頭,也可用于SCO鏈接的分組。例如,在SCO鏈接中使用的HV1分組里的話音段中也采用了這種編碼格式。

3.1.22/3比例前向糾錯碼(FEC)

在這一方案中,采用了一種(15,10)精簡的(縮短的)漢明碼表示方式。每10個信息位被編碼為15位的碼字,生成多項式為:g(D)=(D+1)(D4+D+1)。此類錯誤校正方法主要用來以最可靠的方式來發(fā)送數據分組。該方案能夠在各代碼字中糾正所有奇數位錯和檢測所有偶數位錯,誤碼檢測用于數據糾錯。它既可用于SCO鏈接的同步分組,也可用于ACL鏈接的異步分組。具體而言,2/3比例前向糾錯碼可用于DM分組、DV分組中的數據段、FHS分組以及SCO鏈接中使用的HV2分組中。由于編碼器采用長度為10的信息段,所以值為O的尾位可附加在CRC位之后。而所有需要編碼的位數(即:有效載荷頭、用戶數據、CRC和尾部數位)必須是10的整倍數。通常是用線性反饋移位寄存器LFSR來生成2/3比例前向糾錯碼。

3.1.3自動重傳請求(ARQ)

在藍牙無線連接中,為了保證可靠傳送,常用做法是采用自動重傳請求(ARQ)方案,由接收方發(fā)回特殊的控制幀,作為對輸人肯定或否定性的確認(ACK/NACK)。如果出現丟幀或丟掉確認消息的情況,則計時器在超時后會發(fā)出超時信號,提醒發(fā)送方可能出現了問題,必須重傳此幀。而且收方必須能夠辨別收到的是重復幀還是新幀。

在藍牙采用的ARQ方案中,藍牙的DM、DH和DV分組的數據段可以進行傳輸或重發(fā),直到收端返回成功接收確認信息(或超時)為止。該確認信息包含在返回分組頭里,即捎帶(Piggybacking)。為了確定有效載荷正確與否,循環(huán)冗余校驗碼應該加載于有效載荷中。ARQ方案只工作在分組的有效載荷上(僅針對具有CRC的有效載荷)。分組頭和話音有效載荷不受ARQ保護。

藍牙使用快速、無編號確認方案。為了應答前次接收分組,應返回ACK(ARQN=1)或NAK(ARQN=0)。在返回分組的分組頭里,生成ACK/NACK域,同時,接收分組的分組頭中的ACK/NACK域可表明前面的負載是否正確接收,決定是否需要重發(fā)或發(fā)送下一個分組。從單元將在主-從時隙后緊跟在從-主時隙中進行應答。主單元則將在下一個事件中應答,該事件將給出同一從單元地址。由于處理時間短,當分組接收時,解碼選擇在空閑時間進行,并要簡化FEC編碼結構,以加快處理速度。快速ARQ方案與停止等待ARQ方案相似,但時延最小,實際上沒有由ARQ方案引起的附加時延。該結構比退后n幀ARQ更有效,并與選擇重傳ARQ效率相同,但由于只有失效的分組被重發(fā),可減少開銷。

在快速ARQ方案中,收方為了辨別是重復幀還是新幀(即過濾重傳數據),頭部將附加SEQN位。通常,每次新的CRC數據有效載荷傳輸,SEQN位將交替變化。而在重傳中,SEQN位不發(fā)生變化。這樣,通過辨認SEQN位是否發(fā)生變化,收方即可辨別出是重復幀還是新幀。

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校驗即循環(huán)冗余碼校驗,是一種常用的檢錯編碼,而且已經有相應的國際標準,如CRC-CCITT。在藍牙無線連接中,發(fā)送方按照國際標準CRC-CCITT,即g(D)=(D+1)(D7+D4+D3+D2+D+1),并用線性反饋移位寄存器LFSR硬件電路生成有效載荷(數據信息)的CRC校驗碼,附加在數據信息后面構成完整的數據幀,由接收方在接收時檢查。若出錯,返回NAK,發(fā)送方收到NAK后重發(fā)該數據幀。

3.3藍牙基帶協議中的其它可靠性措施

3.3.1教據加噪

所有的分組頭和載荷信息在發(fā)送前都要利用數據加噪字進行加噪處理。這主要是為了避免在傳輸過程中出現過長的連續(xù)0或1的位流模式。基帶處理器需要從接收到的模擬數據信號中判斷數據是0還是1,但過長的連續(xù)0或1位流會造成問題。因為在接收到的模擬數據信號中并不存在象直流信號中那樣的參考點,因此必須依靠接收到的最后幾個傳輸信號進行校正。任何連續(xù)的0或1的長序列位流串都可能導致校正失敗。因此需要采用數據加噪技術對信號進行擾碼處理,以大大降低出現長序列0或1位流串的可能性。

在藍牙無線連接的發(fā)送方,這種加噪過程先于FEC編碼完成。在接收端,接收數據使用相同的數據加噪字進行還原處理,該還原處理在FEC解碼后完成。

3.3.2鏈路監(jiān)測

在無線連接中,有很多原因能夠引起連接中斷,比如,設備關閉、設備移出了藍牙通信范圍。而且在連接中斷發(fā)生時,通常不會有任何提前報警,所以,在藍牙主、從單元兩端對鏈路進行監(jiān)測是非常必要的。

為此,在藍牙主、從單元均使用鏈路監(jiān)測定時器。一旦收到經過HEC校驗的分組和正確的藍牙活動成員地址(AMADDR),定時器就復位。如果在連接狀態(tài)的任何時刻,定時器達到閾值(該閾值可協商),則連接復位。SCO和ACL連接使用同一閾值。這樣,就能夠在藍牙主、從單元兩端對鏈路進行監(jiān)測了。

4藍牙鏈路管理層(LM)中的可靠性措施

類似地,在藍牙鏈路管理層(LM)中,也定義有保證可靠的無線連接的措施。

在藍牙接收和發(fā)送設備的鏈路管理層之間是通過協議數據單元(PDU)來相互通信的。PDU由操作碼、事件ID和內容參數組成,其中,7位操作碼用來標識不同類型的PDU。

如果鏈路管理器收到不能識別操作碼的PDU,就用LMPnoaccepted協議數據單元(PDU)應答,并且LMPnoacceptedPDU中含有原因碼unknownLMPPDU。而且返回的操作碼參數同樣也是不能夠識別的操作碼。如果鏈路管理器收到含有無效參數的PDU,就用LMPnoacceptedPDU應答,并且LMPnoacceptedPDU中含有原因碼invalidLMPPDU(無效LMP參數).

某一方在等待對方響應時,如果發(fā)現超過了最大響應時間或者檢測到鏈路丟失,等待應答的一方就可以認為該過程已經終止。

信道出錯或發(fā)送方系統(tǒng)出錯都會引起發(fā)送錯誤的消息。為了檢測后一種情況,LM應監(jiān)測錯誤消息數量,一旦超過閾值就將其斷開,該閾值可根據實際情況進行設置。

由于無法實時地截獲PDU,在鏈路兩端的LM都對同一過程進行初始化而且都沒有成功時,很可能會發(fā)生沖突。這時,主單元將通過發(fā)送含有原因碼“LMPErrorTransactionCollision”的LMPnoacceptedPDU,中止從單元的初始化過程,從而保證主單元的初始化過程能夠順利進行。

5藍牙應用層中可采用的可靠性措施

5.1穩(wěn)定、可靠的藍牙文件傳輸協議:RBTFT

藍牙的文件傳輸是通過RFCOMM協議建立一條端到端的連接。所以在藍牙RFCOMM協議的基礎之上建立了本文所描述的藍牙的文件傳輸協議,稱之為RBTFT(表示為ReliableBluetoothFileTransfer),其主要目標是在藍牙設備之間建立一條可靠的無線連接通道,進行可靠的文件傳輸。該協議目前的開發(fā)是采用VC++,應用平臺為WIN98/2000/NT,但作為RBTFT協議的本身不受具體編程語言及操作系統(tǒng)所限制。

RBTFT協議支持一次傳輸多個文件、斷點續(xù)傳和CRC校驗。其設計思想是基于幀傳輸方式,即在發(fā)送數據時是一幀一幀地發(fā)送,為保證可靠的傳輸,RBTFT協議對RBTFT幀進行了精心的定義,RBTFT幀由報頭、數據子包組成,報頭指明幀類型(有些幀是不帶數據的命令幀、信息幀,如BTFNAK),還攜帶CRC校驗信息。而數據子包還有不同的子包結束符,指明后面是否有后續(xù)包等。在進行數據傳輸時,采用發(fā)送/應答/握手/失敗方式,即發(fā)送一幀數據,一個應答,若應答沒收到,重新進行協商握手,握手失敗則向應用程序報告錯誤。

在利用RBTFT協議進行實際的文件傳輸時,首先第一步是進行串口初始化操作,在串口初始化成功時,通過異步消息RBTFTC0NNECT向應用程序報告,表示一條通信鏈路建立完畢。開始發(fā)送數據時,應用程序根據內部緩沖區(qū)的大小決定每次真正可發(fā)送的數據量,數據將被存儲在內部緩沖區(qū)內,按照RBTFT協議,內部緩沖區(qū)的數據分割成一幀一幀并加人幀信息和CRC校驗信息,每一幀將調用內部線程發(fā)送數據,當內部緩沖區(qū)的數據全部發(fā)送完畢(即內部緩沖區(qū)為空)時,則向應用程序發(fā)送消息表示內部緩沖區(qū)的數據全部發(fā)送完畢,應用程序將可繼續(xù)發(fā)送其余的數據。在接收方,每到達一幀時,接收方就判讀幀信息、對到達的數據進行接收并進行CRC校驗,若發(fā)生錯誤則通過RBTFT協議所定義的方式進行重發(fā)或協商,當通信能繼續(xù)則不向應用程序發(fā)送任何消息,繼續(xù)保持鏈路,若通信不能繼續(xù),則放棄此鏈路,并且向應用程序發(fā)送RBTFTERROR的消息,應用程序將重新復位此鏈路或進行其它相應的處理。另外,當有任何一方斷開鏈接,應用程序將接收到RBTFTCLOSE消息,表示此鏈路已經斷開。在接收端,所接收到的分幀的數據被去掉幀頭重新歸到接收緩沖區(qū)流,重新拼裝為所傳輸的文件。然后,再進行下一個文件的傳輸,直至傳輸完所有的文件。

對于在應用層提高藍牙無線連接的可靠性而言,最為可貴的是RBTFT協議支持斷點續(xù)傳。我們目前所實現的也就是將RBTFT文件傳輸協議嵌人到藍牙無線文件傳輸的應用中,這樣,即便出現文件傳輸中斷的情況,也可以進行斷點續(xù)傳。這對于大文件無線傳輸尤為有意義。

RBTFT協議支持斷點續(xù)傳的原理在于RBTFT數據幀在報頭中攜帶有指明文件數據在文件具體某個位置開始的偏移量。當發(fā)生錯誤或連接中斷時,接收方發(fā)送一個帶有偏移量的信息幀,說明它希望發(fā)送方從該位置重新開始傳輸。這樣就無需重傳整個文件,從而實現了斷點續(xù)傳。

5.2藍牙文件傳翰RBTFT協議發(fā)送文件的詳細過程

以下是藍牙文件傳輸RBTFT協議發(fā)送單個文件的詳細過程:

n=0;//初始化重試次數計數器,收發(fā)雙方建立連接;

file=fopen(filename,“rb”);設置并發(fā)送包含文件名、文件長度的報頭;

for(;;){

message=所讀取接收方發(fā)來的響應報頭信息;

switch(message){

case接收方返回“已經準備接收”:

發(fā)送第一個數據子包,并以子包結束符指明后面有后續(xù)包;

Continue;

case接收方拒絕接收:

fclose(file);

returnOK;

case接收方返回確認信息:

發(fā)下一個包;

Continue;

case超時:n=n+l;

if(n>20)//重試20次,若還不能恢復連接,則放棄

{returnERROR;}

elseif

{重新建立連接;

請求接收方發(fā)送帶有偏移量的信息幀;

接收該信息幀;

從指定偏移量處開始繼續(xù)傳送;

Continue;}

case接收方放棄傳輸:

returnERROR;

case文件傳輸完畢:

輸出“文件傳輸完畢”的屏幕提示信息;

returnOK;

}

6結論

本文敘述了藍牙無線連接在射頻、基帶協議、鏈路管理協議(LMP)中采用的可靠性措施,包括:差錯檢測和校正、進行數據編解碼、差錯控制、數據加噪等。為了進一步在無線連接中提高藍牙文件傳輸的可靠性,在藍牙RFCOMM協議的基礎之上建立了本文所描述的藍牙的文件傳輸協議,稱之為RBTFT,其中,創(chuàng)造性地提出了支持文件斷點續(xù)傳的辦法,并得到了實現,從而在應用層有效地提高了藍牙無線連接的可靠性。我們相信,在切實提高了藍牙無線連接的可靠性之后,藍牙技術將會得到更加廣泛的應用。