OpenAirInterface OAI 入門教程 1

OpenAirInterface OAI 入門教程 1

 

        最近有不少同學發郵件問我關於OAI的問題,爲了方便大家交流,我建立了一個OAI的學生討論QQ羣,羣號1: 512786903  羣號2:796058599 加羣請備註(OAI)。有興趣的同學歡迎加入交流。

 

 

  OpenAirInterface(OAI),又稱OpenAirInterface5g,是歐洲EURECOM組織發起並維護的一個開源SDR LTE項目。

  OAI根據3GPP的標準,完全實現了LTE協議的核心網(EPC),基站(eNB)和用戶(UE)三部分,目前已經支持Release 10的功能,並且在持續更新。最近,OAI組織又準備基於OAI平臺搭建一套開源的SDR NB-IoT平臺,非常有吸引力。

  OAI的Gitlab網站在https://gitlab.eurecom.fr/oai/openairinterface5g,代碼以及相應的教程都可以在這個網站上看到。但是,目前OAI還沒有供用戶討論問題的論壇,只有一個郵件列表,大家可以多多在郵件列表裏面提問、討論,OAI每天都會有人回覆郵件。

  最近有很多同學問我OAI到底該怎麼入門,這是一個涉及到LTE,Linux系統,C語言編程等多方面知識的系統。首先,Linux系統的基本知識得掌握,然後可以對着代碼理解LTE協議上的內容,這可能會是一個比較好的學習方式。另外,學習OAI平臺涉及到很多LTE相關的知識,看協議不是學習LTE最好的方式,推薦大家一個非常適合用來學習LTE的網站:www.sharetechnote.com.

  目前開源SDR LTE平臺有OAI,OpenLTE和srsLTE等,其中OAI是使用人數最多的一個。下面就給大家介紹下OAI平臺一些入門相關的知識。

 

OAI整體架構

  OAI按照3GPP協議完全實現了LTE的EPC,eNB和UE,它的整體架構基本與LTE的協議棧。

  下圖是OAI官方的一張結構圖。可以看到左邊是UE的結構圖,包含PHY,MAC,RLC,PDCP,RRC和NAS等功能。但是這裏強調下,由於OAI組織把開發的重點放在EPC和eNB上,UE的代碼是未經調試的,所以實際使用起來非常不穩定。但是經過我們的測試,OAI UE的物理層下行還是計較穩定的。

  中間是eNB的架構圖,右側是EPC。由於我主要接觸的是OAI eNB和OAI UE,對EPC接觸也不多,所以我主要介紹OAI的eNB和UE,即RAN部分。按照這個分類方法,OAI也把項目分成了兩部分,即RAN部分和EPC部分。

 

 

  下面我們看看OAI RAN部分的目錄結構。其中cmake_targets是編譯相關的文件夾,OAI採用CMAKE工具來生成makefile,進而編譯系統,因爲OAI文件較多,CMAKE是一個編譯大型系統的非常高效的工具。common裏面存的一些基本的工具性函數,比如數學工具,數據結構工具等。openair1裏面存儲的是OAI PHY主要的函數。openair2裏面存儲的是L2的函數,即包含MAC,RLC和PDCP等。openair3主要存儲的是L3相關的函數,即跟控制平面,核心網相關的內容比較多。targets文件夾是存儲一些main函數文件,配置文件,硬件驅動等的文件夾。svn2git是把SVN管理轉成Git管理的文件夾,因爲之前OAI一直是使用SVN進行版本管理的,去年才改成Git,平時我們基本不用關心這個文件夾。oaienv是運行OAI所需要做的一些Linux環境設置,maketags是生成ctags文件的腳本。README.txt是簡單的說明。COPYING是版權相關的信息,OAI遵循GNU GPLv3版本的開源協議,就算是開源軟件,大家使用的時候也得遵循相應的協議。

 

OAI仿真

 

  OAI主要有兩個功能,其中一個用來仿真,一個是用來SDR實現通信系統。今天我們先介紹OAI仿真。

  仿真主要是物理層各個信道的仿真以及系統級仿真。物理信道的仿真在目錄openairinterface5g/openair1/SIMULATION/LTE_PHY下,包含PDSCH,PDCCH,PBCH,PRACH,PUSCH,PUCCH等信道的仿真。而系統級別的仿真在openairinterface5g/targets/SIMU/USER目錄下的oaisim,oaisim包含了LTE整個協議棧的仿真,即除了物理層是假的,其它協議棧都是按照標準做的。

  oaisim平臺太大了,不好介紹,我以dlsim平臺來給大家介紹OAI平臺,就當是拋磚引玉。

  DLSIM是OAI的一個物理下行鏈路仿真平臺。DLSIM仿真平臺支持FDD和TDD兩種模式,支持1.25M,5M,10M和20M四種帶寬,最多支持2天線。本論文所做工作都基於DLSIM仿真平臺的FDD SISO模式。

  DLSIM仿真平臺包含了PDSCH,PCFICH,PDCCH等信道仿真,PCFICH用來指示PDCCH所佔用的OFDM符號數,PDCCH用來傳輸DCI信息,PDSCH用來傳輸業務數據,RS用於信道估計。DLSIM還在時頻資源上爲PBCH,PSS,SSS,RS分配了時頻資源,但未產生相應的數據。DLSIM平臺詳細的架構圖如圖2-1所示,圖中括號中的內容是實現相應功能的函數名稱。

  DLSIM仿真平臺主要包含兩部分,第一是PDCCH部分,第二是PDSCH部分。程序首先初始化配置LTE參數,生成業務數據。接着處理DCI信息,先爲PCFICH,PDCCH信道分配時頻資源,再處理PDSCH信息,加入導頻後送入OFDM調製器。在接收端,首先進行FFT和信道估計,信道均衡後再解調解碼PDCCH信息,根據解出來的PDCCH信息再去解調解碼PDSCH信息。下面我們將分別介紹DLSIM中的PDCCH信道和PDSCH信道仿真。

 

 

PDCCH信道

  PDCCH承載的下行控制信息即DCI,DCI用來攜帶上行或者下行資源調度的相關信息,不同的DCI格式可以用來承載不同的信息。LTE(R8)裏面DCI信息一共有format0,format1,format1A,format1B,format1C,format1D,format2,format2A,format3,format3A等10種,其中format1,format1A,format1B,format1C,format1D,format2,format2A可用於PDSCH資源調度。DLSIM仿真平臺支持format1,format1A,format2,format2A四種DCI格式。format1,format1A,format2,format2A四種格式的DCI各自的功能和比特數如表2-1所示:

表2-1 DLSIM平臺支持的DCI格式

DCI格式

功能

比特數(20M帶寬)

單碼字的PDSCH分配

42

1A

壓縮格式的PDSCH分配

31

閉環MIMO操作的PDSCH分配

50

2A

開環MIMO操作的PDSCH分配

46

  以format1爲例子,format1 DCI共包含42比特數據,每個比特表徵的信息域表2-2所示:

表2-2 format1 DCI信息域

信息域

比特

資源分配類型

1

資源塊分配

跟帶寬有關

調製編碼方案

5

HARQ進程號

4(TDD),3(FDD)

NDI

1

RV

2

PUCCH的TPC命令

2

下行分配索引

2(TDD only)

 

DCI信息產生

  主函數先選擇相應的DCI格式,初始化DCI信息。DCI信息確定後,DCI相應的比特信息也就確定了。然後通過generate_eNB_dlsch_params_from_dci函數把DCI信息傳遞給eNB,eNB根據DCI比特信息來分配PDSCH的資源,並將DCI比特信息編碼調製後發送給UE。

DCI信息發送

 

  PDCCH信道單天線下發送流程如下所示,結合DLSIM總體架構圖(圖2-1)可以知道每個模塊對應的函數。DCI先經過CRC校驗,信道編碼,速率匹配變成編碼比特,然後將一個子幀中所有的PDCCH信道將複用爲1個數據比特流,加擾,調製,最後進行資源單元的映射。

 

  程序先通過函數get_num_pdcch_symbols獲得PDCCH所佔的OFDM符號,然後再通過generate_pcfich產生PCFICH信息,經過加擾、QPSK調製後映射到發送端時頻資源上。

  函數crc16完成DCI信息的CRC校驗。將調度和控制信息映射到DCI相應的字段後,添加16位CRC校驗比特,並用相應的RNTI對校驗比特進行加擾。在UE側通過CRC校驗來驗證收到的PDCCH是否是自己需要的,以及接收到的PDCCH是否正確接收。

  添加CRC後的信息比特會被傳遞給信道編碼模塊,在函數ccodelte_encode中對其進行咬尾卷積編碼。接着在函數lte_rate_matching_cc中進行速率匹配,對編碼後的比特進行選擇或裁剪。之後再用小區專用擾碼對速率匹配後的比特進行加擾,減少與相鄰小區PDCCH混淆的可能性。QPSK調製後數據映射到發送的時頻資源上。其中PDCCH被映射在每個子幀的前1-3個OFDM符號。

DCI信息接收

 

  接收端把接收到的時域信息經過FFT之後首先會通過pdcch_extract_rbs_single函數提取PDCCH相關的符號,然後再通過pdcch_channel_compensation均衡,接着計算llr信息,解映射,解擾,解碼。UE將用相應的RNTI去解擾CRC,然後進行CRC校驗,如果校驗成功,那麼UE就知道這個信息是自己需要的。也可以進一步知道相應的DCI格式和內容。解碼出DCI信息後,UE再根據DCI信息指示進一步接收業務數據。

  由於PDCCH很多處理的過程跟PDSCH非常接近,所以我們對PDCCH只做簡單的介紹,重點介紹PDSCH。

 

 

PDSCH信道

信道模型

  DLSIM中支持SCM_C信道,SCM_D信道,步行測試環境(EPA)信道,車輛測試環境(EVA)信道,典型市區(ETU)信道,多播/組播單頻網絡(MBSFN)信道,瑞利(Rayleigh)信道,萊斯(Rice)信道,和AWGN等信道,其中LTE協議中規定了EPA,EVA和ETU等的衰落模型。實際仿真中,我們主要用瑞利信道、萊斯信道和AWGN信道。

  在DLSIM中數據過信道分爲兩步,首先數據與信道衝激響應做卷積,接着再加上覆高斯白噪聲。函數new_channel_desc_scm初始化用戶選擇的信道信息,函數random_channel生成信道,接着在函數multipath_channel中完成循環卷積操作。卷積之後,數據的實部和虛部分別添加一個高斯白噪聲,函數gaussdouble負責產生高斯白噪聲。

信道編譯碼

信道編碼

 

  信道編碼函數dlsch_encoding包含CRC,分段,turbo編碼和速率匹配四個步驟。

  crc24a函數實現的是DLSCH CRC功能,crc24a在信息比特後面添加了24bit的校驗信息,接收端通過校驗比特能判定接收到的信息是否有誤,如果有誤,可以請求重傳。

  lte_segmengtation實現的是DLSCH的分段功能。小於6144比特的數據不需要分段,大於6144比特的數據則需要分段,並在每段後面再添加24比特的CRC校驗碼。

  threegpplte_turbo_encoder實現的是DLSCH turbo編碼的功能。Turbo編碼器由帶反饋的系統卷積碼以及經過交織器帶反饋的系統卷積碼並行級聯而成。Turbo 碼巧妙地將兩個簡單分量碼通過僞隨機交織器並行級聯來構造具有僞隨機特性的長碼。

  lte_rate_matching_turbo實現的是速率匹配功能。lte中turbo編碼或卷積碼的碼率都是1/3,而實際上物理信道的碼率可能不是1/3,這個時候就需要rate matching操作。速率匹配由交織器、比特合併和選擇傳輸三部分組成,通過複雜的算法確定傳輸的比特數和傳輸的開始位置來傳輸數據。

信道譯碼

 

  dlsch_decoding完成PDSCH解碼的功能。解碼器的工作就是將該碼字的潛在可能性儘可能大的還原出來,體現出來。當使用不同的解碼算法時,得到的性能也不盡相同。籠統的說,解碼算法越簡單,其對應的性能就越差。DLSIM中採用的是軟解調,軟解調後輸出的軟信息送入dlsch_decoding中進行迭代譯碼。Turbo譯碼有四種常用算法:MAP,SOVA,Log-MAP,Max-log-MAP算法。DLSIM採用的是Max-log-MAP算法。

加擾解擾

  加擾函數dlsch_scrambling由擾碼生成和加擾兩部分組成。加擾是一種使干擾信號隨機化的一種編碼方式,用小區專屬信息生成擾碼,並與信息比特異或來實現加擾。

  dlsch_unscrambling完成PDSCH解擾的功能。在發送端採用小區專用擾碼序列進行加擾,接收端再解擾,只有本小區內的UE才能根據本小區的ID產生的小區專用擾碼序列對接收到得本小區內的信息進行解擾,這樣可以在一定程度上減小臨小區間的干擾。

 

調製解調

  調製是爲了提高信息傳輸速率而採用的一種編碼方式。基帶處理中,根據需要把幾個比特映射成複數符號的形式。PDSCH有三種調製方式:QPSK,16QAM和64QAM,當調製階數提高時,誤碼率就會增加,所以高階調製一般應用在信道條件比較好的情況。LTE採用了自適應調製編碼技術,基站根據用戶瞬時信道質量狀況和目前資源選擇最合適的下行鏈路調製和編碼方式,使用戶達到高的數據吞吐率。

  dlsch_modulation實現數據調製的功能,同時將調製後的數據映射到對應的時頻資源上。映射時要避開PBCH,PSS,SSS,RS等數據已經佔用的時頻資源。DLSIM目前沒有實現自適應調製編碼,還只能根據用戶的初始化配置來設置mcs。設置完成後,本次仿真過程中mcs就將保持不變。

  爲了提高LTE系統的譯碼性能,通常在LTE接收端譯碼前對數據解映射時採用軟判決方法。軟判決譯碼需要解調器輸出表示比特取值概率的軟信息,對於高階調製信號的解調軟信息,一般採用基於最大後驗概率準則的對數似然比(LLR)算法計算得到。由於算法涉及複雜的指數與對數運算,不利於實現,因此DLSIM平臺裏面採用了一種簡化的算法來計算LLR信息。

 

參考信號

  在LTE(release 8)下行鏈路中,提供了3種不用類型的參考信號:

   l UE專用的參考信號, 內嵌在數據中,針對專門UE,也可以用於支持動態波束賦形;

   l MBSFN參考信號,是指小區在下行MBSFN子幀中全頻帶廣播發送的參考信號,可以用作對廣播/多播業務情況下的下行測量、同步以及數據解調的參考信號;

   l 小區專用參考信號,指的是在小區所有的下行普通子幀中廣播發送的參考信號,該信號以小區爲單位,可以作爲小區內用戶進行下行測量、同步以及數據解調的參考符號。

 

  generate_pilots實現的是插入參考信號的功能。在接收端函數lte_dl_cell_spec_rx將發送的參考信號取共軛,這樣便於便做信道估計,詳細內容會在信道估計信道均衡的算法解析裏介紹。

 

OFDM

  在LTE系統裏面,不同系統帶寬下對應不同的FFT點數,具體對應關係表2-3所示:

表2-3 LTE FFT點數對應表

系統帶寬

1.4MHz

3MHz

5MHz

10MHz

15MHz

20MHz

RB數目

6

15

25

50

75

100

子載波數

72

180

300

600

900

1200

FFT點數

128

256

512

1024

1536

2048

  例如在5M帶寬下對應512點FFT,所以在OFDM模塊,需要對傳進來的符號做512點的IFFT。同樣地,在接收端要對接收到的數據做512點的FFT。do_OFDM_mod_l實現的是DLSIM OFDM調製的功能,它有兩個功能,一是IFFT,二是添加循環CP。

  在接收端,把接收到的數據移除CP後做FFT完成OFDM的解調。dft函數指針指向完成FFT功能的函數,實現FFT功能的函數是用SSE指令集編寫的。

信道估計與信道均衡

 

  無線通信系統的性能很大程度上受到無線信道的影響,如陰影衰落和頻率選擇性衰落等等,使得發射機和接收機之間的傳播路徑非常複雜。在OFDM系統的相干檢測中需要對信道進行估計,信道估計的精度將直接影響整個系統的性能。基於參考信號的估計算法按一定估計準則確定待估參數,其特點是需要藉助參考信號。

  DLSIM採用的是基於參考信號的估計算法。基於導頻符號的信道估計適用於連續傳輸的系統。通過在發送的有用數據中插入已知的導頻符號,可以得到導頻位置的信道估計結果;接着利用導頻位置的信道估計結果,通過內插得到有用數據位置的信道估計結果,完成信道估計。

  常用的信道估計算法有LS算法,奇異值分解(SVD)算法,基於DCT變換算法,MMSE算法等。DLSIM中函數lte_dl_channel_estimation採用最簡單的LS算法估計參考信號經歷的信道,再利用線性濾波插值法估計整個OFDM符號所經歷的信道。函數dlsch_channel_compensation採用頻域迫零均衡算法對接收到的數據進行均衡。

數據提取

 

  下行時頻資源上有PDSCH,PDCCH,PCFICH,PHARQ,PBCH,PSS,SSS,RS等數據,而PDSCH信道只需要處理業務數據,所以函數dlsch_extract_rbs_single的功能就是剔除虛子載波,只提取出PDSCH信道傳輸的數據。

 

主要函數彙總

 

 

總結

  OAI的內容太多,入門不易,今天就先分享這些,以後SDR實現部分內容再慢慢分享。

  還沒入門的同學也不要放棄。

   (PS,內容有點多,格式爲亂,後面有空再調整。)

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章