@(162 - 信號處理)javascript
<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=default"></script>java
整理轉載自:給小白圖示講解OFDMgit
下面以圖示爲主講解OFDM,以"易懂"爲第一要義。 注:下面的討論若是不作說明,均假設爲理想信道。 網絡
OFDM的"O"表明着"正交",那麼就先說說正交吧。 首先說說最簡單的狀況,sin(t)和sin(2t)是正交的<font color = red>【證實:sin(t)·sin(2t)在區間[0,2π]上的積分爲0】</font>,而正弦函數又是波的最直觀描述,所以咱們就以此做爲介入點。既然本文說的是圖示,那麼咱們就用圖形的方式來先理解一下正交性。【你若是能從向量空間的角度,高屋建瓴的看待這個問題的話,你也就不是"小白"了,R U?】 在下面的圖示中,在[0,2π]的時長內,採用最易懂的幅度調製方式傳送信號:sin(t)傳送信號a,所以發送a·sin(t),sin(2t)傳送信號b,所以發送b·sin(2t)。<font color=red>其中,sin(t)和sin(2t)的用處是用來承載信號,是收發端預先規定好的信息,在本文中一概稱爲子載波;調製在子載波上的幅度信號a和b,纔是須要發送的信息。</font>所以在信道中傳送的信號爲a·sin(t)+b·sin(2t)。在接收端,分別對接收到的信號做關於sin(t)和sin(2t)的積分檢測,就能夠獲得a和b了。(如下圖形採用google繪製) 圖一:發送a信號的sin(t)app
圖二:發送b信號的sin(2t)【注意:在區間[0,2π]內發送了兩個完整波形】less
圖三:發送在無線空間的疊加信號a·sin(t)+b·sin(2t)ide
圖四:接收信號乘sin(t),積分解碼出a信號。【如前文所述,傳送b信號的sin(2t)項,在積分後爲0】函數
圖五:接收信號乘sin(2t),積分解碼出b信號。【如前文所述,傳送a信號的sin(t)項,在積分後爲0】性能
圖六:流程圖 google
到了這裏,也許你會出現兩種狀態:
一種是:啊,原來是這樣,我懂了。 一種是:啊,怎麼會這樣,我徹底沒法想象。這裏要說的是,你根本用不着去想象(visualize)。 數學中是如此定義正交的,數學證實了它們的正交性,那麼他們就是正交的,【他們就能夠互不干擾的承載各自的信息】。選取sin(t)和sin(2t)做爲例子,正是由於它們是介於直觀和抽象的過渡地帶,趟過去吧。
上面的圖示雖然簡單,可是倒是全部複雜的基礎。 1.1 下一步,將sin(t)和sin(2t)擴展到更多的子載波序列${sin(2π·Δf·t),sin(2π·Δf·2t),sin(2π·Δf·3t),...,sin(2π·Δf·kt)}$ (例如k=16,256,1024等),應該是很好理解的事情。 其中,$2π$是常量;$Δf$是事先選好的載頻間隔,也是常量。$1t,2t,3t,...,kt$保證了正弦波序列的正交性。
1.2 再下一步,將cos(t)也引入。容易證實,cos(t)與sin(t)是正交的,也與整個sin(kt)的正交族相正交。一樣,cos(kt)也與整個sin(kt)的正交族相正交。所以發射序列擴展到${sin(2π·Δf·t),sin(2π·Δf·2t),sin(2π·Δf·3t),...,sin(2π·Δf·kt),cos(2π·Δf·t),cos(2π·Δf·2t),cos(2π·Δf·3t),...,cos(2π·Δf·kt)}$也就瓜熟蒂落了。
1.3 通過前兩步的擴充,選好了2組正交序列sin(kt)和cos(kt),這只是傳輸的"介質"。真正要傳輸的信息還須要調製在這些載波上,即sin(t),sin(2t),...,sin(kt)分別幅度調製a1,a2,...,ak信號,cos(t),cos(2t),...,cos(kt)分別幅度調製b1,b2,...,bk信號。這2n組互相正交的信號同時發送出去,在空間上會疊加出怎樣的波形呢?作簡單的加法以下:$$f(t) = a1·sin(2π·Δf·t) + \ a2·sin(2π·Δf·2t) + \ a3·sin(2π·Δf·3t) + \ ... \ ak·sin(2π·Δf·kt) + \ b1·cos(2π·Δf·t) + \ b2·cos(2π·Δf·2t) + \ b3·cos(2π·Δf·3t) + \ ...\ bk·cos(2π·Δf·kt) +\ = ∑ak·sin(2π·Δf·kt) + ∑bk·cos(2π·Δf·kt) $$<font color=red>【公式1-1:實數的表達】</font>爲了方便進行數學處理,上式有複數表達形式以下: $f(t) = ∑Fk·e^{j·2π·Δf·kt}$ <font color =red>【公式1-2:複數的表達】</font>
上面的公式能夠這樣看:每一個子載波序列都在發送本身的信號,互相交疊在空中,最終在接收端看到的信號就是f(t)。接收端收到雜糅信號f(t)後,再在每一個子載波上分別做相乘後積分的操做,就能夠取出每一個子載波分別承載的信號了。
而後,多看看公式1-1和公式1-2!!!發現咯?這就是傅里葉級數嘛。
若是將t離散化,那麼就是離散傅立葉變換。因此纔有OFDM以FFT來實現的故事。將在下面的章節進行更多的描述。
遵循古老的傳統,F表示頻域,f表示時域,因此能夠從公式1-2中看出,每一個子載波上面調製的幅度,就是頻域信息。相似的說法是:OFDM傳輸的是頻域信號。這種說法有些彆扭,可是不少教程或文章會使用這樣的說明方式,就看讀者如何理解了。若是純粹從公式或者子載波來看,這種說法其實也是很直接的闡述了。
上面1.1-1.3的擴展,可以下圖所示:
圖七:時域上的OFDM系統圖
1.4 還有這一步嗎?實際上是有的。"小白"你能夠先想一想,想不到的話先往下看,由於這須要在頻域中考量,因此我寫在後面了。【也可參考[1]】
<font color = blue>將上述的時域分析配上LTE的實現,有以下狀況: 【注1:本段描述須要有LTE物理層的基本知識,若是看不明白,請暫時跳過,看完整篇文章後再回看】 【注2:LTE並不是時域的實現,下面僅僅是套用LTE的參數,作一個參考分析】 子載波的間隔Δf=15kHz,一個OFDM symbol的發送時間是66.7us,能夠發現,15kHz*66.67us=1,即基帶上一個OFDM symbol的發送時間正好發送一個一次諧波的完整波形。對於10M的LTE系統,採用的是1024個子載波,可是隻有中間600個(不含最中間的直流)子載波被用於傳送數據。在一個OFDM symbol的時間內(即66.67us),靠近中間的兩個一次諧波傳輸一個完整波形,再靠外一點的兩個二次諧波傳輸兩個完整波形,以此類推至最外面的兩個300次諧波傳輸了300個完整的波形。在這66.67us內,600個子載波互相正交,其上分別承載了600個複數信號。 上面的說法有點囉嗦,不如圖示來得直觀。原本準備再畫一圖的,不過一來上面已經有了相似的圖,實是大同小異;二來,600個子載波,也太多了點。。。</font> OK,說到這裏,從時域上面來看OFDM,實際上是至關簡潔明快討人喜歡的。不過,一個系統若要從時域上來實現OFDM,難度太大,時延和頻偏都會嚴重破壞子載波的正交性,從而影響系統性能。這點在各類教材文章中都會有說起,我就不贅述了。 下面將轉入頻域來描述OFDM,因爲頻域不甚直觀,的確會稍稍讓人費解。不過只要時刻想着時域子載波間的疊加,一切都會好起來。
##章節二:頻域上的OFDM——子載波正交後,達到理想頻帶利用率
第一章節時域上的討論開始於OFDM中的"O";本章節頻域上咱們從"FDM"開始。 先圖例一個常規FDM的系統圖: 圖11:常規FDM,兩路信號頻譜之間有間隔,互相不干擾
爲了更好的利用系統帶寬,子載波的間距能夠儘可能靠近些。
圖12:靠得很近的FDM
實際中考慮到硬件實現,解調第一路信號時,已經很難徹底去除第二路信號的影響了(電路的實現畢竟不能像剪刀裁紙同樣利落),兩路信號互相之間可能已經產生干擾了
還能再近些嗎?能夠的。這就是OFDM的來歷啊,近到徹底等同於奈奎斯特帶寬(後面有詳述),使頻帶的利用率達到了理論上的最大值。
圖13:繼續靠近,間隔頻率互相正交,所以頻譜雖然有重疊,可是仍然是沒有互相干擾的。神奇的OFDM
上面三個圖的確有點小兒科,不知道"小白"是否是已經在內心吶喊:這誰不知道呀!不過我在這裏花時間畫了三張圖,總仍是有所考量的: a. 做爲上一個章節和本章節之間的補充和鏈接,說明一下OFDM在頻域上面的表現,亦即OFDM的本源來歷。 b. 引導思考:信號的帶寬是多少? c. 引導思考:OFDM正交頻譜疊加部分到底有多寬呢?結合1.4,先想一想,再往下看,會更好。
再次回到正軌,請回看第一節中的圖一至圖六等時域波形圖,圖示了在時域上,波形的調製,疊加接收,以及最終的解碼。讓咱們看看圖一至圖三中的每一個步驟在頻域上是如何表現的。
首先來看sin(t)。"小白"呀"小白",你且說說sin(t)的頻譜是啥呀?"小白"弱弱的說:是一個衝激。是的,sin(t)是個單一的正弦波,表明着單一的頻率,因此其頻譜天然是一個衝激。不過其實圖一中所示的sin(t)並非真正的sin(t),而只是限定在[0,2π]以內的一小段。無限長度的信號被限制在一小截時間以內,【就比如從一個完整的人身上逮下一根頭髮,而後把整我的都丟掉,以發代人】其頻譜也再也不是一個衝激了。
對限制在[0,2π]內的sin(t)信號,至關於無限長的sin(t)信號乘以一個[0,2π]上的門信號(矩形脈衝),其頻譜爲二者頻譜的卷積。sin(t)的頻譜爲衝激,門信號的頻譜爲sinc信號(即sin(x)/x信號)。衝激信號卷積sinc信號,至關於對sinc信號的搬移。因此分析到這裏,能夠得出圖一的時域波形其對應的頻譜以下:
圖21:限定在[0,2π]內的a·sin(t)信號的頻譜,即以sin(t)爲載波的調製信號的頻譜
sin(2t)的頻譜分析基本相同。須要注意的是,因爲正交區間爲[0,2π],所以<font color = red>sin(2t)在相同的時間內發送了兩個完整波形。相同的門函數保證了兩個函數的頻譜形狀相同,只是頻譜被搬移的位置變了:</font>
圖22:限定在[0,2π]內的b·sin(2t)信號的頻譜,即以sin(2t)爲載波的調製信號的頻譜
將sin(t)和sin(2t)所傳信號的頻譜疊加在一塊兒,以下:
圖23:a·sin(t)+b·sin(2t)信號的頻譜 圖13:繼續靠近,間隔頻率互相正交,所以頻譜雖然有重疊,可是仍然是沒有互相干擾的。神奇的OFDM
圖23和圖13,均是頻域上兩個正交子載波的頻譜圖。比一下,發現了嗎?不太同樣! 是的,想必你已經想起來了,這是由於基帶信號在傳輸前,通常會經過脈衝成型濾波器的結果。好比使用"升餘弦滾降濾波器"後,圖23所示的信號就會被修理成圖13所示的信號了。這樣能夠有效的限制帶寬外部的信號,在保證本路信號沒有碼間串擾的狀況下,既能最大限度的利用帶寬,又能減小子載波間的各路信號的相互干擾。這也是1.4中沒有說起的,更多的可參考[1]
貼士:脈衝成型濾波器做用於頻域,能夠"看做"時域中的每一個碼元都是以相似sinc信號發出的。不必糾結於發送端碼元的時域波形,只須要知道在接收端經過合適的採樣就能夠無失真的恢復信號就OK咯。
這裏用到的是奈奎斯特第一準則,在下面的框框內會稍做描述:
奈奎斯特第一準則請自行google, 這裏說說其推論:碼元速率爲1/T(即每一個碼元的傳輸時長爲T),進行無碼間串擾傳輸時,所需的最小帶寬稱爲奈奎斯特帶寬。
<font color = red>對於理想低通訊道,奈奎斯特帶寬W = 1/(2T) 對於理想帶通訊道,奈奎斯特帶寬W = 1/T</font>
在下面的圖31中,能夠看出信號的實際帶寬B是要大於奈奎斯特帶寬W(低通的1/(2T)或者帶通的1/T)的,這就是理想和現實的距離。
補充說明:本文提到的"帶寬",也即約定俗成的帶寬理解方式,指的是信號頻譜中>=0的部分。在從低通到帶通的搬移過程當中,由於將原信號負頻率部分也移出來了(也可理解爲同乘$e^{(j2πfct) }+ e^{(-j2πfct)}$的結果,見參考[2]),因此帶寬翻倍了。以下圖所示:
圖31:內涵豐富的圖,請參看上面和下面的說明文字
上面專門用框框列出奈奎斯特第一準則,還有一個重要目的就是說明下頻帶利用率的問題。頻帶利用率是碼元速率1/T和帶寬B(或者W)的比值。
理想狀況下,低通信道頻帶利用率爲2Baud/Hz;帶通信道頻帶利用率在傳輸實數信號時爲1Baud/Hz,傳送複數信號時爲2Baud/Hz(負頻率和正頻率都獨立攜帶信號)。因爲討論低通訊道時每每考慮的是實數信號,而討論帶通訊道時一般考慮的是複數信號,所以能夠簡單認爲:理想狀況下,信道的頻帶利用率爲2Baud/Hz。
實際狀況下,由於實際帶寬B要大於奈奎斯特帶寬W,因此實際FDM系統的頻帶利用率會低於理想狀況。
【說到這裏,終於能夠圖窮匕見了】
而OFDM的子載波間隔最低能達到奈奎斯特帶寬,也就是說(在不考慮最旁邊的兩個子載波狀況下),<font color =red>OFDM達到了理想信道的頻帶利用率。</font>
圖32:OFDM正交子載波,載頻間距爲奈奎斯特帶寬,保證了最大的頻帶利用率
<font color = blue> 將上述的頻域分析配上LTE的實現,有以下狀況: 【注:本段描述須要有LTE物理層的基本知識】 子載波的間隔Δf=15kHz,一個OFDM symbol的發送時間是66.7us。在10MHz信道上,1ms的子幀共傳輸14個OFDM symbol【不是15個,留空給CP了】,每個OFDM symbol攜帶600個複數信息,所以: 1. 從整個系統來看,波特率爲600*14*2/1ms = 16.8MBaud,佔據帶寬10MHz,所以帶寬利用率爲16.8MBaud/10MHz = 1.68Baud/Hz,接近2Baud/Hz的理想狀況。【注:一是CP佔用了每一個OFDM Symbol約1/15的資源,二是10MHz的頻帶並非滿打滿算的用於傳輸數據,其邊界頻帶須要留空以減小與鄰近信道的干擾】 2. 單從OFDM一個symbol來看,波特率爲600*2/66.7us = 18MBaud,佔據帶寬600*15kHz=9MHz【不考慮邊界子載波帶外問題】,所以其帶寬利用率爲18MBaud/9MHz=2Baud/Hz,符合上面的討論。 附:5M帶寬的WCDMA的chip rate = 3.84M/s,即碼率爲3.84M*2 = 7.68MBaud,帶寬5M,因此帶寬利用率爲7.68MBaud/5MHz = 1.536Baud/Hz,略遜於LTE的1.68Baud/Hz【注:WCDMA的脈衝成型採用滾降係數爲0.22的升餘弦濾波器,奈奎斯特帶寬爲3.84M】</font>
其實前兩章,我已經將本身的理解盡數表達了:<font color =red>第一節是從時域上來講子載波正交的原理;第二節是從頻域上來解釋子載波正交後,達到理想頻帶利用率的特性。</font>想來,雖然前兩章寫得較長,可是應該仍是很簡單、清晰、易懂的。 不過"小白"的卡殼,彷佛並不在於最基本的正交原理和頻帶利用率上,反而是IFFT變換中,充斥的各類時域頻域角色變換讓其眼花繚亂。
我的以爲要理解IFFT實現OFDM,最好的辦法仍是看公式。好比第一章節中的公式1-1和公式1-2,配上時域波形圖的疊加,不要太好理解喲。 固然,這裏的IFFT須要將時域離散化,所以公式$IFFT ≈ IDFT --> \ fn = 1/N·∑Fk·e(j·2π·k·n/N)$ <font color =red>【公式3-1,n爲時域離散後的序號,N爲總的IFFT個數,n∈[1,N]】</font> 關於公式3-1的理解方法,能夠是這樣的。 其中一種理解方式是聯繫第一章節的公式1-2:能夠發現公式3-1等號右側所表達的物理意義和公式1-2是相同的,均表明了不一樣子載波$e^{j·2π·k·n/N}$發送各自的信號Fk,而後在時域上的疊加造成fn,只不過如今疊加出來的時域不是連續波形,而是離散的時序抽樣點。 <font color=purple>另外一種更容易,更可愛的理解方式是:</font>在一個OFDM symbol的時長T內,用N個子載波各自發送一個信號F(k)(k∈[1,N]),等效於直接在時域上連續發送fn(n∈[1,N])N個信號,每一個信號發送T/N的時長。 在IFFT實現OFDM中,發送端添加了IFFT模塊、接收端添加了FFT模塊。 <font color =red>IFFT模塊的功能至關於說:別麻煩發送N個子載波信號了,我直接算出大家在空中會疊加成啥樣子吧;FFT模塊的功能至關於說:別用老式的積分方法來去除其他的正交子載波了,我幫你一次把N個攜帶信號全算出來吧。</font> 就是這樣,IFFT實現OFDM的系統用**"數學的方法"**,在發送端計算信號的疊加波形,在接收端去除正交子載波,從而大大簡化了系統的複雜度。
圖八:用IFFT實現OFDM。請自行對比圖七 最後說一句:"小白"乃"白富美"之"白",非"一貧如洗"之"白"也。
好吧,該結束了。再寫得長了更沒人看了。
本文最開始發表時是沒有這一段的,由於原文已然十分自恰,已將OFDM的原理說的很是清楚到位了。然而,這一段的內容倒是別的文章中講解OFDM時常常出現的橋段,所以以爲仍是有必要補充陳述一下本身的觀點。
【注:本小節爲補充章節,與本文邏輯沒有必然聯繫,可直接略過。】 從正文章節中,能夠發現<font color = red>做者的思路:從時域角度講解子載波的正交性;從頻域角度講解OFDM的頻帶利用率。</font>做者以爲這是最容易理解OFDM原理的方式。 可是教材中、網絡上,還有一種很是主流的講解方式:<font color = green>從頻域上「直觀的」看待子載波的正交性。</font> 好比下面這個圖: 圖51:從OFDM頻譜看待正交性
這種觀點的說法是:<font color = green>在每一個子載波的抽樣點上,其它的子載波信號抽樣值均爲0</font>(即上圖中的subcarrier Nulls對應某個子載波的Subcarrier Peak)。這種說法在圖示上有很是醒目的直觀效果,因此是各教材講義中的常客,可是至少從做者的角度來看,<font color = green>這種說法在涉及到後面的解調信號時,將變得很是難以理解和說明。</font>因此本文最開始的版本中是沒打算寫本小節的。 若是你看到這裏,以爲這種說法正中下懷,那麼恭喜你。 若是你看到這裏,以爲這種說法已經讓你的腦殼成了漿糊,那麼能夠回顧第一章節:時域上的正交性,而後繼續閱讀下面部分以解毒。
時域上的正交性和頻域上的正交性之間的關係該如何聯繫起來呢?回顧前面提到sin(t)和sin(2t)是正交的**【證實:sin(t)·sin(2t)在區間[0,2π]上的積分爲0】**,推廣到更通常的狀況是:${sin(2π·Δf·t),sin(2π·Δf·2t),sin(2π·Δf·3t),...,sin(2π·Δf·kt)}$在區間[0, 1/Δf]上正交(注:教材上通常寫爲u(t)在[-T/2,T/2]區間上怎麼怎麼着,本文就用不着那麼學術了)。能夠看出,這裏有一個關鍵的參數Δf:它既是頻域上子載波的間距,又肯定了時域上的信號傳輸時間。回顧時域頻域轉換圖:
圖52:同前面的圖21,時域波形和頻域的轉換
聯繫上圖的時頻轉換,能夠發現<font color = red>Δf既肯定了子載波自己(即上圖中第一排的兩個圖),又肯定了待發信號的傳輸時間(即上圖中第二排的兩個圖中信號的寬度),從而決定了信號頻譜的主瓣寬度以及旁瓣爲0的位置。</font>
這也意味着,OFDM系統中一旦選定了子載波間隔,時域上的正交性以及頻域上的正交性也就瓜熟蒂落的聯繫起來了。以下圖:
圖53:同前面的圖23,兩路信號的間隔Δf,保證了時域上的正交性、肯定了頻域上的旁瓣0點位置
其實對本做者而言,從頻譜上來看待OFDM的正交性有點顛倒因果的嫌疑。按個人理解:OFDM選用的正交子載波是因,頻譜中出現「其他子載波攜帶信號的旁瓣0點處於當前子載波攜帶信號主瓣峯值處」的現象是果。以果推因,謬矣。
要弄清楚信號的含義,能夠將整個物理層信號傳輸的過程給分解開來,能夠看到,不一樣的步驟對信號的處理是不一樣的。
<font color =red>信源編碼</font>着重於對信號的容量進行壓縮,提升傳輸效率(比特流); <font color =red>信道編碼</font>針對多變的信道插入冗餘信息,增長傳輸的穩定性(比特流); <font color =red>信號調製</font>則是將比特流轉成了特定的波形進行傳輸,根據調製方式的不一樣,便可能是一個比特對應一個波形,也有多是數個比特對應一個波形(高階調製)。
因此有個問題說不知道0對應什麼波形,1對應什麼波形,是由於沒弄清調製過程。<font color =red>在採用好比QAM64調製後,出來的symbol就是複數了</font>,這也是複數信號的來歷。通常的文章會將一個symbol看做一個輸入來看待和討論下面的步驟,而我這篇文章由於是從sin和cos入手來討論正交性的,所以我這篇文章中將一個symbol當作了兩個實數,故而在討論信道利用率時和主流「結論」有點出入,但實際上是各自的假設不一樣而已。 在實際的系統中,QAM symbol 進行了針對天線陣列的precoding和資源分配的mapping後,就會進入OFDM調製了(就是上面圖八的一站式IFFT計算)
留言中很多關於負頻率的疑問,已另做一文於此:《關於負頻率的物理意義》
參考[1]: Wireless Communications, Andrea Goldsmith - 12.2 Multicarrier Modulation with Overlapping Subchannels
參考[2]: Principles of Digital Communication - Gallager - 6.4.1 Double-sideband amplitude modulation