You are on page 1of 10

教育部補助「行動寬頻尖端技術跨校教

學聯盟計畫-行動寬頻網路與應用-小細

胞基站聯盟中心計畫」

Small Cell 創新應用與服務專題

課程單元:LTE PRACH 之架構與 OAI

PRACH 之分析

計畫主持人:許蒼嶺
授課教師:李宗南
教材編撰者:陳俊仁
國立中山大學 資訊工程學系

中華民國 106 年 8 月

一、課程單元目標
1. 修課學生得以學習 Random access channel 的基本概念以及流程。

2. 修課學生得以嘗試去對 OpenAirInterface source code 裡的 PRACH 功能,做

修改或調整。

二、PRACH 之簡介

LTE 無線系統的物理層過程非常複雜,隨著無線信道不斷的變化,需要不

斷地調整系統參數,在 LTE UE 開機或重新連線時,需要和 eNB 進行握手;在

LTE UE 進行移動時,從原本的 eNB 覆蓋範圍移動到另一個,此時會進行

handover 和一些資料的交換;在 LTE UE 和 eNB 進行大量數據的時候,需要大

量的協調配合工作,以上這些例子都需要透過物理層的參與,從而完成各種配

置的預設和重調。

在 LTE 中,定義的下行物理信道主要有如下 6 種類型:物理下行共享信道

(PDSCH)、物理廣播信道(PBCH)、物理多播信道(PMCH)、物理控制格式指示

信道(PCFICH)、物理下行控制信道(PDCCH)、物理 HARQ 指示信道(PHICH),

定義的上行物理信道主要如下 3 種類型:物理上行共享信道(PUCSH)、物理上

行控制信道(PUCCH)、物理隨機接入信道(PRACH),在本課程中,主要會對物

理隨機接入信道(PRACH)做教學。

PRACH(Physical random access Channel)物理隨機接入信道,與隨機接入信

道(RACH , Random Access Channel) 形成映射關係, PRACH 主要是用來傳輸


RACH 的信道,以下我們會來介紹隨機接入的過程及主要目的。

隨機接入的主要目的為實現 LTE UE 與 eNB 之間上行鏈路的同步與獲取

Msg3 的資源(e.g, RRC Connection Request),在大多數的通信中,最重要的先決

條件是建立 UE 與 eNB 之間的定時(Time Advanced, TA)同步,在上行鏈路中,

如果 UE 都是使用廣播的方式發送同步機制,這是相當沒有效率的,因為會干

擾到附近其他 UE,所以只有在特定的條件下才會觸發此程序,如以下:

1. 從 RRC_idle 要進行初始化傳輸

2. RRC Connection Re-establishment, RRC 的連接重建程序

3. 基地台之間的 handover

4. 在 RRC Connection 狀態時,Downlink 數據到達,需要隨機接入過程

5. 在 RRC Connection 狀態時,Uplink 數據到達,需要隨機接入過程

6. 在 RRC_CONNECTED 期間需要做定位時,例如需要 Timing Advance 資

訊時

當一個 UE 準備進行 RACH 時,會先在 64 個 preamble(前導碼)中選出一個,

在 PRACH 裡作區別,這意味著如果許多 UE 在同一個 eNB 裡面,隨機挑選這

64 個 preamble , 有 機 率 挑 選 到 同 樣 的 preamble , 此 時 就 會 造 成 PRACH

contention,我們稱這種類型為「基於競爭」的 RACH 過程,在這種類型下 ,

eNB 會做「競爭解決」的步驟,去使得 UE 能夠成功連接到 eNB,但在有些情

況下這種爭用類型是不能被接受的,例如 timing restriction,通常在這種情況下,

eNB 會通知每個 UE 何時何地必須使用哪個 preamble,透過分配 preamble 使其

不會發生衝突,這種類型過程稱為「非競爭」的 RACH 過程,以下我們介紹這

兩種 RACH 程序:
1. 基於競爭的 RACH 程序

圖一、Contention-based Random access

Msg1:Random Access Preamble,在一開始的階段 UE 會在 64 個 preamble

中選出一個使用,這意思是說許多 UE 在同一個 eNB 裡面只有 64 個前導碼能選

擇,亦即隱含著選到同樣的機率很大,eNB 收到此訊息之後會解開 preamble,

之後看 RA-RNTI,就可以知道這個訊息是哪個 UE 發送。

Msg2:當 eNB 收到從 UE 來的 Random access preamble 之後,他會回傳一

個 Random access response 給 UE,使訊息包含分配給 UE 的資源(Msg3 所需要的

資源, 包含上行的 resource block 以及 MCS 等)和 TC-RNTI,此 TC-RNTI 值用作

在確認碰撞之前所使用的 RNTI。

Msg3:當 UE 收到 Random access response 之後,就可以進行首次傳輸,此

傳 輸 有 可 能 夾 帶 RRC connection request 也 有 可 能 是 RRC connection re-

establishment。

Msg4:若 eNB 收到兩個相同的 preamble 時,eNB 會根據兩種情況做回應,


第一種為 eNB 只能判斷其中一個 UE 的 TC-RNTI,則 eNB 會回應給那個 UE,

另外一個 UE 則會在時間計數器判斷超時後,判斷為競爭失敗,重傳 Random

access preamble,第二種為兩個訊息的 TC-RNTI 都無法判斷,則此時兩個都不

回,這時候兩個 UE 就會同時判斷失敗,同時重新做重傳。

2. 無競爭的 RACH 程序

圖二、Contention-Free Random access

在非競爭的 random access 則非常簡單,由 eNB 先指派特定的 preamble 給

UE 後 , UE 再 發 起 random access preamble , eNB 接 收 到 之 後 再 回 傳 random

access response 所以不會像基於競爭的 RACH,有所謂的衝突發生。

三、Openairinterface PRACH 之分析

本章節會介紹 OAI 中 PRACH 的流程與分析,下圖三為 PRACH 程式碼在

OAI 程式中擺放的位子,我們可以透過修改該程式碼來產生不同的 RACH 信號。


圖三、PRACH 在 OAI 放置處

接下來我們介紹在 prach.c 程式碼內的 function 分析,在上一章節中,我們

知道在 UE 進行 random access 時,最初會先傳送 random access preamble,那在

程 式 碼 內 對 應 的 function 為 generate_prach , 如 下 圖 四 , 使 用 者 可 以 改 變

rootSequenceIndex、prach_ConfigIndex 或 zeroCorrelationZoneConfig 等參數,產

生不同的 prach 信號。

圖四、prach.c 程式碼範例(generate_prach)
在 eNB 方面,在 prach.c 裡面調用 rx_prach function,如下圖五,這個函數

在上行 PRACH 信道上接收 preamble,最多能檢測到 64 個,輸出為檢測到的每

個 preamble 的能量和延遲。

圖五、prach.c 程式碼範例(rx_prach)

在 eNB 接收到 random access preamble 之後,會發送 random access response

給 UE,在 phy_procedures_lte_eNB.c 程式碼中,呼叫 phy_procedures_eNB_TX

function , 這 個 函 數 為 eNB 發 送 物 理 層 程 序 之 信 號 , 如 下 圖 六 , 在 此

phy_procedures_eNB_TX 中,我們去呼叫 eNB_dlsch_ulsch_scheduler function,

此函數會根據 RA_active 和 generate_rar 分配資源,如下圖七。

圖六、phy_procedures_lte_eNB.c 程式碼範例(phy_procedures_eNB_TX)
圖七、eNB_scheduler.c 程式碼範例(eNB_dlsch_ulsch_scheduler)

UE 在接收到 RAR(Random access response),就可以進行首次傳輸,此訊息

可能會包含 RRC 連線資訊,在 eNB 方面則呼叫在 phy_procedures_lte_eNB.c 程

式碼中的 phy_procedures_eNB_uespec_RX function,如下圖八,此函數主要是

在接受物理層信道上的信號,在這裡面我們呼叫 process_Msg3,來檢查 UE 發

送過來的資訊內,Msg_active 是否為 1,並檢查是否接收 Msg3 的 subframe,如

下圖九。

圖八、phy_procedures_lte_eNB.c 程式碼範例(phy_procedures_eNB_uespec_RX)
圖九、phy_procedures_lte_eNB.c 程式碼範例(process_Msg3)

確 認 完 收 到 的 訊 息 為 UE 回 傳 的 Msg3 訊 息 後 , 解 碼 此 訊 息 , 在

phy_procedures_eNB_uespec_RX function 判 斷 此 訊 息 的 重 傳 次 數 , UE 端 若

ra_failed 就 會 重 傳 , 若 次 數 等 於 最 大 重 傳 次 數 , 則 將 UE 狀 態 重 新 設 為

PRACH,代表重新重 Msg1 開始做重傳,如下圖 10。

圖十、phy_procedures_lte_eNB.c 程式碼範例(phy_procedures_eNB_uespec_RX)

若 Msg3 訊息為傳送成功,則回到 phy_procedures_eNB_TX 來發送 Msg4 讓

LTE UE 知道可以開始繼續傳送接下來的檔案,整體 RACH 的流程大致上就完

成了。
參考資料

[1] Openairinterface wiki


https://gitlab.eurecom.fr/oai/openairinterface5g/wikis/home

[2] http://www.sharetechnote.com/html/RACH_LTE.html

[3] LTE and Wireless Study


http://xdxdd.blogspot.tw/2012/08/lte-random-access-procedure.html

You might also like