陳海波,張 峰,竇昱欽
(西安工業(yè)大學(xué)電子信息工程,陜西 西安 710032)
OFDM(Orthogonal Frequency Division Multiplexing),是一種多載波調(diào)制(Multi Carrier Modulation,MCM)技術(shù)[1],能夠?qū)崿F(xiàn)數(shù)據(jù)高速,也是目前具有低實(shí)現(xiàn)復(fù)雜度、廣泛應(yīng)用的多載波傳輸方案。由于其良好的抗多徑干擾及抗噪聲能力,常常在易受外部干擾的傳輸介質(zhì)和無(wú)線電引信探測(cè)體制中使用。并且OFDM的頻譜利用率高,適于FFT(Fast Fourier Transformation)實(shí)現(xiàn),所以近年來(lái)在多種通信領(lǐng)域中得到成功應(yīng)用。雖然OFDM具有上述優(yōu)點(diǎn),但其運(yùn)算量大,實(shí)現(xiàn)效率低,因而通常的OFDM系統(tǒng)都是基于DSP(Demand Side Platform),F(xiàn)PGA(Field Programmable Gate Array)等平臺(tái)實(shí)現(xiàn),但這些平臺(tái)存在著成本高,功耗大等缺陷。針對(duì)這些問(wèn)題,論文在對(duì)OFDM的實(shí)現(xiàn)技術(shù)和效率進(jìn)行研究的基礎(chǔ)上,把高性能,高靈活性,低功耗的嵌入式平臺(tái)引入到OFDM通信系統(tǒng)的實(shí)現(xiàn)中,給出了設(shè)計(jì)方案和關(guān)鍵模塊的程序?qū)崿F(xiàn)方法。同時(shí)對(duì)系統(tǒng)進(jìn)行了大量測(cè)試,表明系統(tǒng)具有工作穩(wěn)定,抗干擾性能良好的特點(diǎn)。
OFDM調(diào)制信號(hào)是由調(diào)制后的子載波合成的,其生成的一般原理可以用式(1)表示為:
在式(1)中,0≤t≤T,T表示OFDM調(diào)制信號(hào)的持續(xù)時(shí)間;j表示第子i個(gè)載波中攜帶的信息;fi表示第i個(gè)子信道對(duì)應(yīng)的載波頻率,N代表子載波數(shù)。對(duì)式(1)進(jìn)行離散化處理,令t=n·T,有:
式(2)中本質(zhì)上即為離散傅里反葉變換(Inverse Discrete Fourier Transform,IDFT)的公式,因而OFDM的調(diào)制過(guò)程可由IDFT的快速算法IFFT(Inverse Fast Fourier Transform)實(shí)現(xiàn),相應(yīng)的OFDM解調(diào)過(guò)程由DFT的快速算法FFT實(shí)現(xiàn)。故以FFT為基礎(chǔ)的OFDM通信系統(tǒng)的組成如圖1所示。
圖1 OFDM系統(tǒng)框圖
如圖1發(fā)送端先將接收到的待傳輸數(shù)據(jù)進(jìn)行符號(hào)映射,通過(guò)串并轉(zhuǎn)換之后做IFFT處理以形成OFDM符號(hào),然后加載同步,最后做DA(Digital to Analog)輸出,由耦合單元耦合到信道中去。接收端與發(fā)送端相反,首先AD采集發(fā)送端的模擬信號(hào),并通過(guò)同步方法確定FFT窗的起始位置后做FFT處理,將信號(hào)再次變到頻域,然后做并串轉(zhuǎn)換和符號(hào)解映射最后將解調(diào)出來(lái)的數(shù)字信號(hào)發(fā)送出去[2]。在整個(gè)系統(tǒng)中,子載波分配,幀結(jié)構(gòu)設(shè)計(jì),F(xiàn)FT的高效實(shí)現(xiàn)以及精確同步是本系統(tǒng)的核心,對(duì)本系統(tǒng)的效率和可靠性具有顯著的影響。
按式(1)由傳輸數(shù)據(jù)經(jīng)多載波合成得到的OFDM調(diào)制信號(hào)一般為復(fù)信號(hào),傳輸較為麻煩,且在接收端需進(jìn)行相關(guān)檢測(cè)。所以為保證OFDM的調(diào)制信號(hào)為實(shí)信號(hào),避免接收端的相關(guān)檢測(cè),減少系統(tǒng)的復(fù)雜性,需對(duì)幀結(jié)構(gòu)進(jìn)行合理的設(shè)計(jì)[3]。
由于任一復(fù)數(shù)序列x(n)可進(jìn)行虛實(shí)分解,即:
式(3)中:
對(duì)式(4)的x(n)進(jìn)行DFT變換,可得:
從式(5)可以看出,為使基帶OFDM調(diào)制信號(hào)實(shí)數(shù)化,即需要xo(k)為零。對(duì)應(yīng)X(k)=X*(N-k),即將IFFT之前的N/2個(gè)信息數(shù)據(jù)與該N/2個(gè)信息數(shù)據(jù)的共軛倒序信息數(shù)據(jù)共同組成長(zhǎng)度為N的具有共軛對(duì)稱特性的信息數(shù)據(jù),再進(jìn)行N點(diǎn)IFFT變換時(shí),即可保證OFDM信號(hào)為實(shí)信號(hào)。
結(jié)合上式的推導(dǎo),論文所設(shè)計(jì)的OFDM符號(hào)結(jié)構(gòu)如圖2所示,由圖2可以看出一個(gè)OFDM符號(hào)結(jié)構(gòu)由N個(gè)子載波組成,其中有效子載波m個(gè),并且整個(gè)OFDM符號(hào)幀關(guān)于中心對(duì)稱,且滿足m1—m2位置上是m個(gè)有效子載波,m3—m4位置是由m1—m2位置對(duì)稱過(guò)來(lái)的,且滿足m1+m4=m2+m3。幀結(jié)構(gòu)設(shè)計(jì)的原理表示如式(2)所示。
圖2 OFDM符號(hào)幀結(jié)構(gòu)設(shè)計(jì)
在OFDM系統(tǒng)設(shè)計(jì)時(shí)應(yīng)考慮碼間干擾和信道間干擾,為了消除符號(hào)間干擾(Inter Symbol Interference,ISI),應(yīng)在符號(hào)間插入保護(hù)間隔,這樣雖然消除了符號(hào)間干擾,由于破壞了子載波間的正交性,導(dǎo)致了子載波之間的干擾(Inter Carrier Interference,ICI)。因此,這種方法在OFDM系統(tǒng)中不能采用。為了既可以消除符號(hào)間干擾(ISl),又可以消除子載波之間的干擾(ICI),通常保護(hù)間隔是由循環(huán)前綴來(lái)充當(dāng)[4]。當(dāng)循環(huán)前綴的長(zhǎng)度大于或等于信道沖擊響應(yīng)長(zhǎng)度時(shí),可以有效地消除ISI和ICI。最基本的方法就是將OFDM數(shù)據(jù)幀尾部的30個(gè)采樣點(diǎn)作為循環(huán)前綴平移復(fù)制到OFDM的頭部,通過(guò)插入循環(huán)前綴提高系統(tǒng)的可靠性。其數(shù)據(jù)塊結(jié)構(gòu)如圖3所示。
圖3 插入循環(huán)前綴的數(shù)據(jù)塊
為減少符號(hào)干擾以及進(jìn)一步提升系統(tǒng)穩(wěn)定性,對(duì)信號(hào)進(jìn)行魯棒編碼操作,編碼原理如下:
經(jīng)過(guò)IFFT變化后信號(hào)為一串?dāng)?shù)據(jù)流,將串行數(shù)據(jù)轉(zhuǎn)換為并行傳輸,即轉(zhuǎn)換為N行的數(shù)據(jù)矩陣,每行用來(lái)表示1個(gè)子載波上的數(shù)據(jù)信息,假設(shè)并行矩陣為S,用S(p,q)表示矩陣中每個(gè)元素,矩陣大小為:P*Q,其中P=N,表示子載波個(gè)數(shù);當(dāng)調(diào)制方式為DQPSK時(shí),Q=2*S,其中S表示OFDM符號(hào)個(gè)數(shù),調(diào)制方式為BQPSK時(shí),Q=S。
假設(shè)每個(gè)OFDM符號(hào)進(jìn)行4次時(shí)域魯棒編碼后,并行傳輸?shù)臄?shù)據(jù)矩陣變?yōu)閁矩陣,矩陣大小為:P*M,M為Q的4倍。時(shí)域魯棒的計(jì)算公式為:
發(fā)送端對(duì)信號(hào)經(jīng)過(guò)時(shí)域分段重構(gòu)編碼后,需在接收端選取可靠的譯碼方式來(lái)保證時(shí)域分段重構(gòu)編碼的性能,往往接收端譯碼的好壞決定了通信系統(tǒng)的性能。為使接收端譯碼錯(cuò)誤概率最小,需選取最優(yōu)譯碼方式進(jìn)行譯碼操作,最大似然譯碼準(zhǔn)則依靠接收端出現(xiàn)概率最大的信息判斷發(fā)送端信息,有效的保證了譯碼的準(zhǔn)確性[5]。
由于OFDM系統(tǒng)中的FFT運(yùn)算量很大,對(duì)處理器的運(yùn)算能力有很高的要求。所以一般的OFDM系統(tǒng)都是以FPGA,DSP處理器為核心進(jìn)行設(shè)計(jì)的,但這些芯片大都存在著成本高,功耗大的問(wèn)題。綜合考慮成本,靈活性等因素,論文采用低成本,低功耗,高靈活性的STM32F407作為OFDM通信系統(tǒng)的實(shí)現(xiàn)平臺(tái)。STM32F407是由ST公司推出的基于Cortex-M4內(nèi)核的高性能微控制器。該控制器集成了單周期DSP指令和FPU(Floating Point Unit),且主頻高達(dá)168 MHz,這使得STM32F407不僅具有強(qiáng)大的控制功能,也具有實(shí)時(shí)信號(hào)處理的能力。STM32F407包含有2個(gè)DAC(Digital to Analog Converter)通道,3個(gè)ADC(Analog to Digital Converter)通道,ADC的采樣頻率可達(dá)2.4 MHz,滿足OFDM系統(tǒng)的數(shù)模轉(zhuǎn)換的需要,適合OFDM系統(tǒng)的平臺(tái)實(shí)現(xiàn)。
圖4中是發(fā)射機(jī)的電路原理設(shè)計(jì)圖,發(fā)射機(jī)首先通信用UART方式接收通信終端設(shè)備發(fā)送的二進(jìn)制比特碼流,并將數(shù)據(jù)存儲(chǔ)到ROM(Read Only Memory)中,待滿足一幀信號(hào)時(shí),進(jìn)行QPSK(Quadrature Phase Shift Keying)調(diào)制和子載波分配,然后做IFFT處理,將IFFT的輸出結(jié)果控制在0~4 096(0~4 096是由STM32F4的DAC量化等級(jí)所決定的)之間,隨后在每一個(gè)OFDM符號(hào)前加載同步信號(hào),之后進(jìn)行DA輸出和RC低通濾波處理,形成OFDM待傳輸信號(hào)。處理器的時(shí)鐘電路通過(guò)并聯(lián)外接32 MHz石英晶振和兩只10 pF電容構(gòu)成。接收機(jī)電路原理圖與發(fā)射機(jī)相似,為相逆處理過(guò)程[6]。原理圖如圖4所示。
圖4 發(fā)射機(jī)電路的設(shè)計(jì)
OFDM作為一種高效的調(diào)制解調(diào)技術(shù),其基本原理為:信道被分為若干具有正交性的子信道,將高速傳輸?shù)拇袛?shù)據(jù)流轉(zhuǎn)化為并行的低速數(shù)據(jù)流,并調(diào)制到這些正交的子信道上[7]。
假設(shè)N表示子信道的個(gè)數(shù),T表示OFDM符號(hào)的持續(xù)時(shí)間。N路子信道碼元的分別調(diào)制到N個(gè)子載波頻率{f0,f1,f2,…,fn-1},f0為第0個(gè)子載波的載波頻率,則第n個(gè)子載波的載波頻率fn為:
在OFDM系統(tǒng)中,OFDM符號(hào)可以表示為表達(dá)式(1)。
在接收端,利用OFDM符號(hào)子載波的正交性對(duì)接收到的數(shù)據(jù)進(jìn)行解調(diào),分離出調(diào)制在各子載波上的數(shù)據(jù)信號(hào):
由于各個(gè)子載波是正交的,因此,當(dāng)n≠m,其積分就為0,當(dāng)n=m時(shí),可解得:
由式(9)可以看出,發(fā)送信號(hào)d(m)與解調(diào)出的信號(hào)d′(m)只有一個(gè)常數(shù)之差,即原始信號(hào)可從各個(gè)子信道中恢復(fù)出來(lái),從而實(shí)現(xiàn)信號(hào)的調(diào)制與解調(diào)。
在實(shí)現(xiàn)中存儲(chǔ)數(shù)據(jù)的存儲(chǔ)器是有限字長(zhǎng)的,在誤差允許情況下采用固定字長(zhǎng)的定點(diǎn)量化方法來(lái)實(shí)現(xiàn)FFT[8]。嵌入式ARM(Advanced RISC Machine)內(nèi)核不支持浮點(diǎn)運(yùn)算,即使集成了DSP指令和FPU的處理器芯片在進(jìn)行浮點(diǎn)運(yùn)算時(shí),也存在功耗大,計(jì)算效率不高等問(wèn)題[9]。因此論文首先設(shè)置了浮點(diǎn)格式與Q0-Q31定點(diǎn)格式的程序轉(zhuǎn)換。轉(zhuǎn)換方法如下:
x轉(zhuǎn)換為Xk:
Xk轉(zhuǎn)換為x:
其中,x表示浮點(diǎn)數(shù),Xk表示轉(zhuǎn)換后的定點(diǎn)數(shù),k為移位次數(shù)。由于ARM中移位操作可以作為四則運(yùn)算指令的一部分,并且不占用額外的指令周期,因此大大提高了格式轉(zhuǎn)換效率。在FFT的程序運(yùn)算中,還需要加,減和乘法運(yùn)算,運(yùn)算表達(dá)式為;
加減:
乘法:
在式(12)和(13)中,Ad,Bm,Cn為定點(diǎn)化后的Qd,Qm,Qn格式。在程序運(yùn)算中,必須設(shè)置合理的定點(diǎn)格式以防止溢出。由于嵌入式平臺(tái)中DA/AD轉(zhuǎn)換器量化等級(jí)一般為12位,因此可以在程序中將AD采集的結(jié)果設(shè)為Q0格式參與計(jì)算,且計(jì)算的中間結(jié)果也用Q0格式來(lái)保存。而正余弦值的范圍在(-1,1)之間,同時(shí)以查表法來(lái)實(shí)現(xiàn),即提前將正余弦的值以Q12格式存入ROM中。最后規(guī)定每經(jīng)過(guò)兩級(jí)級(jí)蝶形運(yùn)算,都要將結(jié)果右移一位,這樣既保證了精度,又防止FFT在進(jìn)行蝶形運(yùn)算時(shí)數(shù)據(jù)的溢出。
同步確定是應(yīng)用于接收機(jī)上的[9],在本系統(tǒng)的傳輸過(guò)程中,接收機(jī)采用DMA(Direct Memory Access)控制器來(lái)實(shí)現(xiàn)外設(shè)與存儲(chǔ)器的數(shù)據(jù)傳輸,不需要CPU干預(yù),優(yōu)化了CPU的運(yùn)行效率??捎捎贒MA是一直工作的,也就是說(shuō)每次DMA傳輸?shù)臄?shù)據(jù)并不能直接做OFDM解調(diào),所以首先要對(duì)DMA進(jìn)行合理的配置,然后針對(duì)DMA傳輸?shù)臄?shù)據(jù)不同的情況作峰值檢測(cè)處理。論文通過(guò)大量實(shí)驗(yàn)最后將DMA配置為傳輸N個(gè)數(shù)據(jù)產(chǎn)生一次傳輸完成中斷,由于本系統(tǒng)的每一個(gè)OFDM符號(hào)為N個(gè)子載波并帶有一小段時(shí)間的峰值電平,這樣可以保證最多兩次DMA傳輸?shù)臄?shù)據(jù)有一個(gè)完整的OFDM符號(hào),并且每次將沒(méi)有處理完的DMA數(shù)據(jù)保存起來(lái),等待下次DMA的數(shù)據(jù)一起處理。這樣的處理方法在程序中的實(shí)現(xiàn)是通過(guò)一個(gè)有限狀態(tài)機(jī)的方式,狀態(tài)機(jī)設(shè)計(jì)如圖5所示。
圖5 接收模塊實(shí)現(xiàn)狀態(tài)機(jī)
狀態(tài)機(jī)的功能描述:
S0狀態(tài):等待DMA完成一組數(shù)據(jù)采集,同時(shí)將SYN置1,然后判斷cun[]是否有值,如果有就進(jìn)入狀態(tài)S4,如果沒(méi)有就判斷FST是否為1,是則進(jìn)入狀態(tài)S1,否則進(jìn)入狀態(tài)S2。
S1狀態(tài):找尋DMA傳輸過(guò)來(lái)數(shù)據(jù)的FFT窗起始點(diǎn)位置WZ,并判斷WZ是否大于0,如果大于0進(jìn)入狀態(tài)S2,等于0則回到狀態(tài)S0。
S3狀態(tài):將cun[]的數(shù)據(jù)[WZ:N]位的值賦給數(shù)組fftintput[0:WZ]位,然后進(jìn)入狀態(tài)S2。
S2狀態(tài):首先判斷FST是否為0,如果是則將caiji[]的[WZ:N]位的值賦給fftintput[0:WZ]位,并將SYN置0,之后回到S0狀態(tài)。如果不是則將caiji[]的[0:N-WZ]位的值賦給fftintput[WZ:N]位,并將SYN,WZ置0,F(xiàn)IN置1,然后進(jìn)入狀態(tài)S5。
S4狀態(tài):處理cun[]的數(shù)據(jù),找尋FFT窗起始點(diǎn)的位置WZ,并判斷WZ是否大于0,如果大于0進(jìn)入狀態(tài)S3,等于0則進(jìn)入狀態(tài)S1,同時(shí)另FST=0。
S5狀態(tài):將DMA傳輸過(guò)來(lái)的數(shù)據(jù)存到cun[],并令CUN=N,SYN=0。進(jìn)入S6狀態(tài)。
S6狀態(tài):對(duì)數(shù)組fftintput[]做解調(diào)工作,并令SYN=0,F(xiàn)IN=0。
本次測(cè)試方案如圖6所示,采用兩臺(tái)PC機(jī)作為OFDM系統(tǒng)的通信端,PC(Personal Computer)機(jī)用UART方式和嵌入式ARM平臺(tái)通信,并使用兩個(gè)平臺(tái)分別作為OFDM系統(tǒng)的發(fā)射機(jī)和接收機(jī)。相關(guān)參數(shù)按電力線載波通信的G3標(biāo)準(zhǔn)設(shè)置,子載波位36,F(xiàn)FT點(diǎn)數(shù)位256,前端調(diào)制采用QPSK。最后采用電力線作為通信測(cè)試信道。
圖6 測(cè)試方案
待硬件平臺(tái)搭建完畢后,就可以進(jìn)行數(shù)據(jù)收發(fā)試驗(yàn)了。測(cè)試數(shù)據(jù)由串口助手發(fā)送,串口助手連續(xù)發(fā)送由0000到1111依次遞增的數(shù)據(jù),且這些數(shù)據(jù)由通信終端A發(fā)送給發(fā)射機(jī),發(fā)射機(jī)將數(shù)據(jù)調(diào)制后發(fā)送給接收機(jī)。接收機(jī)將采集的數(shù)據(jù)解調(diào)后,通過(guò)串口助手顯示。通過(guò)數(shù)據(jù)收發(fā)實(shí)驗(yàn)結(jié)果對(duì)比可知,接收的數(shù)據(jù)和發(fā)送的數(shù)據(jù)相同,驗(yàn)證了本文所設(shè)計(jì)的OFDM系統(tǒng)的合理性和可行性。
表1 狀態(tài)機(jī)變量描述
為驗(yàn)證通信系統(tǒng)的可靠性,論文將設(shè)計(jì)的OFDM通信系統(tǒng)基于實(shí)測(cè)電力線信道進(jìn)行不同信噪比環(huán)境下的誤碼率測(cè)試,每個(gè)信噪比進(jìn)行1 000幀數(shù)據(jù)測(cè)試。通過(guò)大量實(shí)驗(yàn)得出的誤碼率曲線如圖7所示。
由圖7比較可得系統(tǒng)經(jīng)過(guò)可靠性算法大幅提升可靠性,在信噪比從-5 dB開(kāi)始呈下降趨勢(shì),且在信噪比為-2 dB時(shí)誤碼率可達(dá)10-4。表明論文所設(shè)計(jì)的FFT-OFDM系統(tǒng)滿足一般的通信可靠性需求。
圖7 有循環(huán)前綴與無(wú)循環(huán)前綴
表2是定點(diǎn)與浮點(diǎn)的運(yùn)行時(shí)間和通信速率的對(duì)比。FFT運(yùn)行效率測(cè)試方法是通過(guò)ARM外設(shè)定時(shí)器進(jìn)行測(cè)試,通過(guò)FFT程序運(yùn)行前后分別讀取其計(jì)數(shù)值,最后將計(jì)數(shù)值轉(zhuǎn)化為FFT的運(yùn)行時(shí)間。通信速率是輸出一個(gè)OFDM符號(hào)所需時(shí)間進(jìn)行計(jì)算。可以看出定點(diǎn)FFT比浮點(diǎn)快65%左右,最高速率可達(dá)57 kbit/s。
表2 系統(tǒng)效率測(cè)試
論文在ARM上完成了FFT-OFDM通信系統(tǒng),采用定點(diǎn)化的分裂基FFT實(shí)現(xiàn)OFDM的高效通信,并引入狀態(tài)機(jī)解決符號(hào)同步問(wèn)題,所設(shè)計(jì)的系統(tǒng)基于STM32F4處理器平臺(tái)進(jìn)行了實(shí)現(xiàn)、測(cè)試及性能優(yōu)化。通過(guò)論文的研究及系統(tǒng)的實(shí)現(xiàn)表明:
(1)利用DFT對(duì)稱性對(duì)幀結(jié)構(gòu)進(jìn)行合理設(shè)計(jì),能夠避免接收端的相關(guān)檢測(cè),減少系統(tǒng)實(shí)現(xiàn)的復(fù)雜性。
(2)采用定點(diǎn)FFT,可大大提高FFT的運(yùn)算效率,即提高OFDM系統(tǒng)的效率。
(3)將狀態(tài)機(jī)編程思想引入到系統(tǒng)中,解決了符號(hào)同步中對(duì)于已接收部分和未接收部分的數(shù)據(jù)接收進(jìn)度匹配及狀態(tài)不同的問(wèn)題。
論文設(shè)計(jì)的基于嵌入式平臺(tái)的OFDM通信系統(tǒng)具有高靈活性,低功耗,低成本的特點(diǎn),且對(duì)開(kāi)發(fā)自主知識(shí)產(chǎn)權(quán)的OFDM芯片具有一定的借鑒意義。