有經(jīng)驗的順德網(wǎng)站建設(shè)成人職業(yè)技能培訓(xùn)班
文章目錄
- 前言
- 一、OFDM 基本原理及概念
- 1、OFDM 簡介
- 2、子載波
- 3、符號
- 4、子載波間隔與符號長度之間的關(guān)系
- 二、涉及的技術(shù)
- 1、保護間隔
- 2、交織
- 3、信道編碼
- 4、擴頻
- 5、導(dǎo)頻
- 6、RF(射頻)調(diào)制
- 7、信道估計
- 三、變量間的關(guān)系
- 四、IEEE 802.11a WLAN PHY 層標準
- 五、OFDM 基本參數(shù)的選擇
- 1、基本參數(shù)
- 2、有用符號持續(xù)時間T
- 3、子載波數(shù)
- 4、調(diào)制模式
- 5、具體實例
- 六、OFDM 的完整仿真過程
- 1、MATLAB 源碼
- 2、程序流程
- 3、仿真結(jié)果
- ①、QPSK 星座圖
- ②、AWGN 信道下誤比特率曲線
- ③、發(fā)送信號和接收信號對比
- 七、資源自取
前言
前面對 OFDM 的學(xué)習(xí)及了解還是比較淺顯的,例如沒有考慮到其中涉及的技術(shù),例如保護間隔、信道編碼、擴頻、導(dǎo)頻相關(guān)技術(shù),本文通過學(xué)習(xí)這些技術(shù),并進行 OFDM 的完整仿真過程。
之前博客中已經(jīng)介紹過的原理性東西這里就不再重復(fù)闡述了,對于之前沒有講過的概念會重點講述,可以詳見我之前的博客:
- OFDM原理及MATLAB仿真
- 基于OFDM的通信系統(tǒng)模擬實現(xiàn)
一個完整的 OFDM 系統(tǒng)的發(fā)射機和接收機如下圖所示:
- 過程介紹–發(fā)送端: OFDM 發(fā)射機的輸入位首先要進行編碼(有冗余),以減少特定信道的誤差,編碼后的位通過調(diào)制在相位和正交(IQ)平面上映射成星座,得到的 IQ 數(shù)據(jù)用復(fù)數(shù)表示。在 IQ 數(shù)據(jù)中插入導(dǎo)頻和保護頻帶,形成頻域 OFDM 符號。頻域 OFDM 符號通過反離散傅里葉變換(IDFT)轉(zhuǎn)化為時域,再通過并行到串行(P/S)的轉(zhuǎn)換轉(zhuǎn)化為一維(1D)。循環(huán)前綴(Cyclic Prefix,CP),是將時域 IQ 數(shù)據(jù)從末尾的一段復(fù)制到時域 IQ 數(shù)據(jù)的開頭,形成一個完整的時域 OFDM 符號,然后,基帶 IQ 數(shù)據(jù)流被向上轉(zhuǎn)換為射頻(RF),并通過 RF 前端進行空中廣播。通過無線信道傳播的無線電波被接收機的射頻前端接收并下變頻為基帶數(shù)字 IQ 數(shù)據(jù)。
- 過程介紹–接收端:載波同步器回收時域 OFDM 符號,并將其發(fā)送到基帶接收器。在接收機上,首先去除 CP,其余的 IQ 數(shù)據(jù)通過 FFT 轉(zhuǎn)換到頻域。信道均衡器估計信道的響應(yīng),并對接收到的被衰落信道扭曲的 IQ 數(shù)據(jù)進行均衡。接下來,經(jīng)過均衡的頻域 IQ 數(shù)據(jù)被解調(diào)為軟位(浮點數(shù)),再由信道解碼器將其進一步解碼為二進制位。輸出的比特流被送到下一層,并回收成數(shù)據(jù)包。請注意,信道均衡是針對衰減而不是加性高斯白噪聲(AWGN)信道的。
- 這里理解為傳輸?shù)念l域信號是因為IFFT是從頻域到時域,實際上這里 IFFT 充當(dāng)?shù)氖且粋€實現(xiàn)子載波正交的作用。
一、OFDM 基本原理及概念
1、OFDM 簡介
OFDM(Orthogonal Frequency Division Multiplexing),即正交頻分復(fù)用,是一種用于數(shù)字通信的調(diào)制技術(shù),它將數(shù)據(jù)流分為多個子載波,每個子載波都以不同的頻率傳輸數(shù)據(jù),被廣泛應(yīng)用于現(xiàn)代數(shù)字通信系統(tǒng)中,如 Wi-Fi,DAB,DVB,LTE,5G NR 等。OFDM 符號是 OFDM 技術(shù)中的一個重要組成部分,它是在子載波上傳輸信息的基本單位。
2、子載波
子載波(subcarrier)是數(shù)字通信中的一個概念,它是在正交頻分復(fù)用(OFDM)系統(tǒng)中使用的一種調(diào)制技術(shù)。在 OFDM 系統(tǒng)中,將寬帶信號分成多個獨立的子信道,每個子信道都可以看作是一個獨立的信號載波,稱為子載波。
在 OFDM 系統(tǒng)中,將頻率范圍分成多個子載波,每個子載波都有一個固定的頻率和相位,可以獨立傳輸數(shù)據(jù),如 5G NR 系統(tǒng)中,將 100MHz 的帶寬,按照 15KHz 的子載波帶寬進行分配,可以分成 6666 個子載波,而 4G LTE 20MHz 系統(tǒng)中的子載波僅有 1333 個。每個子載波的頻帶寬度比整個帶寬窄很多,這樣可以減少頻帶的浪費,并且在接收端可以更容易地進行信號分離和恢復(fù)。
3、符號
從時域上來看,ODFM 符號就是一個時間長度。利用了 OFDMA 原理中的串并變換技術(shù),原本高速的串行數(shù)據(jù)被轉(zhuǎn)換成低速的并行數(shù)據(jù)發(fā)送,原來傳 N 個符號(數(shù)字映射后的符號,譬如每個 QPSK 符號包含 2 個比特)的時間,現(xiàn)在相當(dāng)于只傳一個符號(但由于并行傳輸,N 個子載波上各傳一個,相當(dāng)于同時傳 N 個,只是這 N 個子載波之間互相獨立,并且所代表的數(shù)據(jù)僅是原始數(shù)據(jù)中的一小部分)。所用的這個時間稱為 OFDM 符號長度,或 OFDM 符號周期。
OFDM 符號由一組正交的子載波組成,每個子載波上攜帶獨立的信息
。因為子載波之間正交,所以它們可以在同一頻段上同時傳輸信息,從而實現(xiàn)了高效的頻譜利用。OFDM 符號通常使用快速傅里葉變換(FFT)來實現(xiàn),將時域的數(shù)據(jù)序列轉(zhuǎn)換為頻域的子載波信號。OFDM 符號的特點是抗多徑衰落和頻偏干擾能力強,同時也容易實現(xiàn)頻率同步。
在實際中,為了消除符號間的干擾,還要在符號間插入循環(huán)前綴(CP),即經(jīng)過 IFFT 之后的發(fā)送數(shù)據(jù)經(jīng)過并串變換,把位于最末的 CP 長度的符號拷貝到 OFDM 符號的起始端,用于消除符號間干擾。這時,實際的每個 OFDM 符號的長度變?yōu)? T s y m b o l + T c p T_{symbol}+T_{cp} Tsymbol?+Tcp? ,你所看到的 IFFT 長度 + CP 長度是以 OFDM 符號周期為單位的表示方法。
4、子載波間隔與符號長度之間的關(guān)系
OFDM 技術(shù)中,符號長度(也稱為時域上的時間長度)為 T 的子載波在頻域上是一個 Sinc 函數(shù),在 1/T 處過零。為了滿足正交性,各個子載波的峰值應(yīng)該對應(yīng)于其他子載波的過零點。因此,子載波的間隔應(yīng)為 1/T。例如,在 5G NR中,子載波的間隔為 15kHz,因此 OFDM 的符號長度為 1/15kHz=66.7us。這個長度是子載波的調(diào)制符號時間。
二、涉及的技術(shù)
1、保護間隔
- 作用:多徑信道會對 OFDM 符號造成 ISI 影響,破壞了子載波間的正交性。故需要
采取一些方法來消除多徑信道帶來的符號間干擾(ISI)影響,即插入保護間隔
。 - 方法:
- 一種是補零(zp),即在保護間隔中填充 0;
- 另一種是插入循環(huán)前綴(cp)或循環(huán)后綴(cs)實現(xiàn)OFDM的循環(huán)擴展(為了某種連續(xù)性)。
zp 是在保護間隔內(nèi)不插入任何信號,但是在這種情況下,由于多徑傳播的影響,會產(chǎn)生載波間干擾(ICI),即不同的子載波間會產(chǎn)生干擾。
一般采用 cp。cp 是將 OFDM 后部的采樣復(fù)制到前面,長度為 T c p T_{cp} Tcp?,故每個符號的長度為 T s y m = T s u b + T c p T_{sym}=T_{sub}+T_{cp} Tsym?=Tsub?+Tcp?, T s u b T_{sub} Tsub? 為數(shù)據(jù)部分子載波數(shù)。 T c p T_cp Tc?p 大于或等于多徑時延,符號間的 ISI 影響將被限制在保護間隔中,因此不會影響下一個 OFDM 的 FFT 變換。
上面所講可以參考下面的文章,文章中講解的很詳細:
多徑效應(yīng)、符號內(nèi)干擾、符號間干擾ISI、ICI
2、交織
- 作用:交織的作用是將突發(fā)錯誤轉(zhuǎn)換為隨機錯誤,有利于前向糾錯碼的譯碼,提高了整個通信系統(tǒng)的可靠性。
- 原理:交織技術(shù)是改變數(shù)據(jù)流的傳輸順序,將突發(fā)的錯誤隨機化,提高糾錯編碼的有效性。
- 方法:交織由兩個變換過程組成。
- 第一次變換保證了相鄰的編碼比特被映射到不相鄰的子載波上。
- 第二次變換保證了相鄰的編碼比特被分別映射到星座圖的重要和非重要比特上,避免出現(xiàn)長時間的低比特位映射。
- 交織塊的長度: Ncbps,對 qpsk、16qam、64qam 分別為 2、4、6,s=Ncbps/2,d=16。
3、信道編碼
- 作用:由于移動通信存在干擾和衰落,在信號傳輸過程中將出現(xiàn)差錯,故對數(shù)字信號必須采用糾、檢錯技術(shù),即糾、檢錯編碼技術(shù),以增強數(shù)據(jù)在信道中傳輸時抵御各種干擾的能力,提高系統(tǒng)的可靠性。
- 原理:信道編碼技術(shù)是通過給原數(shù)據(jù)添加冗余信息,從而獲得糾錯能力,適合糾正非連續(xù)的少量錯。
- 方法
- 卷積編碼是現(xiàn)代數(shù)字通信系統(tǒng)中常見的一種前向糾錯碼,區(qū)別于常規(guī)的線性分組碼,卷積編碼的碼字輸出不僅與當(dāng)前時刻的信息符號輸入有關(guān),還與之前輸入的信息符號有關(guān)。
- 這里的信道編碼一般采用卷積編碼,Viterbi 譯碼。
有關(guān)信道編碼的知識可以參考我之前寫的文章
:信道編碼譯碼及MATLAB仿真
4、擴頻
- 本質(zhì):“擴頻通信技術(shù)是一種信息傳輸方式,其信號所占有的頻帶寬度遠大于所傳信息必需的最小帶寬;頻帶的擴展是通過一個獨立的碼序列來完成,用編碼及調(diào)制的方法來實現(xiàn)的,與所傳信息數(shù)據(jù)無關(guān);在接收端則用同樣的碼進行相關(guān)同步接收、解擴及恢復(fù)所傳信息數(shù)據(jù)”
- 優(yōu)點和作用
- 根據(jù)香農(nóng)定理,帶寬和信噪比可用互換,擴頻擴展了帶寬,則對信噪比的要求可降低 。
- 對背景的噪聲(noise)、干擾(interference)以及自體多路徑干擾(Multipath interference)有免疫力。
- 對人為的刻意干擾(jamming)信號有良好的抵御能力
5、導(dǎo)頻
- 本質(zhì):導(dǎo)頻不攜帶信息,導(dǎo)頻是雙方已知的數(shù)據(jù),是用來做信道估計的。
- 原理:將訓(xùn)練信號(導(dǎo)頻)插入幀中,以便接收器可以根據(jù)導(dǎo)頻和數(shù)據(jù)類似地失真的假設(shè)來估計信道響應(yīng)。 設(shè)計了一種適當(dāng)?shù)膶?dǎo)頻模式來滿足這種假設(shè)。 OFDM系統(tǒng)中的典型導(dǎo)頻模式為:塊,梳狀和分散式。如下圖所示。
- 使用原理:在接收機中,雖然利用接收到的段訓(xùn)練序列、長訓(xùn)練序列可以進行信道均衡、頻率偏差校正,但符號還會存在一定的剩余偏差,且偏差會隨著時間的累積而累積,會造成所有子載波產(chǎn)生一定的相位偏移。因此,還需要不斷地對參考相位進行跟蹤。要能實現(xiàn)這個功能,需要在子載波中插入導(dǎo)頻符號。
6、RF(射頻)調(diào)制
- 方法:OFDM 調(diào)制器的輸出產(chǎn)生了一個基帶信號,將此基帶信號與所需傳輸?shù)念l率進行混頻操作,利用模擬技術(shù)或數(shù)字上變頻可完成。
- 原理:由于數(shù)字調(diào)制技術(shù)提高了處理 I、Q 信道之間的匹配性和數(shù)字 IQ 調(diào)制器相位的準確性,將會更加精確。
7、信道估計
- 本質(zhì):在OFDM系統(tǒng)的相干檢測中需要對信道進行估計,獲得詳細的信道信息,從而在接收端正確地解調(diào)出發(fā)射信號,是衡量一個無線通信系統(tǒng)性能的重要指標。
三、變量間的關(guān)系
- T u T_u Tu?:有效數(shù)據(jù)部分符號時間
- T G I T_{GI} TGI?:循環(huán)前綴長度
- T s T_s Ts?:OFDM 符號長度
- T s = T u + T G I T_s=T_u+T_{GI} Ts?=Tu?+TGI?
- N N N:子載波個數(shù)
- Δ f \Delta f Δf:子載波間隔
- Δ f = 1 T u \Delta f=\large \frac{1}{T_u} Δf=Tu?1?
- B B B:帶寬
- B = N ? Δ f B=N*\Delta f B=N?Δf
- T s a m p l e T_{sample} Tsample?:采樣時間間隔
- T s a m p l e = 1 B = T u N T_{sample}=\large \frac{1}{B}=\frac{T_u}{N} Tsample?=B1?=NTu?? (時域頻域的關(guān)系)
- F s F_s Fs?:采樣頻率
- F s = 1 T s a m p l e = N T u F_s=\large \frac{1}{T_{sample}}=\frac{N}{T_u} Fs?=Tsample?1?=Tu?N? (1s的采樣點數(shù))
四、IEEE 802.11a WLAN PHY 層標準
IEEE 802.11a WLAN PHY層標準的主要參數(shù):
其他參數(shù)以保護間隔長度為基礎(chǔ)進行定義。為了把保護間隔所占用的功率減小到 1 d B 1dB 1dB,(OFDM符號長度定為 4 μ s 4\mu s 4μs,除去 G I GI GI 外有效數(shù)據(jù)部分的長度為 3.2 μ s 3.2\mu s 3.2μs,進而可得子載波間隔為 1 3.2 μ s \large \frac{1}{3.2\mu s} 3.2μs1? = 312.5 k H z =312.5kHz =312.5kHz 。標準采用 48 個并行子載波進行數(shù)據(jù)傳輸,這樣當(dāng)調(diào)制方式為 BPSK 或 16QAM 時,可以提供的未編碼數(shù)據(jù)速率分別為 48 × 1 × 48×1× 48×1× 1 4 μ s \large \frac{1}{4\mu s} 4μs1?= 12 M b / s 12Mb/s 12Mb/s 和 48 × 4 × 48×4× 48×4× 1 4 μ s \large \frac{1}{4\mu s} 4μs1?= 48 M b / s 48Mb/s 48Mb/s。
IEEE 802.11a 中使用了 52 個子載波(實際上應(yīng)為 53 個,其中 k=0 處的直流子載波上不傳輸符號),由于 IFFT 算法基于 2 點,故采用 64 點的 IFFT。53 個子載波在頻率分配時分別在編號低端和高端留有 6 個和 5 個空符號,即 k=一32…,一27,27,…,31,這樣就可以保證系統(tǒng)的子載波頻譜集中,從而使得系統(tǒng)占用的頻譜帶寬盡可能窄,以節(jié)約頻譜資源,減少信道間干擾。所以,52 個非零子信道映射到 64 點輸入的 IFFT 當(dāng)中應(yīng)按照下面圖所指定的方式,把子信道 1~26 映射到相同標號的 IFFT 輸入端口;而子信道 -26~-1 被映射到標記為 38~63 的 IFFT 輸入端口;其余的 IFFT 輸入端口,即 27~37 輸入空值。
采用64點IFFT意味著系統(tǒng)的采樣間隔為0.05us,這樣采樣頻率至少應(yīng)該是20M samples/s
五、OFDM 基本參數(shù)的選擇
1、基本參數(shù)
各種 OFDM 參數(shù)的選擇就是需要在多項要求沖突中進行折衷考慮。通常來說,首先要確認 3 個參數(shù):帶寬、比特率、及保護間隔。
保護間隔
: 按照慣例,保護間隔的時間長度應(yīng)該為應(yīng)用移動環(huán)境信道的時延擴展均方根值的 2~4 倍。OFDM 符號周期長度
:確定保護間隔之后,則 OFDM 符號周期長度就確定了。為了最大限度的減少由于插入保護比特所帶來的信噪比的損失,OFDM 符號周期長度遠遠大于保護間隔長度。但是符號周期又不能任意大,否則就需要更多的子載波,帶寬不變,子載波間隔就變小,系統(tǒng)的實現(xiàn)復(fù)雜度就提高了,而且還加大了系統(tǒng)的峰值平均功率比,同時系統(tǒng)對頻率偏差更加敏感。因此,一般選擇符號周期長度是保護間隔的 5 倍,這樣,由于插入保護比特所造成的信噪比損耗只有 1dB 左右。子載波的數(shù)量
:確定保護間隔和符號周期長度之后,子載波的數(shù)量可由 ? 3 d B -3dB ?3dB 帶寬除以子載波間隔(即去掉保護間隔之后的符號周期的倒數(shù))得到?;蛘呖捎伤蟊忍厮俾食悦總€子信道的比特速率來確定子載波的數(shù)量。每個信道中所傳輸?shù)谋忍厮俾士捎烧{(diào)制類型、編碼速率、和符號速率來確定。
2、有用符號持續(xù)時間T
T 對子載波之間間隔、譯碼的等待周期都有影響,為了保持數(shù)據(jù)的吞吐量,子載波數(shù)目和 FFT 的長度要有相對較大的數(shù)量,這就導(dǎo)致符號持續(xù)時間變長??傊?#xff0c;符號周期長度的選擇以保證信道的穩(wěn)定為前提。
3、子載波數(shù)
N = 1 / T N=1/T N=1/T
其數(shù)值與 FFT 處理過的復(fù)數(shù)點數(shù)相對應(yīng),需適應(yīng)數(shù)據(jù)速率和保護間隔的要求。
4、調(diào)制模式
OFDM系統(tǒng)的調(diào)制模式基于功率和頻譜利用率來選擇,可采用 qam、psk。
為了使所有的點有相同的平均功率,二進制序列映射后的復(fù)數(shù)要歸一化。(BPSK\QPSK\16QAM\64QAM分別對應(yīng)乘以1、1/根號2、1/根號10、1/根號42),解調(diào)的時候再變回去。
5、具體實例
如下要求:(1)比特率為25Mbit/s(2)可容忍的時延擴展為200ns(3)帶寬小于18MHz。
- ①、由 200ns 時延擴展得保護間隔為 800ns;
- ②、由保護間隔 800ns 得符號周期長度 6*800ns=4.8us;
- ③、子載波的間隔選取 4.8-0.8=4us 的倒數(shù),即 250KHz;
- ④、由所要求的比特速率與OFDM符號速率的比值,每個符號需要傳送的比特:(25Mbit/s)/(1/4.8us)=120 bit。
- ⑤、為了完成上面 120bit 符號,有兩種選擇:利用 16QAM 和碼率為 1/2 的編碼方法,這樣每個子載波攜帶 2bit 的有用信息,因此需要 60 個子載波;另一種是利用 QPSK 和碼率為 3/4 的編碼方法,每個子載波攜帶 1.5bit 信息。因此需要 80 個子載波,然而 80 個子載波意外著帶寬:80*250KHz=20MHz,大于所給帶寬要求,故取第一種,即 60 個子載波。可利用 64 點 IFFT 來實現(xiàn),剩余 4 個子載波補 0。
六、OFDM 的完整仿真過程
1、MATLAB 源碼
OFDM.m
clc;
clear;
%全文原理介紹見:https://zhuanlan.zhihu.com/p/57967971
%————————————————————————————————————————————————————————%
%q1:ifft點數(shù)難道不是應(yīng)該等于子載波數(shù)嗎?子載波數(shù)與ifft點數(shù)的關(guān)系?
%a:ifft點數(shù)等于子載波數(shù)
%q2:對矩陣進行fft?
%a:y可以是一向量或矩陣,若y為向量,則Y是y的FFT,并且與y具有相同的長度。若y為一矩陣,則Y是對矩陣的每一列向量進行FFT。
%q3:怎么對ofdm信號上變頻
%————————————————————————————————————————————————————————%%% 參數(shù)設(shè)置N_sc=52; %系統(tǒng)子載波數(shù)(不包括直流載波)、number of subcarrierA
N_fft=64; % FFT 長度
N_cp=16; % 循環(huán)前綴長度、Cyclic prefix
N_symbo=N_fft+N_cp; % 1個完整OFDM符號長度
N_c=53; % 包含直流載波的總的子載波數(shù)、number of carriers
M=4; %4PSK調(diào)制
SNR=0:1:25; %仿真信噪比
N_frm=10; % 每種信噪比下的仿真幀數(shù)、frame
Nd=6; % 每幀包含的OFDM符號數(shù);一幀OFDM通常由多個連續(xù)的OFDM符號組成 ;OFDM符號時長 = 子載波時長 × 子載波數(shù)量;一幀由多個連續(xù)的OFDM符號組成,每個OFDM符號由多個子載波組成。
P_f_inter=6; %導(dǎo)頻間隔
data_station=[]; %導(dǎo)頻位置
L=7; %卷積碼約束長度
tblen=6*L; %Viterbi譯碼器回溯深度
stage = 3; % m序列的階數(shù)
ptap1 = [1 3]; % m序列的寄存器連接方式
regi1 = [1 1 1]; % m序列的寄存器初始值%% 基帶數(shù)據(jù)數(shù)據(jù)產(chǎn)生
P_data=randi([0 1],1,N_sc*Nd*N_frm);%% 信道編碼(卷積碼、或交織器)
%卷積碼:前向糾錯非線性碼
%交織:使突發(fā)錯誤最大限度的分散化
%[133 171]卷積碼其實是卷積碼(2,1,7)的最佳編碼形式
trellis = poly2trellis(7,[133 171]); %(2,1,7)卷積編碼;首先是7,他是1*k的vector,此處k為1,[171 133]是k*n的vector,此處n就是2,那么這個編碼就是1/2碼率的卷積碼,這個卷積碼的約束長度是7,也就是輸出與前7個輸入相關(guān),133,171是十進制數(shù),代表的是前面寄存器的抽頭位置。
code_data=convenc(P_data,trellis);%% qpsk調(diào)制
data_temp1= reshape(code_data,log2(M),[])'; %以每組2比特進行分組,M=4
data_temp2= bi2de(data_temp1); %二進制轉(zhuǎn)化為十進制
modu_data=pskmod(data_temp2,M,pi/M); % 4PSK調(diào)制
% figure(1);
scatterplot(modu_data),grid; %星座圖(也可以取實部用plot函數(shù))%% 擴頻
%————————————————————————————————————————————————————————%
%擴頻通信信號所占有的頻帶寬度遠大于所傳信息必需的最小帶寬
%根據(jù)香農(nóng)定理,擴頻通信就是用寬帶傳輸技術(shù)來換取信噪比上的好處,這就是擴頻通信的基本思想和理論依據(jù)。
%擴頻就是將一系列正交的碼字與基帶調(diào)制信號內(nèi)積
%擴頻后數(shù)字頻率變成了原來的m倍。碼片數(shù)量 = 2(符號數(shù))* m(擴頻系數(shù))
%————————————————————————————————————————————————————————%
% 由于m序列的均衡性、游程分布和自相關(guān)特性與隨機序列的基本性質(zhì)極其相似,所以通常將m序列稱為為噪聲(PN)序列,或稱為偽隨機序列
% 擴頻通信的主要目的是提高通信信號的抗干擾性和保密性。通過在發(fā)送信號時對其進行頻率擴展,使得信號在寬帶頻譜上占用更大的帶寬,從而可有效抵消窄帶干擾信號對于通信信號的影響
code = mseq(stage,ptap1,regi1,N_sc); % 擴頻碼的生成
code = code * 2 - 1; %將1、0變換為1、-1
modu_data=reshape(modu_data,N_sc,length(modu_data)/N_sc);
spread_data = spread(modu_data,code); % 擴頻
spread_data=reshape(spread_data,[],1);%% 插入導(dǎo)頻 梳狀結(jié)構(gòu)
P_f=3+3*1i; %Pilot frequency
P_f_station=1:P_f_inter:N_fft;%導(dǎo)頻位置(導(dǎo)頻位置很重要,why?)
pilot_num=length(P_f_station);%導(dǎo)頻數(shù)量for img=1:N_fft %數(shù)據(jù)位置if mod(img,P_f_inter)~=1 %mod(a,b)就是求的是a除以b的余數(shù)data_station=[data_station,img];end
end
data_row=length(data_station);
data_col=ceil(length(spread_data)/data_row);pilot_seq=ones(pilot_num,data_col)*P_f;%將導(dǎo)頻放入矩陣
data=zeros(N_fft,data_col);%預(yù)設(shè)整個矩陣
data(P_f_station(1:end),:)=pilot_seq;%對pilot_seq按行取if data_row*data_col>length(spread_data) % 判斷數(shù)據(jù)的總數(shù)是否大于擴展數(shù)據(jù)的長度,如果是,說明書菊矩陣中還有空余位置,需要補零data2=[spread_data;zeros(data_row*data_col-length(spread_data),1)];%將數(shù)據(jù)矩陣補齊,補0是虛載頻~
end%% 串并轉(zhuǎn)換
data_seq=reshape(data2,data_row,data_col);
data(data_station(1:end),:)=data_seq;%將導(dǎo)頻與數(shù)據(jù)合并%% IFFT
ifft_data=ifft(data); %% 插入保護間隔、循環(huán)前綴
Tx_cd=[ifft_data(N_fft-N_cp+1:end,:);ifft_data];%把ifft的末尾N_cp個數(shù)補充到最前面%% 并串轉(zhuǎn)換
Tx_data=reshape(Tx_cd,[],1);%由于傳輸需要%% 信道(通過多經(jīng)瑞利信道、或信號經(jīng)過AWGN信道)Ber=zeros(1,length(SNR));Ber2=zeros(1,length(SNR));
for jj=1:length(SNR)rx_channel=awgn(Tx_data,SNR(jj),'measured');%添加高斯白噪聲%% 串并轉(zhuǎn)換Rx_data1=reshape(rx_channel,N_fft+N_cp,[]);%% 去掉保護間隔、循環(huán)前綴Rx_data2=Rx_data1(N_cp+1:end,:);%% FFTfft_data=fft(Rx_data2);%% 信道估計與插值(均衡)data3=fft_data(1:N_fft,:); Rx_pilot=data3(P_f_station(1:end),:); %接收到的導(dǎo)頻h=Rx_pilot./pilot_seq; % 將接收到的導(dǎo)頻除以發(fā)送的導(dǎo)頻(pilot_seq)來估計信道的頻域響應(yīng)(h)% 將估計得到的信道響應(yīng)(h)插值到數(shù)據(jù)子載波的位置(data_station)上,并得到最終的信道估計結(jié)果(H)。H=interp1( P_f_station(1:end)',h,data_station(1:end)','linear','extrap');%分段線性插值:插值點處函數(shù)值由連接其最鄰近的兩側(cè)點的線性函數(shù)預(yù)測。對超出已知點集的插值點用指定插值方法計算函數(shù)值%% 信道校正 % 目的是消除信道引起的失真和干擾,使接收到的數(shù)據(jù)恢復(fù)到發(fā)送時的原始狀態(tài)。% 信道校正的原理是利用估計得到的信道響應(yīng)(H)對接收信號進行除法運算。由于信道引起的失真和干擾可以看作是對發(fā)送信號的乘性影響,% 通過將接收信號與信道響應(yīng)的倒數(shù)相乘,可以抵消信道引起的乘性失真和干擾。這樣,經(jīng)過信道校正后的數(shù)據(jù)(data_aftereq)將盡可能接近發(fā)送時的原始數(shù)據(jù)。data_aftereq=data3(data_station(1:end),:)./H;
%% 并串轉(zhuǎn)換data_aftereq=reshape(data_aftereq,[],1);data_aftereq=data_aftereq(1:length(spread_data));data_aftereq=reshape(data_aftereq,N_sc,length(data_aftereq)/N_sc);%% 解擴demspread_data = despread(data_aftereq,code); % 數(shù)據(jù)解擴
% if jj == 10
% tmp = reshape(demspread_data,[],1);
% scatterplot(tmp),grid;
% end%% QPSK解調(diào)demodulation_data=pskdemod(demspread_data,M,pi/M); De_data1 = reshape(demodulation_data,[],1);De_data2 = de2bi(De_data1);De_Bit = reshape(De_data2',1,[]);%% (解交織)
%% 信道譯碼(維特比譯碼)trellis = poly2trellis(7,[133 171]);rx_c_de = vitdec(De_Bit,trellis,tblen,'trunc','hard'); %硬判決%% 計算誤比特率[err,Ber2(jj)] = biterr(De_Bit(1:length(code_data)),code_data);%譯碼前的誤碼率[err, Ber(jj)] = biterr(rx_c_de(1:length(P_data)),P_data);%譯碼后的誤碼率endfigure(2);semilogy(SNR,Ber2,'b-s');hold on;semilogy(SNR,Ber,'r-o');hold on;legend('4PSK調(diào)制、卷積碼譯碼前(有擴頻)','4PSK調(diào)制、卷積碼譯碼后(有擴頻)');hold on;xlabel('SNR');ylabel('BER');title('AWGN信道下誤比特率曲線');figure(3)subplot(2,1,1);x=0:1:30;stem(x,P_data(1:31));ylabel('amplitude');title('發(fā)送數(shù)據(jù)(以前30個數(shù)據(jù)為例)');legend('4PSK調(diào)制、卷積譯碼、有擴頻');subplot(2,1,2);x=0:1:30;stem(x,rx_c_de(1:31));ylabel('amplitude');title('接收數(shù)據(jù)(以前30個數(shù)據(jù)為例)');legend('4PSK調(diào)制、卷積譯碼、有擴頻');
2、程序流程
程序流程思維導(dǎo)圖文末資源自取。
3、仿真結(jié)果
①、QPSK 星座圖
基帶數(shù)據(jù)經(jīng)過信道編碼后進行 QPSK 調(diào)制后的星座圖如下所示:
基帶數(shù)據(jù) -> 信道編碼 -> QPSK 調(diào)制 -> 擴頻 -> 插入導(dǎo)頻 -> 串并轉(zhuǎn)換 -> IFFT -> 插入保護間隔、循環(huán)前綴 -> 并串轉(zhuǎn)換 -> 信道 -> 串并轉(zhuǎn)換 -> 去掉保護間隔、循環(huán)前綴 -> FFT -> 信道估計與插值 -> 信道校正 -> 并串轉(zhuǎn)換 -> 解擴頻 后信噪比為 10dB 的星座圖如下:
②、AWGN 信道下誤比特率曲線
分析:信噪比越大,誤碼率越低
③、發(fā)送信號和接收信號對比
分析:對比上下兩個圖,可以看出信號解調(diào)后完全一樣。
七、資源自取
以下部分源碼來源于知乎子木前輩,對其中的代碼注釋進行了更詳細的標注?,思維導(dǎo)圖自己制作,有需要的朋友自行取用。
OFDM深入學(xué)習(xí)及MATLAB仿真源碼
參考文獻:
1、多徑效應(yīng)、符號內(nèi)干擾、符號間干擾ISI、ICI
2、OFDM完整仿真過程及解釋(MATLAB)
3、【學(xué)習(xí)筆記】OFDM的原理和技術(shù)介紹以及仿真結(jié)果分析附代碼–MATLAB
我的qq:2442391036,歡迎交流!