1、引言
信息化已經(jīng)成為社會發(fā)展的大趨勢。信息化是以數(shù)字化為背景的,而DSP技術(shù)則是數(shù)字化最重要的基本技術(shù)之一。DSP處理器是專門設(shè)計用來進(jìn)行高速數(shù)字信號處理的微處理器。與許多通用的CPU和微控制器(MCU)相比,DSP處理器在結(jié)構(gòu)上采用了許多的專門技術(shù)和措施來提高處理速度。DSP處理器與通用微處理器不同,它沒有采用將程序代碼和數(shù)據(jù)公用一個公共的存儲空間和單一的地址與數(shù)據(jù)總線的馮諾依曼結(jié)構(gòu)(Von Neumann Architecture),而是毫無例外的將程序代碼和數(shù)據(jù)的存儲空間分開,各有自己的地址與數(shù)據(jù)總線,即所謂的哈佛結(jié)構(gòu)(Harvard Architecture),增大了處理器的數(shù)據(jù)交換能力。
OFDM(正交頻分復(fù)用),是直接利用離散傅里葉變換(DFT),實(shí)現(xiàn)的一種多載波調(diào)制技術(shù),它采用并行傳輸,將所傳送的高速數(shù)據(jù)分解并調(diào)制到多個相互交疊并且正交的子信道中,使得每個子通道的碼元寬度大于擴(kuò)展延時,若在碼元之間增加一定長度的保護(hù)間隔,則多徑傳輸引起的碼間串?dāng)_基本被消除。OFDM的上述特點(diǎn)使其特別適于在存在多徑傳播和有多普勒頻移的移動無線傳輸信道中傳輸高速數(shù)據(jù)。目前應(yīng)用于電力線通信,數(shù)字聲廣播(DAB)和歐洲高清晰度電視傳輸標(biāo)準(zhǔn)(DVB-T), 無線局域網(wǎng)(WLAN)等業(yè)務(wù)中。
論文在TMS320C5509DSP上根據(jù)系統(tǒng)的總體框圖,實(shí)現(xiàn)OFDM基帶系統(tǒng)的設(shè)計,并給出了具體的性能指標(biāo)。
2、OFDM系統(tǒng)的設(shè)計實(shí)現(xiàn)
2.1 實(shí)現(xiàn)系統(tǒng)的任務(wù)流程圖
系統(tǒng)每幀可以傳送56bits的有效信息,數(shù)據(jù)的傳輸速率將達(dá)到100kbit/s,并且為了減小傳輸過程中的信道的不理想,用了BSPK對信源進(jìn)行編碼映射,在傳輸過程中,傳輸?shù)氖菚r域的信號,但是實(shí)際有用的是這些時域信號的頻譜,這些信號在時域中是無規(guī)則的隨機(jī)信號,但在其頻譜上的各個子載波攜帶著需傳輸?shù)男畔ⅰ,F(xiàn)工作框圖如圖1:
?
圖1.?? 系統(tǒng)的任務(wù)框圖
整個系統(tǒng)由DSP和FPGA、D/A、A/D以及一些其他的硬件共同完成。任務(wù)流程是由DSP接受由串/并轉(zhuǎn)換過后的并行數(shù)據(jù),在DSP內(nèi)進(jìn)行BPSK信源編碼,將0和1分別映射為0xbffd 和0x3fff兩個十六進(jìn)制的數(shù),再送入IFFT單元將數(shù)據(jù)變到時域進(jìn)行處理,然后把數(shù)據(jù)加上循環(huán)前綴,串行送給FPGA進(jìn)行處理,由FPGA將數(shù)據(jù)發(fā)送給接收板。接收板上由FPGA接到數(shù)據(jù)進(jìn)行一系列處理后,將數(shù)據(jù)又串行傳給接收板的DSP。在接收板的DSP上將接受到的數(shù)據(jù)移走循環(huán)前綴,送入FFT單元將數(shù)據(jù)還原到頻域,然后以0為門限進(jìn)行判決,映射后得到最早的原始數(shù)據(jù)。
2.1? 任務(wù)流程詳解
原始數(shù)據(jù)每幀攜帶56bit的二進(jìn)制信息(即只有0和1兩種取值),在框圖中D/A和A/D部分都是由專門的硬件來完成,項(xiàng)目選用的是ADS828e,和DAC902u。
發(fā)送部分:
信源編碼部分我們采用的是BPSK,為的是進(jìn)一步增大信號間的歐式距離,通過計算,我們決定選用0xbffd 和0x3fff兩個16進(jìn)制的數(shù)來分別代表0和1。由于FFT變換要求數(shù)據(jù)是2N個數(shù)據(jù),所以將數(shù)據(jù)插入若干個零來補(bǔ)足。具體做法是,將映射后的第28個數(shù)據(jù)位置開始插入7個零。由于零頻時不能有信號(為了無直流分量),在幀的開始不傳信息,將第一個數(shù)插入零(不是0xbffd),把56個數(shù)變?yōu)?4個數(shù),在接收板上將把同樣位置的16個數(shù)去掉。
將編碼映射后的16位數(shù)進(jìn)行64點(diǎn)的IFFT,把數(shù)據(jù)由頻域變換到時域,等候下一步處理。
在OFDM系統(tǒng)中,為了防止多徑延遲,必須加上循環(huán)前綴,而這些循環(huán)前綴又不能破壞子信道間的正交性,于是將最后16位數(shù)提到前面來形成80個數(shù)。具體做法是,在IFFT完成后,要加上循環(huán)前綴才能將數(shù)據(jù)發(fā)送給FPGA,將數(shù)據(jù)的最后16位復(fù)制到數(shù)據(jù)開頭(原來的16個數(shù)不動),把數(shù)據(jù)變?yōu)?0個,送給串口發(fā)送給FPGA。
? 在FPGA上進(jìn)行FIR濾波,和一系列處理后,發(fā)送板的任務(wù)完成,接下來就將數(shù)據(jù)送給接收板。
接收部分:
由接收板上的FPGA接收到發(fā)送板送來的數(shù)據(jù),經(jīng)過一系列處理后將數(shù)據(jù)串行送給DSP等待進(jìn)一步處理。
接收板的DSP接收到FPGA發(fā)過來的80個串行數(shù)據(jù)后,先將循環(huán)前綴去掉,即去掉前16位數(shù),將80位的數(shù)據(jù)變?yōu)?4位,交給下一步處理。
在把數(shù)據(jù)變回為64位后,將數(shù)據(jù)進(jìn)行FFT變換,由時域變回頻域,交由下一步處理。
在進(jìn)行判決之前,先要把插入的16個數(shù)去掉,將64位數(shù)變?yōu)?6位,然后進(jìn)行判決,BPSK有一個好處就是判決時可以直接以零為門限。經(jīng)過判決后,將數(shù)據(jù)還原成原來的初試值。
綜上所述,在DSP部分,共有10項(xiàng)任務(wù),
發(fā)送端
1.BPSK編碼和插入數(shù)據(jù)(數(shù)據(jù)個數(shù)由56變?yōu)?4個)
2.作N=64的IFFT變換,將頻域的數(shù)據(jù)變到時域。
3.加入循環(huán)前綴(數(shù)據(jù)個數(shù)由64個變?yōu)?0個),防止多徑延遲。
4.通過DMA將數(shù)據(jù)送到Mcbsp發(fā)給FPGA。
接收端
5.由Mcbsp接到數(shù)據(jù)通過DMA存入數(shù)據(jù)空間(此時數(shù)據(jù)應(yīng)該與第四步結(jié)束時相同)。
6.去掉循環(huán)前綴(數(shù)據(jù)個數(shù)又由80個變?yōu)?4個,此時數(shù)據(jù)應(yīng)該與第三步結(jié)束時相同)
7.作64點(diǎn)FFT變換(此時結(jié)果應(yīng)該與第一步結(jié)束時相同)
8.去掉插入的數(shù)據(jù),反映射(數(shù)據(jù)個數(shù)由64個變?yōu)?6個,此時結(jié)果應(yīng)該與第一步開始時相同)并解碼。
2.3? DSP串口的接發(fā)配置和DMA的設(shè)置
??? 系統(tǒng)實(shí)現(xiàn)關(guān)鍵在FFT的實(shí)現(xiàn)和DSP串口的接發(fā)配置和DMA的設(shè)置。這里詳細(xì)說明串口和DMA的設(shè)計方法。
系統(tǒng)用Mcbsp1發(fā)送數(shù)據(jù),用Mcbsp2來接收數(shù)據(jù),為了不占用過多的CPU資源,用DMA的4通道來傳送數(shù)據(jù)給串口,用5通道來接收數(shù)據(jù)。對于DMA和Mcbsp的使用主要是寄存器的配置問題,在這些配置當(dāng)中可以對工作模式等一系列東西進(jìn)行設(shè)置?,F(xiàn)分別介紹如下:
對于Mcbsp來說,接收和發(fā)送可以配置在一起,采用了DSP自身帶有的CSL庫函數(shù),它對寄存器的配置是通過結(jié)構(gòu)體來定義的,可以方便的修改成自己所需要的模式。
在進(jìn)行將DSP片內(nèi)數(shù)據(jù)地址賦DMA中的地址時要注意,DMA中數(shù)據(jù)是以byte為單位存儲的,存儲的最小數(shù)據(jù)單位上byte,而片內(nèi)存儲區(qū)間是以word為單位的,所以將地址交過去時,要將地址右依、移1位。如:
srcAddrHi = (Uint16)(((Uint32)(dmaXmtConfig.dmacssal)) >> 15) & 0xFFFFu;
srcAddrLo = (Uint16)(((Uint32)(dmaXmtConfig.dmacssal)) << 1) & 0xFFFFu;
dstAddrHi = (Uint16)(((Uint32)(dmaXmtConfig.dmacdsal)) >> 15) &0xFFFFu;
dstAddrLo = (Uint16)(((Uint32)(dmaXmtConfig.dmacdsal)) << 1) & 0xFFFFu;
在進(jìn)行中斷處理是時,要注意執(zhí)行的順序,首先要保存原來的中斷向量表,再清除原來的中斷,然后將局部中斷允許位開放(即關(guān)屏蔽位),開全局中斷,最后將中斷服務(wù)程序填入中斷向量表。
old_intm = IRQ_globalDisable();
IRQ_clear(xmtEventId);
IRQ_enable(xmtEventId);
IRQ_setVecs(0x10000);
IRQ_plug(xmtEventId,&dmaXmtIsr);
在程序任務(wù)完成之后,還要記得還原中斷,關(guān)掉Mcbsp和DMA。
??? MCBSP_close(hMcbspr);
??? DMA_close(hDmaRcv);
DMA_close(hDmaXmt);
DMA_stop(hDmaXmt);
? IRQ_disable(xmtEventId);
DMA_stop(hDmaRcv);
? IRQ_disable(rcvEventId);
在設(shè)定的控制字下,串口1將以CPU時鐘頻率的1/70發(fā)出幀定位信號,寬度為一個碼元長度,上升沿有效,以幀定位信號的1/80發(fā)出時鐘定位信號(因?yàn)橐粠?0個元素),也是上升沿有效,發(fā)送元素是32bit的數(shù),這是因?yàn)榘l(fā)散的數(shù)據(jù)是復(fù)數(shù),分為虛部和實(shí)部,先放實(shí)部后放虛部,所以一個元素是32個bit。
串口2是接收端,接收外部幀同步信號和時鐘同步信號用來同步。外部傳來的各種信號和數(shù)據(jù)格式和串口1發(fā)送的相同,不過收的時鐘定位信號是下降沿有效。
??? 在DMA方面,通道4是發(fā)送通道,通道5是接收通道,同步事件分別是發(fā)送串口和接收串口,在一個數(shù)據(jù)串口接收到了后會發(fā)中斷給DMA,使其接收數(shù)據(jù)或傳下一個數(shù)據(jù),所以在發(fā)端,需要手工先送一個數(shù)據(jù)過去。
3? 性能分析
可靠性以外,速度是一個通信系統(tǒng)最重要的評估因素,而數(shù)據(jù)的處理速度在很大程度上限制了傳輸速度,成為了提高系統(tǒng)速度的瓶頸。在設(shè)計中對系統(tǒng)傳輸由于是用DMA和Mcbsp的結(jié)合使用,速度超出了其他程序的執(zhí)行速度,只要傳輸在主函數(shù)的執(zhí)行時間內(nèi)完成就不會造成系統(tǒng)的阻塞,所以這部分只測試和評估各程序的執(zhí)行速度,傳輸?shù)臅r鐘定位脈沖是對CPU時鐘的35分頻遠(yuǎn)遠(yuǎn)快于處理速度,忽略它的測試不會對整個測試有很大影響。
系統(tǒng)數(shù)據(jù)的傳輸速度達(dá)到100kbit/s,傳輸只要在上次數(shù)據(jù)處理完前完成就可以不計算傳輸?shù)乃俣?,所以按照我們的預(yù)期速度,和我們DSP的CPU時鐘140MHz,可以算出所有的數(shù)據(jù)要在多少條指令周期內(nèi)完成才不會對下一階段的任務(wù)產(chǎn)生影響,而CCS就有專門的測試工具幫助我們測試執(zhí)行的指令周期。期望的最大執(zhí)行周期為140÷125×64=71680條指令周期。
由CCS自帶的時間測試是以執(zhí)行周期為單位的,在程序沒有進(jìn)行編譯優(yōu)化時,我們測試得各部分和主函數(shù)的執(zhí)行速度如圖2所示:
?
圖2 未優(yōu)化前的程序執(zhí)行時間測試結(jié)果
在此結(jié)果中,我們可以看到main函數(shù)的執(zhí)行時間是39786個指令周期,完全可以滿足前面算出的最大指令執(zhí)行周期。順便一提,在這個測試工具中還可以看到所編譯的程序代碼的大小。
在由CCS自帶的優(yōu)化工具進(jìn)行調(diào)試的優(yōu)化后(即o2優(yōu)化),程序代碼的長度和執(zhí)行時間還可以大大的縮短。其結(jié)果見圖3所示:
?
圖3 用參數(shù)o2優(yōu)化后的程序測試
比較圖2和圖3,可以看出經(jīng)過優(yōu)化后的程序不僅在代碼長度上減少了進(jìn)40%,在執(zhí)行速度上更是提高了2倍以上,有的子程序甚至提高了4-5倍。系統(tǒng)效率有了很大的提高,并且有較大的余量來實(shí)現(xiàn)其他任務(wù)。
4? 結(jié)論
實(shí)現(xiàn)了OFDM系統(tǒng)基帶系統(tǒng)的DSP實(shí)現(xiàn),實(shí)現(xiàn)基帶信號的發(fā)送與接收。考慮到物理層的時延要求和實(shí)現(xiàn)的復(fù)雜度,本系統(tǒng)采用串口和DMA結(jié)合的方法,對信號幀進(jìn)行處理,將DSP核心處理單元解放出來,能完成復(fù)雜的信號處理任務(wù)。我們設(shè)計的系統(tǒng)數(shù)據(jù)的傳輸速度達(dá)到100kbit/s,如果要達(dá)到更高的傳輸速率,可以改用更先進(jìn)的DSP型號。
評論