周 宇,張 峰,劉 艷
(西安工業(yè)大學(xué) 電子信息工程學(xué)院,陜西 西安 710021)
電力線通信(Power Line Commun-ication,PLC) 是現(xiàn)代智能電網(wǎng)中的一種重要通信方式,在智能家居、能源控制和智能抄表等場合有著廣泛應(yīng)用[1]。
G3-PLC 技術(shù)是基于OFDM 技術(shù)的高速窄帶電力線載波技術(shù)體系。OFDM 因具有抗多徑干擾和頻率選擇性等特點(diǎn),非常適合在電力線載波通信系統(tǒng)中使用。但是,由于電力線信道特性惡劣,噪聲顯著且具有時變性[2],通信質(zhì)量易受信號衰減、阻抗匹配等多種因素的影響。如何提高電力線通信的可靠性,一直是研究的熱點(diǎn)[3]。
文獻(xiàn)[4]表明準(zhǔn)確的符號定時同步是實現(xiàn)OFDM 系統(tǒng)數(shù)據(jù)可靠傳輸?shù)年P(guān)鍵,目前主要的延時自相關(guān)同步方法具有一段峰值平臺,不利于準(zhǔn)確的符號定時同步。文獻(xiàn)[5]指出,相比PRIME 標(biāo)準(zhǔn),G3-PLC 標(biāo)準(zhǔn)抗干擾性良好,但速率相對較低,結(jié)構(gòu)復(fù)雜,不利于硬件實現(xiàn)。
針對上述問題,本文在對G3-PLC 物理層信號傳輸模型、信號處理算法及信號的可靠傳輸進(jìn)行優(yōu)化研究的基礎(chǔ)上,以ARM 處理器為核心,實現(xiàn)基于G3 標(biāo)準(zhǔn)的電力線載波通信系統(tǒng),極大地改善了系統(tǒng)效率和數(shù)據(jù)傳輸?shù)目煽啃浴?/p>
G3-PLC 系統(tǒng)中核心的PLC 信號處理單元涉及的算法較多,計算量大,且系統(tǒng)對實時性要求較高。本文選擇意法半導(dǎo)體的ARM 處理器STM32F4 構(gòu)建PLC 信號處理單元。該處理器主頻400 MHz,片上資源豐富,能夠滿足PLC 信號處理單元對處理速度、控制、參數(shù)配置及通信接口等各方面的開發(fā)需求。信號傳輸模型的硬件平臺方案,如圖1 所示。
圖1 系統(tǒng)方案
實現(xiàn)方案具體工作原理如下。
數(shù)據(jù)發(fā)送:終端設(shè)備A 將待傳輸?shù)臄?shù)據(jù)通過UART 傳送至PLC 信號處理單元,經(jīng)過各種編碼處理及OFDM 調(diào)制后形成多載波信號,再進(jìn)行D/A 轉(zhuǎn)換將待傳輸模擬信號由耦合單元耦合至電力線發(fā)送。
數(shù)據(jù)接收:電力線上傳輸?shù)男盘栍神詈蠁卧邮?,?jīng)自動增益控制模塊處理成為PLC 信號處理單元要求的幅度范圍,經(jīng)A/D 轉(zhuǎn)換由PLC 信號處理單元進(jìn)行存儲、OFDM 解調(diào)及譯碼處理形成接收數(shù)據(jù),通過UART 傳送至通信終端設(shè)備B。
OFDM 通過FFT 將寬帶信道分成許多正交的子信道,將連續(xù)的高速數(shù)據(jù)流轉(zhuǎn)變?yōu)樵S多平行的低速數(shù)據(jù)流并調(diào)制在不同的子載波上[6]。
在OFDM 系統(tǒng)中,若電力線信道被分為N個具有相互正交特性的子信道傳輸信號,發(fā)送端的N個信號用S=[s0,s1,…,sN]T表示,則每個OFDM 符號由N個調(diào)制后的子載波合成。OFDM 調(diào)制解調(diào)原理可以用數(shù)學(xué)公式表示為:
式中,0 ≤t≤T,T表示OFDM 符號持續(xù)時間;si表示第i個子信道中的待傳輸信息;fi表示第i個信道對應(yīng)的載波頻率。
IFFT/FFT 算法的實現(xiàn)與優(yōu)化在OFDM 系統(tǒng)中至關(guān)重要。針對浮點(diǎn)FFT 運(yùn)算量大以及浮點(diǎn)單片機(jī)存在功耗大、價格高、計算效率低等問題,采用浮點(diǎn)格式與Q0~Q31定點(diǎn)格式的程序轉(zhuǎn)換,提高系統(tǒng)運(yùn)算效率。浮點(diǎn)轉(zhuǎn)定點(diǎn)可表示為:
其中x表示浮點(diǎn)數(shù),Xk表示轉(zhuǎn)換后的定點(diǎn)數(shù),k為移位次數(shù)。由于ARM 中移位操作可以作為四則運(yùn)算指令的一部分不占用額外的指令周期,可大大提高格式轉(zhuǎn)換效率。本文通過ARM 外設(shè)定時器測試FFT 運(yùn)行時間,結(jié)果表明,浮點(diǎn)FFT 運(yùn)行時間為8.80 ms,而定點(diǎn)FFT 僅為0.47 ms,運(yùn)算時間大幅減少。FFT 效率的提高加快了OFDM 符號輸出的頻率,提高了系統(tǒng)通信速率。
傳輸數(shù)據(jù)經(jīng)多載波合成得到的信號一般為復(fù)值信號。為保證OFDM 調(diào)制信號為實信號,避免接收端的相關(guān)檢測,需對幀結(jié)構(gòu)進(jìn)行合理設(shè)計。
由于任一復(fù)數(shù)序列可進(jìn)行虛實分解,即:
式(5)中:
對式(6)和式(7)分別進(jìn)行DFT 變換,得:
由上述可知,為了使基帶OFDM 調(diào)制信號實數(shù)化即需要使Xop(k)為零,對應(yīng)的X(k)=X*(N-k),即將IFFT 之前的N/2 個信息數(shù)據(jù)與該N/2 個信息數(shù)據(jù)的共軛倒序信息數(shù)據(jù)共同組成長度為N的具有共軛對稱特性的信息數(shù)據(jù)。
結(jié)合推導(dǎo),設(shè)計的OFDM 符號結(jié)構(gòu)如圖2 所示。
圖2 OFDM 符號幀結(jié)構(gòu)
圖2 中一個OFDM 符號結(jié)構(gòu)包含N個子載波,m個有效子載波,整個OFDM 符號幀關(guān)于中心對稱。在進(jìn)行N點(diǎn)IFFT 變換時,可保證OFDM 信號為實信號,減少系統(tǒng)運(yùn)算量。
符號同步的目的是使接收端得到與發(fā)送端相同周期的符號序列。為了使OFDM 系統(tǒng)中數(shù)據(jù)可靠傳輸,必須解決惡劣電力環(huán)境下的數(shù)據(jù)同步問題。
系統(tǒng)中,發(fā)送端在每個符號前加一小段高電平信號,接收端通過高電平檢測判斷OFDM 符號的位置。發(fā)送端D/A 模塊由定時器中斷控制轉(zhuǎn)換頻率,接收端由定時器觸發(fā)A/D 轉(zhuǎn)換,并通過DMA 完成A/D 模塊與存儲器的數(shù)據(jù)傳輸,將DMA 配置為每傳輸N個數(shù)據(jù)產(chǎn)生一次傳輸完成中斷。由于系統(tǒng)中每個OFDM 符號包含N個子載波且?guī)б恍《畏逯惦娖?,所以最多兩次DMA 傳輸可得到一個完整的OFDM 符號。
在程序中通過狀態(tài)轉(zhuǎn)移的方法實現(xiàn)符號同步。設(shè)計的狀態(tài)轉(zhuǎn)移方案如圖3 所示。
圖3 狀態(tài)轉(zhuǎn)移方案
S0狀態(tài):待DMA 接收完成一組數(shù)據(jù)后,將C置1,然后判斷DMA 是否為第一次傳輸數(shù)據(jù);若是,則進(jìn)狀態(tài)S1,否則進(jìn)入狀態(tài)S2。
S1狀態(tài):對DMA 傳輸過來的數(shù)據(jù)進(jìn)行閾值判斷,尋找FFT 窗的起始位置W;若未找到窗的起始位置,W置-1,進(jìn)入S0狀態(tài);若W>0,則進(jìn)入狀態(tài)S2;W=0,則進(jìn)入S3。
S2狀態(tài):若是DMA 第一次傳輸?shù)臄?shù)據(jù),將數(shù)據(jù)的W~N-1 位賦值給數(shù)組FFT[]的0 ~N-W-1位,C置0,進(jìn)入S0狀態(tài)。若是第二次DMA 數(shù)據(jù),則將DMA 傳輸數(shù)據(jù)的0 ~W-1 位的值賦給數(shù)組FFT[],并將C置0,T 置1,進(jìn)入狀態(tài)S3。
S3狀態(tài):對fft[]中的數(shù)據(jù)進(jìn)行解調(diào),將T和F置0,進(jìn)入狀態(tài)S0。
狀態(tài)轉(zhuǎn)移變量描述,如表1 所示。
表1 狀態(tài)轉(zhuǎn)移變量描述
3.2.1 利用RS 編碼糾正系統(tǒng)突發(fā)錯誤
RS 編碼(Reed-Solomon Codes,RS)是一種m進(jìn)制BCH 碼。實際應(yīng)用時,m被設(shè)置為2q,即每個碼元由q個二進(jìn)制比特序列組成。RS 碼具有很強(qiáng)的糾錯能力,編碼效率高,適合糾正突發(fā)錯誤。編碼器如圖4 所示。
圖4 編碼器結(jié)構(gòu)
將k個碼元信息分兩路輸入編碼器中,在完成除法功能后,把余式的系數(shù)保留在移位寄存器中,即保存所有生成的監(jiān)督碼元。
將得到的監(jiān)督碼元按順序跟在原始輸入信息碼元后面組成RS(n,k)碼。系統(tǒng)接收端利用BM 迭代算法進(jìn)行RS 譯碼,運(yùn)算復(fù)雜度較低,可滿足通信實時性。
3.2.2 利用卷積編碼消除系統(tǒng)錯誤
G3-PLC 系統(tǒng)權(quán)衡了卷積編碼的編碼效率與約束度兩種因素,最終選用(2,1,7)卷積編碼。編碼電路中采用6 位移位寄存器,對應(yīng)的編碼效率為1/2,約束度N=7。卷積編碼器如圖5 表示。
圖5 卷積碼編碼器
在接收端采用維特比譯碼算法,維特比算法利用卷積碼的網(wǎng)格結(jié)構(gòu),大大降低了譯碼復(fù)雜度,具有高效性、實時性和準(zhǔn)確性。
3.2.3 利用時頻聯(lián)合分段重構(gòu)提高系統(tǒng)抗擾性
為了同時在時頻二維空間中增強(qiáng)系統(tǒng)的抗干擾性,對信號進(jìn)行時頻聯(lián)合分段重構(gòu)。對待編碼信息先按照頻域分段重構(gòu)算法進(jìn)行編碼,經(jīng)IFFT 調(diào)制后再進(jìn)行時域分段重構(gòu)[7]。
分段重構(gòu)算法原理如下。有用的OFDM 信號為E,經(jīng)分段重構(gòu)編碼后的信息用S(m,l)表示,分段重構(gòu)編碼原理可用式(10)描述:
式中,m表示子載波的個數(shù),n1表示分段重構(gòu)次數(shù),l表示OFDM 信息的序號,u為整型變量且有u=0,1,2,3,…,n1-1。
發(fā)送端信號進(jìn)行時頻聯(lián)合分段重構(gòu)后,接收端利用最大似然譯碼方法,依據(jù)信息所占的比率判斷發(fā)送信息,能夠極大提高譯碼準(zhǔn)確性。
維納濾波(Wiener Filtering)是一種基于最小均方誤差準(zhǔn)則對平穩(wěn)過程的最優(yōu)估計器,結(jié)構(gòu)如圖6 所示。
圖6 維納濾波結(jié)構(gòu)
s(n)是原始信號,w(n)是噪聲信號,則輸入信號為:
輸出信號可表示為:
根據(jù)最小均方誤差準(zhǔn)則,最佳濾波器的加權(quán)系數(shù)h(k)應(yīng)滿足維納-霍夫方程:
其中,xxφ表示x(n)的自相關(guān)序列,sxφ表示x(n)和s(n)的互相關(guān)序列。
維納濾波要求信號是平穩(wěn)的,直接運(yùn)用維納濾波效果較差。因此,利用循環(huán)維納濾波對OFDM 信號進(jìn)行處理,以便在較低階次時依然有較好的濾波效果[8]。
考慮到維納-霍夫方程的求解運(yùn)算量較大,為了減少運(yùn)算量,采用萊文森遞推算法求式(10)的最優(yōu)解,避免了矩陣求逆運(yùn)算。
在電力線系統(tǒng)中采用循環(huán)維納濾波器的算法過程如下。
(1)對待濾波信號x(n)進(jìn)行分段處理,每一小段待處理信號的長度大于一個完整的OFDM 信號的長度,形成新的待濾波信號x(l,k):
其中,k表示第k段信號,l表示分段長度。
(2)若分段長度為N,對待濾波信號x(l,1)進(jìn)行自相關(guān):
對待濾波信號x(l,1)和期望信號s(l,1)的互相 關(guān)為:
根據(jù)維納霍夫方程得出第1 段的系統(tǒng)函數(shù)h(n,1),計算y(l,1):
同理,對待濾波信號x(l,k),k=2,3,…,m的自相 關(guān)為:
對待濾波信號x(l,k)和y(l,k-1)的互相關(guān)為:
根據(jù)維納霍夫方程得出第k段的系統(tǒng)函數(shù)h(n,k),計算y(l,k):
(3)信號重組,將y(l,k)依次連接,組成濾波輸出結(jié)果y(n)。
4.1 系統(tǒng)可靠性測試
為了驗證通信系統(tǒng)性能,利用MATLAB 對系統(tǒng)進(jìn)行仿真,系統(tǒng)參數(shù)按照G3 標(biāo)準(zhǔn)進(jìn)行設(shè)置。時頻聯(lián)合分段次數(shù)均為4 次,循環(huán)維納濾波階次為60,在實測電力線信道環(huán)境下對每個信噪比進(jìn)行800 幀數(shù)據(jù)測試,多次實驗得到誤碼率曲線如圖7 所示。
圖7 系統(tǒng)誤碼率
由圖7 分析可知:通信系統(tǒng)受實際的電力線噪聲干擾時,信噪比從-16 dB 開始誤碼率下降明顯,在信噪比為-11 dB 時誤碼率可達(dá)10-4,表明設(shè)計的通信系統(tǒng)可靠性高,可以滿足一般通信需求。
系統(tǒng)測試方案如圖8 所示,采用兩臺PC 機(jī)作為系統(tǒng)的通信終端,通過UART 和ARM 發(fā)送單元及接收單元通信。按照G3-PLC 標(biāo)準(zhǔn)進(jìn)行參數(shù)設(shè)置,最后采用電力線作為通信測試信道。
通信終端A 通過串口助手連續(xù)發(fā)送由0 和1 組成的數(shù)據(jù),由ARM 發(fā)射機(jī)進(jìn)行編碼和調(diào)制后發(fā)送到ARM 接收機(jī)。接收機(jī)對接收到的數(shù)據(jù)進(jìn)行濾波、解調(diào)和解碼,并將解碼后的數(shù)據(jù)顯示到串口助手。通過對比發(fā)現(xiàn),系統(tǒng)收發(fā)數(shù)據(jù)相同且保持同步。系統(tǒng)通信速率可達(dá)100 kb/s,驗證了設(shè)計的通信系統(tǒng)的合理性。
圖8 系統(tǒng)測試方案
論文在高性能、低功耗的ARM 上實現(xiàn)G3-PLC通信系統(tǒng),成功進(jìn)行了數(shù)據(jù)發(fā)送和接收的系統(tǒng)驗證,結(jié)果表明:
(1)在糾錯編碼的基礎(chǔ)上,將循環(huán)維納濾波算法和時頻聯(lián)合分段重構(gòu)編碼引入G3-PLC 系統(tǒng),大幅提高了系統(tǒng)抗干擾性能。
(2)狀態(tài)轉(zhuǎn)移方案的設(shè)計,解決了接收機(jī)數(shù)據(jù)狀態(tài)和進(jìn)度不同步的問題。
(3)對稱的幀結(jié)構(gòu)設(shè)計及定點(diǎn)化FFT,提高了系統(tǒng)運(yùn)行效率。