金鑫,張樂平,羅鴻軒,胡珊珊
(南方電網科學研究院有限責任公司,廣州 510080)
波通信因其無需布線,信道免維護等優勢,成為用電信息采集領域首選的本地通信方案,在已經建設的用電信息采集項目中占據了主導地位。隨著多年的建設與運維,載波通信的缺陷也逐步突顯出來。主要表現為窄帶載波通信整體技術落后,通信協議規范混亂封閉。直接導致通信速率低,設備在線率低,難以支撐對通信速率和實時性要求高的實時費控、負荷管理等新興業務需求。另外由于通信協議的私有化,導致通信設備廠家利益固化,嚴重阻礙了新技術在載波通信領域的運用。為了打破現有利益格局,提升用電信息采集領域的整體技術水準,近期國內相關機構加快了對低壓電力線寬帶載波通信技術的研究步伐和市場布局,發表了相關技術標準[1-2]。標準規定了低壓電力線寬帶載波通信系統由物理層、MAC層和網絡層構成,每一層都制定了嚴密詳細的技術標準與通信規范。在物理層,對來自MAC層的幀控制數據和載荷數據采用了不同的信道編碼技術。如圖1所示,發射端物理層對幀控制數據完成Turbo編碼、信道交織及分集拷貝等功能,對載荷數據完成擾碼、Turbo編碼、信道交織和ROBO交織功能。經過信道編碼后的碼字流被送入星座映射器、IFFT模塊、循環前綴和加窗模塊、正交調制模塊和前導插入模塊等,并被耦合到低壓電力線上。
隨著寬帶載波通信規范的建立發布,寬帶芯片廠家、通信模塊廠家以及寬帶載波通信規范發布督導部門都要面臨對標檢測的問題。窄帶載波由于技術標準、通信協議缺乏統一的標準規范,傳統的載波檢測方案側重于載波通信收發性能的檢測,設計了發射頻率、功率、頻率偏移、接收靈敏度等技術指標。忽略了載波通信模塊交互協議、組網能力等指標的考核。測試中使用被測載波通信模塊作為測試用通信信號的發起方,既是被測對象又是測試設備,使得測試結論缺乏公正性,而且難以真實反映被測對象的技術水準。
圖1 系統模型
為了開展獨立、客觀的寬帶載波評測,需要進行寬帶載波標準信號與協議生成設備的研發。寬帶載波標準信號由其物理層實現架構決定的,鏈路層、應用層報文的檢測同樣需要物理層電路最終實現,進行寬帶載波物理層實現研究顯得尤為重要。文中對低壓電力線寬帶載波通信系統發射端物理層技術進行了深入研究,參考相關技術規范,詳細制定了物理層各模塊的實現方案,并在FPGA上進行了驗證。文中的其余部分,將對物理層各模塊的結構、工作原理和主要模塊的FPGA實現方案進行詳細介紹。
在寬帶載波通信模塊的發射端,MAC層對幀控制數據、載荷數據分開處理,生成的協議數據單元被送往物理層。幀控制數據完成Turbo編碼、信道交織和分集拷貝,載荷數據完成白化、Turbo編碼、信道交織和ROBO交織,之后都被輸入星座映射模塊,輸出的復信號進行串并變換后,被送入IFFT模塊,轉換成時域信號,然后添加循環前綴,并進行加窗處理,最終生成物理層突發幀進入模擬前端,該突發幀被稱為協議分組數據單元PPDU。
PPDU突發幀的格式如圖2所示,它由前導符號、幀控制符號和載荷數據符號構成。
圖2 物理幀結構
來自MAC層的幀控制信息和載荷數據經過白化、Turbo編碼、交織等處理后,被送入串并變換和星座映射,輸出的復信號按規定的規則被映射到子載波上,形成1 024個頻域數據,經過IFFT變換后,插入循環前綴并進行加窗處理后,形成OFDM符號,如圖3所示。循環前綴由滾降間隔、保護間隔組成。
圖3 OFDM符號結構
針對發送端產生前導序列符號、控制符號和載荷數據符號所需要的各個處理模塊,下文將作詳細介紹。
數字信號序列中出現長0或長1序列時,容易使信號的同步信息丟失、造成錯碼,白化是一種不增加數據冗余而擾亂信號、改變數字信號的統計特性、使其近似于白噪聲統計特性的一種信號編碼技術[3]。白化序列用如下公式(1)基于m序列發生器的線性移位寄存器產生:
S(x)=x10+x3+1
(1)
移位寄存器的各初始值為1,每輸入一個數據,移位寄存器左移一位,其運算過程可用圖4來說明。
圖4 數據白化實現過程
Turbo編碼器由分量編碼器、交織器、刪余器和復用器構成,如圖5所示。
圖5 Turbo編碼器的組成
本文中的Turbo編碼采用二次迭代結構,把第一次迭代結束對應的末狀態作為第二次迭代的初始狀態,輸入數據進行第二次迭代編碼。經過兩輪編碼后的輸出數據,與經典的一輪編碼輸出相比,具有更好的糾錯性能。同時,為了降低編碼造成的冗余,將編碼器輸出的校驗信息位經過打孔刪除。各個子模塊的編碼過程詳細介紹如下。
2.2.1 分量編碼器模塊
分量編碼器BMQ1和BMQ2使用8狀態編碼器,其架構圖如圖6所示,輸入數據流的前兩個比特位分別映射到u1、u2,類似2比特的串并編碼,在一次編碼中,每一對比特位對應輸出一個校驗位。
圖6 分量編碼器架構
每個成員分量編碼器具體編碼過程如下:
第1步:初始化寄存器的初始狀態R0=[R01,R02,R03] =[0,0,0];
第2步:依次輸入信息位(被送入編碼器2的是交織后的數據),直到數據輸入結束,編碼末狀態記為RN=[RN1,RN2,RN3];
物理塊字節數為520和16時:
物理塊字節數為136時:
2.2.2 Turbo交織模塊
將原始未打亂順序的數據經過Turbo交織器后輸入編碼器2。每2比特為一組來進行Turbo交織,不同的交織模式參數不同,具體交織參數由表1定義,包括三種情況。
表1 Turbo交織的參數
Turbo交織的地址映射定義如下列公式(2):
A(x)=mod((S(mod(x,N)+1)-(fix((x)/N))×N+L),L);
(2)
S(·)是一個查找表,用FPGA實現時可以存儲在FPGA的ROM中,方便讀取。
2.2.3 刪余模塊
刪余模塊根據所需編碼效率,對Turbo編碼后的數據比特經過打孔模塊,即做相應的打孔處理來提升編碼效率。
只對校驗位做打孔處理,信息位不做打孔處理,對分量編碼器BMQ1、BMQ2輸出的奇偶校驗位進行打孔,去除多余數據,并且不改變其原始輸出順序存放到緩存中,從而提升編碼效率。打孔模式支持兩種模式, 1/2碼率模式,即校驗位全部輸出,高冗余,強糾錯;16/18模式,即16位信息位+2位校驗位,降低冗余度,適合在信道環境良好的條件,提高傳輸效率。
分集拷貝技術用在幀控制符號中,用它來對抗頻率選擇性衰落信道有較好的效果。由于幀控制信息中包含載荷數據的調制信息、拷貝次數、編碼信息等重要信息,用分集拷貝技術可以加強傳輸的可靠性。
分集拷貝規定了怎樣將256比特的輸入數據按照分集拷貝的規定將其拷貝到對應的頻域子載波上。假設選用頻段0中的子載波編號為80到490的411個子載波來傳輸幀控制數據,共有四個幀控制符號,其中采用的調制方式是QPSK。I路數據的第一個符號的幀控制是直接按照原始輸入順序將輸入數據拷貝到所相應的子載波上;Q路數據的第一個符號則是將原始數據加上一個128的偏置,再拷貝到所對應的子載波上去。換句話說,便是那些按照順序在相應有效子載波上填充的比特的編號是(c+128) mod 256, 其中,0到255是屬于c值的取值。對于I路的第二個符號的幀控制數據,相較于第一個符號的幀控制上I路的128的偏置,在此處的偏置是192,也就是輸入的256比特會相應的加上192的偏置,然后再拷貝到所匹配的載波上;其Q路輸入的256比特加上264的偏置,拷貝到對應的載波上。對于第三個符號的幀控制,I路和Q路加的偏置分別是160、32,對第四個符號的幀控制,I路和Q路加的偏置分別為96和224。
2.4.1 交織原理
ROBO交織是一種頻率分集技術,它將同一路信號調制在不同的子載波上,在接收端將不同子載波上的同一信號進行合并處理,從信號冗余帶來信號的處理增益,可以提高抗信道衰落能力ROBO交織原理如圖7所示。
采用類似“循環前綴”的ROBO交織方式,將載荷數據進行擴充,擴充的方式與拷貝次數、碼率、調制方式相關,具有分集能力與魯棒性。傳統的ROBO交織技術,根據通信條件與通信距離選擇適合的ROBO交織模式;本文的ROBO交織模式,用循環移位參數Cyclicshift和倒置變量NumberBitsShift來選擇,其取值與所想達到的拷貝次數與數據調制方式有關,避免了同一數據信息在同一個子信道上發送的情況,避免了傳統ROBO交織方式循環移位參數不變造成性能較差的缺點,增強了載荷數據的抗信道衰落能力。對于系統的不穩定具有更強的魯棒性。
圖7 ROBO交織原理
2.4.2 ROBO交織實現過程
首先根據數據信道類型,選擇ROBO交織模式和拷貝次數,然后對輸入復信號進行拷貝和OFDM調制。最后一個 OFDM 符號,如果子載波不滿,還需要進行填充。
在ROBO 交織算法中,定義了循環移位參數Cyclicshift和倒置變量NumberBitsShift,其大小由最后一個 OFDM 符號中的數據比特數與每段比特數的倍數大小來決定。ROBO交織實現流程如圖8所示。
具體步驟如下:
步驟1:根據實際要求選擇交織模式;
步驟2:計算OFDM符號數:根據實際可用載波數一個符號所含比特數,BitsPerSymbol=BPC×Ncarrier_robo,計算所需OFDM符號個數Nofdm=Nraw/BitsPerSymbol,Nraw為前面信道交織輸出的數據,即進入ROBO交織的數據;
圖8 ROBO交織流程圖
步驟3:將一個OFDM符號分成若干個Segment, 每個Segment所含比特數,BitsInSegment與調制方式有關,BitsInSegment=BPC×CarriersInsegment,CarriersInSegment為每個Segment所含的子載波數,最后一個OFDM符號如果不完整,ROBO交織通過補充數據使載波充分利用;
步驟4:當最后一個 OFDM 符號的有用子載波不滿時,對一部分數據Npad進行拷貝填充,使最后一個 OFDM 符號被填滿;
步驟5:計算循環移位參數Cyclicshift,該參數與拷貝數據時需要復制的比特序列長度相關,由于每次拷貝的數據內容都不相同,避免了同一數據信息在同一個子信道上發送的情況;
步驟6:進行ROBO映射,依據Ncopies和移位參數Cyclicshift,計算交織映射輸出。
由于有用子載波數比較少,OFDM 符號的帶外輻射功率較大,為了使帶外功率譜密度下降得更快,對 OFDM 符號采用了加窗技術。時域相乘等效于頻域卷積。窗函數定義如公式(3)所示。
wrise[n]=
(3)
具體重疊圖如圖9所示。
圖9 加窗示意圖
交織器是Turbo編碼的核心,此處主要分析其實現。交織器可以將突發長序列錯誤離散化,降低因突發錯誤帶來的影響。實現原理是:通過按照一定的規律打亂輸入數據的輸入順序,可以減少序列中連續相同碼子之間的相關性,也降低誤碼率,該部分也稱為地址映射模塊[4]。具體硬件實現為:將輸入數據復制成相同的兩份,第一份直接經過 RSC 編碼器 1,輸出校驗位p,第二分數據先經過交織器打亂順序后再輸入RSC 編碼器 2,將校驗位q輸出。交織器結構圖如下圖10所示。
圖10 交織塊產生結構圖
因為交織部分是整個數據的順序打亂所以需要等待輸入數據完全輸入結束方可進行,此時應該利用存儲單元將輸入的碼塊存儲到存儲起來,具體由兩塊雙端口 ram 組成,寫地址發生器則用于控制輸入數據的寫入,輸入的數據連續寫入到兩個RAM中,并且FIFO 中記錄此塊數據的長度,塊長度的值傳入讀地址發生器,按照前面所述Turbo 編碼的內交織規則產生交織的樣式,讀地址發生器根據該此樣式和前文所述的地址映射規則計算出交織序列的交織地址,并將該地址作為存儲單元的讀地址,從存儲器中讀取數據并最終生成交織后的序列。
其中讀地址發生器的設計是核心,一種方法是根據映射規則在FPGA實時計算,這樣會造成時間成本與計算成本的增加,在程序邏輯比較復雜時FPGA進行時序綜合時會引起時延差,時鐘頻率很高時會引起程序工作不穩定;另一種方法是利用MATLAB平臺,根據映射規則算出交織地址,將地址存儲在ROM表中,通過順序讀表實現地址交織[5-6]。由于MATLAB平臺計算簡單,省去了大段的程序設計,使整個設計結構簡單,運算快速,并且不會造成系統不穩定,缺點是消耗了一定的存儲資源。方案中,考慮到存儲資源足夠用,因此采用后一個方案,取得了比較好的效果。交織器的具體實現如圖11所示。
圖11 改進后編碼實現結構
其中,使用一個ROM來完成real_addr generator的實現。在此碼塊中,ce_block為有效輸入信號,此信號是被用來控制寫地址發生器的。雙口RAM的寫地址write_addr便是通過該控制地址發生器來產生的。在這里,雙口ram的寫入方式是根據連續輸入的地址把輸入的碼塊rx_block寫入該ram中的。此外,通過塊長度信號rx_block_size 和其它的有效信號來控制ROM、去選擇相應的讀地址。這些地址被分為非交織的讀地址rd_addr_normal 以及內交織后的讀地址rd_addr_interleaver。兩個讀地址與讀有效信號rd_ce一起,被輸入到對應的雙口RAM中。同時,非交織碼塊block_normal和內交織后的碼塊 block_interleaver可以從兩個雙口RAM中讀取。
在編碼模塊中,輸入時鐘信號CLK的頻率為75 MHz。輸入數據依次被輸入存儲加擾模塊、Turbo編碼模塊、拷貝模塊或者ROBO交織模塊。其中存儲加擾的模塊存儲數據并接收控制模塊的控制信號;幀控制信號與載荷信號在編碼模塊的Turbo交織器中分別處理,先對幀控制信號編碼,之后根據控制信號對載荷數據編碼[7]。幀控制信號輸入拷貝模塊,載荷數據輸入ROBO模塊。
其中Turbo交織模塊分為兩部分,前面的ENC模塊處理Turbo分量編碼的功能,interleave的模塊實現交織與刪余功能。
OFDM調制中的IFFT模塊,在FPGA上實現時通過調用FPGA開發平臺上的IP核來完成。
IP核中內含的IFFT模塊中,主要配置參數有IFFT變換的長度N以及IP核內部使用的模式,不同模式配置占用的FPGA資源也不同[8]。我們對不同配置模式下的資源占用情況進行了對比,為模式選擇提供依據。
IFFT模塊中,配置模式下不同,占用的邏輯資源和存儲資源也有很大不同。這些模式主要有突發模式(Burst)、緩存突發模式(Buffered Burst)、流模式(Streaming)、可變流模式(Variable Streaming)。其中可變流模式用于在線改變IFFT的變化點數大小,在本文中OFDM的的IFFT的變換點數為固定的。因此,可變流模式在本文不加以比較[9]。我們對其他模式下的資源占用情況進行了仿真,如圖12所示。
圖12 IFFT不同模式變換點數下邏輯資源
從圖12中可知,突發模式(Burst)使用的存儲資源以及邏輯資源最少,為此,本文選擇了突發模式下的IFFT模塊,IFFT的節數越高,節省的FPGA資源越明顯。
我們對實現的編碼模塊和OFDM符號模塊在Modesim上進行了時序仿真,如圖13所示,模塊消耗的FPGA資源見圖14所示,選擇的FPGA芯片是Altera公司的CycLone III系列的EP3C80,占用的邏輯單元約20%,存儲單元62%,如果將實時調測工具SignalTap占用的開銷刪除,存儲單元的開銷將降為50%以下。
圖13 編碼模塊和符號模塊的仿真圖
圖14 系統消耗的FPGA資源
主要致力于寬帶載波標準信號生成的研究,參考某電網公司的相關標準,依據該系統的功能、參數和設計目標,設計了系統物理層模塊化結構和信號產生流程,在高速FPGA/ADC/DAC硬件平臺,完成了Turbo編碼、交織、OFDM調制、加窗和幀成形等功能模塊,詳細介紹了主要模塊實現時的技術細節,實現了低壓電力線寬帶載波通信物理層發射端的功能。為寬帶載波標準信號生成打下了堅實的基礎,為獨立、客觀的開展寬帶載波通信的檢測提供了前提條件。