寬帶載波電力線通信協(xié)議中信道交織的FPGA實現(xiàn)
摘要 介紹了寬帶載波電力線通信協(xié)議中用到的信道交織。在此協(xié)議的基礎(chǔ)上,提出了基于FPGA信道交織模塊的設(shè)計方案。文中對信道交織的物理層實現(xiàn)方法進(jìn)行了介紹,該方法是通過ROM讀操作和RAM的讀寫操作來實現(xiàn)信道交織過程,較好地滿足了資源和時延的雙重要求。
本文引用地址:http://m.butianyuan.cn/article/201610/306124.htm隨著通信技術(shù)的不斷發(fā)展,出現(xiàn)了各種各樣的通信,一般有線通信和無線通信之分,有線通信一般是通過光纜電纜進(jìn)行的通信,而無線則是通過電磁波進(jìn)行空中信息傳遞的通信。雖然無線通信省缺了有形的傳輸媒介,通過空中接口進(jìn)行通信,但無線通信在傳輸容量和傳輸質(zhì)量都不如有限通信。電力線網(wǎng)絡(luò)覆蓋范圍廣,是其他網(wǎng)絡(luò)無法比擬的,而且是有限通信,通過電力線進(jìn)行通信則成為研究重點(diǎn),但電力線的初衷只是用來進(jìn)行電力傳輸,還沒有考慮到用電力線進(jìn)行信息的傳遞,所以原有電力線的鋪設(shè)導(dǎo)致電力線信道特性較差、干擾大、時變性差,不僅存在多徑時延問題,且存在頻率選擇性衰落的現(xiàn)象。隨著信號處理技術(shù)和信道調(diào)制技術(shù)的不斷發(fā)展,現(xiàn)在已經(jīng)能克服這種電力線信道差的問題。其中的關(guān)鍵技術(shù)就是正交頻分復(fù)用(Orthogonal Frequency Division Multiplexing,OFDM),這是一種復(fù)用技術(shù),同時是一種用多個相互正交的子載波來傳送信息的一種多載波調(diào)制技術(shù)。該技術(shù)可以解決電力線通信信道差的問題,大幅提高了平鋪利用率,并可實現(xiàn)電力線的有效通信。
圖1是基于FFT的OFDM實現(xiàn)框圖。發(fā)送端:從數(shù)據(jù)鏈路層接收數(shù)據(jù),經(jīng)過一系列的信號處理和變換,以O(shè)FDM調(diào)制方式通過將信號發(fā)送到電力線。接收端:從電力線檢測到信號后,做相應(yīng)的反向處理,最終將電力線上的載波信號還原為數(shù)據(jù),送到數(shù)據(jù)鏈路層。在電力線通信系統(tǒng)中采取信道交織技術(shù),在時間的維度上離散信道的突發(fā)差錯,從而使得有記憶信道可近似轉(zhuǎn)變?yōu)闊o記憶信道,使得設(shè)計的糾隨機(jī)差錯的糾錯碼同樣適用于多徑衰落信道。
1 信道交織的基本理論
信道交織的理論建立在香依理論的基礎(chǔ)上。Claude.E.Shannon提出:對于任意給定的有噪聲信道至少存在一種復(fù)雜的編碼方法,可使信道的傳輸速率無限逼近信道容量而同時保證傳輸差錯率達(dá)到任意小。而信道交織就是逼近這一相同理論的一種較好的實現(xiàn)方式。
信道交織的實質(zhì)是一種置亂器,僅通過改變信息的結(jié)構(gòu)來提高數(shù)據(jù)傳輸?shù)目煽啃?。信道交織是通過把連續(xù)的比特信息分散開以避免突發(fā)差錯事件。這樣就能把錯誤的范圍盡量控制在糾錯電路的能力范圍之內(nèi)。在接收端經(jīng)過糾錯譯碼電路后,將這種置亂順序信息還原就能最大限度的的正確譯碼出發(fā)送的信息。
按照信道交織技術(shù)對于數(shù)據(jù)次序的改變規(guī)律,信道交織碼可分為周期交織和偽隨機(jī)交織兩類。周期交織又分為分組交織和卷積交織,周期交織指交織規(guī)律有明確的周期性,序列內(nèi)數(shù)據(jù)之間的交織間隔恒定。所謂偽隨機(jī)交織,指交織不采用唯一的單個交織深度值而采用有變化的交織深度值,但變化仍有一定的規(guī)律。
2 電力線通信協(xié)議的信道交織實現(xiàn)
寬帶載波電力線通信協(xié)議中的信道交織過程包括信息位的交織、校驗碼交織、信息碼和校驗碼之間的交織,半字節(jié)移位4個步驟。具體的信道交織的過程如下:首先設(shè)定K代表信息bit的數(shù)量,N-K代表校驗bit的數(shù)量,K個信息bit會分成4個子塊,每個子塊的大小為K/4 bit,N-K個校驗bit會分成4個子塊,每個子塊的大小為(N-K)/4 bit,然后就是按步驟依次操作。
(1)信息位的交織。將信息bit存入一個K/4行4列的矩陣,依次把每列存滿。進(jìn)行交織時每行的4個bit是同時讀出的。從這個矩陣讀出數(shù)據(jù)時,從第0 行開始,從第二次開始每次讀時行地址加上參數(shù)StepSize,這樣第一輪讀的行地址順序為(0,StepSize,2×StepSize,… [K/4]-StepSize),當(dāng)讀了[K/4]/StepSize行之后,就讀到了矩陣的尾部,然后讀下一輪的行地址初始化為1,之后每次讀取時行地址加上參數(shù)StepSize,當(dāng)讀了[K/4]/StepSize行之后又到了行尾,這樣第二輪讀的行地址順序為(1,1+StepSize,1+2 ×StepSize,…[K/4]-StepSize+1),然后第三輪的行地址加1為2,依次類推,經(jīng)StepSize輪后全部行均已讀出。
(2)校驗碼交織。校驗碼的交織與信息位的交織類似,只是每次讀行地址時均加一個偏移量。因此,校驗bit第一次讀從參數(shù)offset定義的行開始,步長參數(shù)還是StepSize,文中定義T=(N-K)/4,第一輪讀出的行的順序為(offset,(offset+StepSize)mod T,(offset+2×StepSize)mod T,…(T-StepSize+offset)mod T),然后第二輪第一行的指針加1,再重復(fù)作StepSize-1輪,最后經(jīng)過StepSize輪,每輪讀出了T/StepSize行數(shù)據(jù),一共讀出T行數(shù)據(jù)。表1列舉了信道交織中3種傳輸塊用到的參數(shù)。
(3)信息碼和校驗碼之間的交織。輸出的前4 bit為信息碼,接著4 bit為校驗碼,以此類推。
(4)半字節(jié)移位。半字節(jié)移位以4 bit為單位進(jìn)行移位,無論信息bit還是校驗bit,每2個半Byte調(diào)整一次順序,表2列舉了具體移位模式。并且整體以32 bit為一個循環(huán)進(jìn)行半字節(jié)移位操作。
3 電力線通信協(xié)議中信道交織設(shè)計
在寬帶載波電力線通信協(xié)議中信道交織處理的數(shù)據(jù)單元塊有3種:PB16,PB136和PB520。FPGA中信道交織主要有兩種實現(xiàn)方式:一是通過計數(shù)器和邏輯控制單元來實現(xiàn);另一種是通過存儲在ROM中的信道交織表來實現(xiàn)。通過計數(shù)器和邏輯控制單元來實現(xiàn),其中會涉及到大量的除法和取模運(yùn)行,時間延遲大且不易控制。但采用存儲在ROM中的信道交織表來實現(xiàn)的話,只需通過Matlab計算出信道交織表的映射關(guān)系,然后將Matlab中的數(shù)據(jù)導(dǎo)出生成HEX 文件作為ROM的初始值。最后按ROM中存儲的地址寫到RAM即可實現(xiàn)信道交織。其中ROM和RAM直接調(diào)用Altera的IP核??紤]到后者只用通過 ROM讀和RAM讀寫就實現(xiàn)了信道交織,且邏輯簡單、時延小,所以本設(shè)計方案采用后者。且每種數(shù)據(jù)單元塊對應(yīng)一張信息交織表,因此只需信道交織表就能滿足系統(tǒng)的要求。寬帶載波電力線通信協(xié)議中信道交織的FPGA實現(xiàn)就是采用存儲在ROM中的信道交織表來實現(xiàn)的方式。
為了對數(shù)據(jù)進(jìn)行連續(xù)處理,設(shè)計采用兩個RAM同時工作的方式,實現(xiàn)框圖如圖2所示。具體做法就是通過對兩個RAM的乒乓操作來實現(xiàn)數(shù)據(jù)的緩存和發(fā)送。在第 1個傳輸周期,在輸入端通過選擇器1將數(shù)據(jù)寫入RAM1。在第2個傳輸周期,在輸入端切換選擇器1將數(shù)據(jù)寫入RAM2,在輸出端同時將RAM1中的數(shù)據(jù)通過選擇器2讀出。在第3個傳輸周期,在輸入端切換選擇器1將數(shù)據(jù)寫入RAM1,在輸出端同時將RAM2中的數(shù)據(jù)通過選擇器2讀出。如此循環(huán)便可實現(xiàn)對數(shù)據(jù)的連續(xù)緩存和讀出。
對其中一片RAM實現(xiàn)信道交織具體的實現(xiàn)過程就是通過控制ROM的讀出和控制RAM的讀寫來實現(xiàn):在ROM中存放交織地址表,將RAM作為存放數(shù)據(jù)的緩存器,先將計數(shù)器的輸出送至ROM地址總線,選擇器再選擇從ROM讀出的交織地址送至RAM的地址線完成交織;然后按計數(shù)器的順序地址將RAM中的數(shù)據(jù)讀出,即為交織后的輸出結(jié)果。詳細(xì)的信道交織流程如圖3所示。
4 仿真結(jié)果分析
本文用Verilog HDL語言編程實現(xiàn)信道交織,并通過QuanusⅡ和Modelsim軟件進(jìn)行仿真驗證。圖4為截取的一段仿真波形,波形顯示的是先按信道交織表的地址將輸入數(shù)據(jù)寫入RAM,輸入數(shù)據(jù)是連續(xù)的256個0,1比特流,最后按計數(shù)器的順序地址讀出交織后的數(shù)據(jù),交織后的結(jié)果是前64個數(shù)據(jù)均為0,接著64個數(shù)據(jù)均為1,然后接著64個數(shù)據(jù)均為0,最后64個數(shù)據(jù)為1,與Matlab中的仿真結(jié)果一致,證明了該實現(xiàn)方案的正確性。
5 結(jié)束語
本文在寬帶載波電力線通信協(xié)議的基礎(chǔ)上,給出了基于FPGA的信道交織模塊的物理層實現(xiàn)方法。該方法從實際出發(fā),權(quán)衡資源和時延的要求,實用性較強(qiáng)。其中,采用雙RAM可實現(xiàn)流水線操作,解決了單RAM等待的時延的問題;采用信道交織表的方式,相比單純采用邏輯控制的方式,可操作性和可移植性強(qiáng)。該方案已成功應(yīng)用于某寬帶載波電力線通信模塊中,證明該方案切實可行。
評論