經典OFDM原理解析,原文地址: http://bbs.c114.net/forum.php?mod=viewthread&tid=688171&page=1&authorid=854560
書接上回。上一篇我們說到了“碼間串擾”,還留下了一個問題,那就是如何在不降低信號帶寬的情況下,克服碼間串擾的影響,順便再獲得點“頻率分集”增益呢?今天我們就來聊聊這些話題。
圖1多徑傳播環境
來看圖1描述的傳播環境,假設從發送方到接收方一共有三條傳播路徑,信道增益分別爲h1,h2和h3。其中路徑2和3分別會對信號延時1個和2個時刻。即,在第一時刻,接收方會收到經過直視徑到達的信號X1(不考慮噪聲)
:
Y1 = h1 × X1;
第二時刻,接收方收到來自直視徑的X2和經反射徑1延時到達的X1:
Y2 = h1 × X2 + h2 × X1;
可以看到,碼間串擾已經發生。同理,在第三時刻,接收方收到的信號是
Y3 = h1 × X3 + h2 × X2
+ h3 ×X1;
以此類推。熟悉“信號系統”的朋友一眼就看出來了,這其實就是輸入序列X=[X1,X2,X3…]與信道響應h=【h1 h2 h3
】做了一個卷積,Y = h * X。所以卷積是描述多徑傳播最漂亮的數學表達。但是卷積的表達式仍然太繁瑣,我們不妨來做一個轉換。
我們把上面描述的傳播環境想象成一個3發1收的MISO系統,那麼,上述3條多徑信道響應【h1 h2 h3
】就可以看成從3根發送天線分別到接收天線間的直視信道響應,如圖2所示。我們設計以下的發送策略:第一時刻,從天線1發送符號X1,這時,接收端收到的就是:
Y1 = h1 × X1;
第二時刻,從天線2發送X1,從天線1發送X2,接收信號是:
Y2 = h1 × X2 + h2 × X1;
第三時刻,從天線3發送X1,天線2發送X2,天線1發送X3,我們有:
Y3 = h1 × X3 + h2 × X2
+ h3 ×X1;
以此類推。很明顯,這與卷積的表達式一模一樣。現在我們把具有碼間串擾的多徑傳播環境轉換成了熟悉的多天線MISO系統,形式上比較好理解,更重要的是,我們可以使用多天線的技術來處理碼間串擾了。
圖2將多徑傳播轉換成MISO系統
在着手“幹掉”碼間串擾之前,我們先來看一個有趣的例子,幫助我們直觀的理解消除碼間串擾時,所採用的思想。
正月十五,筆者和爸爸媽媽去看燈展。這次燈展,有三盞最漂亮的大花燈並排放在最顯眼的展臺上。筆者很想去展臺上和三盞燈合影,但參觀的人實在是太多了,管理員不得不做出以下規定:所有人排成一排,按順序從入口上展臺,每盞燈前面只能站一人,照完相後,從出口依次離開,每出去一人,就進來一人。
於是,筆者就去排隊了,爸爸媽媽在臺下給筆者照相。當某一時刻,筆者走上展臺,站在第一盞燈前的時候,其他燈前的遊客還沒有離開,筆者和三盞燈的合影就有了別人在旁邊“搶鏡”。同樣,在後面兩個時刻,有人出就有人進,筆者始終無法單獨和三盞燈來一次完美的合影,甚是鬱悶。
圖3 筆者受到其他人干擾,無法和三盞燈合影
當然,這點小事難不倒筆者,我想,既然沒有辦法單獨和三盞燈合影,那麼與其身邊站着其他人,不如和自己人一起照。於是筆者把相機交給好心人,拉着爸爸媽媽一起去排隊了。這一次,雖然剛上展臺的時候,有遊客干擾,但是總有一個時刻,展臺上只有筆者和爸爸媽媽三人,我們開開心心的來了一張合影。
此時筆者玩心大發,一張合影還不滿足,筆者想分別站在三盞燈下,和爸爸媽媽來三張合影。於是筆者拉着爸爸媽媽又一次去排隊了。這次,當筆者站在第3盞燈下和爸爸媽媽完成第一張合影後,迅速從出口跑出,繞回入口,緊跟着媽媽再次登上展臺(可愛的管理員也不忍心阻止筆者的行動),這樣,筆者就在第一盞燈下,又來了一張合影;緊接着,筆者的爸爸也迅速繞回入口,跟在筆者後面再次上了展臺,就這樣,我們完成了分別在三盞燈下合影三次的願望。
圖4 筆者和父母完成了合影的願望
看完上面的例子,大家是不是已經被筆者“繞”暈了?呵呵,沒關係,我們只要知道筆者是如何“擠”掉其他人,讓臺上只有我們三人,並且如何通過“循環”入場,獲得三次合影機會的,就可以了。因爲無線通信中,“幹掉”碼間串擾,用的也是這兩招:
(1)把連續多個符號看成一組,一起進行處理,“擠”開碼間串擾。這樣碼間串擾就只會發生在開頭和最後的幾個符號上,中間的都是“自己人”,不受影響。
(2)通過在這一組符號的開頭或最後設置“循環前綴”,幹掉碼間串擾。
我們把這兩招用數學語言,重新進行描述。仍然考慮開篇的傳播環境,這次我們把X1,X2,X3看成一組,並在前面加上“循環前綴”X2,X3,形成【X2,X3,X1,X2,X3
】。然後與信道響應【h1 h2 h3】進行卷積,過程如下:
圖5 卷積過程和“燈盞”例子的類比
圖6 卷積過程的矩陣表達
我們一共能得到7個時刻的方程,但最後兩個說的是本組符號對下一組符號造成的干擾,那就留給下一組符號去解決吧。我們只看前5個時刻。很明顯,碼間串擾發生在前兩個時刻Y1,Y2(信道矩陣中0元素的位置就是干擾符號出現的位置,因爲我們沒有把干擾符號寫進方程,所以該位置是0)。沒關係,受到干擾的符號我們刪掉,不要了。剩下三個時刻的方程,我們仔細一看,這不就是一個3發3收的MIMO傳輸方程麼?我們曾經把多徑傳播環境轉換成了MISO系統,現在又轉換成了MIMO系統!
圖7 得到3x3 MIMO系統的過程
說到MIMO系統,我們太熟悉了,至少,我們也花了三大篇文章詳細的解釋過了。還記得“知己知彼,百戰不殆--信道信息的獲取和應用”中我們介紹的內容麼?MIMO系統的最佳傳輸矩陣是什麼?沒錯,是對角陣。怎樣才能獲得對角陣呢?對信道矩陣H進行SVD分解,得到H=U·S·V,其中S就是對角矩陣;接下來,就是用V的共軛轉置V*對發送信號進行“預編碼”,接收端在收到數據後,同樣乘以U*,這樣一來,發送的符號就像進入了獨立平行的正交子信道,互不干擾。(對這部分內容不熟悉的朋友可以在本論壇內找到“知己知彼,百戰不殆--信道信息的獲取和應用”。)
圖8 MIMO雜談三中提到的預編碼過程
現在我們拿到了一個等效的3x3 MIMO傳輸系統,當然也可以按照上述過程來處理它。於是,我們對信道矩陣H進行SVD分解----此時此刻,本文最大的懸念就要揭曉了----注意矩陣H的特殊結構,因爲我們對發送數據添加了循環前綴,所以H的每一行就有一個“循環位移”,擁有這種“循環位移”結構的矩陣叫做“循環矩陣(Circulant
Matrix)”。循環矩陣的一個重要特性就是:對它進行SVD分解後,得到的左酉陣U是“逆傅里葉變換矩陣”(我們用W-1來表示,即U
= W-1);而右酉陣V是“傅里葉變換矩陣”(V = W,注:一組數據乘以“傅里葉變換矩陣”,就相當於對該組數據進行了傅里葉變換,並且有W-1W=
WW-1=I)!
圖9 循環矩陣的SVD分解
這就是說,如果我們對一組數據先進行 “逆傅里葉變換”,添加“循環前綴”,再送入多徑信道;接收端刪除掉受干擾的“循環前綴”後,做一個“傅里葉變換”,得到的數據就好像經過了獨立平行的正交子信道,彼此之間不受任何干擾。而整個這一套處理流程,不正是“OFDM”麼?呵呵,我們一整篇文章好像都在說MIMO,直到最後時刻才讓OFDM出場,OFDM同學一定等急了吧?
我們來梳理一下OFDM的處理流程:首先,對一組發送符號進行“逆傅里葉變換”--相當於MIMO系統中的“預編碼”;然後,添加“循環前綴”--爲的是讓傳輸矩陣H變成“循環矩陣”,最後送入多徑信道;接收端捨棄受到干擾的“循環前綴”--碼間串擾就這樣被幹掉了;再做一個“傅里葉變換”--相當於MIMO中對接收信號乘以U*;得到的符號就像經過了互不干擾的正交子信道。
圖10 OFDM和MIMO的對比
通過這樣的類比,我們猛然發現,“原來OFDM其實也是MIMO啊”。兩者的區別在於:MIMO中,對信道H進行SVD分解,需要知道H具體內容;而在OFDM中,預編碼矩陣(即“逆傅里葉變換矩陣”)不依賴於H。筆者本來想把這句話寫在文章的開頭,害怕被拍磚,最後決定還是放在後面吧。不過讀到這裏,相信大家也跟筆者有了同樣的感受了吧?至少,我們從另一個角度詮釋了OFDM的意義。
順便一提,在“燈展”的例子中,筆者實現了在三盞燈下分別合影的願望,而在OFDM系統中,每個發送符號都和h1 h2 h3相乘過,就是說,我們還獲得了一定的“頻率分集增益”哦。
既然OFDM 與MIMO有如此深的淵源,而且本回中,並未介紹OFDM相關參數的含義,比如OFDM符號長度,子載波間距等。下一回,我們就來看看OFDM與MIMO聯合使用時,會有什麼效果?如果我們要設計一個OFDM系統,它的參數應該怎麼選取呢?
-------------------------------------------------------------------------------
閒話:OFDM是“多載波”技術的一種,在單載波系統中,如果要消除碼間串擾,就要用到著名的“維特比算法”。關於算法的具體步驟,本文不再贅述。在計算機和互聯網領域,維特比算法有着更廣泛的應用,比如“語音識別”,“中文輸入法”等。對互聯網技術感興趣的朋友也可以閱讀吳軍老師的“數學之美”。
|