MIMO技術雜談(四):OFDM那些事

經典OFDM原理解析,原文地址: http://bbs.c114.net/forum.php?mod=viewthread&tid=688171&page=1&authorid=854560

   各位通信戰友,好久不見~ 一別數月,感謝大家這段時間對本貼的支持,看到那麼多留言和回覆,筆者也十分感動。春節期間沒來得及跟大家問聲好,就借用韓喬生老師的話吧:“端午節剛過,我給大家拜個晚年!”。
    都說這個冬天是通信業的寒冬,不知道大家的冬天過的怎麼樣?不管怎麼說,春天的腳步已經臨近,又到了...咳咳,“學習”的季節,讓我們繼續努力吧。
    承蒙大家對“MIMO技術雜談”前三章的支持,筆者收到了戰友們很多反饋。其中有很多朋友問起了OFDM技術,也提到了爲什麼OFDM要和MIMO結合使用。恕筆者分身乏術,沒有辦法一一回答大家的問題。所以筆者決定再開一貼,跟戰友們聊聊OFDM那些事,一來是兌現“續寫”的承諾,二來這裏面有一些思想還是很有意思的,筆者願與戰友們分享。筆者能力有限,若有不對的地方,歡迎大家指正,我們一起學習,一起進步~
    OFDM話題的篇幅比較長,考慮到之前三篇文章也挺長,大家對着屏幕讀起來比較費勁,所以筆者決定適當縮短每篇的篇幅,分三次說完OFDM吧。以後每週就不另開新帖,直接在這篇帖子裏更新了。閒話不多說,我們開聊:
OFDM那些事
        在動筆之前,筆者百度了一下OFDM的定義。在百度百科中,找到了如下描述:
“OFDM(Orthogonal Frequency Division Multiplexing)即正交頻分複用技術,其主要思想是:將信道分成若干正交子信道,將高速數據信號轉換成並行的低速子數據流,調製到在每個子信道上進行傳輸。正交信號可以通過在接收端採用相關技術來分開,這樣可以減少子信道之間的相互干擾 ICI 。每個子信道上的信號帶寬小於信道的相關帶寬,因此每個子信道上的可以看成平坦性衰落,從而可以消除符號間干擾。而且由於每個子信道的帶寬僅僅是原信道帶寬的一小部分,信道均衡變得相對容易。”
        嗯,這個定義寫的很全面,這麼好的材料,不放到畢設論文的背景介紹中,實在是太可惜了。其實OFDM的原理就是這樣,樓主的講解就到此結束吧,謝謝大家~
        哎喲,哪裏丟來的臭雞蛋?還有板磚!*&%……%#@@
        呵呵,跟大家開個玩笑。其實讀了上面的描述後,我們一定還有很多的疑問:什麼叫“正交子信道”?怎麼做才能“把高速數據信號轉換成並行的低速子數據流”?爲什麼“子信道上的信號帶寬小於信道的相關帶寬時,可以消除符號間干擾”?而“相關帶寬”、“符號間干擾”又是什麼呢?
        在接下來的幾篇文章中,我們就來一起探究這些問題。今天,我們先做個“熱身”。既然OFDM可以消除符號間干擾(ISIInter-Symbol Interference),我們就來看看什麼是符號間干擾。
        想象下面的場景:一個男孩和一個女孩隔山相望。男孩要向女孩表白,喊出那攝人心魄的三個字。在他們遠處,有另一座大山,能夠將他們的喊話形成回聲。就是說,男孩喊出的話,會經過兩條路徑傳到女孩的耳朵裏,一個原聲,一個回聲。當女孩聽到男孩喊出的“我”字的時候,“我”字的迴音還在路上。然而下一時刻,當“愛”字的原音到達女孩那裏時,“我”字的迴音恰好也到了。兩個聲音同時到達,混在了一起。我們假設“我”和“愛”兩個音混在一起會形成“討”字的音(這個假設實在是太壞了)。所以這一時刻,女孩聽到的是“討”字。同樣,再下一時刻,女孩會聽到“你”字的原音和“愛”字的迴音混疊在一起的聲音,假設這次她聽到的是“厭”字。最後,女孩聽到 了“你”字的迴音,轉身就走了。
1.jpg
2.jpg
3.jpg
4.jpg
圖1 “迴音”的例子
        好好的一句“我愛你”卻因爲回聲的存在,被活活“翻譯”成了“我討厭你”,讓相愛變成了分手。在現實無線通信中,“符號間干擾”就扮演着“回聲”的角色。在發送端和接收端之間,常常存在着不止一處的反射物,發出的信號經過這些物體的反射、折射,會經過不同的路徑到達接收端,也就是我們常說的“多徑傳播”。路徑不同,傳播的距離自然不同,信號到達接收端的時間也就不盡相同。如果這一時刻發出的符號因爲多徑,延遲到了下一時刻纔到達,就會與下一時刻的符號發生混疊,造成符號無法正確解出,這就是“符號間干擾”,也叫“碼間串擾”。
        通過上面簡單的例子,我們已經感性的瞭解了“回聲”干擾“原聲”的成因。而且也能直觀的感覺到,要想避免兩個聲音的干擾,男孩只要放慢喊話的速度就好了,等一個字的所有回聲都傳遞到了女孩耳朵裏,再喊出第二個。這樣一來,女孩聽到的就是“我,我…,愛,愛…,你,你…”,無非是多聽了幾個重複的字而已,不會因爲出現字和字之間的干擾而造成誤會。但是,我們回看百科中OFDM的定義,卻發現它是這麼寫的:“當信號帶寬小於信道的相關帶寬時,可以消除符號間干擾”。我們已經找到了從時間上避免符號間干擾的方法,那麼,它和“信號帶寬”,“相關帶寬”之間又是什麼關係呢?
        不要忘了帶寬的單位是赫茲(Hz),而赫茲代表的數學含義是秒分之一(1/s,就是一秒鐘發生的次數。所以當我們說一個信號的帶寬是10Hz,從離散域來看,可以理解爲每秒有10個採樣點,換句話說,每隔0.1秒,就會到來一個採樣符號。現在我們把帶寬的意義轉換到時間域,再來解釋碼間串擾發生的條件,就好理解許多。既然每隔0.1秒就會到來一個符號,那麼如果多徑造成的最大時延小於這0.1秒,自然不會對下一個符號形成干擾;但如果多徑時延大於了0.1秒,就會引起碼間串擾。碼間串擾發生的條件,就和多徑時延對應上了。而這0.1秒,就是碼間串擾發生的臨界條件。

5.jpg
6.jpg
圖2 “碼間串擾”的形成條件

       我們不妨假設時延恰好在符號發出0.1秒後到達,這樣,時延發生的頻率,也是10Hz,而“時延的頻率(準確的說是最大時延的頻率)”就是“相關帶寬”。顯而易見,當“相關帶寬”等於“信號帶寬”時,恰好會發生碼間串擾。如果時延很短,比如0.01秒後就到達,對應的“相關帶寬”是100Hz,大於“信號帶寬”,碼間串擾就不會發生;如果時延很長,在符號發出後0.2秒纔到達,“相關帶寬”是5Hz,小於“信號帶寬”,碼間串擾將不可避免。


7.jpg
圖3 具有多徑時延的傳播環境

      有了這些基本概念,我們重新考慮一下之前找到的從時域上規避碼間串擾的方法。依然假設信號的帶寬是10Hz,這次假設有兩個反射體,分別將信號延時0.1秒和0.2秒。我們可以設計這樣的發送策略,即每隔0.2秒才發出一個新符號,這樣,前一個符號就不會對下一個符號造成干擾了。而且,每發出一個符號,我們可以在之後的0.1秒和0.2秒分別收到該符號的兩個副本,這不就相當於利用多徑做了一次“純天然”的分集麼?在“猶抱琵琶半遮面--MIMO信道中隱藏的祕密”中,我們提到過,如何充分利用各種資源,實現“變廢爲寶”,實乃一大學問。在這裏,原本討厭的多徑又一次幫了我們的忙,“免費的”對發送符號進行了分集處理(注,多徑帶來的分集,從本質上講,是一種“頻率分集”)。但是別忘了,天下沒有白吃的午餐,我們來仔細盤算一下享受免費“多徑分集”的背後,付出的代價是什麼。
8.jpg
圖4 頻率分集
      爲了躲避碼間串擾,並且獲得多徑分集,我們每隔0.2秒(即每0.3秒)才發出一個符號,這不就相當於把原信號的帶寬從10Hz降到了約3.33Hz1/0.3)麼。而相關帶寬是5Hz1/0.2),哦,原來這種發送策略的實質是人爲的讓信號帶寬小於相關帶寬,來避免碼間串擾的發生啊。這麼做雖然能獲得一些分集增益,但原來每秒能傳10個符號,現在只能傳不到4個,犧牲了太多的系統速率,實在有些不划算。
9.jpg
圖5 躲避“碼間串擾”的代價
      看來,要想在充分利用資源的條件下,還獲得分集增益,碼間串擾是想躲也躲不掉了。我們只有一條路可以走,那就是“幹掉”碼間串擾!下一回,我們就來看OFDM是怎麼消除碼間串擾的。

書接上回。上一篇我們說到了“碼間串擾”,還留下了一個問題,那就是如何在不降低信號帶寬的情況下,克服碼間串擾的影響,順便再獲得點“頻率分集”增益呢?今天我們就來聊聊這些話題。
圖片1.jpg
           圖1多徑傳播環境
來看圖1描述的傳播環境,假設從發送方到接收方一共有三條傳播路徑,信道增益分別爲h1h2h3。其中路徑23分別會對信號延時1個和2個時刻。即,在第一時刻,接收方會收到經過直視徑到達的信號X1(不考慮噪聲) :
Y1 = h1 × X1
第二時刻,接收方收到來自直視徑的X2和經反射徑1延時到達的X1
Y2 = h1 × X2 + h2 × X1
可以看到,碼間串擾已經發生。同理,在第三時刻,接收方收到的信號是
Y3 = h1 × X3 + h2 × X2 + h3 ×X1
以此類推。熟悉“信號系統”的朋友一眼就看出來了,這其實就是輸入序列X=[X1X2X3…]與信道響應h=【h1  h2  h3 】做了一個卷積,Y = h * X。所以卷積是描述多徑傳播最漂亮的數學表達。但是卷積的表達式仍然太繁瑣,我們不妨來做一個轉換。
我們把上面描述的傳播環境想象成一個31收的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.jpg
2將多徑傳播轉換成MISO系統
在着手“幹掉”碼間串擾之前,我們先來看一個有趣的例子,幫助我們直觀的理解消除碼間串擾時,所採用的思想。
正月十五,筆者和爸爸媽媽去看燈展。這次燈展,有三盞最漂亮的大花燈並排放在最顯眼的展臺上。筆者很想去展臺上和三盞燈合影,但參觀的人實在是太多了,管理員不得不做出以下規定:所有人排成一排,按順序從入口上展臺,每盞燈前面只能站一人,照完相後,從出口依次離開,每出去一人,就進來一人。
於是,筆者就去排隊了,爸爸媽媽在臺下給筆者照相。當某一時刻,筆者走上展臺,站在第一盞燈前的時候,其他燈前的遊客還沒有離開,筆者和三盞燈的合影就有了別人在旁邊“搶鏡”。同樣,在後面兩個時刻,有人出就有人進,筆者始終無法單獨和三盞燈來一次完美的合影,甚是鬱悶。
圖片3.jpg
3 筆者受到其他人干擾,無法和三盞燈合影
當然,這點小事難不倒筆者,我想,既然沒有辦法單獨和三盞燈合影,那麼與其身邊站着其他人,不如和自己人一起照。於是筆者把相機交給好心人,拉着爸爸媽媽一起去排隊了。這一次,雖然剛上展臺的時候,有遊客干擾,但是總有一個時刻,展臺上只有筆者和爸爸媽媽三人,我們開開心心的來了一張合影。
此時筆者玩心大發,一張合影還不滿足,筆者想分別站在三盞燈下,和爸爸媽媽來三張合影。於是筆者拉着爸爸媽媽又一次去排隊了。這次,當筆者站在第3盞燈下和爸爸媽媽完成第一張合影後,迅速從出口跑出,繞回入口,緊跟着媽媽再次登上展臺(可愛的管理員也不忍心阻止筆者的行動),這樣,筆者就在第一盞燈下,又來了一張合影;緊接着,筆者的爸爸也迅速繞回入口,跟在筆者後面再次上了展臺,就這樣,我們完成了分別在三盞燈下合影三次的願望。

圖片4.jpg
圖片5.jpg
4 筆者和父母完成了合影的願望
看完上面的例子,大家是不是已經被筆者“繞”暈了?呵呵,沒關係,我們只要知道筆者是如何“擠”掉其他人,讓臺上只有我們三人,並且如何通過“循環”入場,獲得三次合影機會的,就可以了。因爲無線通信中,“幹掉”碼間串擾,用的也是這兩招:
1)把連續多個符號看成一組,一起進行處理,“擠”開碼間串擾。這樣碼間串擾就只會發生在開頭和最後的幾個符號上,中間的都是“自己人”,不受影響。
2)通過在這一組符號的開頭或最後設置“循環前綴”,幹掉碼間串擾。
我們把這兩招用數學語言,重新進行描述。仍然考慮開篇的傳播環境,這次我們把X1X2X3看成一組,並在前面加上“循環前綴”X2X3,形成【X2X3X1X2,X3 】。然後與信道響應【h1 h2  h3】進行卷積,過程如下:
圖片6.jpg
5 卷積過程和“燈盞”例子的類比
圖片7.jpg
6 卷積過程的矩陣表達
我們一共能得到7個時刻的方程,但最後兩個說的是本組符號對下一組符號造成的干擾,那就留給下一組符號去解決吧。我們只看前5個時刻。很明顯,碼間串擾發生在前兩個時刻Y1Y2(信道矩陣中0元素的位置就是干擾符號出現的位置,因爲我們沒有把干擾符號寫進方程,所以該位置是0)。沒關係,受到干擾的符號我們刪掉,不要了。剩下三個時刻的方程,我們仔細一看,這不就是一個33收的MIMO傳輸方程麼?我們曾經把多徑傳播環境轉換成了MISO系統,現在又轉換成了MIMO系統!
圖片8.jpg
7 得到3x3 MIMO系統的過程
說到MIMO系統,我們太熟悉了,至少,我們也花了三大篇文章詳細的解釋過了。還記得“知己知彼,百戰不殆--信道信息的獲取和應用”中我們介紹的內容麼?MIMO系統的最佳傳輸矩陣是什麼?沒錯,是對角陣。怎樣才能獲得對角陣呢?對信道矩陣H進行SVD分解,得到H=U·S·V,其中S就是對角矩陣;接下來,就是用V的共軛轉置V*對發送信號進行“預編碼”,接收端在收到數據後,同樣乘以U*,這樣一來,發送的符號就像進入了獨立平行的正交子信道,互不干擾。(對這部分內容不熟悉的朋友可以在本論壇內找到“知己知彼,百戰不殆--信道信息的獲取和應用”。)
圖片9.jpg
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)!
圖片10.jpg
9 循環矩陣的SVD分解
這就是說,如果我們對一組數據先進行 “逆傅里葉變換”,添加“循環前綴”,再送入多徑信道;接收端刪除掉受干擾的“循環前綴”後,做一個“傅里葉變換”,得到的數據就好像經過了獨立平行的正交子信道,彼此之間不受任何干擾。而整個這一套處理流程,不正是“OFDM”麼?呵呵,我們一整篇文章好像都在說MIMO,直到最後時刻才讓OFDM出場,OFDM同學一定等急了吧?
我們來梳理一下OFDM的處理流程:首先,對一組發送符號進行“逆傅里葉變換”--相當於MIMO系統中的“預編碼”;然後,添加“循環前綴”--爲的是讓傳輸矩陣H變成“循環矩陣”,最後送入多徑信道;接收端捨棄受到干擾的“循環前綴”--碼間串擾就這樣被幹掉了;再做一個“傅里葉變換”--相當於MIMO中對接收信號乘以U*;得到的符號就像經過了互不干擾的正交子信道。
圖片11.jpg
10 OFDM和MIMO的對比
通過這樣的類比,我們猛然發現,“原來OFDM其實也是MIMO啊”。兩者的區別在於:MIMO中,對信道H進行SVD分解,需要知道H具體內容;而在OFDM中,預編碼矩陣(即“逆傅里葉變換矩陣”)不依賴於H。筆者本來想把這句話寫在文章的開頭,害怕被拍磚,最後決定還是放在後面吧。不過讀到這裏,相信大家也跟筆者有了同樣的感受了吧?至少,我們從另一個角度詮釋了OFDM的意義。
順便一提,在“燈展”的例子中,筆者實現了在三盞燈下分別合影的願望,而在OFDM系統中,每個發送符號都和h1 h2 h3相乘過,就是說,我們還獲得了一定的“頻率分集增益”哦。
既然OFDM MIMO有如此深的淵源,而且本回中,並未介紹OFDM相關參數的含義,比如OFDM符號長度,子載波間距等。下一回,我們就來看看OFDMMIMO聯合使用時,會有什麼效果?如果我們要設計一個OFDM系統,它的參數應該怎麼選取呢?
-------------------------------------------------------------------------------
閒話:OFDM是“多載波”技術的一種,在單載波系統中,如果要消除碼間串擾,就要用到著名的“維特比算法”。關於算法的具體步驟,本文不再贅述。在計算機和互聯網領域,維特比算法有着更廣泛的應用,比如“語音識別”,“中文輸入法”等。對互聯網技術感興趣的朋友也可以閱讀吳軍老師的“數學之美”。


發佈了49 篇原創文章 · 獲贊 404 · 訪問量 60萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章