<aside>
✏️
LE 實體層 - LE PHYs
- Link Layer 規範了空口包 (air interface packet) 需要遵守的格式
- 發展過程:
- 在藍牙 v4.2 時,LE 推出了傳輸速度為 1M 的 Uncoded PHY
- 到了藍牙 v5.0 時,LE 又推出了 2M Uncoded 和 Coded PHY
- LE 的每個 channel 的頻寬是 2M Hz,所以速度不能再提高了否則可能干擾其他 channel
- Coded PHY 又稱為 Long Range,因為使用 FEC 編碼,可以支遠更遠的傳輸
- 本章節先討論 Uncoded PHYs,Coded PHY 可以參考 LE Link Layer 系列 (6) – LE Coded PHYs
</aside>
<aside>
✏️
封包格式 - LE Uncoded PHYs packet format

- LE Uncoded PHYs 的一個封包包含了四個必填欄位 (Preamble、AA、PDU、CRC) 和一個選填欄位 CTE
- 封包會先傳 Preamble,再依序傳 AA、PDU、CRC(最後可能有 CTE)
- 傳輸封包前 Tx 和 Rx 協商要使用 1M 還是 2M ,一旦決定後傳輸速率就固定了,不得中途更改
- 不含 CTE 的情況下,傳輸一個 packet 需要 44~2128 μs
- 最快: 用 2M 傳 Preamble (16) + AA (32) + PDU (16) + CRC (24) = 88 bit → 44 μs
- 最慢: 用 1M 傳 Preamble (8) + AA (32) + PDU (2064) + CRC (24) = 2128 bit → 2128 μs
</aside>
<aside>
✏️
前導碼 - Preamble

- Preamble 的作用是讓 Rx 做 frequency synchronization、symbol timing estimation等
- Preamble 在 1M 的長度是 1 octet,在 2M 的長度則是 2 octets
- Preamble 是交錯的 0 與 1,從哪一個開始由 AA 的 LSB 決定,Preamble 的 LSB 會跟 AA 的 LSB 一致
</aside>
<aside>
✏️
存取地址 - Access Address (AA)
- Access Address 長度為 4 octets,用來讓 Rx 識別這個 packet 是不是屬於現在的連線
- 所有的廣播封包,它們的 AA 都訂為
0x8E89BED6
- 不同的 ACL/CIS/BIS/PA 都應該要有不同的 AA,但 BIS 內的成員會共用 AA,靠 Substream ID 分開
- 當 LLSM 處於某個 state 時,以下行為需要重新產生新的 AA:
- Initiating State:每次發送 initiating PDU 時
- Connection State:作為 Central Role 時,每次送出 CIS 時
- Advertising State:每次發送 PA train 或 PAwR 時,PAwR 回應時還需要第二個 AA
- 關於 AA 的限制還有以下幾點:
- AA 的設計規則基本上是為了讓訊號具有足夠的隨機性和判別性
- 過於單調(例如長串 0 或 1)會讓 Rx 難以建立時脈或被雜訊誤導
- 過於鋸齒(0 與 1 完全交錯)則可能讓相關器在雜訊環境中難以區分
- AA 的比對通常是由硬體即時完成,所以必須確保任何一組合法的 AA 都能提供足夠的鑑別度,以降低誤判的機率
</aside>
<aside>
✏️
種子存取地址 - Seed Access Address (SAA) (BIG only)
- 在 Isochronous Broadcasting State 時,每個 BIG 會有一個 Seed Access Address (SAA)
- BIS 的 AA 和 BIG 的 Control logical link 將會根據 SAA 產生
- SAA 是一個 32 bit 的隨機數,且遵守:
- $SAA_{19} = SAA_{15}$
- $SAA_{22} = SAA_{16} \neq SAA_{15}$
- $SAA_{25} = 0$
- $SAA_{23} = 1$
- 對於同一個 controller 的任兩個 BIG 的 $SAA_{15-0}$,它們間的 Hamming Distance ≥ 2
- 以下說明 BIS 如何產生 AA:
- 令 $n$ 為
BIS_Number
,BIG Control logical link 的 $n=0$
- $D=(35n+42)\ mod\ 128$
- $DW=0bD_0D_0D_0D_0D_0D_0D_1D_6\_D_10D_5D_40D_3D_20\_00000000\_00000000$
- $AA=SAA \oplus DW$
- 我們討論一下為何 SAA 要這樣設計
- $SAA_{22}=SAA_{16} \neq SAA_{19}$,這三位對應到 $DW$ 中 $0$ 的位子,這保證了第二個 octet 的 Run-length $\leq 6$
- 承上,這裡還保證了與廣播地址
0x8E89BED6
的 Hamming Distance $\geq 1$
- $DW_{25}=DW_{23}$,$SAA_{23}\neq SAA_{25}$,這裡也保證了與廣播地址的 Hamming Distance ≥ 1,因此總共 ≥ 2
</aside>
<aside>
✏️
協定數據單元 - Protocol Data Unit (PDU)
PDU 會根據 packet 所使用的 physical channel 有不同的格式,我們將在未來的章節討論:
<aside>
✏️
循環冗餘校驗 - Cyclic Redundancy Check (CRC)
<aside>
✏️
恆音擴展 - Constant Tone Extension (CTE)