雷 芳 ,陳 博 ,呂京昭 ,李平安 ,杜海濤 ,粟 栗
(1.重慶郵電大學(xué) 通信與信息工程學(xué)院,重慶 400065;2.中國移動(dòng)通信集團(tuán)公司研究院,北京 100053)
近年來,智能設(shè)備的蜂擁而起,先后涌現(xiàn)了一系列的無線通信技術(shù),被大規(guī)模應(yīng)用于各個(gè)行業(yè)各種應(yīng)用場(chǎng)景。其中,在廣域網(wǎng)通信技術(shù)中,LoRa 是一種前景比較好的低功耗廣域網(wǎng)(Low Power Wide Area Network,LPWAN)[1-3]技術(shù),主要應(yīng)用于具有低功耗、遠(yuǎn)距離特點(diǎn)的應(yīng)用場(chǎng)景,如智能抄表[4]、智慧農(nóng)業(yè)[5]、智慧城市[6]等。
LoRa 技術(shù)是由美國Semtech 公司開發(fā)的一種擴(kuò)頻技術(shù),融合了數(shù)字?jǐn)U頻、數(shù)字信號(hào)處理及前向糾錯(cuò)編碼等技術(shù)[7]。與傳統(tǒng)擴(kuò)頻技術(shù)相比,LoRa 技術(shù)增加了鏈路預(yù)算和對(duì)帶內(nèi)干擾的抗干擾能力,擴(kuò)大了無線通信鏈路的通信范圍[8]。在SX1280 技術(shù)手冊(cè)[9]以及文獻(xiàn)[10]中,給出了LoRa 數(shù)據(jù)包結(jié)構(gòu)以及長度計(jì)算方法,并沒有給出物理層LoRa 數(shù)據(jù)包的調(diào)制解調(diào)算法、通信鏈路流程;僅有一些文獻(xiàn)提到LoRa 調(diào)制解調(diào)技術(shù)的原理及物理層收發(fā)端流程框圖[11-13]。在文獻(xiàn)[14]中,提到了一種LoRa 空口數(shù)據(jù)鎖相環(huán)的硬同步算法,但基本沒有文獻(xiàn)提出軟同步算法。
基于此,本文將結(jié)合官方的羅德儀表中的LoRa 調(diào)制技術(shù)和文獻(xiàn)中的資料對(duì)LoRa 物理層進(jìn)行更詳細(xì)更完整的說明,提出一種高效的軟同步算法,并對(duì)羅德儀表生成的LoRa 空口數(shù)據(jù)實(shí)現(xiàn)解調(diào)。
根據(jù)羅德儀表LoRa 參數(shù)配置界面,可知數(shù)據(jù)包有顯示和隱式兩種報(bào)頭,顯示模式數(shù)據(jù)包結(jié)構(gòu)如圖1 所示,隱式模式是關(guān)閉報(bào)頭。
圖1 LoRa 顯示模式(Explicit mode only)的數(shù)據(jù)包結(jié)構(gòu)
在圖1 中,前導(dǎo)(Preamble)主要用于接收端同步,不加密,不添加糾錯(cuò)編碼;報(bào)頭(Header)主要包含有效載荷信息(Payload)的字節(jié)數(shù)、前向糾錯(cuò)碼的碼率(CR)以及Payload 是否添加CRC,Header 的糾錯(cuò)碼率按照最大糾錯(cuò)碼碼率CR 為4/8 添加;Payload CRC 部分采用循環(huán)冗余校驗(yàn)碼。隱式模式在這些報(bào)頭承載參數(shù)信息都已知,直接在接收端配置已知參數(shù),不需要通過解報(bào)頭來獲取這些信息。
Payload 主要承載要發(fā)送的信息,數(shù)據(jù)長度為1~255 B;Payload CRC 是給Payload 進(jìn)行差錯(cuò)檢驗(yàn),不添加糾錯(cuò)編碼時(shí)占2 B。Payload 和Payload CRC 采用的加密方式以及添加糾錯(cuò)編碼的碼率相同,有5 種碼率(CR∈{4/4,4/5,4/6,4/7,4/8})可選。
通過羅德儀表的LoRa 調(diào)制的參數(shù)配置接口和文獻(xiàn)[9]-[10],繪制LoRa 收發(fā)端流程如圖2 所示。在下文對(duì)羅德儀表采集的LoRa 空口數(shù)據(jù)進(jìn)行去前導(dǎo)解調(diào),發(fā)現(xiàn)Payload 部分解出的符號(hào)個(gè)數(shù)大于實(shí)際配置比特長度生成的符號(hào)個(gè)數(shù)。因此,除了上述這些比特?cái)?shù)據(jù)的處理方式,還涉及Payload 部分?jǐn)?shù)據(jù)的填充規(guī)則。
在圖2 中,報(bào)頭Header 和Payload 碼率可以不同,因此它們是分開添加糾錯(cuò)碼。前導(dǎo)碼由n 個(gè)上掃頻信號(hào)(Upchirps 信號(hào))、兩個(gè)同步碼以及2.25 個(gè)下掃頻信號(hào)(Downchirps 信號(hào))三部分組成。
圖2 “LoRa 收發(fā)端”的流程圖
其中,根據(jù)羅德儀表德LoRa 調(diào)制界面的各個(gè)模塊功能作用分析,對(duì)Payload 部分比特流數(shù)據(jù)加密和提高魯棒性處理的順位依次為:是否添加CRC,是否開啟低速率優(yōu)化,是否添加糾錯(cuò)編碼,是否打開交織器[15],白化、格雷碼;而在接收端Payload 數(shù)據(jù)的解調(diào)、解密和去冗余比特,其處理順序和發(fā)送端相反。
在LoRa 調(diào)制中白化是一種擾碼技術(shù),是對(duì)單個(gè)比特進(jìn)行的,防止出現(xiàn)連續(xù)的0 或1 導(dǎo)致信道功率分配不均,但LoRa 技術(shù)中沒有信道功率分布不均問題,這里作用主要是加密,白化和解白化的過程是一樣。
LoRa 調(diào)制技術(shù)的本質(zhì)是一種線性頻率調(diào)制技術(shù),對(duì)初始頻率的循環(huán)偏移點(diǎn)數(shù)攜帶需要傳遞的信息進(jìn)行擴(kuò)頻傳輸。將經(jīng)過處理和填充的比特?cái)?shù)據(jù)按擴(kuò)頻因子NSF個(gè)比特封裝成1 個(gè)符號(hào),將NSF個(gè)比特?cái)?shù)據(jù)分割為個(gè)碼片進(jìn)行擴(kuò)頻傳輸。一個(gè)符號(hào)的LoRa 調(diào)制定義如下:
由式(1)可知,LoRa 調(diào)制信號(hào)的頻率隨時(shí)間變換的表達(dá)式f(n)為:
根據(jù)LoRa 調(diào)制的基本原理,由本地Upchirp 信號(hào)作為基本的調(diào)制信號(hào),對(duì)初始頻點(diǎn)進(jìn)行循環(huán)位移得到調(diào)制信號(hào)。在接收端應(yīng)對(duì)先接收數(shù)據(jù)去載頻fc和濾波處理,得基帶LoRa 調(diào)制信號(hào)sm(n)′,在這里sm(n)′是在理想情況下,不包含噪聲n(t)的歸一化數(shù)據(jù)(與sm(n)相同);再與μ=-1、K=0 的Downchirp 信號(hào)進(jìn)行相乘得sr(n)。
其中,N1、N2與式(1)中相同,n 為接收端采樣點(diǎn)的橫坐標(biāo)。對(duì)sr(n)的個(gè)碼片的行向量進(jìn)行離散快速傅里葉變化(Fast Fourier Transformation,F(xiàn)FT),可以得到1 個(gè)符號(hào)的頻譜y(n)。根據(jù)第p 個(gè)符號(hào)的頻譜y(n,p)的壓縮脈沖的最大模值的橫坐標(biāo)n 乘以B 為頻率突變采樣點(diǎn)的位置,得第p 個(gè)符號(hào)的解調(diào)值為K(p)。
通過羅德儀表選擇LoRa 標(biāo)準(zhǔn),配置相應(yīng)的參數(shù)生成LoRa 調(diào)制數(shù)據(jù)包。為了下文數(shù)據(jù)包的Payload 部分LoRa 解調(diào)簡單化,更好地驗(yàn)證文獻(xiàn)中提到的LoRa 解調(diào)算法和Payload 部分?jǐn)?shù)據(jù)的加密特點(diǎn),在參數(shù)配置選擇隱式模式,關(guān)閉可以配置數(shù)據(jù)編碼方式,B 設(shè)置為500 kHz,NSF設(shè)置為7,Payload 設(shè)置4 字節(jié)全1 數(shù)據(jù),只有LoRa 調(diào)制的白化處理以及Payload 部分獨(dú)特的數(shù)據(jù)填充方式是儀表內(nèi)部自動(dòng)配置的。通過羅德儀表連續(xù)采集的40 ms數(shù)據(jù)的實(shí)部、虛部幅值以及模值波形如圖3 所示。
由于通過羅德儀表采集的空口數(shù)據(jù)噪聲很小,因此在圖3 中可以直接區(qū)分?jǐn)?shù)據(jù)部分和噪聲部分;為了能截取到1 個(gè)完整LoRa 數(shù)據(jù)包,故在其明顯的數(shù)據(jù)大概的起始位置,向前多取20 個(gè)點(diǎn)。
圖3 羅德儀表生成40 ms 的LoRa 調(diào)制數(shù)據(jù)
利用LoRa 解調(diào)算法進(jìn)行滑動(dòng)解調(diào),并觀察解調(diào)數(shù)據(jù)的FFT 頻譜圖判斷解調(diào)結(jié)果的正確性,直到發(fā)現(xiàn)解調(diào)值為8 個(gè)連續(xù)的0、兩個(gè)同步字,再接著使用Upchirp 信號(hào)反解為2 個(gè)0,可得LoRa 數(shù)據(jù)包的起點(diǎn),并結(jié)合羅德儀表可視化界面可得該參數(shù)配置數(shù)據(jù)包的點(diǎn)數(shù),截取出一個(gè)完整的幅值歸一化LoRa 數(shù)據(jù)包如圖4 所示,并標(biāo)出了前導(dǎo)各部分的位置。
圖4 LoRa 數(shù)據(jù)包的時(shí)域圖
由于LoRa 調(diào)制是一種頻率調(diào)制技術(shù),并且在傳遞消息時(shí),1 個(gè)符號(hào)或相鄰會(huì)有頻率突變的地方,在羅德儀表抓取數(shù)據(jù)需對(duì)數(shù)據(jù)進(jìn)行重采樣,會(huì)經(jīng)過內(nèi)部的低通濾波器,因此在圖4 的第3 子圖數(shù)據(jù)取模的幅度不是一個(gè)固定值,而是當(dāng)頻率發(fā)生很大突變就會(huì)出現(xiàn)凹陷,當(dāng)頻率發(fā)生幾個(gè)采樣點(diǎn)或者幾十個(gè)采樣點(diǎn)突變就出現(xiàn)一些小波動(dòng)。
圖4 的第3 個(gè)子圖中,標(biāo)出了前導(dǎo)3 個(gè)部分所處的采樣點(diǎn)數(shù)所在的區(qū)間,可以明顯發(fā)現(xiàn),前8 個(gè)符號(hào)都是以高頻開始和高頻結(jié)束的;在羅德儀表參數(shù)配置時(shí),數(shù)據(jù)包前導(dǎo)的8 個(gè)Upchirp 信號(hào)起始頻率為-B/2,以B/2結(jié)束,通過這一特點(diǎn)就很容易找到了LoRa 數(shù)據(jù)包的前導(dǎo),也符合LoRa 官方文檔中提到的LoRa 前導(dǎo)的結(jié)構(gòu)特點(diǎn)。
在3.1 節(jié)中,由于羅德儀表生成的空口數(shù)據(jù)噪聲很小,可以直接找到數(shù)據(jù)的大概位置,可以直接通過LoRa解調(diào)算法進(jìn)行滑動(dòng)解調(diào),找到LoRa 數(shù)據(jù)包的精同步點(diǎn),從而得到完整的Payload 部分。但在噪聲比較大的環(huán)境下,LoRa 信號(hào)被噪聲淹沒,不能直接找到大概的數(shù)據(jù)區(qū),如果使用滑動(dòng)解調(diào)的方法進(jìn)行同步,獲得Payload 部分,同步復(fù)雜度很高,需要的時(shí)長很長,該方法只適用于本文的特殊情況作驗(yàn)證。
針對(duì)這個(gè)問題,在這里結(jié)合LoRa 數(shù)據(jù)包的前導(dǎo)特點(diǎn),提出了一種高效的同步算法,按符號(hào)進(jìn)行偏移解調(diào),直到解調(diào)疑似前導(dǎo)的連續(xù)Upchirp 信號(hào)部分,再進(jìn)行頻點(diǎn)偏移檢測(cè)同步碼,最后再檢測(cè)2 個(gè)Downchirp 信號(hào)。算法詳細(xì)過程如下:
(1)檢測(cè)LoRa 信號(hào)的到來,提供2 種方式:檢測(cè)信號(hào)強(qiáng)度(RSSI)進(jìn)行判斷;檢測(cè)信號(hào)頻率突變邊緣。
(2)檢測(cè)LoRa 信號(hào)的前導(dǎo):通過2.2 節(jié)的解調(diào)算法,持續(xù)解調(diào)信號(hào)直到出現(xiàn)3 個(gè)連續(xù)相同符號(hào),并記錄解調(diào)值K,也就是整個(gè)符號(hào)的解調(diào)向后偏移了K 個(gè)點(diǎn)。
(3)檢測(cè)兩個(gè)同步字和兩個(gè)Downchirp 信號(hào):由于在LoRa 數(shù)據(jù)包的Payload 部分,也可能存在連續(xù)3 個(gè)及以的相同的符號(hào),因此在步驟(2)可能檢測(cè)到的是LoRa 數(shù)據(jù)包的前導(dǎo)碼或Payload 部分,前移K 個(gè)點(diǎn),再繼續(xù)持續(xù)解調(diào)信號(hào)直到出現(xiàn)5 個(gè)連續(xù)符號(hào)為0、同步字1、同步字2,繼續(xù)解調(diào)使用Upchirp 信號(hào)進(jìn)行反解得兩個(gè)連續(xù)的0,只需要這個(gè)5 個(gè)符號(hào)中有4 個(gè)符號(hào)解調(diào)正確,則同步成功,進(jìn)入步驟(4)。若解調(diào)次數(shù)超過前導(dǎo)符號(hào)數(shù),則繼續(xù)執(zhí)行步驟(1)和步驟(2)。
(4)對(duì)同步信號(hào)向后偏移0.25 個(gè)Downchirp 信號(hào),得有效載荷Payload 部分。根據(jù)LoRa 調(diào)制配置的參數(shù),可以計(jì)算出Payload 及Payload CRC 的長度,得到其進(jìn)行編碼后的n 個(gè)符號(hào)。
將羅德儀表采集的空口數(shù)據(jù)直接經(jīng)過上文提出同步算法,得Payload 部分的數(shù)據(jù)模值圖及對(duì)應(yīng)數(shù)據(jù)的LoRa解調(diào)數(shù)據(jù)的時(shí)頻圖如圖5 所示。根據(jù)配置的參數(shù),計(jì)算得Payload 部分為1 536 個(gè)采樣點(diǎn)12 個(gè)符號(hào)。
對(duì)從羅德儀表獲取的LoRa 空口數(shù)據(jù)經(jīng)過去前導(dǎo)后,經(jīng)過使用上文提到的LoRa 解調(diào)算法分別對(duì)剩余的Payload 部分進(jìn)行解調(diào),得12 個(gè)符號(hào)為:96、124、0、0、0、0、0、0、28、92、99、96。從圖5 可以直接觀察到,時(shí)頻圖(b)的每個(gè)符號(hào)內(nèi)部頻率變化和模值圖(a)的凹陷以及波動(dòng)的地方是一一對(duì)應(yīng),說明了解調(diào)結(jié)果是的正確,所以文獻(xiàn)中提供的解調(diào)算法沒有問題。
圖5 Payload 數(shù)據(jù)模值圖及對(duì)應(yīng)的時(shí)頻圖
在羅德儀表LoRa 調(diào)制參數(shù)界面中,Payload 部分只配置4 字節(jié)32 bit 數(shù)據(jù),而實(shí)際上解出了84 bit,明顯是對(duì)32 bit 數(shù)據(jù)填充了52 bit,從而對(duì)傳輸數(shù)據(jù)達(dá)到了提升魯棒性和加密的目的。在上文中,選擇從羅德儀表采集的LoRa 空口數(shù)據(jù),主要有兩個(gè)原因:一個(gè)是由于羅德儀表的是官方提供的LoRa 仿真儀器;另一個(gè)是由于采集數(shù)據(jù)的噪聲比較小,數(shù)據(jù)部分和噪聲部分區(qū)分明顯,數(shù)據(jù)部分的時(shí)域模值波形的特征明顯,容易觀察解調(diào)的正誤。
在文獻(xiàn)[7]中,對(duì)LoRa 調(diào)制的7 種擴(kuò)頻因子分別在高斯信道和多徑衰落下進(jìn)行MATLAB 性能仿真,可以發(fā)現(xiàn)在誤碼率小于0.01 時(shí),擴(kuò)頻因子增加1,抗噪聲性能可以帶來3 dB 的增益。為了觀察LoRa 調(diào)制前向糾錯(cuò)編碼位數(shù)對(duì)通信鏈路帶來的增益,在下文中,對(duì)LoRa 調(diào)制的不同糾錯(cuò)碼率在在高斯信道進(jìn)行了MATLAB 性能仿真。
由于官方?jīng)]有給出確切的前向糾錯(cuò)編碼方式,而漢明碼糾錯(cuò)碼要求2r-1≥n,r 是監(jiān)督位數(shù),n 是編碼后的bit數(shù)。若采用漢明碼,其中糾錯(cuò)編碼碼率為4/4、4/5、4/6就不滿足要求,因此在這里采用循環(huán)糾錯(cuò)編碼。在圖6 性能仿真中給出了LoRa 擴(kuò)頻因子為7、基帶帶寬為500 Hz調(diào)制的5 種碼率的仿真曲線。
圖6 LoRa 的SF7 不同碼率誤碼性能曲線圖
由圖6 可知,在LoRa 的前向糾錯(cuò)編碼中,并不是循環(huán)糾錯(cuò)碼位數(shù)越多對(duì)系統(tǒng)性能提升越大;在誤碼率小于0.01 時(shí),碼率為4/5、4/6 或4/8,抗噪聲性能大約增加了1 dB;碼率為4/7,抗噪聲性能大約增加了2 dB。
在LoRa 調(diào)制技術(shù)中,除了添加糾錯(cuò)編碼、增大擴(kuò)頻因子,還可以配置Payload 部分低速率優(yōu)化來提高信息傳輸?shù)聂敯粜?。在?shí)際應(yīng)用中,LoRa 技術(shù)傳輸對(duì)設(shè)備進(jìn)行控制命令時(shí),只要傳輸幾個(gè)比特信息,由于LoRa 傳輸是以符號(hào)為單位進(jìn)行傳輸?shù)?,而且有預(yù)留空間,至少可以傳輸幾個(gè)字節(jié)的信息,因此在保證發(fā)送數(shù)據(jù)能同步的基礎(chǔ)上,無需通過增加發(fā)送數(shù)據(jù)包的長度來增加傳輸信息之間的碼距,進(jìn)而提高信息傳輸?shù)目煽啃?,如配置幾個(gè)比特表示1 bit 信息。
本文根據(jù)羅德儀表的LoRa 參數(shù)界面配置接口結(jié)合文獻(xiàn)提供通信鏈路流程,對(duì)LoRa 物理層進(jìn)行了詳細(xì)說明;通過羅德儀表生成的LoRa 空口數(shù)據(jù),對(duì)文獻(xiàn)提到的LoRa 調(diào)制解調(diào)算法進(jìn)行驗(yàn)證,完成了對(duì)該數(shù)據(jù)的解調(diào);根據(jù)LoRa 數(shù)據(jù)包前導(dǎo)的特點(diǎn),提出了一種高效的LoRa空口數(shù)據(jù)的同步算法;最后,通過LoRa 調(diào)制擴(kuò)頻因子為7 時(shí)的5 種碼率的仿真,說明添加1 位糾錯(cuò)碼的效果最佳。