340 likes | 445 Views
04. 藍芽. 藍芽簡介 藍芽協定 藍芽無線電層協定 藍芽的基頻層協定 藍芽微網的建立及連接過程 藍芽連線及應用層 藍芽的應用及未來發展. PART II. 4.1 藍芽簡介.
E N D
04 藍芽 藍芽簡介 藍芽協定 藍芽無線電層協定 藍芽的基頻層協定 藍芽微網的建立及連接過程 藍芽連線及應用層 藍芽的應用及未來發展 PART II
4.1 藍芽簡介 • 藍芽起源於 1994 年,由易利信公司(Ericsson)開始研究電腦與電話等週邊設備的無線網路溝通的技術,並且以低成本、低耗電量為目標,期望藍芽能與快速成長的手機結合。藍芽是以西元 10 世紀一位丹麥國王的名字(HaraldBlatand, Blatand翻為英文即為 Bluetooth)來命名。
4.2 藍芽協定 • 在藍芽中,形成網路的基本單位是微網(Piconet),一個微網內的裝置數目最多為八個,其中包含至少一個主裝置(Master device),以及一至七個的從裝置(Slave device)。在一個微網中,基本的網路架構是星狀,其形態是各個從裝置都會和一個主裝置連接。若幾個微網間有共用的裝置,則由這些微網形成的網路稱為擴散網(Scatternet)。
4.3 藍芽無線電層協定 • 藍芽的無線電層(Bluetooth radio layer)和許多其他的無線網路協定一樣使用免執照的 ISM 頻帶。在大部分的地區中,藍芽使用的頻率範圍為 2.400至 2.4825GHz,並且將這段範圍分成 79 個,每個頻寬為 1MHz 的頻道。 • 藍芽調變方式採用高斯頻移鍵控(Gaussian Frequency Shift Keying, GFSK)調變,在傳輸方面,藍芽採用了跳頻(Frequency hopping)的技術,將時間切成多個時槽,對一個裝置而言,每換一個時槽就會重新選一個不同的頻道來傳輸,這樣的做法可以有效降低碰撞的機率。
4.4 藍芽的基頻層協定 • 4.4.1 跳頻和跳頻序列 • 在一個微網中,一個時槽內只會有主裝置和某一個從裝置傳輸,而它們傳輸所使用的頻道由主裝置來決定。主裝置和從裝置都會根據主裝置 48 位元的藍芽裝置位址(Bluetooth device address, BD_Addr)以及主裝置目前的時脈算出一組頻道的近隨機跳頻序列(Pseudo-random hopping sequence),各個裝置再依照這個序列來切換頻道。
4.4 藍芽的基頻層協定 • 4.4.2 藍芽的分時雙工 • 在藍芽中,時間被分成許多個大小相等的時槽,由主裝置傳送資料給從裝置的下傳(Downlink)和由從裝置傳送資料給主裝置的上傳(Uplink)這兩種動作交互地出現。
4.4 藍芽的基頻層協定 • 4.4.2 藍芽的分時雙工
4.4 藍芽的基頻層協定 • 4.4.3 實體連接 • 傳送語音時使用的傳輸方式為同步定向(Synchronous Connection-Oriented, SCO)傳輸,而傳送一般的資料則使用非同步無連接(Asynchronous Connection-Less, ACL)傳輸。 • 由於語音具有即時的特性,在同步定向傳輸中,主裝置會在每段時間保留固定的時槽來傳送具有即時性的資料,其他的資料只能使用這些被保留時槽以外的時槽來傳輸。 • 在非同步無連接傳輸中,沒有保留頻寬給某些特定裝置的機制。如果微網內沒有使用同步定向傳輸的裝置,各個裝置可以在任意的時槽傳輸。如果有使用同步定向傳輸的裝置出現,使用非同步無連接傳輸的裝置必須讓出同步定向傳輸所需要的時槽,以確保同步定向傳輸的即時性。
4.4 藍芽的基頻層協定 • 4.4.3 實體連接
4.4 藍芽的基頻層協定 • 4.4.3 實體連接
4.4 藍芽的基頻層協定 • 4.4.4 錯誤檢查 • 藍芽中使用了二種錯誤檢查機制,分別是比率 1/3 的錯誤校正碼(1/3 Rate forward error correction)、比率 2/3 的錯誤校正碼(2/3 Rate forward error correction),並且以自動重送請求(Automatic Repeat reQuest, ARQ)來確保資料能在發生錯誤時能夠再次被傳輸。 • 比率 1/3 的錯誤校正碼是將同樣的資料傳送三份,再用多數投票(Majority voting)的方法來決定每個位元正確的值。 • 比率 2/3 的錯誤校正碼是利用漢明碼(Hamming code)的概念,可以校正單一的位元錯誤,或是檢查出兩個位元錯誤的情形。
4.4 藍芽的基頻層協定 • 4.4.5 藍芽封包格式
4.4 藍芽的基頻層協定 • 4.4.5 藍芽封包格式 • 存取碼依不同功能共有三種類型: • 頻道存取碼(Channel Access Code, CAC):用來辨別同一區域的微網,每個微網的頻道存取碼是唯一的,由微網中主裝置的藍芽裝置位址的低位 24 位元決定。 • 設備存取碼(Device Access Code, DAC):在呼叫程序時,主裝置呼叫從裝置或是從裝置回應主裝置的呼叫時,用來呼叫的信號就是設備存取碼,內容為從裝置的藍芽裝置位址之低位 24 位元。 • 查詢存取碼(Inquiry Access Code, IAC):當主裝置想要查詢附近是否有其他從裝置時,主裝置就會發出查詢存取碼。查詢存取碼又可再細分為兩種,一種是一般查詢存取碼(General Inquiry Access Code, GIAC),用以查詢所有的裝置;另一種是特定查詢存取碼(Dedicated Inquiry Access Code, DIAC),用以查詢某一特定種類的裝置。
4.4 藍芽的基頻層協定 • 4.4.5 藍芽封包格式 • 存取碼內含前導碼(Preamble)、同步字元(Sync word)以及尾碼(Trailer)前導碼和尾碼的作用都是做為 DC 補償(DC compensation),前導碼是依據同步字元的第一個 LSB 位元來決定其值。64 位元的同步字元(sync word)是由 BCH code、LAP(Lower Address Part)與 Barker code 三個部分運算而成。
4.4 藍芽的基頻層協定 • 4.4.5 藍芽封包格式 • 同步字元的運算方式如下: • 首先將 LAP 的後方接上 6 個位元的 Barker code,若 LAP 的 MSB 位元為0,則 Barker code 為 001101;若 MSB 為 0,則 Barker code 為 001101。另外LAP 的MSB 位元與Barker code 所形成的7 位元的值,稱之為Barker sequence。 • 利用一個 6 位元的線性回授位移暫存器來隨機生成一個 64 位元虛擬雜訊序列(Psuedonoise sequence, PN)p 0 p 1 … p 63。PN 序列的種子值為100000。 • 將 (p 34 p 35 … p 63 ) 與步驟 1 所產生的 30 位元序列做 XOR 的運算。透過這樣的運算方式能夠破壞掉原始資訊的規則性,達成擾亂資訊的效果。 • 藉由 (63, 30) 的 30 位元的 BCH 碼產生一個 34 位元的錯誤更正碼(error-correcting BCH code),然後將其置於步驟 3 所得到的結果前面形成 64 位元的碼字。 • 將 (p 0 p 1 … p 63 ) 與步驟 4 所產生的 64 位元序列做 XOR 的運算。透過這樣的運算方式能夠還原 LAP 與 Barker code,同時也能破壞掉 BCH code的規則性,達成擾亂資訊的效果。
4.4 藍芽的基頻層協定 • 4.4.5 藍芽封包格式
4.4 藍芽的基頻層協定 • 4.4.5 藍芽封包格式 • 標頭碼共有 18 個位元。以下是標頭各欄位所代表的意義: • 活動成員位址(Active Member Address, AM_Addr)代表的是主裝置分配給從裝置的一個 3 位元的位址。 • 流量(Flow)是在使用非同步無連接傳輸時用來控制流量。 • 封包類型(Type)代表的是這個封包的種類,以及這個封包使用的時槽個數。 • ARQN 是接收端告知傳送端上一個封包是否傳送成功的欄位。傳送端如果未收到 ARQN=1 的回覆,傳送端會重新傳送封包,直到收到正確的回覆。使用 ARQN 判斷是否要重新傳送封包的機制僅用於非同步無連接傳輸。 • 序列號碼(SEQuence Number, SEQN)是在接收端收到封包時用來判斷這個封包是否是重複的封包。 • 標頭錯誤檢查(Header Error Check, HEC)用來檢查標頭在傳送的過程中是否發生錯誤。
4.4 藍芽的基頻層協定 • 4.4.5 藍芽封包格式 • 負載用於記錄資料,總共分為三個部分:標頭、主體(Body)、CRC(Cycle Redundancy Check)檢查碼。標頭代表負載的資料種類,單時槽封包和多時槽封包負載內的標頭大小分別是 8 位元和 16 位元。主體代表的是資料的內容。傳送端送出封包前會計算出負載的標頭和主體的 CRC 數值,並將他加到負載中。接收端收到封包以後以同樣的方式算出 CRC 數值,再和收到的CRC 檢查碼比較,就可以判斷封包是否錯誤。
4.5 藍芽微網的建立及連接過程 • 4.5.1 查詢階段
4.5 藍芽微網的建立及連接過程 • 4.5.1 查詢階段
4.5 藍芽微網的建立及連接過程 • 4.5.2 掃描階段 • 當主裝置藉由FHS 封包得到從裝置的位置位址及時序後,會進入呼叫(Page)狀態。主裝置會不斷地發送 ID 封包,其中包含從裝置的裝置存取碼。主裝置會依照從裝置的裝置位址和時序來算出從裝置的跳頻序列,並估計從裝置目前使用的頻道。
4.5 藍芽微網的建立及連接過程 • 4.5.3 連線後的各種狀態 • 在進入連線狀態後,從裝置有四種模式可以選擇: • 主動模式:主裝置和從裝置傳遞資料的一般模式,在這個模式下,主裝置要定期地傳送同步訊息來維持與其他從裝置的同步。 • 監聽模式:從裝置只有在某些特定的時槽時才醒來監聽主裝置的訊號,但仍然保有和主裝置同樣的跳頻序列。 • 保持模式:從裝置進入保持模式以後將不支援非同步無定向的傳輸,但仍可加入其他微網,進行上述與主裝置連線的傳輸。 • 休眠模式:從裝置不參與任何微網內的傳輸,但仍是微網的一員,而且與微網仍保持同步。
4.6 藍芽連線及應用層 • 4.6.1 連結管理協定 • 藍芽的連結管理器(Link manager, LM)負責管理網路的連結,如主裝置將從裝置加到微網中並給予活動成員位址、將從裝置移除、建立同步定向連接及非同步無連接傳輸的連線設立、認證等工作,以及在需時在主裝置/從裝置間切換。
4.6 藍芽連線及應用層 • 4.6.2 主機控制介面 • 藍芽標準制定了主機控制介面(Host Controller Interface, HCI)來將上層的程式和下層的連線處理分開,並且經由主機控制介面提供統一的指令讓上層處理器和下層的基頻層,這種統一的標準提供了使用藍芽裝置的彈性。
4.6 藍芽連線及應用層 • 4.6.3 邏輯連接控制及調整協定 • 邏輯連接控制及調整層(Logical Link Control and Adaptation Protocol, L2CAP)位於基頻層之上,它會接收基頻層的事件並將它發送給上層的協定,或是將上層要傳送的資料切成較小的封包來傳送。另外,邏輯連接控制及調整協定可以用多工(Multiplexing)的方式傳送多個不同的上層協定的資料,使它們可以共享連接的資源。邏輯連接控制及調整層也有維護服務品質(QoS)的功能。
4.6 藍芽連線及應用層 • 4.6.3 邏輯連接控制及調整協定 • 邏輯頻道分為三種,而頻道代碼的分配也隨著邏輯頻道種類的不同而定: • 信號頻道(Signaling channel):用來交換控制用的命令及訊息,信號頻道被分配的頻道代碼固定是 1,每個 ACL 連線一定會有一個信號頻道。 • 無連線資料頻道(Connectionless data channel):這種傳輸的方向是單一的,比如說廣播。一個裝置的無連線頻道只有一個,被分配到的頻道代碼固定為 2。 • 連線導向頻道(Connection-oriented data channel):這種連線的傳輸是雙向的(分時雙工),並且必須有 QoS的支援。
4.6 藍芽連線及應用層 • 4.6.3 邏輯連接控制及調整協定
4.6 藍芽連線及應用層 • 4.6.4 RFCOMM • RFCOMM protocol 位於 L2CAP 之上,利用 L2CAP 以多工的方式來處理多個連線,並且提供一個模擬的 RS-232 序列埠讓上層協定使用,使用 RS-232介面的軟體都可以在RFCOMM 之上正常運作。
4.6 藍芽連線及應用層 • 4.6.5 服務發現協定 • 服務發現協定(Service Discovery Protocol, SDP)是幫助藍芽裝置上的應用程式找到附近的區域有哪些可用的服務。 • SDP 使用 L2CAP 連線並使用請求/回應的方式來找尋服務,當一個 SDP client 與 SDP server 的連線建立之後,SDP 便可以向 SDP server 發出 SDP 請求(SDP request)。
4.6 藍芽連線及應用層 • 4.6.6 TCS-binary • TCS-binary(Telephony Control Specification)定義了一個無線裝置如何轉換成無線電話(Cordless phone)或一個有藍芽功能的手機如何在接近藍芽電話基地臺時轉換成藍芽無線電話。