天天看點

OFDM那些事

在動筆之前,筆者百度了一下OFDM的定義。在百度百科中,找到了如下描述:

“OFDM(Orthogonal Frequency Division Multiplexing)即正交頻分複用技術,其主要思想是:将信道分成若幹正交子信道,将高速資料信号轉換成并行的低速子資料流,調制到在每個子信道上進行傳輸。正交信号可以通過在接收端采用相關技術來分開,這樣可以減少子信道之間的互相幹擾 ICI 。每個子信道上的信号帶寬小于信道的相關帶寬,是以每個子信道上的可以看成平坦性衰落,進而可以消除符号間幹擾。而且由于每個子信道的帶寬僅僅是原信道帶寬的一小部分,信道均衡變得相對容易。”

嗯,這個定義寫的很全面,這麼好的材料,不放到畢設論文的背景介紹中,實在是太可惜了。其實OFDM的原理就是這樣,樓主的講解就到此結束吧,謝謝大家~

哎喲,哪裡丢來的臭雞蛋?還有闆磚!*&%……%¥#@@!…

呵呵,跟大家開個玩笑。其實讀了上面的描述後,我們一定還有很多的疑問:什麼叫“正交子信道”?怎麼做才能“把高速資料信号轉換成并行的低速子資料流”?為什麼“子信道上的信号帶寬小于信道的相關帶寬時,可以消除符号間幹擾”?而“相關帶寬”、“符号間幹擾”又是什麼呢?

在接下來的幾篇文章中,我們就來一起探究這些問題。今天,我們先做個“熱身”。既然OFDM可以消除符号間幹擾(ISI,Inter-Symbol Interference),我們就來看看什麼是符号間幹擾。

想象下面的場景:一個男孩和一個女孩隔山相望。男孩要向女孩表白,喊出那攝人心魄的三個字。在他們遠處,有另一座大山,能夠将他們的喊話形成回聲。就是說,男孩喊出的話,會經過兩條路徑傳到女孩的耳朵裡,一個原聲,一個回聲。當女孩聽到男孩喊出的“我”字的時候,“我”字的回音還在路上。然而下一時刻,當“愛”字的原音到達女孩那裡時,“我”字的回音恰好也到了。兩個聲音同時到達,混在了一起。我們假設“我”和“愛”兩個音混在一起會形成“讨”字的音(這個假設實在是太壞了)。是以這一時刻,女孩聽到的是“讨”字。同樣,再下一時刻,女孩會聽到“你”字的原音和“愛”字的回音混疊在一起的聲音,假設這次她聽到的是“厭”字。最後,女孩聽到 了“你”字的回音,轉身就走了。

OFDM那些事
OFDM那些事
OFDM那些事

圖1 “回音”的例子

好好的一句“我愛你”卻因為回聲的存在,被活活“翻譯”成了“我讨厭你”,讓相愛變成了分手。在現實無線通信中,“符号間幹擾”就扮演着“回聲”的角色。在發送端和接收端之間,常常存在着不止一處的反射物,發出的信号經過這些物體的反射、折射,會經過不同的路徑到達接收端,也就是我們常說的“多徑傳播”。路徑不同,傳播的距離自然不同,信号到達接收端的時間也就不盡相同。如果這一時刻發出的符号因為多徑,延遲到了下一時刻才到達,就會與下一時刻的符号發生混疊,造成符号無法正确解出,這就是“符号間幹擾”,也叫“碼間串擾”。

通過上面簡單的例子,我們已經感性的了解了“回聲”幹擾“原聲”的成因。而且也能直覺的感覺到,要想避免兩個聲音的幹擾,男孩隻要放慢喊話的速度就好了,等一個字的所有回聲都傳遞到了女孩耳朵裡,再喊出第二個。這樣一來,女孩聽到的就是“我,我…,愛,愛…,你,你…”,無非是多聽了幾個重複的字而已,不會因為出現字和字之間的幹擾而造成誤會。但是,我們回看百科中OFDM的定義,卻發現它是這麼寫的:“當信号帶寬小于信道的相關帶寬時,可以消除符号間幹擾”。我們已經找到了從時間上避免符号間幹擾的方法,那麼,它和“信号帶寬”,“相關帶寬”之間又是什麼關系呢?

不要忘了帶寬的機關是赫茲(Hz),而赫茲代表的數學含義是秒分之一(1/s),就是一秒鐘發生的次數。是以當我們說一個信号的帶寬是10Hz,從離散域來看,可以了解為每秒有10個采樣點,換句話說,每隔0.1秒,就會到來一個采樣符号。現在我們把帶寬的意義轉換到時間域,再來解釋碼間串擾發生的條件,就好了解許多。既然每隔0.1秒就會到來一個符号,那麼如果多徑造成的最大時延小于這0.1秒,自然不會對下一個符号形成幹擾;但如果多徑時延大于了0.1秒,就會引起碼間串擾。碼間串擾發生的條件,就和多徑時延對應上了。而這0.1秒,就是碼間串擾發生的臨界條件。

OFDM那些事
OFDM那些事

圖2 “碼間串擾”的形成條件

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

OFDM那些事

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

有了這些基本概念,我們重新考慮一下之前找到的從時域上規避碼間串擾的方法。依然假設信号的帶寬是10Hz,這次假設有兩個反射體,分别将信号延時0.1秒和0.2秒。我們可以設計這樣的發送政策,即每隔0.2秒才發出一個新符号,這樣,前一個符号就不會對下一個符号造成幹擾了。而且,每發出一個符号,我們可以在之後的0.1秒和0.2秒分别收到該符号的兩個副本,這不就相當于利用多徑做了一次“純天然”的分集麼?在“猶抱琵琶半遮面--MIMO信道中隐藏的秘密”中,我們提到過,如何充分利用各種資源,實作“變廢為寶”,實乃一大學問。在這裡,原本讨厭的多徑又一次幫了我們的忙,“免費的”對發送符号進行了分集處理(注,多徑帶來的分集,從本質上講,是一種“頻率分集”)。但是别忘了,天下沒有白吃的午餐,我們來仔細盤算一下享受免費“多徑分集”的背後,付出的代價是什麼。

OFDM那些事

圖4 頻率分集

為了躲避碼間串擾,并且獲得多徑分集,我們每隔0.2秒(即每0.3秒)才發出一個符号,這不就相當于把原信号的帶寬從10Hz降到了約3.33Hz(1/0.3)麼。而相關帶寬是5Hz(1/0.2),哦,原來這種發送政策的實質是人為的讓信号帶寬小于相關帶寬,來避免碼間串擾的發生啊。這麼做雖然能獲得一些分集增益,但原來每秒能傳10個符号,現在隻能傳不到4個,犧牲了太多的系統速率,實在有些不劃算。

OFDM那些事

圖5 躲避“碼間串擾”的代價

看來,要想在充分利用資源的條件下,還獲得分集增益,碼間串擾是想躲也躲不掉了。我們隻有一條路可以走,那就是“幹掉”碼間串擾!下一回,我們就來看OFDM是怎麼消除碼間串擾的。

書接上回。上一篇我們說到了“碼間串擾”,還留下了一個問題,那就是如何在不降低信号帶寬的情況下,克服碼間串擾的影響,順便再獲得點“頻率分集”增益呢?今天我們就來聊聊這些話題。

OFDM那些事

圖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系統,形式上比較好了解,更重要的是,我們可以使用多天線的技術來處理碼間串擾了。

OFDM那些事

圖2将多徑傳播轉換成MISO系統

在着手“幹掉”碼間串擾之前,我們先來看一個有趣的例子,幫助我們直覺的了解消除碼間串擾時,所采用的思想。

正月十五,筆者和爸爸媽媽去看燈展。這次燈展,有三盞最漂亮的大花燈并排放在最顯眼的展台上。筆者很想去展台上和三盞燈合影,但參觀的人實在是太多了,管理者不得不做出以下規定:所有人排成一排,按順序從入口上展台,每盞燈前面隻能站一人,照完相後,從出口依次離開,每出去一人,就進來一人。

于是,筆者就去排隊了,爸爸媽媽在台下給筆者照相。當某一時刻,筆者走上展台,站在第一盞燈前的時候,其他燈前的遊客還沒有離開,筆者和三盞燈的合影就有了别人在旁邊“搶鏡”。同樣,在後面兩個時刻,有人出就有人進,筆者始終無法單獨和三盞燈來一次完美的合影,甚是郁悶。

OFDM那些事

圖3 筆者受到其他人幹擾,無法和三盞燈合影

當然,這點小事難不倒筆者,我想,既然沒有辦法單獨和三盞燈合影,那麼與其身邊站着其他人,不如和自己人一起照。于是筆者把相機交給好心人,拉着爸爸媽媽一起去排隊了。這一次,雖然剛上展台的時候,有遊客幹擾,但是總有一個時刻,展台上隻有筆者和爸爸媽媽三人,我們開開心心的來了一張合影。

此時筆者玩心大發,一張合影還不滿足,筆者想分别站在三盞燈下,和爸爸媽媽來三張合影。于是筆者拉着爸爸媽媽又一次去排隊了。這次,當筆者站在第3盞燈下和爸爸媽媽完成第一張合影後,迅速從出口跑出,繞回入口,緊跟着媽媽再次登上展台(可愛的管理者也不忍心阻止筆者的行動),這樣,筆者就在第一盞燈下,又來了一張合影;緊接着,筆者的爸爸也迅速繞回入口,跟在筆者後面再次上了展台,就這樣,我們完成了分别在三盞燈下合影三次的願望。

OFDM那些事
OFDM那些事

圖4 筆者和父母完成了合影的願望

看完上面的例子,大家是不是已經被筆者“繞”暈了?呵呵,沒關系,我們隻要知道筆者是如何“擠”掉其他人,讓台上隻有我們三人,并且如何通過“循環”入場,獲得三次合影機會的,就可以了。因為無線通信中,“幹掉”碼間串擾,用的也是這兩招:

(1)把連續多個符号看成一組,一起進行處理,“擠”開碼間串擾。這樣碼間串擾就隻會發生在開頭和最後的幾個符号上,中間的都是“自己人”,不受影響。

(2)通過在這一組符号的開頭或最後設定“循環字首”,幹掉碼間串擾。

我們把這兩招用數學語言,重新進行描述。仍然考慮開篇的傳播環境,這次我們把X1,X2,X3看成一組,并在前面加上“循環字首”X2,X3,形成【X2,X3,X1,X2,X3 】。然後與信道響應【h1 h2 h3】進行卷積,過程如下:

OFDM那些事

圖5 卷積過程和“燈盞”例子的類比

OFDM那些事

圖6 卷積過程的矩陣表達

我們一共能得到7個時刻的方程,但最後兩個說的是本組符号對下一組符号造成的幹擾,那就留給下一組符号去解決吧。我們隻看前5個時刻。很明顯,碼間串擾發生在前兩個時刻Y1,Y2(信道矩陣中0元素的位置就是幹擾符号出現的位置,因為我們沒有把幹擾符号寫進方程,是以該位置是0)。沒關系,受到幹擾的符号我們删掉,不要了。剩下三個時刻的方程,我們仔細一看,這不就是一個3發3收的MIMO傳輸方程麼?我們曾經把多徑傳播環境轉換成了MISO系統,現在又轉換成了MIMO系統!

OFDM那些事

圖7 得到3x3 MIMO系統的過程

說到MIMO系統,我們太熟悉了,至少,我們也花了三大篇文章詳細的解釋過了。還記得“知己知彼,百戰不殆--信道資訊的擷取和應用”中我們介紹的内容麼?MIMO系統的最佳傳輸矩陣是什麼?沒錯,是對角陣。怎樣才能獲得對角陣呢?對信道矩陣H進行SVD分解,得到H=U·S·V,其中S就是對角矩陣;接下來,就是用V的共轭轉置V*對發送信号進行“預編碼”,接收端在收到資料後,同樣乘以U*,這樣一來,發送的符号就像進入了獨立平行的正交子信道,互不幹擾。(對這部分内容不熟悉的朋友可以在本論壇内找到“知己知彼,百戰不殆--信道資訊的擷取和應用”。)

OFDM那些事

圖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)!

OFDM那些事

圖9 循環矩陣的SVD分解

這就是說,如果我們對一組資料先進行 “逆傅裡葉變換”,添加“循環字首”,再送入多徑信道;接收端删除掉受幹擾的“循環字首”後,做一個“傅裡葉變換”,得到的資料就好像經過了獨立平行的正交子信道,彼此之間不受任何幹擾。而整個這一套處理流程,不正是“OFDM”麼?呵呵,我們一整篇文章好像都在說MIMO,直到最後時刻才讓OFDM出場,OFDM同學一定等急了吧?

我們來梳理一下OFDM的處理流程:首先,對一組發送符号進行“逆傅裡葉變換”--相當于MIMO系統中的“預編碼”;然後,添加“循環字首”--為的是讓傳輸矩陣H變成“循環矩陣”,最後送入多徑信道;接收端舍棄受到幹擾的“循環字首”--碼間串擾就這樣被幹掉了;再做一個“傅裡葉變換”--相當于MIMO中對接收信号乘以U*;得到的符号就像經過了互不幹擾的正交子信道。

OFDM那些事

圖10 OFDM和MIMO的對比

通過這樣的類比,我們猛然發現,“原來OFDM其實也是MIMO啊”。兩者的差別在于:MIMO中,對信道H進行SVD分解,需要知道H具體内容;而在OFDM中,預編碼矩陣(即“逆傅裡葉變換矩陣”)不依賴于H。筆者本來想把這句話寫在文章的開頭,害怕被拍磚,最後決定還是放在後面吧。不過讀到這裡,相信大家也跟筆者有了同樣的感受了吧?至少,我們從另一個角度诠釋了OFDM的意義。

順便一提,在“燈展”的例子中,筆者實作了在三盞燈下分别合影的願望,而在OFDM系統中,每個發送符号都和h1 h2 h3相乘過,就是說,我們還獲得了一定的“頻率分集增益”哦。

既然OFDM 與MIMO有如此深的淵源,而且本回中,并未介紹OFDM相關參數的含義,比如OFDM符号長度,子載波間距等。下一回,我們就來看看OFDM與MIMO聯合使用時,會有什麼效果?如果我們要設計一個OFDM系統,它的參數應該怎麼選取呢?

-------------------------------------------------------------------------------

閑話:OFDM是“多載波”技術的一種,在單載波系統中,如果要消除碼間串擾,就要用到著名的“維特比算法”。關于算法的具體步驟,本文不再贅述。在計算機和網際網路領域,維特比算法有着更廣泛的應用,比如“語音識别”,“中文輸入法”等。對網際網路技術感興趣的朋友也可以閱讀吳軍老師的“數學之美”。

上一篇: 10.22.2
下一篇: MIMO/SIMO/SISO

繼續閱讀