日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

蓝牙基带 比特流处理

發布時間:2023/12/20 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 蓝牙基带 比特流处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

7 比特流處理

藍牙設備可使用下面段落定義的比特流處理機制。

在凈荷從空中接口被發送之前,在發送器內會完成許多位操作以增強可靠性和安全性。一個HEC被加入到包頭部,頭部位以一個白化字擾碼,且應用FEC碼。在接收器內,相反的操作被實施。圖7.1展示了在發送側和接收側的包頭部處理過程。所有的頭部位處理都是強制的,除了白化和去白化可以不用在同步行列包中被完成。在圖7.1中,不是在所有類型的包中完成的過程由虛線指示出來。?

圖7.2展示了在凈荷上可能的處理過程。除了為包頭部定義的過程,在凈荷中加密可以被應用。白化和去白化,在圖7.2中被描述的,被強制要求在每一個凈荷,除了同步行列凈荷,因為被禁止。圖7.2中,可選的處理由虛線模塊指出。當E0加密被用到,整個凈荷可被加密。當AES-CCM加密被用到,只有凈荷身體和MIC可被加密;凈荷頭部和CRC可不被加密。?

7.1 錯誤檢查

包的錯誤的投遞或誤差可以使用同步訪問碼,頭部HEC,和凈荷中的CRC來檢查。在包的接收處,訪問碼首先被檢查。由于在通道訪問碼內的64位同步字采自于24位主LAP,這個檢查LAP是否正確,且避免接收器承認一個其他微微網的包(主設備的BD_ADDR提供的LAP域是不一樣的)。
HEC和CRC計算的初始化如下
在詢問應答子狀態,DCI值可被用在FHS和擴展詢問應答包。
在主設備呼叫應答子狀態,從設備的UAP可被用在FHS包。
在連接狀態,主設備的UAP可被使用。雖然訪問碼在兩個微微網中可能一樣,但不同的UAP值將導致HEC和CRC失敗。
從TDD切換開始的規則切換期間,新的從設備的UAP可被用在FHS包。
HEC和CRC的產生和檢查在圖7.5和7.8中概述。在計算HEC或CRC之前,HEC/CRC生成器中的位移寄存器可使用8位UAP(或DCI)值初始化。然后頭部和凈荷信息可被位移入各自的HEC和CRC生成器(LSB位在先)。

7.1.1 HEC生成
HEC生成器LFSR描繪在圖7.3中。以8位UAP預載入來初始化這個電路,這樣一來UAP的LSB位成為了移位寄存器的最左側元素,UAP7成為了最右側元素。HEC LFSR在圖7.4中被描繪。開關S在位置1時,數據可以被移位。當最后一個數據位進入LFSR,開關S可被設置在位置2,然后,HEC能從寄存器內被讀出。LFSR位可從右到左被讀出(例如,位置7的位是第一個被傳送的,接著是位置6)。?



7.1.2 CRC生成
CRC的16位LFSR的構造與HEC相似,使用CRC-CCITT生成器多項式。在這種情況下,8個最左側位可用8位UAP載入(UAP0在左,UAP7在右),此時最右起8位可被復位為0。16位LFSR的初始化狀態在圖7.7中指定。在數據移入時,開關S可被設定在位置1。在最后一位進入LFSR后,開關可被設定在位置2,寄存器的內容可被從左到右發送(以位置15開始,接著是14)。?


7.2 數據白化

同步隊列包可以不用數據白化字擾碼。在所有其他包發送之前,頭和凈荷可以數據白化字擾碼,為的是從高度冗余模式來隨機化數據,且最小化包的DC偏置。擾碼可在FEC編碼前完成。
在接收器,收到的擾碼后的包的數據可被解擾碼,使用的是接收端的相同的白化字生成器。解擾碼可在FEC解碼后完成。
白化字以多項式生成且隨后可與頭和凈荷異或。白化字以線性反饋移位寄存器在圖7.9上指出。在每個傳送之前,移位寄存器可用一個主設備藍牙時鐘的一部分即CLK6-1初始化,MSB擴展為1。這個初始化的處理是由CLK1寫入位置0,CLK2寫入位置1。例外情況是在詢問應答期間或呼叫應答期間的FHS包,還有在詢問應答期間的擴展詢問應答包,白化寄存器的初始化的處理可以不同。在詢問或呼叫應答期間(取決于當前狀態),X輸入用來取代主時鐘。5位值可被擴展為兩個MSB為1。在寄存器初始化期間,X的LSB可被寫入位置0,X1可被寫入位置1。?

在初始化后,包頭部和凈荷(包括CRC)被白化。凈荷白化可從HEC的結尾的白化LFSR的狀態延續。在包頭部和凈荷之間位移寄存器不用重新初始化。data in序列的第一位應是包頭部的LSB。
對增強數據比率包來說,白化不應用在增強數據比率包的看守,同步和結尾部分。在白化沒有應用的周期的期間,LFSR可以被暫停。

7.3 錯誤更正

藍牙中定義了三種錯誤更正機制

1/3 比率FEC
2/3 比率FEC
ARQ數據機制
在數據凈荷上的FEC機制的目的是為了減小重傳的數量。然后,在一個合理的無錯誤環境中,FEC提供了非必要的開銷從而減少了吞吐量。因此,章節6給出的包定義已經保持了在凈荷中使用或不使用FEC的靈活性,這樣一來DM和DH包為的是ACL邏輯傳送,HV包為的是SCO邏輯傳送,EV包為的是eSCO邏輯傳送。包頭部總是被一個1/3比率的FEC保護,因為它包含了貴重的鏈接說明,且被設計用來承受更多bit錯誤。

在語音解碼中的掩碼錯誤的修正測試不包含在此章節。有關內容在9.3章。

7.4 FEC碼:比率1/3

一個簡單的3次重復FEC碼用在頭部。重復碼的實現是每個bit重復3次,看圖7.10。3次重復碼用在整個頭部,同步數據域HV1包也一樣。?

7.5 FEC碼:比率2/3

另一個FEC機制是一個(15,10)截短漢明碼。這對應的是八進制符號65。LFSR生成碼描繪在圖7.11。所有寄存器元素初始化為0。10個信息bit隨后用開關S1和S2設定在位置1,然后填充到LFSR。然后,在最后一個bit輸入,開關S1和S2設定在2,5個奇偶bit位移出。奇偶bit緊隨著信息bit。隨后,每10個信息bit為1塊,編碼為15bit碼字。這個碼能改正所有單獨的錯誤且檢查出每個碼字內的雙數錯誤。這種2/3比率FEC用在DM包,DV包的數據域,FHS包,HV2包和EV4包。由于編碼器操作的信息部分的長度是10,為0的尾bit應附加在CRCbit之后,使得bit的總數等于10的整數倍。附加的尾bit的數量應盡可能是最少的。這些尾bit并沒有包含在ACL包的凈荷長度指示器內,或是eSCO裝載LMP命令的凈荷長度域之內。?

7.6 ARQ機制

由于一種自動重復請求機制,DM包,DH包,DV包的數據域,EV包應被發射,直到接收到一個從目的端返回的成功的回單(或超時發生)。回單信息應被包含在返回包的頭部。ARQ機制僅僅使用在包的凈荷且只用在有CRC的包上。凈荷頭部和HV的同步數據凈荷,還有DV包不受ARQ機制的保護。
7.6.1 未編號ARQ
藍牙使用一個快速的,未編號的承認機制。一個ACK(ARQN=1)或一個NAK(ARQN=0)被返回以作為之前收到的包的收據。從設備在從主時隙里應答,這個應答要直接跟隨主從時隙,除非從設備在那個時隙里有scatternet責任;主設備可在下一個尋址同樣的從設備的事件時應答(主設備可尋址的其他從設備處在)。為了成功保證包的接收,至少HEC是必須通過的。另外,當MIC和CRC存在時,都必須通過。

在新的連接的開始的第一個POLL包(由于呼叫,呼叫搜索,規則切換或解停泊),主設備可初始化ARQNbit為NAK。從設備發送的應答包也可將ARQNbit設置為NAK。隨后的包應使用下列規則。主設備的eSCO ARQN在鏈接裝載的初始值應為NAK。

ARQNbit可以僅受數據包包含的CRC和空slot影響。如圖7.12所示,當成功收到一個CRC包后,ARQNbit應設為ACK。如果,在從設備的任意接收slot,或在跟隨著主設備發送的包的接收slot,下列其中之一會發生:?
1. 未檢測到訪問碼?
2. HEC失敗?
3. CRC失敗?
4. MIC失敗

然后ARQNbit應設為NAK。在eSCO內,ARQNbit可被設為ACK,甚至當在EV包上的CRC是失敗的,這樣錯誤的包也被同意接收。

有正確的HEC但尋址的是其他從設備,或者不是DH,DM,DV,EV包,不應影響ARQNbit。例外情況在7.6.2.2章中標注。在這些情況下,ARQNbit可以被丟棄,因為更要緊的是接收這個包。對ACL包而言,如果一個CRC包有一個正確的頭部,在這個頭部內,與之前收到的CRC包有著相同的SEQN,ARQNbit可設為ACK,且不檢查CRC就丟棄凈荷。對eSCO包而言,當確定了AQRN時,SEQN不應使用。如果一個eSCO包在eSCO窗口內被成功接收,隨后的eSCO窗口內的接收應被忽略。在eSCO窗口的最后,主設備的ARQN應在下一個eSCO窗口內為了第一個主從設備傳送而保持。

ARQNbit在FHS包內是無意義的。ARQNbit的內容在FHS包內無需檢查。

ARQNbit在擴展詢問應答包內是沒用的。這個bit應設為0且在接收時被忽略。

廣播包可用CRC檢查,但沒有ARQ機制可被應用。廣播包從不會確認收到。?




7.6.2 重傳濾波器

數據凈荷可被傳送,直到一個確實的回單被接收或發生超時。一個重傳可被執行,既可以是因為包發送本身的失敗,或因為返回包內的回單傳送失敗(注意后者的可能性更低,因為頭部在很大程度上被編碼)。在后一個事件里,目的地一次次重復接收相同的凈荷。為了在目的地內濾除重傳,SEQNbit要存在于頭部。通常,這個bit對每個新的CRC數據凈荷傳輸是交替的。在一個重傳的例子中,bit可以不被改變,這樣目的地能將SEQNbit的值與之前的SEQN值作比較。如果不同的話,一個新的數據凈荷會接收;否則被認為是相同的數據凈荷且被忽略。只有新的數據凈荷可被傳輸給基帶資源管理器。注意CRC數據凈荷只能被DM,DH,DV,EV包負載。

7.6.2.1 在新的連接的開始初始化SEQN

在連接開始時第一個CRC數據包的SEQNbit(由呼叫,呼叫搜索,規則切換,解停泊引起的)在主設備和從設備側都應設為1。隨后的包可使用如下章節的規則。

7.6.2.2 ACL和SCO重傳濾波器

如圖7.15,SEQNbit只可被CRC數據包影響。每次一個新的CRC數據包被發送,它需要反轉。CRC數據包可被以相同的SEQN號重傳,直到一個ACK被收到,或者包被刷新。當一個ACK被收到,一個新的凈荷可被發送,且在這次傳送時SEQNbit應被反轉。如果一個設備決定刷新(見7.6.3),且當前包未能收到一個確認收到,可用相同序列號的ACL-U連續包替換當前包,作為當前的包且長度為0。如果用這種方法替代了當前包,不應移動到發送下一個包,直到收到一個ACK。
如果從設備收到的包不是DH,DM,DV,EV,且與在相同LT_ADDR上成功接收的上一個頭部的SEQNbit相反,應設定ARQNbit為NAK,直到一個DH,DM,DV或EV包被成功接收。?

7.6.2.3 eSCO重傳濾波器
在eSCO內,SEQNbit應在每個sSCO窗口切換。在eSCO窗口期間這個值應保持不變。SEQNbit的初始值應設為0。
對一個給定eSCO窗口而言,SEQNbit應該不變。
7.6.2.4 FHS重傳濾波器
SEQNbit在FHS包內是無意義的。這個bit可設為任意值。SEQNbit的內容在FHS包內不需要檢查。
7.6.2.5 擴展詢問應答重傳濾波器
SEQNbit在擴展詢問應答包內是不用的。這個為應設為0且在接收端無視。
7.6.2.6 沒有CRC重傳濾波器的包
沒有CRC的包在傳輸期間SEQNbit應與之前的包中的值保持一致。
7.6.3 刷新凈荷
在ACL邏輯傳送上,ARQ機制可以導致通信上的變化的延遲,因為重傳被插入以確保傳輸數據的零錯誤。對確定的鏈接來說,只有一個受限數量的延遲是允許的:重傳在一個確定的限制內被允許,即當前凈荷應被忽略。這個數據傳輸被標示為同步通信。這意味著重傳進程必須被跳過,為的是繼續下一個數據凈荷。中止重傳的機制由刷新就數據和強制鏈接控制器拿取下一個替代數據來完成。
刷新導致一個L2CAP消息剩余部分的丟失。因此緊跟在刷新后的包應有一個起始包的指示LLID=10在包頭部,提供給下一個L2CAP消息。這樣就把刷新通知了目的地(章6.6)。刷新不是必然導致在SEQNbit上值得變化,見之前的章節。
刷新超時定義了一個從控制器緩沖器來的ACL-U包中所有packet_boundary_flag值為10的段被刷新后的最大周期。這個刷新超時應開始于ACL-U包的第一段存儲進控制器緩沖器之時。如果一個ACL-U包的第一段的packet_boundary_flag的值是00,它則不是自動刷新且不應導致刷新超時的啟動。當刷新超時期滿后,鏈接控制器可參照章7.6.2.2中描述的進程繼續傳輸,然而基帶資源管理器應不能繼續ACL-U包到鏈接控制器的傳輸。如果基帶資源管理器有更多的在隊列中的需要傳輸給鏈接控制器的包的段,它應從隊列中刪除ACL-U包的剩余段。假使完整的ACL-U包并沒有存儲在控制器緩沖器中,任何后續的為了ACL邏輯傳送而接收的段都應被刷新,直到收到第一個段。當全部的ACL-U包被刷新,鏈接管理器應繼續為ACL邏輯傳送傳輸下一個ACL-U包。默認刷新超時應為無限大。重傳會執行,直到物理鏈接發生丟失。這也被稱之為‘可靠通道’。所有設備應默認支持刷新超時。可靠數據應在一個通道上以有限的刷新超時發送,靠的是給可靠的包標記為非自動刷新。
在eSCO邏輯傳送,包應在eSCO窗口的最后自動刷新。
非連接從廣播包在每個安排好的非連接從廣播瞬間發送。如果沒有新的數據,非連接從廣播發射器應發送有著最后可用凈荷數據的包。
7.6.4 多從設備考慮
在一個有著多個邏輯傳送的微微網中,主設備應在各自邏輯傳送上分別執行ARQ協議。
7.6.5 活躍從設備和停泊從設備廣播包
ASB和PSB廣播包是由主設備同時發送給所有從設備的廣播包(見8.6.4章)。如果多個跳變序列已經被使用,每個傳送只能被這些從設備中的一部分接收。這樣一來主設備應在各個跳變序列上重復傳輸。一個ASB或PSB廣播包應由全零的LT_ADDR指示(注意:只有FHS包和擴展詢問應答包的LT_ADDR是全零,但不是廣播包)。廣播包應不能被確認收到(至少在LC級是這樣)。
由于廣播包不能被確認收到,每個廣播包被傳送不少于一個固定次數。一個ASB或PSB廣播包應在下一個同樣的廣播消息的廣播包被發送以前被發送NBC此,見圖7.16。可選的,一個ASB或PSB廣播包可以被傳送NBC+1次。注意:NBC=1意味著每個廣播包應只被發送一次,但可選地被發送兩次。然而,時間-嚴格廣播信息可能使正在進行的廣播往來中止。例如,在beacon實例上發送的解停泊消息,見章8.9.5。
有CRC的ASB和PSB廣播包應有他們自己的序列號。有CRC的第一個廣播包的SEQN應由主設備設定為SEQN=1,且在此后又CRC得每個新廣播包時被反轉。沒有CRC的ASB和PSB廣播包與序列號無關。在一個連接中,從設備應接受它收到的第一個廣播包的SEQN,且應在后續的廣播包檢查SEQN的變化。由于廣播消息沒有確認收到也沒有結尾包指示,正確接收到起始包尤為重要。為了確保如此,L2CAP起始包是重復的廣播包,且LMP包應不被過濾掉。這些包應在凈荷頭部由LLID=1X指示,如表6.6的講解。只有L2CAP后續包的重復可以被濾除。?

7.7 錯誤同步數據記錄


錯誤數據的記錄可由同步鏈接使能。當使能后,同步數據應以如下順序執行:

如果,在一個(e)SCO間隔,一個收到的eSCO包有合法的HEC和合法的CRC或一個收到的SCO包有合法的HEC,收到的凈荷數據應被指示為“good data”并發送到控制器的上邊沿。
如果,在一個eSCO間隔,收到的eSCO包有合法的HEC,但他們都沒有合法的CRC,可獲得的最佳已知數據(例如采自收到的數據或是實際的凈荷數據有CRC錯誤)應被指示為“data with possible errors”并發送到控制器的上邊沿。
如果,在一個(e)SCO間隔,收到的SCO或eSCO包都沒有合法的HEC,一個“lost data”指示會發送給控制器的上邊沿。

7.8 消息完整性檢查


當AES-CCM編碼使能后,一個消息完整性檢查(MIC)被添加到凈荷中包的CRC的前面。MIC是最高位在前8進制(MSO)。

總結

以上是生活随笔為你收集整理的蓝牙基带 比特流处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。