之前在學(xué)習(xí)藍(lán)牙的時候,我了解到了藍(lán)牙的物理層是基于2.4GHz頻段的80M帶寬內(nèi)分割出來很多個信道,把比特調(diào)制到信道的載波頻率上,進(jìn)行基本的鏈路通信,同時為了增強(qiáng)抗干擾性,藍(lán)牙還是用跳頻機(jī)制,也就是通信的雙方約定好,先在哪個信道通信,下一個時段在另一個信道上通信。
這里面涉及到一個最基本的問題,也就是我們的比特,0或者1,是怎么調(diào)制到載波上的呢?
頻移鍵控FSK調(diào)制
BLE采用的FSK調(diào)制方式,也就是用不同的頻率表示0和1。在藍(lán)牙的一個通信信道中,小于中心頻率被稱為負(fù)頻偏,大于中心頻率被稱為正頻偏。
于是,我們使用負(fù)頻偏的信號表示0,正頻偏表示符號1。
比如我們選擇2402MHz這個信道進(jìn)行通信,負(fù)頻偏代表了比特0,正頻偏代表了比特1。則最小的頻偏約為180KHz。也即是說,如果中心頻率選取了2402MHz,比特0意味著傳輸2401.820MHz,比特1意味著傳輸2402.180MHz。
從時域分析圖來看,就像下面這樣的波形。
以上就是頻移鍵控的調(diào)制方式,也就是把符號0 和 1分別用不同的頻率來表示。
這里得加一個器件,以便于我們?nèi)ダ斫夂竺娴?a class="article-link" target="_blank" href="/baike/1555839.html">擴(kuò)頻通信,在這里先提出來,這個器件就是壓控振蕩器,顧名思義,就是使用電壓來控制震蕩頻率。
如果應(yīng)用在我們上面的FSK中,其實(shí)就是一些固定的電壓點(diǎn)對應(yīng)著每個信道上面的0 和 1。只要經(jīng)過壓控振蕩器,就變成不同的頻率了。
什么是擴(kuò)頻通信呢?
LoRa的調(diào)制與解調(diào)也就是如何在物理波形和比特數(shù)據(jù)之間進(jìn)行轉(zhuǎn)換。
LoRa 使用 CSS (Chirp Spread Spectrum)線性擴(kuò)頻調(diào)制,頻率線性掃過整個帶寬,因此抗干擾極強(qiáng),對多徑和多普勒效應(yīng)的抵抗也很強(qiáng)。
LoRa的基本通信單元是linear chirp,也即頻率隨時間線性增加(或減小)的信號。
我們將頻率隨著時間線性增加的chirp符號叫做upchirp,將頻率隨著時間線性減小的chirp符號叫做downchirp。
如下兩圖分別從時域波形和時頻域展示了一個upchirp的圖像:
上面的圖片展示的波形是一個頻率從小變大的過程。如果在壓控振蕩器輸入來測量,那就是從低到高的一個線性變化的電壓。在轉(zhuǎn)換到頻域中觀察就是下圖這樣的一條斜線。
我們知道了線性擴(kuò)頻就是一個線性遞增的頻率,那么回到最初的問題,符號 0 和 1是怎么來表示的呢?
LoRa的做法是通過在頻域循環(huán)平移chirp進(jìn)行數(shù)據(jù)的編碼,不同的起始頻率代表不同的數(shù)據(jù)。
如下圖所示,在帶寬B內(nèi)四等分標(biāo)定四個起始頻率,我們可以得到4種類型的符號,分別表示00,01,10,11。
我們將圖(a)所示從最低頻率掃頻到最高頻率的chirp符號稱為basic upchirp。所以在接收端,只需要將這個起始頻率計算出來,就可以計算出每一個chirp對應(yīng)的比特數(shù)據(jù)。
這里,LoRa規(guī)定了一個參數(shù)SF(Spreading Factor,擴(kuò)頻因子)
如上圖,當(dāng)SF = 2時,我們獲得4個起始頻率,編碼為00,01,10,11。那么如果SF = 3,就可以得到8個起始頻率了。
因此,SF越大,我們在整個帶寬上分出的起始頻率點(diǎn)就越多,當(dāng)然也不能無限多,頻率的分辨率會不夠。
如果我們固定的選擇一個帶寬BW,那么SF越大,也就意味著T越大,也就是發(fā)送一個符號的時間越長。因此SF用于調(diào)節(jié)傳輸速率和接收靈敏度,越大的SF速率越小但支持更遠(yuǎn)的通訊距離。
如果我們在頻率上監(jiān)測的話,可以看到一段LORA的頻率如下:
用聲音來打個比方,藍(lán)牙的調(diào)制方式就是把不同的聲音定義成 0 和 1 來進(jìn)行傳遞。而LoRa的擴(kuò)頻就相當(dāng)于我們通過唱一首歌來通信,把符號分成多個,把從不同的段開始唱來表示不同的符號。