16-5 基頻通道控制
『基頻通道控制』(Baseband Channel Control)是基頻協定中一個重要的功能,主要是負責建立 SCO 和 ACL 連線的工作,並且管理 Bluetooth 裝置的各種狀態轉換。Bluetooth 網路最主要的功能是『取代連線』(Cable Replacement),而以無線通訊來省略有線連線;但這些無線裝置大多是使用電池供應電源,因此,如何發揮省電的功能,也是 Bluetooth 網路一個很大的挑戰。另一方面,這些無線裝置也必須隨時待命,它可能隨時會被要求連線,所以即使在各種省電情況下,還是必須隨時和主設備(Master)保持連線狀態。Bluetooth 為了要使各種裝置能具有省電和隨時被呼叫的功能,特別將裝置的運作狀態依照使用情形區分為好幾個層次,越高層次者越耗電力,但容易被呼叫;而較低層次者雖然較省電力,但卻不容易被呼叫。這些裝置狀態的改變也是通道控制主要工作項目之一,我們由下列幾個重點來介紹基頻協定的通道控制;至於其詳細的運作程序,請參考 Bluetooth 的 Core Specification。 16-5-1 共同封包 Bluetooth 定義有ID、NULL、POLL、FHS 與 DMI 等五個『共同封包』(Common Packet),這五個封包是用來做基頻通道控制使用,如表 16-2 所示。圖 16-10 所呈現的是各種封包的格式,功能介紹如下: (1) ID(Identify Packet):識別裝置本身。當 Master 發送『查詢』(Inquiry)或『翻頁呼叫』(Paging)訊號時,所使用的封包就是 ID 封包;或者當 Slave 處理『翻頁回應』(Page Response)時,也是傳送 ID 封包。也就是說,這是發送者用來表明自己身份的封包。ID 封包只有 Access Code 部份(請參考圖 16-10),長度為 68 個位元。由於沒有 Header 欄位,自然沒有 Type 子欄位,因此並未出現在表 16-12 中。 (2) NULL(Null Packet):Null 封包沒有 Payload 欄位,只有 Access Code 和 Header 兩個欄位。Null 封包的主要功能是作為交換訊息之用,負責將封包內的 ARQN 與 Flow 旗號傳送給呼叫設備,而不需要對方回應(Acknowledge)。 (3) POLL(Poll Packet):如同 Null 封包一樣,Poll 封包也沒有 Payload 部份,只有 Access Code 和 Header 兩個欄位。Poll 封包的主要用途是供Master 輪詢各個 Slave 是否準備傳送資料,但它需要對方回應。 (4) DM1(Data Medium Rate Packet 1):DM1 封包可能出現於 SCO 或 ACL 連線上,是作為控制訊息的傳遞使用。在 SCO 連線上藉著 DM1 來傳送控制訊息,並且可中斷該連線;而在 ACL 連線內則藉著 DM1 封包來傳送使用者資料,或建立 SCO 連線。 (5) FHS(Frequency Hop Synchronization Packet):『跳頻同步封包』。FHS 封包使用於 Master Response、Inquiry Response、以及 Master Slave 交換等狀態下,供傳遞訊息使用。在 Master Response 與 Master Slave 交換狀態下,FHS 封包會被一直發送,直到收到對方的確認訊息或逾時;然而在 Inquiry Response 狀態下,一方在送出 FHS 封包後並不會等待對方回應確認訊息。 FHS 封包含有 Access Code、Header 與 Payload 三個部份(如同 Bluetooth 封包基本格式,圖 16-10),而且 Payload 包含著重要的控制訊息,如圖 16-12 所示。FHS 封包的 Payload 部份是由 144 個位元的控制訊息和 16 個位元的 CRC 所組成,這 160 個位元經過 2/3 FEC 編碼後,成為 240 個位元。Payload 欄位上的控制訊息與 Bluetooth 系統的運作方式有很大的關,各控制訊息功能如下: 圖 16-12 FHS 封包格式 ● Parity bits:是由封包前面 Access Code 內的 Sync Word 計算而來,然而 Sync Word 是由 LAP 位址計算出來的。 ● LAP(Lower Address Part):存放傳送該封包裝置的 LAP位址。 ● UN(Undefined):一般都存放 00。 ● SR(Scan Repetition):表示連續發送 Page Scan 封包的間隔時間,有 R0、R1 與 R2 三種間隔方式。 ● SP(Scan Period):表示在傳送 Inquiry Response 訊息後,執行強制 Page Scan 模式的週期。 ● UAP(Upper Address Part):傳送該 FHS 封包裝置的 UAP 位址。 ● Class of device:表示傳送此封包的裝置類別。Bluetooth 有將各種裝置編排裝置類別序號。 ● AM_ADDR(Active Member Address):包含傳送裝置的 AM_ADDR 位址。 ● CLK27-2:此欄位存放傳送者的『原始系統時序』(Native System Clock)。 ● Page scan mode:此欄位是表示呼叫掃描模式(Page Scan Mode),目前制定有 Mandatory Scan Mode、Optional Scan Mode I、Optional Scan Mode II 與 Optional Scan Mode III 等四種。 FHS 封包包含著一個即時時序(Real-time Clock)訊息(CLK27-2),每次重送 FHS 封包之前,此時序訊息便被更新。然而 FHS 封包也許會經由各個裝置來傳送,除了 Master 外,每一傳送者都會將時序加入自己的偏移量(Offset),Master 再利用這些偏移量來調整時序,使整個網路的裝置達到同步狀態。 16-5-2 時序型態 每一個裝置都有一個內部時序,並且裝置之間的時序必須保持同步,才能順利執行跳頻展頻的功能,以及正常傳送與接收訊息。Bluetooth 利用一個稱之為『藍芽時序』(Bluetooth Clock),來達到 Piconet 網路內裝置之間的同步。Bluetooth Clock 是一個自由執行的『原始時序』(Native Clock),並且從不調整與關閉,裝置之間僅能藉由加入偏移量,來達成暫時性的相互同步。值得注意的是,Bluetooth Clock 和一般時間的時序並無關聯,而是利用一個 28 位元的計數器(Counter)。此計數器可以起始於任何值,可能計數的範圍是由 0 到 228-1,而每一計數單位的值是 312.5 us(亦即 3.2 KHz 的計數頻率)。 整個 Piconet 網路通道的跳頻和時序,都依照 Master 裝置的 Bluetooth Clock 來達成。當 Piconet 網路建立時,Master 以自己的時序和 Slave 通訊,每一個 Slave 在原始時序上加入偏移量來同步於 Master 的時序;然而此時序是自由執行(Free-running),因此偏移量會隨時被更新。 Bluetooth Clock 可產生四種關鍵性的週期來觸發裝置的某些事件,這四個週期對 Bluetooth 系統非常重要,它們是 312.5 us、625 us、1.25 ms 與 1.28 s,分別位於原始時序的 CLK0、CLK1、CLK3 與 CLK12,如圖 16-13 所示。其中 Master-to-Slave 時槽的時間是當 CLK0 與 CLK1 皆為 0 時,也就是偶數時槽。 圖 16-13 Bluetooth 時序 在不同的情況下,會有下列三種型態的時序出現: ● CLKN(Native Clock):CLKN 是自由執行(Free-running)的原始時序,既是裝置內時序震盪器的參考,也是其它時序型態的參考值。在 Bluetooth 裝置內,CLKN 的精準範圍至少要保持在 +/- 20 ppm 左右;至於在較低消耗功率狀態下,如 Standby、Hold、Park 與 Sniff,則容許較鬆散的精準度(+/- 250 ppm)。 ● CLKE(Estimated Clock):CLKE 是由 CLKN 加上偏移量而得的預估時序。接受者(Slave)利用此預估時序來預估呼叫者(Master)的原始時序,亦即接收者將偏移量加入 CLKN 後,可得到接近於呼叫者的 CLKE 時序,如圖 16-14 所示。 圖 16-14 CLKE 的產生 ● CLK(Master Clock):CLK 是 Piconet 網路內的主要時序,也是依照 CLKN 時序計算得來的。所有 Bluetooth 裝置都是利用 CLK 時序來排序傳送和接收的行程。圖 16-15 (a) 為 Master 裝置產生 CLK 的方法,它所加入的偏移量為 0,也就是說,Master 裝置的 CLK 是和 CLKN 保持同步的。另外,圖 16-15 (b) 為 Slave 裝置產生 CLK 的方法,它是利用各自的 CLKN(如圖 16-14 所產生)加入某些偏移量來達到本身的同步。 圖 16-15 CLK 時序的產生 16-5-3 鏈路控制狀態 Bluetooth 裝置在不同環境下,會有各種不同的『鏈路控制狀態』(Link Controller State)的演變,譬如裝置剛啟動電源時,如何由『預備狀態』(Standby State)進入『活動狀態』(Active State);又當裝置長時間停頓時,應如何再進入省電模式。反過來說,裝置要如何由省電模式回到活動模式,或者如何將裝置停頓下來並回到預備狀態。在 Bluetooth 規格中,裝置有兩種主要工作狀態:『預備狀態』與『連線狀態』(Connection State)。 在連線狀態時,表示該裝置處於可通訊狀態,且 Master 與 Slave 裝置都使用相同的通道存取碼(Channel Access Code, CAC)與相同的跳頻序列(兩者皆由 Master 的 BD_ADDR 演算而得)。至於預備狀態則是裝置剛啟動電源的情況,此時該裝置並不隸屬於任何 Piconet 的成員,也沒有相對應的 CAC 碼及跳頻序列。 裝置要如何由預備狀態轉換到連線狀態,這可要經過一連串的轉換過程才可以達成。每一個 Piconet 都由 Master 裝置來負責這些連結的工作,由它來呼叫預備狀態的裝置,並使這些裝置成為網路的成員(Slave)。也就是說,Master 和 Slave 之間必須經過一連串的『查詢』(Inquiry)和『翻頁』(Paging)呼叫程序,才能使該裝置進入連線狀態,這一連串的轉換過程會有許多狀態出現,稱之為『中間次狀態』(Intermediate Substate),如圖 16-16 所示。中間次狀態包含有 Inquiry、Inquiry Scan、Inquiry Response、Page、Page Scan、Master Response、Slave Response 等七種,分別敘述如下: 圖 16-16 Bluetooth 狀態變遷圖 (1) Inquiry:Master 裝置正在查詢是否有新裝置欲加入網路時的狀態。 (2) Inquiry scan:指 Slave 裝置(或新啟動裝置)正在聆聽 Inquiry 呼叫時的狀態。 (3) Inquiry Response:裝置在 Inquiry Scan 狀態下收到 Inquiry 呼叫後,隨即進入 Inquiry Response 狀態。可能會有多個新裝置同時收到 Master 的 Inquiry 呼叫,並同時進入 Inquiry Response 狀態,裝置在此狀態下會決定是否允許進入、或是和其它裝置碰撞的處理。 (4) Page:在進入翻頁(Page)狀態時,Master 已經有某些要求進入網路的名單、以及其詳細資料(如裝置類別)。因此 Master 會依照此名單(或裝置的 DAC 位址)來個別呼叫,有如翻頁點名(Paging)的動作一樣。 (5) Page Scan:裝置在 Page Scan 狀態下,會聆聽是否有自己 DAC 位址的 Page 呼叫。。 (6) Master Response:Master 裝置發送 Paging 呼叫後,若得到對方的回應,便進入 Master Response 狀態,準備處理讓 Slave 進入連結狀態的動作。 (7) Slave Response:Slave 裝置收到自己 DAC 位址的 Paging 呼叫後,便可進入 Slave Response 狀態,準備處理進入連結狀態的動作。 基本上,Master 裝置會週期性的廣播 Inquiry 查詢訊號,詢問是否有新的裝置欲加入網路;待新裝置接受 Inquiry 呼叫後,再以 page 程序使之加入網路,而進入連結狀態,成為網路中的一份子。處理程序如圖 16-17 所示,並說明如下: 圖 16-17 Inquiry 與 Page 處理程序 (A) 詢問處理程序(Inquiry Procedure) 在 Bluetooth 裝置還未進入連線狀態之前,並不隸屬於任何 Piconet 網路的成員,也未與任何 Master 之間的時序達到同步,並且跳頻順序也不相同,因此,Master 裝置必須利用特殊的方法,才能執行 Inquiry 與 Paging 呼叫。Master 執行 Inquiry 程序的特殊方法,是利用某些特定頻道來廣播 ID 封包,被呼叫者也在這些頻道上接收訊號。這些特定頻道是 ISM 頻段 79 個頻道中的 32 頻道,到底是哪 32 個頻道,乃依照各國的規定。Bluetooth 將這 32 個頻道分為兩個 Train,稱為 Train A 與 Train B,每個 Train 包含了 16 不同的頻道。Master 裝置首先在 Train A 頻道上廣播查詢(Inquiry)訊號,如果沒有任何裝置回應,再到 Train B 頻道上廣播。在每一頻道上廣播時,會採用跳頻技術;但跳頻序列是公開性的,並不侷限於哪一個 Piconet 網路。 Inquiry 呼叫程序一開始是由 Master 裝置進入 Inquiry 狀態,準備詢問是否有新的裝置欲加入 Piconet 網路;同時某些裝置啟動電源,也準備加入網路運作而進入 Inquiry Scan 狀態,聆聽廣播封包(ID 封包)。接下來,Master 裝置在特殊頻道上(Train A 或 Train B)發送 ID 封包(圖 16-17 訊號 (1)),該封包含著 IAC(Inquiry Access Code);相對地,Slave 裝置也由特殊頻道上收到 ID 封包,知道這是 Master 邀請加入網路的查詢訊號,便進入 Inquiry Response 狀態,並於隨機時間後發送『跳頻同步封包』(FHS 封包,訊號 (2))給 Master 裝置,FHS 封包內包含著 Slave 裝置本身的 BD_ADDR(Bluetooth Device Address)、原始時序(Native Clock)與裝置類別(Class of Device)訊息。由於同一時間可能有許多裝置被叫醒(Wake-up),所以在此採用隨機時間,以減少回應 FHS 封包時碰撞的機會,如果某一裝置的 FHS 封包和其它裝置碰撞,則必須回到 Inquiry Scan 狀態,等待下一個 ID 封包。 Master 裝置也許會在收到一個以上的 FHS 封包後,便進入 Page 狀態,執行下一個 Page 程序。同樣地,Slave 裝置在成功發送 FHS 封包後,也會進入 Page Scan 狀態。這裡特別要注意的是,Master 裝置是週期性(每隔 1.28 秒)的進入 Inquiry 狀態,詢問是否有新的裝置欲加入網路,因此所接收到個別裝置的 FHS 封包也會累積起來。 (B) 翻頁處理程序(Page Procedure) 在翻閱呼叫(Paging)時,同樣是使用到 ISM 頻段上的 32 個特殊頻道。Master 裝置進入 Page 狀態後,可能已收到若干個裝置回應的 FHS 封包,此時必須分別針對每一個裝置做 Paging 的處理。Master 裝置針對每一 Slave 的 BD_ADDR 來計算『翻頁跳頻序列』(Page Frequency-Hopping Sequence),並以 ID 封包回應給 Slave 裝置(訊號 (3)),ID 封包內包含著 Slave DAC(Device Access Code)的 LAP 位址。Slave 裝置在 Page Scan 狀態下收到 Master 的 ID 封包後,便進入 Slave Response 狀態,同時也以翻頁跳頻序列回應相同的 DAC ID 封包給 Master 裝置(訊號 (4))。接下來,Master 裝置收到 Slave 的 DAC ID 封包後進入 Master Response 狀態,利用下一個 Master-to-Slave 時槽發送一個 FHS 封包給 Slave(訊號 (5)),此 FHS 封包包含有 Master 裝置的 BD_ADDR、以及即時的 Bluetooth 時序的值。緊接著,Slave 裝置回應一個 DAC ID 封包給 Master(訊號 (6)),表示有收到 FHS 封包。而 Master 也回應一個 ID 封包給 Slave(訊號 (7)),表示歡迎加入 Piconet 行列。 從此 Slave 擁有 Master 裝置的 BD_ADDR 與 CLKN,可以計算出 Master 的跳頻順序以及時序的同步,藉此進入連線狀態(Connection State)。同時 Master 也分配一個 AM_ADDR 位址給該 Slave,爾後便利用此位址來通訊,此裝置也正式成為 Piconet 的成員。然而 Master 裝置會連續向欲加入網路的成員做 Page Procedure,一直到全部完成或逾時,才回到連結狀態。 16-5-4 連結狀態 每一個 Slave 裝置的『連結狀態』(Connection State)是起始於 Master 裝置的 Poll 封包呼叫,該封包可證實 Slave 是否轉換到 Master 的時序和跳頻序列,如果轉換成功,Salve 可以回覆任何封包。為了節省功率消耗與對其它裝置的干擾,當 Slave 裝置長時間不需要傳遞訊息,但又希望與 Master 裝置保持連線狀態時,Slave 可以選擇進入不同層次的狀態。Slave 在連結狀態下有:Active、Sniff、Hold 與 Park 等四種次狀態,在前面三種狀態下,Slave 還保有 AM_ADDR 位址;但在 Park 狀態下則已釋放 AM_ADDR,而以 PM_ADDR 來取代。另外,由於 Master 裝置只能保持在 Active 狀態下,因此以下僅說明 Slave 的各種次狀態。 (A) Active 狀態(Active State) Active 狀態是 Slave 與 Master 保持連線的一般狀態,此時 Slave 裝置擁有 AM_ADDR 位址、以及與 Piconet 網路相同的跳頻順序。在此狀態下,Slave 裝置隨時保持在通訊狀態中,並必須隨時接收及回應 Master 裝置的輪詢(Polling)。 (B) Sniff 狀態(Sniff State) 如果 Slave 裝置不時常傳送訊息,便可進入 Sniff 狀態以減少功率消耗。在 Sniff 狀態下,Slave 裝置並不隨時接收 Master 的 Polling 呼叫,而是以一個 Sniff Interval 間隔為週期來聆聽 Master 的呼叫,因此,可能會有一些來自 Master 的呼叫沒接受到。在此狀態下,Slave 還保有 AM_ADDR 位址、以及 SCO 與 ACL 連線。 (C) Hold 狀態(Hold State) 當 Slave 裝置進入 Hold 狀態時,將暫停支援 ACL 連線,但仍然保持 SCO 連線的通訊,此時 Slave 裝置僅依照 Hold Interval 週期時間來聆聽 Master 的呼叫(Polling),而 Hold Interval 的數值由上層應用程式制定。進入 Hold 狀態的應用非常普遍,譬如無線耳機和 CD 音響之間的通訊,當兩裝置建立連線後極少再有其它控制訊號的傳輸,而僅以 SCO 連線來傳輸語音訊號,如此無線耳機(Slave 裝置)只要進入 Hold 狀態,便能減少無線耳機發射頻率的機會。當它們之間需要傳遞控制訊息時,無線耳機只要週期性的聆聽 CD 音響(Master 裝置)的 Polling 呼叫即可;當然即時性會比 Active 狀態差一些(也許 Master 呼叫好幾次 Slave 才會收到)。Slave 在 Hold 狀態時還是保持著 AM_ADDR 位址,跳頻時序也同步於 Piconet 網路。 (D) Park 狀態(Park State) 當 Slave 裝置不需要傳送與接收資料時,若希望更節省消耗功率、又不願離開 Piconet 網路,便可以進入 Park 狀態。Slave 進入 Park 狀態之前,將會釋放掉 AM_ADDR,並由 Master 分配得到一個 PM_ADDR(Park Member Address)及 AR_ADDR(Access Request Address)。當 Slave 進入 Park 狀態後,即停止所有和 Master 之間的通訊(包括 SCO 及 ACL),也不聆聽 Master 的 Polling 呼叫。在 Park 狀態下的裝置,仍然與 Piconet 網路保持相同的跳頻順序。同一 Piconet 網路下可以容納 256 個 Park 狀態的 Slave,又 Slave 之間所分配到的 AR_ADDR 可能會相同。 Master 裝置為了與 Piconet 網路內所有 Park 狀態下的 Slave 通訊,它會週期性的在 Master-to-Slave 廣播頻道(Beacon Channel, BC)上發出一些訊號;然而 Slave 裝置也會依照 Park Interval 週期性的接收訊息。當 Master 裝置希望喚醒(Unpark)某裝置時,就在 BC 頻道上發送 Slave 裝置的 PM_ADDR 位址,並同時指定 Slave 進入 Active 狀態時的 AM_ADDR 位址。Master 可經由 BC 頻道同時喚醒多個 Slave 裝置;而當 Slave 裝置欲回到 Active 狀態時,也是在 BC 頻道上以 A R_ADDR 位址向 Master 要求可傳送的 Slave-to-Master 時槽。Master 收到 Slave 的要求後,會再發出控制訊息以喚醒處於 Park 狀態的 Slave。 由上述介紹,可以瞭解 Slave 的四種狀態若依功率消耗大小來排列,依序為 Active、Sniff、Hold 及 Park 狀態;若以週期時間間隔來比較,則為 Park Interval > Hold Interval > Sniff Interval。功率消耗越低時,動作週期越長,也就是以延長 Slave 的反應時間來節省耗電量(週期間隔時間大小是由 Link Manager 所制定)。
|
翻轉工作室:粘添壽
電腦網路與連結技術:
翻轉電子書系列:
|