你足夠了解無(wú)線通訊OFDM嗎?雙手送上無(wú)線通訊OFDM調(diào)制實(shí)例
無(wú)線通訊是重要通訊手段之一,通訊專(zhuān)業(yè)的朋友對(duì)于無(wú)線通訊自然十分熟悉。在前面的文章中,小編對(duì)無(wú)線通信OFDM調(diào)制的實(shí)現(xiàn)原理有所介紹。為加深大家對(duì)無(wú)線通訊OFDM的理解程度,本文將為大家對(duì)來(lái)無(wú)線通訊OFDM調(diào)制實(shí)例。如果你對(duì)無(wú)線通訊技術(shù)具備濃厚興趣,不妨和小編共同往下閱讀哦。
下面的OFDM調(diào)制和解調(diào)在Altera Stratix III FPGA上進(jìn)行,F(xiàn)FT和存儲(chǔ)緩沖器使用MegaCore函數(shù)。這個(gè)例子打算用于采用FFT復(fù)用的系統(tǒng),為了實(shí)現(xiàn)共享,這里,F(xiàn)FT核的時(shí)鐘率要比基帶信號(hào)快很多。該設(shè)計(jì)旨在實(shí)現(xiàn)可重配置結(jié)構(gòu)的OFDM系統(tǒng),它的FFT size和循環(huán)前綴的大小在執(zhí)行中可變。Pre-FFT數(shù)據(jù)通過(guò)一個(gè)單緩沖器改變速率,Pre-FFT位反轉(zhuǎn)數(shù)據(jù)通過(guò)一對(duì)緩沖器改變速率和次序。所有的控制模塊支持TDD操作并被發(fā)射器和接收器共享。該應(yīng)用實(shí)例可以很容易擴(kuò)展到MIMO、TDD或者兩者結(jié)合的系統(tǒng)中,例如圖6中的系統(tǒng)以及圖5介紹的FDD系統(tǒng)。
功能描述:這個(gè)設(shè)計(jì)實(shí)例包含兩部分:OFDM調(diào)制和OFDM解調(diào)。前者包含IFFT和循環(huán)前綴的位反轉(zhuǎn)插入,后者包含循環(huán)前綴的移除模塊和改變數(shù)據(jù)速率的緩沖器。圖1為這兩者的高級(jí)集成。你可以把它看作是圖3中的單天線TDD系統(tǒng)的一種擴(kuò)展。附加的pre-FFT緩沖器使設(shè)計(jì)更容易地?cái)U(kuò)展到具有FFT復(fù)用的MIMO或FDD系統(tǒng)。
圖1:OFDM調(diào)制解調(diào)設(shè)計(jì)架構(gòu)舉例。
Post-FFT處理:OFDM調(diào)制過(guò)程中的CP插入包含4個(gè)功能子模塊:
1. 使用雙時(shí)鐘雙端口RAM的雙緩沖器
2. 位反轉(zhuǎn)的存儲(chǔ)寫(xiě)模塊
3. 循環(huán)前綴插入的內(nèi)存讀取模塊
4. 時(shí)鐘同步模塊
在發(fā)射數(shù)據(jù)通道中,位反轉(zhuǎn)的IFFT輸出數(shù)據(jù)在循環(huán)前綴插入模塊被讀入。一個(gè)控制單元分析數(shù)據(jù)地址并把它寫(xiě)入相應(yīng)的存儲(chǔ)單元。在一個(gè)完整的IFFT數(shù)據(jù)包被寫(xiě)入后,與循環(huán)前綴相應(yīng)的最后幾個(gè)樣本以自然順序讀出。與此同時(shí),如果有容量,來(lái)自下一個(gè)IFFT包的數(shù)據(jù)會(huì)被寫(xiě)入另一個(gè)緩沖器。如果兩個(gè)緩沖器都有數(shù)據(jù)需要讀取,會(huì)有一個(gè)延遲信號(hào)經(jīng)過(guò)Avalon Streaming接口背壓送到IFFT核。經(jīng)過(guò)OFDM調(diào)制后的數(shù)據(jù)通常是連續(xù)的。而其后的模塊,如IF調(diào)制解調(diào)器和天線,不應(yīng)該施加背壓。
在接收數(shù)據(jù)通道中,post-FFT處理限制了位反轉(zhuǎn)和速率改變。位反轉(zhuǎn)的FFT輸出數(shù)據(jù)會(huì)被寫(xiě)入到正確的內(nèi)存地址,就像之前所做的一樣。一旦一個(gè)完整的數(shù)據(jù)包被寫(xiě)入了緩沖器,它將會(huì)按正常順序依次讀出。要特別注意避免過(guò)度的背壓。由于讀時(shí)鐘頻率通常慢于寫(xiě)時(shí)鐘,故需要一個(gè)雙緩沖器。圖2講述了post-FFT的數(shù)據(jù)處理??刂菩盘?hào)指明兩個(gè)時(shí)鐘域的緩存器狀態(tài),并通過(guò)同步邏輯進(jìn)行同步。
圖2:循環(huán)前綴插入操作前后的數(shù)據(jù)包比較。
Pre-FFT處理:Pre-FFT處理包括4個(gè)模塊:
1. 循環(huán)前綴的移除或存儲(chǔ)器寫(xiě)
2. 存儲(chǔ)讀取或速率改變
3. 雙時(shí)鐘雙端口RAM
4. Avalon碼流準(zhǔn)備好延遲轉(zhuǎn)換器
如前面所討論,如果FFT為了資源共享采用不同速率的時(shí)鐘,則需要pre-FFT數(shù)據(jù)緩沖器。在接收通道上,每當(dāng)輸入數(shù)據(jù)開(kāi)始寫(xiě)入單緩沖器時(shí),循環(huán)前綴移除模塊開(kāi)始記數(shù)。當(dāng)整個(gè)數(shù)據(jù)包都被寫(xiě)入這個(gè)單緩沖器時(shí),記數(shù)值開(kāi)始從0地址被讀出。
對(duì)于固定的FFT size,由于讀時(shí)鐘頻率并不比寫(xiě)時(shí)鐘慢,用一個(gè)單緩沖器就夠了。但如果FFT size是變化的,一個(gè)單緩沖器恐怕就不夠了。舉個(gè)特殊的例子,假設(shè)兩個(gè)時(shí)鐘工作在同一頻率。在這種情況下,當(dāng)新的數(shù)據(jù)被寫(xiě)入內(nèi)存,上一個(gè)數(shù)據(jù)包中的數(shù)據(jù)會(huì)從同一個(gè)存儲(chǔ)地址被讀出。如果上一個(gè)數(shù)據(jù)包的FFT/IFFT size更大,那么當(dāng)前包的寫(xiě)操作會(huì)早在上一個(gè)數(shù)據(jù)包讀操作完成前結(jié)束。這樣的話,為了阻止寫(xiě)入過(guò)多的數(shù)據(jù),就必須延遲上行數(shù)據(jù)流模塊的運(yùn)行直到上一個(gè)大數(shù)據(jù)包的讀操作完成。
所幸的是,這種背壓只會(huì)在FFT size由大變小時(shí)才會(huì)被施加。在實(shí)際的系統(tǒng)中,F(xiàn)FT size不太可能頻繁的改變。如果它只在幀邊界改變,由于幀符號(hào)之間是靜止區(qū),就永遠(yuǎn)不會(huì)施加背壓。此外,為了避免使用背壓,讀信號(hào)和FFT核可以采用更高速率的時(shí)鐘,這樣讀操作會(huì)在寫(xiě)操作之前完成。所需的時(shí)鐘頻率取決于最壞情況下FFT size的變化比。舉個(gè)極端的例子,如果FFT size從2048減到128,那么讀時(shí)鐘的頻率至少需要比寫(xiě)時(shí)鐘快16倍。
在發(fā)射數(shù)據(jù)通道上,CP移除子??熘皇菍⑤斎霐?shù)據(jù)按次序?qū)懭雴尉彌_器。同樣的數(shù)據(jù)以不同的速率被讀出。圖3講述了pre-FFT的數(shù)據(jù)操作。在接收通道上,數(shù)據(jù)通過(guò)天線進(jìn)入OFDM解調(diào)器,其后通常還接有IF調(diào)制解調(diào)器。這樣,接收模式下的pre-FFT模塊不會(huì)再對(duì)上行數(shù)據(jù)流模塊施加背壓。對(duì)于TDD操作,在pre-FFT數(shù)據(jù)緩沖時(shí),可以復(fù)用post-FFT雙端口RAM實(shí)現(xiàn)位反轉(zhuǎn),因?yàn)檫@些操作在時(shí)間上是錯(cuò)開(kāi)的。
圖3:循環(huán)前綴移除操作前后的數(shù)據(jù)包比較。
時(shí)鐘方案:該設(shè)計(jì)中采用兩個(gè)時(shí)鐘域,clk_f和clk_s。FFT核運(yùn)行在快時(shí)鐘clk_f上。當(dāng)時(shí)鐘clk_f比clk_s快時(shí),兩個(gè)時(shí)鐘域?qū)?huì)存在異步。握手信號(hào)將會(huì)被插入來(lái)同步域間的控制信號(hào)。盡管在實(shí)際系統(tǒng)中時(shí)鐘clk_f的頻率通常為clk_s頻率的幾個(gè)整數(shù)倍,但在這個(gè)設(shè)計(jì)中,兩者頻率也可以相同。這里,兩個(gè)時(shí)鐘必須同步。由于單緩沖器存儲(chǔ)深度的限制,如果兩個(gè)時(shí)鐘同步而只是速率不同,就必須去掉解調(diào)器中的時(shí)鐘同步模塊。不過(guò)在實(shí)際系統(tǒng)中不需要考慮這一點(diǎn),因?yàn)槿绻鸉FT核沒(méi)有被復(fù)用就沒(méi)必要使用pre-FFT緩沖器了。
接口和I/O端口:該設(shè)計(jì)實(shí)例使用了數(shù)據(jù)傳輸控制的Avalon Streaming協(xié)議。為了支持大小可變的FFT size、循環(huán)前綴,以及FFT方向運(yùn)行時(shí)間(run time)的變化,必須對(duì)這些run time信號(hào)進(jìn)行緩沖并把它們與輸出數(shù)據(jù)數(shù)據(jù)包開(kāi)始(SOP)信號(hào)對(duì)齊。Therefore, in every control module of OFDM modulation and demodulation, some logic is dedicated to signal alignment.因此,在OFDM調(diào)制解調(diào)中的每個(gè)控制模塊中都有一些邏輯信號(hào)專(zhuān)用于信號(hào)對(duì)齊。
該實(shí)例中也通過(guò)Avalon Stream信號(hào)sink_ready(輸入準(zhǔn)備好信號(hào))和source_ready(輸出準(zhǔn)備好信號(hào))來(lái)支持背壓。循環(huán)前綴插入模塊中輸入準(zhǔn)備好延遲選0和輸出準(zhǔn)備好延遲選44。循環(huán)前綴移除模塊的輸入準(zhǔn)備好延遲選0。不過(guò),因?yàn)檩敵鰯?shù)據(jù)取自存儲(chǔ)器,后面的緩沖器讀取子模塊的輸出準(zhǔn)備好延遲選2。由于FFT核為延遲0,為了實(shí)現(xiàn)與FFT核的連接,需要在在緩沖讀模塊與FFT核之間插入一個(gè)延遲適配器。延遲適配器用延遲2接收輸入數(shù)據(jù),然后用延遲0輸出數(shù)據(jù)。適配器也支持背壓并把可重配置的循環(huán)前綴的大小和FFT的方向信號(hào)與輸出數(shù)據(jù)包對(duì)齊。
調(diào)制解調(diào)的輸入輸出信號(hào)是有符號(hào)的定點(diǎn)格式但位寬度是可配置的。在可變流模式中,IFFT核的輸出數(shù)據(jù)具有基于最大IFFT size的滿分辨率。如果必要,可以在循環(huán)前綴插入模塊中切斷數(shù)據(jù)序列,也可以設(shè)置位寬參數(shù)。圖4所示為OFDM調(diào)制解調(diào)模塊的I/O端口。
圖4:OFDM調(diào)制解調(diào)模塊的I/O接口。
以上便是此次小編帶來(lái)的“無(wú)線通訊”相關(guān)內(nèi)容,通過(guò)本文,希望大家對(duì)無(wú)線通訊OFDM的實(shí)例以及OFDM具備更深的理解。如果你喜歡本文,不妨持續(xù)關(guān)注我們網(wǎng)站哦,小編將于后期帶來(lái)更多精彩內(nèi)容。最后,十分感謝大家的閱讀,have a nice day!