- 相關(guān)推薦
基于DSP的電力線載波OFDM調(diào)制解調(diào)器
摘要:提出一種基于OFDM的電力線寬帶高速通信系統(tǒng)的實(shí)現(xiàn)方案?討論了OFDM應(yīng)用于電力線載波通信的原理,探討了通信系統(tǒng)調(diào)制解調(diào)部分的硬件實(shí)現(xiàn)和軟件流程,并對(duì)其關(guān)鍵的FFT算法進(jìn)行了優(yōu)化。關(guān)鍵詞:電力線載波 DSP OFDM FFT
利用電力線作為信道進(jìn)行通信?是解決“最后一公里”問題的一個(gè)很好的方法。然而電力線作為通信信道,存在著高噪聲、多徑效應(yīng)和衰落的特點(diǎn)。OFDM技術(shù)能夠在抗多徑干擾、信號(hào)衰減的同時(shí)保持較高的數(shù)據(jù)傳輸速率,在具體實(shí)現(xiàn)中還能夠利用離散傅立葉變換簡化調(diào)制解調(diào)模塊的復(fù)雜度,因此它在電力線高速通信系統(tǒng)中的應(yīng)用有著非常樂觀的前景。文中給出一種基于正交頻分復(fù)用技術(shù)(OFDM技術(shù))的調(diào)制解調(diào)器的設(shè)計(jì)方案。
1 OFDM原理
OFDM全稱為正交頻分復(fù)用(Orthogonal Frequency Division Multiplexing),其基本思想是把高速數(shù)據(jù)流經(jīng)過串/并變換,分成幾個(gè)低比特率的數(shù)據(jù)流,經(jīng)過編碼、交織,它們之間具有一定的相關(guān)性,然后用這些低速率的數(shù)據(jù)流調(diào)制多個(gè)正交的子載波并迭加在一起構(gòu)成發(fā)送信號(hào)。每個(gè)數(shù)據(jù)流僅占用帶寬的一部分,系統(tǒng)由許多子載波組成。在接收端用同樣數(shù)量的載波對(duì)發(fā)送信號(hào)進(jìn)行相干接收,獲得低速率信息數(shù)據(jù)后,再通過并/串變換得到原來的高速信號(hào)。從而降低子載波上的碼率,加長碼元的持續(xù)時(shí)間,加強(qiáng)時(shí)延擴(kuò)展的抵抗力。
在OFDM中,為了提高頻帶利用率,令各載波上的信號(hào)頻譜相互重疊,但載波間隔的選擇要使這些載波在整個(gè)符號(hào)周期上正交,即相加于符號(hào)周期上的任何兩個(gè)子載波乘積為零。這樣,即使各載波上的信號(hào)頻譜間存在重疊,也能無失真復(fù)原。當(dāng)載波間最小間隔等于符號(hào)周期的倒數(shù)的整數(shù)倍時(shí),可滿足正交性條件。實(shí)際上為實(shí)現(xiàn)最大頻譜效率,一般取載波間最小間隔等于符號(hào)周期的倒數(shù)。
OFDM允許各載波間頻率互相混疊,采用了基于載波頻率正交的IFFT/FFT調(diào)制,直接在基帶處理。1971年,Weinstein和Ebert將DFT引入到并行傳輸系統(tǒng)的調(diào)制解調(diào)部分。應(yīng)用時(shí)去掉了頻分復(fù)用所需要的子載波振蕩器組、解調(diào)部分的帶通濾波器組,并且可以利用FFT的專用器件實(shí)現(xiàn)全數(shù)字化的調(diào)制解調(diào)過程。
OFDM技術(shù)具有頻譜利用率高、抗多徑干擾能力強(qiáng)、易于實(shí)現(xiàn)等優(yōu)點(diǎn),尤其適于多徑效應(yīng)嚴(yán)重的寬帶傳輸系統(tǒng),是一門具有發(fā)展前景、非常適合電力線高速數(shù)字通信的新興技術(shù)。
(范文先生網(wǎng)www.gymyzhishaji.com收集整理)
2 電力線載波通信系統(tǒng)結(jié)構(gòu)
Homeplug是工業(yè)界第一個(gè)電力線家庭網(wǎng)絡(luò)標(biāo)準(zhǔn)。系統(tǒng)參考Homeplug采用的頻譜范圍4.5MHz~21MHz,并在Homeplug物理參數(shù)的基礎(chǔ)上確定本系統(tǒng)參數(shù)為:
采樣頻率fs=1/T = 15MHz
數(shù)據(jù)符號(hào)時(shí)間Td = 256×T=17.07μs
循環(huán)前綴時(shí)間Tcp = 172×T=11.47μs
OFDM符號(hào)時(shí)間Ts = 428×T=28.5μs
數(shù)據(jù)子載波數(shù)為256
子載波間隔Δf=1/Td=0.05858MHz
總子載波占用帶寬 N×Δf=15MHz
由于加入了11.47μs的循環(huán)前綴,系統(tǒng)可以消除11.47μs以內(nèi)的回波干擾。但是同時(shí)也付出頻帶利用率僅0.59B/Hz和損失功率2.23dB的代價(jià)?紤]到電力線惡劣的通信環(huán)境,付出的代價(jià)是值得的。
電力線高速通信系統(tǒng)的系統(tǒng)結(jié)構(gòu)如圖1所示。輸入數(shù)據(jù)在OFDM信號(hào)調(diào)制部分依次經(jīng)過串/并變換、IFFT、加入循環(huán)前綴、并/串變換后,輸出調(diào)制后的信號(hào),其頻帶范圍為0~15MHz、數(shù)據(jù)速率為8.97MB。經(jīng)過調(diào)制的信號(hào)經(jīng)過數(shù)/模變換和上變頻后,通過系統(tǒng)耦合部分進(jìn)入電力線。
電力線上的信號(hào)通過系統(tǒng)耦合部分,輸出的信號(hào)通過下變頻、模/數(shù)變換后輸入給OFDM信號(hào)解調(diào)部分。在經(jīng)過串/并變換、去除循環(huán)前綴、FFT、并/串變換后,輸出串行數(shù)據(jù)流。
3 OFDM調(diào)制解調(diào)器的硬件實(shí)現(xiàn)
基于TMS320C6201的OFDM調(diào)制解調(diào)器的硬件實(shí)現(xiàn)分別如圖2和圖3?1?所示。PCI總線實(shí)現(xiàn)OFDM系統(tǒng)和計(jì)算機(jī)之間的通信。S5933是32bit PCI控制器。FPGA是系統(tǒng)的控制核心,系統(tǒng)的邏輯控制信號(hào)及時(shí)鐘由FPGA提供。DSP部分為系統(tǒng)的核心,完成OFDM的調(diào)制與解調(diào)。
PCI總線是寬度為32bits或64bits的地址數(shù)據(jù)復(fù)用線,支持猝發(fā)傳輸,數(shù)據(jù)率為132Mbps,可滿足高速數(shù)據(jù)要求。PCI總線能自動(dòng)配置參數(shù),定義配置空間,使設(shè)備具備自動(dòng)配置功能,支持即插即用,采用多路復(fù)用技術(shù),支持多處理器64位尋址、5V和3.3V環(huán)境。其獨(dú)特的同步操作及對(duì)總線主控功能,可確保CPU能與總線同步操作,而無需等待總線完成任務(wù)。
S5933是AMCC?Applied Micro Circuits Corporation?公司開發(fā)的32bit PCI控制器,具備強(qiáng)大、靈活的PCI接口功能,適用于高速數(shù)據(jù)傳輸場合。S5933芯片的特點(diǎn)是符合PCI2.1規(guī)范,支持PCI主、從兩種工作方式,支持多種數(shù)據(jù)傳輸方式,適用于不同的數(shù)據(jù)傳輸場合,支持PCI全速傳輸,提供8/16/32bit的Add-On用戶總線,有高低字節(jié)順序調(diào)整功能,支持穿行和并行的BOOT/POST碼功能,160腳PQFP封裝。
DSP部分選用TI公司的TMS320C6201。TMS320C6201有32位的外部存儲(chǔ)接口EMIF,為CPU訪問外圍設(shè)備提供了無縫接口。為了便于多信道數(shù)字信號(hào)處理,TMS320C6201配備了多信道帶緩沖能力的串口McBSP。McBSP的功能非常強(qiáng)大,除具有一般DSP串口功能之外,還可以支持T1/E1、ST-BUS、IOM2、SPI、IIS等不同標(biāo)準(zhǔn)。TMS32C6201提供的16位主機(jī)接口(HPI)使得主機(jī)設(shè)備可以直接訪問DSP的存儲(chǔ)空間。通過內(nèi)部或外部存儲(chǔ)空間,主機(jī)可以與DSP交換信息,也可以利用HPI直接訪問映射進(jìn)存儲(chǔ)空間的外圍設(shè)備。TMS320C6201的DMA控制器有四個(gè)獨(dú)立的可編程通道,可以同時(shí)進(jìn)行四種不同的DMA操作。
4 OFDM在DSP上的軟件實(shí)現(xiàn)
調(diào)制部分的子程序被系統(tǒng)調(diào)用前,發(fā)送的數(shù)據(jù)已裝入數(shù)據(jù)存儲(chǔ)器。子程序被調(diào)用時(shí),數(shù)據(jù)區(qū)的首地址以及長度被作為入口參數(shù)傳遞給子程序。程序執(zhí)行時(shí)首先進(jìn)行一系列的配置工作,如配置DSP片內(nèi)外設(shè)以及數(shù)模轉(zhuǎn)換器的各種參數(shù)等。之后,串口中斷產(chǎn)生,中斷服務(wù)程序自動(dòng)依次讀取發(fā)送存儲(chǔ)器中的內(nèi)容,經(jīng)串口輸出給數(shù)模轉(zhuǎn)換器。然后程序從數(shù)據(jù)存儲(chǔ)區(qū)讀取一幀數(shù)據(jù),并行放入IFFT工作區(qū)的相應(yīng)位置,隨后進(jìn)行IFFT以及加入循環(huán)前綴(即復(fù)制數(shù)據(jù)的后若干位插入到數(shù)據(jù)的前段)。所得數(shù)據(jù)存入發(fā)送存儲(chǔ)器以便中斷服務(wù)程序?qū)⑵漭敵觥?/p>
解調(diào)部分的程序首先執(zhí)行DSP片內(nèi)外設(shè)以及模數(shù)轉(zhuǎn)換器的配置,然后開串行口,接收中斷,使接收中斷程序接收來自模數(shù)轉(zhuǎn)換器的采樣數(shù)據(jù),并將采樣數(shù)據(jù)依次存入接收存儲(chǔ)器。每得到一幀數(shù)據(jù),程序首先去除循環(huán)前綴(即刪去數(shù)據(jù)的前若干位),然后對(duì)去除循環(huán)前綴后的數(shù)據(jù)進(jìn)行FFT變換。
圖3 OFDM調(diào)制解調(diào)器電路原理圖
5 FFT在TMS320C6201上的優(yōu)化算法
表1給出256點(diǎn)Radix2FFT和Radix4FFT在TMS320C6201上所需的指令周期,以及在不同的工作頻率下完成FFT所需的時(shí)間。
由表1可以看出,在TMS320C6201上采用Raidx4算法比采用Radix2算法更加高效。并且,為了滿足系統(tǒng)需求,即在17.07μs之內(nèi)完成256個(gè)復(fù)數(shù)點(diǎn)的FFT運(yùn)算,TMS320C6201必須采用200MHz的工作頻率。
表1 6201上實(shí)現(xiàn)256點(diǎn)FFT所需的時(shí)間
TMS320C6201的數(shù)據(jù)通路和流水線工作方式是對(duì)算法進(jìn)行優(yōu)化從而獲得高性能的基礎(chǔ)。TMS320C6201有兩個(gè)可以進(jìn)行數(shù)據(jù)處理的數(shù)據(jù)通路A和B?2?,每個(gè)通路有4個(gè)功能單元(.L.S.M.D)和一個(gè)包括16個(gè)32位寄存器的寄存器組。功能單元執(zhí)行邏輯、位移、乘法、加法和數(shù)據(jù)尋址等操作。兩個(gè)數(shù)據(jù)尋址單元(.D1和.D2)專門負(fù)責(zé)寄存器組和存儲(chǔ)器之間的數(shù)據(jù)傳遞。在同一時(shí)刻,這些功能單元能夠并行地執(zhí)行多條指令。TMS320C6201對(duì)任何指令的操作都能分為幾個(gè)子操作,每個(gè)子操作由不同單元完成。對(duì)每個(gè)單元來說,每個(gè)時(shí)鐘周期可進(jìn)入一條新指令,這樣在不同周期內(nèi),不同單元可以處理不同的指令,這種工作方式稱為“流水線”工作方式。TMS320C6201的特殊結(jié)構(gòu),可使8條指令同時(shí)通過流水線的每個(gè)節(jié)拍,從而大大提高了機(jī)器的吞吐量。
為使代碼達(dá)到最大效率,程序?qū)⒈M可能將指令安排為并行執(zhí)行。為使指令并行操作,程序確定指令間的相關(guān)性,即一條指令必須發(fā)生在另一條指令之后。根據(jù)TMS320C6201的數(shù)據(jù)通路和流水線工作方式,在此給出一種高效實(shí)現(xiàn)16點(diǎn)Radix4FFT的方法。其基本思想是分解傳統(tǒng)的FFT蝶型算法循環(huán)體,將其分別展開在A、B通路內(nèi)計(jì)算兩個(gè)FFT蝶型算法。每個(gè)蝶型算法分別只分配自己這一側(cè)的寄存器組和功能單元。這樣在循環(huán)體內(nèi)兩個(gè)蝶型算法是完全不相關(guān)的,能夠并行執(zhí)行。下面給出基于C.S.Burrus和T.W.Parks的Radix4FFT算法?3?的優(yōu)化算法的代碼實(shí)現(xiàn)。
void radix4?int n? short x??? short w???
?
int n1? n2? ie? wa1? wa2? wa3? wb1? wb2? wb3? ia0? ia1? ia2? ia3? ib0? ib1? ib2?
ib3? j? k?
short ta? tb? ra1? ra2? rb1? rb2? sa1? sa2? sb1? sb2? coa1? coa2? coa3? cob1?
cob2? cob3? sia1? sia2? sia3? sib1? sib2? sib3?
n2=n?
ie=1?
for?k=n?k>1?k>>=2?
? //number of stage
n1=n2?
n2>>=2? // distance between input datas
wa1=0?
for?j=0?j<n2?j+=2?? //number of butterfies perstage
wb1=wa1+ie?
wa2=wa1+wa1?
wb2=wb1+wb1? //since here?most of the folow-
ering two instructions are parallel
wa3=wa2+wa1?
wb3=wb2+wb1?
coa1=w?wa1?2+1??
cob1=w?wb1?2+1??
sia1=w?wa1?2??
sib1=w?wb1?2??
coa2=w?wa2?2+1??
cob2=w?wb2?2+1??
sia2=w?wa2?2??
sib2=w?wb2?2??
coa3=w?wa3?2+1??
cob3=w?wb3?2+1??
sia3=w?wa3?2??
sib3=w?wb3?2??
wa1=wb1+ie?
for?ia0=j? ib0=j+1? ia0<n? ia0+=n1? ib0+=n1?
?//loop of two butterflies caculation
ia1=ia0+n2?
ib1=ib0+n2?
ia2=ia1+n2?
ib2=ib1+n2?
ia3=ia2+n2?
ib3=ib2+n2?
ra1=x?2?ia0?+x?2?ia2??
rb1=x?2?ib0?+x?2?ib2??
ra1=x?2?ia0?-x?2?ia2??
rb1=x?2?ib0?-x?2?ib2??
ta=x?2?ia1?+x?2?ia3??
tb=x?2?ib1?+x?2?ib3??
x?2?ia0?=ra1+ta? // x?2?ia0?
x?2?ib0?=rb1+tb? // x?2?ia0?
ra1=ra1-ta?
rb1=rb1-tb?
sa1=x?2?ia0+1?+x?2?ia2+1??
sb1=x?2?ib0+1?+x?2?ib2+1??
sa2=x?2?ia0+1?-x?2?ia2+1??
sb2=x?2?ib0+1?-x?2?ib2+1??
ta=x?2?ia1+1?+x?2?ia3+1??
tb=x?2?ib1+1?+x?2?ib3+1??
x?2?ia0+1?=sa1+ta?
x?2?ib0+1?=sb1+tb?
sa1=sa1-ta?
sb1=sb1-tb?
x?2?ia2?=?ra1?coa2+sa1?sia2?>>15?
x?2?ib2?=?rb1?cob2+sb2?sib2? >>15?
x?2?ia2+1?=?sa1?coa2-ra1?sia2? >>15?
x?2?ib2+1?=?sb1?cob2-rb1?sib2? >>15?
ta=x?2?ia1+1?-x?2?ia3+1??
ra1=ra2+ta?
rb1=rb2+tb?
ra2=ra2-ta?
rb2=rb2-tb?
ta=x?2?ia1?-x?2?ia3??
tb=x?2?ib1?-x?2?ib3??
sa1=sa2-ta?
sb1=sb2-tb?
sa2=sa2+ta?
sb2=sb2+tb?
x?2?ia1?=?ra1?coa1+sa1?sia1? >>15?
x?2?ib1?=?rb1?cob1+sb1?sib1? >>15?
x?2?ia1+1?=?sa1?coa1-ra1?sia1? >>15?
x?2?ib1+1?=?sb1?cob1-rb1?sib1? >>15?
x?2?ia3?=?ra2?coa3+sa2?sia3? >>15?
x?2?ib3?=?rb2?cob3+sb2?sib3? >>15?
x?2?ia3+1?=?sa2?coa3-ra2?sia3? >>15?
x?2?ib3+1?=?sb2?cob3-rb2?sib3? >>15??
?
ie <<=2?
【基于DSP的電力線載波OFDM調(diào)制解調(diào)器】相關(guān)文章:
基于DSP的自動(dòng)對(duì)焦系統(tǒng)08-06
基于DSP平臺(tái)的USB接口設(shè)計(jì)08-06
基于DSP的信道譯碼算法優(yōu)化08-06
基于DSP的紙幣號(hào)碼識(shí)別系統(tǒng)08-06
基于DSP的USB口數(shù)據(jù)采集分析系統(tǒng)08-06
基于DSP的Bluetooth嵌入式系統(tǒng)應(yīng)用08-06
基于DSP的網(wǎng)絡(luò)通信程序設(shè)計(jì)08-06