在 KeyStone 器件上實現(xiàn)高效的 LTE 上行基帶前端處理
摘要
LTE 上行基帶前端處理包括為 PUSCH、PUCCH、SRS 信道執(zhí)行的 FFT,以及為 PRACH信道執(zhí)行的時頻轉換。這些操作處理的是原始時域天線數(shù)據(jù),數(shù)據(jù)量大,對計算資源和存儲資源的需求都較高。文本針對 TI 的 KeyStone 器件給出了完整的 LTE 上行基帶前端處理設計,目標是盡可能減少核的干預,消耗盡可能少的資源。本文還詳細列出了該設計對各種硬件資源的需求,以及 c66x 核上任務的實測負載。
1、引言
LTE(Long Term Evolution)是由 3GPP 組織制定的 3G 演進標準,在物理層采用 OFDM和MIMO 技術。LTE 分為 FDD 和 TDD 兩種雙工模式。目前,LTE-FDD 在 20MHz 頻譜帶寬下的實際速率大約能達到下行 100Mbps、上行 50Mbps。LTE-TDD(國內通常稱為 TD-LTE)的實際速率會隨上、下行子幀的配比關系而變化。
[1][2][3][4]是主要的幾個 LTE 物理層協(xié)議文本。[1]描述了上、下行發(fā)射機從星座點調制到基帶信號上變頻之間的處理步驟,通常稱為符號級處理。[2]描述了星座點調制之前的處理步驟,通常稱為比特級處理。[3]描述了各種物理層過程。[4]描述了各種物理層測量。
LTE 的上行物理信道信道包括用來傳輸數(shù)據(jù)和物理層隨路控制信令的 PUSCH,專門用來傳輸物理層控制信令的 PUCCH,用于隨機接入的 PRACH,以及用于上行信道探測的 SRS。下行物理信道包括用來傳輸數(shù)據(jù)的 PDSCH,用來傳輸各種物理層控制信令的控制信道 PCFICH、PHICH和 PDCCH。
本文描述的是 LTE 上行基帶前端處理。如圖 1 所示,LTE 上行基帶前端處理包括從天線接口接收時域數(shù)據(jù),以及隨后的時頻變換。LTE 中所有上行信道接收機的第一步都是把信號從時域變到頻域,這是上行基帶前端處理最主要的任務。PRACH 采用和其它上行物理信道不同的時頻結構,因此,前端時頻變換需要做兩次,一次用于 PRACH,一次用于其它上行物理信道。本文把前者稱為“PRACH 前端時頻轉換”,把后者稱為“上行前端 FFT”。
TI 推出了一系列用于 LTE 基站基帶處理的 SoC(System On Chip)。這些 SoC 基于 TI 的KeyStone 架構,該架構目前已演進了兩代——KeyStone I 和 KeyStone II。KeyStone I 家族基于40nm 工藝,包括如下基帶 SoC 器件型號:
• TCI6616,詳細資料參見[5]
• TCI6618,詳細資料參見[6]
• TCI6614 和 TCI6612,詳細資料參見[7]和[8]
• TMS320C6670,詳細資料參見[9]
KeyStone II 家族基于 28nm 工藝,包括如下基帶 SoC 器件型號:
• TCI6636K2H,詳細資料參見[10]
• TCI6634K2K,詳細資料參見[11]
• TCI6638K2K,詳細資料參見[12]
• TCI6630K2L,詳細資料參見[13]
所有這些器件都具有多模能力,支持 GSM/EDGE、WCDMA、TD-SCDMA、WiMAX、LTE 的單模實現(xiàn)或混模實現(xiàn)。所有這些器件使用的 DSP 核都是 c66x,但個數(shù)不同。TCI6614 和 TCI6612帶一顆 ARM Cortex A8,TCI6636K2H 和 TCI6638K2K 帶 4 顆 ARM Cortex A15,TCI6630K2L帶 2 顆 A15,它們除支持物理層以外,還支持高層(層 2,層 3)和傳輸處理。這些器件也可用于基于 OFDM的無線回傳(wireless backhaul),如 LTE relay 站。
本文介紹如何在上述 KeyStone 器件上實現(xiàn)高效的 LTE 上行基帶前端處理。上述 KeyStone 器件中,只有 TCI6630K2L 包含中頻處理模塊,稱為 DFE 模塊,該模塊通過 IQNet 模塊和系統(tǒng)總線相連。圖 1 中的天線接口對 TCI6630K2L 來說指的是 IQNet,對其它器件來說指的是 AIF2。IQNet和 AIF2 都使用 PktDMA 作為對內接口,行為方式類似。本文用 AIF 統(tǒng)一指代 IQNet 和 AIF2,描述的前端處理方法同時適用于兩者。關于 KeyStone I 和 II 的 AIF2,請參考[14]和[15]。關于PktDMA,請參考[16]。天線接口一旦配置完畢,在實時運行過程中不需要軟件干預,不產(chǎn)生實時負載。本文重點描述時頻轉換。對天線接口,僅描述其與時頻轉換交互的部分。
基帶前端工作在基帶時域采樣率上,對 20MHz 載波通常為 30.72Msps,而系統(tǒng)中通常存在多個這樣的數(shù)據(jù)流,對應多天線和/或多載波。對這樣高速的數(shù)據(jù)流做處理,效率至關重要,應盡量減少對處理資源、存儲資源、總線資源的占用。上行基帶前端的處理效率是基帶整體效率的重要組成部分。本文給出了在 KeyStone 器件上用 FFTC 硬件加速器完成盡可能多的時頻轉換,并將天線接口和兩類時頻轉換用 EDMA 進行直連的方法。該方法使相關的軟件負載降至最低,并且盡可能地降低對內存和總線的占用。本文還給出了由 c66x 和 FFTC 共同完成 PRACH 時頻轉換的方法,并給出了實測負載。該方法減少了對 FFTC、內存、總線的占用,但增加了 c66x 負載。用戶可根據(jù)自身系統(tǒng)的資源消耗情況選擇不同的 PRACH 時頻轉換方法。關于 EDMA,請參考[17]。關于FFTC,請參考[18]。
本文中的“符號”默認指的是 OFDM符號。
2、上行前端 FFT
圖 2 以單片 TCI6634K2K 或 TCI6638K2K 實現(xiàn) 2 個 8 天線 TD-LTE 載扇為例,描述了上行前端FFT 的設計,包括對 Tx/Rx 通道、flow、Q(本文用 Q 表示硬件隊列)、Tx 和 Rx 描述符、Acc(本文用 Acc 表示 Accumulator)等物理資源的使用,以及描述符的傳遞路徑。相關的原理和更多的細節(jié)參見以下各節(jié)。
雖然這里以單片 TCI6634K2K/TCI6638K2K 實現(xiàn) 8 天線 TDD 雙載扇為例,本文描述的設計實際上適用于在所有 KeyStone 器件上實現(xiàn)各種部署場景。注意,對于 TCI6634K2K/TCI6638K2K,當不要求所有載扇同時達到最高規(guī)格(比如在所有 RB 上執(zhí)行帶信道估計時域內插的 MU-MIMO IRC均衡,下行每載扇瞬時數(shù)據(jù)流量 300Mbps,每載扇 400 個激活用戶等)且經(jīng)過充分優(yōu)化時,單片可支持 8 天線 TDD 三載扇。
該設計以一個載扇為基本設計單位。多載扇時,每個載扇使用相同的設計,但可以配置不同的硬件資源??紤]到一個 FFTC 可以在一個符號周期內完成 8 次帶 1/2 子載波頻偏校正的 2048 點 FFT,為簡單起見,要求一個載扇的上行前端 FFT 處理由一個 FFTC 完成。
圖 2 中的例子采用的物理層核間分工策略是:8 個 c66x 核分為 2 組,核 0~3 是一組,核 4~7 是另一組,每組處理一個載扇。對第一組:核 0 和核 1 處理 PUSCH,其中信道估計按天線分工,均衡按時隙分工;核 2 處理 PUCCH 和 PRACH;核 3 處理下行和 SRS,包括上行子幀最后一個符號上的 SRS,以及 UpPTS 內的 SRS。第二組內的核間分工與第一組相同。
2.1 FFTC Tx 側設計
AIF 每收齊一根天線上的一個完整符號,就把一個包 push 到一個 RxQ 中。本設計假設一個載扇的NA根接收天線與基帶之間的延時是相同的,則對一個符號,NA根天線對應的NA個包幾乎同時被AIF 的 Rx PktDMA push 到 RxQ 中。為避免對 Rx 描述符的回收操作,可把 AIF 的 RxQ 和 Rx FDQ 配置成同一個 Q。除了 AT timer,其它關于 AIF 的部分沒有在圖 2 中畫出。
AIF 和 FFTC 之間的直連不是通過 AIF 的 Rx PktDMA 把接收包直接 push 到 FFTC 的 TxQ 來實現(xiàn)的。實際上,AIF 可以通過內部的 AT timer 產(chǎn)生符號級事件,在一個符號的NA個 Rx 包被 push 到RxQ 之后,立即產(chǎn)生一個系統(tǒng)事件。該事件被用于觸發(fā)一個 EDMA 操作,該操作把NA個包 push到 FFTC 的 TxQ 中。稱該 EDMA 為 FFT 入隊 EDMA。
對 TD-LTE,AIF 可以做到只接收上行子幀和 UpPTS 內的符號數(shù)據(jù),但無法屏蔽其它符號對應的AT timer 事件。FFT 入隊 EDMA 接收所有的 AT timer 事件,但僅為上行符號對應的事件執(zhí)行入隊操作。
為了給應用提供盡可能多的靈活性,為一個子幀內的每個【符號,天線】分配一個 FFTC Tx 描述符,并使用描述符的 PS data 承載 FFTC 本地配置(Local Configuration)。記一個子幀的符號數(shù)為�sym,則需要分配�symNA個 Tx 描述符,每個描述符的大小是 64B。這樣,應用可以在初始化時為每個【符號,天線】配置任意的參數(shù),如 destination Q、output scaling 等。
用 Acc 對 Tx return Q 中的描述符進行自動回收,但不需要產(chǎn)生 Acc 中斷或 EDMA 事件。為了正常工作,Acc 要求在一個乒或乓 List Buffer Page 滿了之后,向 Interrupt N Count 寄存器寫 1,作為應用對 Acc 的響應。因為不需要產(chǎn)生 Acc 事件,響應時不需要寫 EOI 寄存器。
結合以上幾點,F(xiàn)FT 入隊 EDMA 的設計如圖 3 和圖 4 所示。
圖 3 以 Normal CP 為例給出了 FDD 時的設計。此時用到了 3 個 PaRAM set:PaRAM set 0 只用一次,為系統(tǒng)啟動后的第一個上行子幀的符號執(zhí)行 FFTC 入隊操作;PaRAM set 2 以子幀為單位被周期性地使用,為第一個上行子幀之后的所有上行符號執(zhí)行入隊操作;PaRAM set 1 用于在每個上行子幀開始時,響應前一個上行子幀的 Acc 操作。注意,為了使 Acc 操作正常,這里實際上有一個隱性前提:Acc 總能以略短于一個符號的延時處理完被 FFTC 的 Tx PktDMA push 進 Tx return Q 的描述符。該條件在通常的 Acc 負載下都能被滿足。對 Extended CP,只要把 PaRAM set 0 和 2 中的 CCNT 從 14 改為 12 即可。
FFT 入隊 EDMA 在處理完入隊操作后,通過 chain 機制產(chǎn)生 PRACH 觸發(fā)事件,該事件將觸發(fā)PRACH 前端時頻轉換。
圖 4 以“UL/DL 配置 6、特殊子幀配置 5~8(UpPTS 包含 2 個符號)、Normal CP”為例給出了TDD 時的 FFT 入隊 EDMA 設計。在該系統(tǒng)配置下,用到了 8 個 PaRAM set:
• PaRAM set 0 只用一次,用于消耗掉系統(tǒng)啟動后的第一個 UpPTS 之前的所有 AT timer 事件,不執(zhí)行有實際意義的數(shù)據(jù)搬移操作。
• PaRAM set 2 和 5 以無線幀為單位被周期性地使用,分別為一個無線幀的前、后半幀中的所有上行子幀的符號執(zhí)行 FFTC 入隊操作。
• PaRAM set 1 和 4 分別為一個無線幀的前、后半幀中的 UpPTS 符號執(zhí)行 FFTC 入隊操作。
• PaRAM set 3 和 6 負責消耗掉非上行符號對應的 AT timer 事件。
• PaRAM set 7 響應前一個操作周期的 Acc 操作,這里的操作周期指的是從一個無線幀的第一個 UpPTS 開始的一個 10ms。
對 UL/DL 配置 6,需要為前、后半幀的上行子幀集合、UpPTS、其它符號集合的 AT timer 事件響應使用不同的 PaRAM set,這是因為兩個半幀包含的上行子幀數(shù)是不一樣的。對其它所有 UL/DL配置,只需要 5 個 PaRAM set,對應的操作周期等于上下行切換周期(UL/DL 配置 0~2 是 5ms,3~5 是 10ms)。
不論是 FDD 還是 TDD,服務于上行子幀或 UpPTS 的 PaRAM set 使用 AB-sync,每次事件觸發(fā)當前上行符號的NA個 Tx 描述符的 FFTC 入隊操作。CCNT 等于該上行子幀集合或 UpPTS 包含的符號數(shù)。
上行子幀集合和 UpPTS 對應的 PaRAM set 使用的源 buffer 的大小,以及 Acc 的 List Buffer Page的大小,參見圖 2。
對 TDD,如果當前載扇使用的是長 RACH(PRACH preamble 格式 0~3),上行子幀中的 FFT入隊 EDMA 在處理完入隊操作后,還需通過 chain 機制產(chǎn)生長 RACH 觸發(fā)事件,該事件將觸發(fā)針對長 RACH 的前端時頻轉換;如果當前扇區(qū)使用的是短 RACH(PRACH preamble 格式 4),UpPTS 中的 FFT 入隊 EDMA 通過 chain 機制產(chǎn)生短 RACH 觸發(fā)事件,觸發(fā)針對短 RACH 的前端時頻轉換。一個 TDD 小區(qū)不會同時使用長 RACH 和短 RACH,因此這兩類 PRACH 觸發(fā)事件不需要同時配置。注意,AIF 無法屏蔽非上行符號對應的 AT timer 事件,但是,經(jīng)過 FFT 入隊EDMA 的過濾,PRACH 前端時頻轉換功能模塊只會收到上行子幀對應的符號級事件。
圖 5 以 TDD 8 天線、normal CP 為例描述了 Tx 描述符的配置。所有的配置域都是靜態(tài)的,也就是說,只需要在小區(qū)建立或重配時配置,實時運行過程中無需修改。大部分配置域的取值對上行前端 FFT 應用來說是確定的,也有一些域的配置具有一定程度的靈活度,可根據(jù)算法、軟件框架、資源分配等方面的考慮靈活配置,這些域在圖 5 中用下劃線標識,并說明如下。
• Return Q 和 flow 根據(jù)應用的硬件資源分配進行配置。
• 為了盡可能節(jié)省內存,這個例子為 AIF 接收數(shù)據(jù)使用符號級乒乓緩存。掛在 Tx 描述符上的buffer 指針根據(jù)該描述符對應的【符號,天線】指向 16 個 buffer 中的一個。AIF 使用的是monolithic 描述符,這種描述符的凈荷直接跟在描述符頭的后面。為了避免數(shù)據(jù)搬移,F(xiàn)FTC Tx 描述符的 buffer 指針直接指向 AIF Rx monolithic 描述符中凈荷的起始位置。注意,即使不按符號乒乓設計 AIF 接收數(shù)據(jù)緩存,其它方面的設計無需變化,只影響 Tx 描述符中 buffer 指針的配置。
• 這個例子使用了 FFTC 的動態(tài) scaling 功能,使 FFT 計算過程完全不發(fā)生飽和截位,同時每步蝶形運算的輸入數(shù)據(jù)都有最大有效位寬,因而獲得最高的計算精度。此時,每個【符號,天線】的 FFT 輸出數(shù)據(jù)塊的定標各不相同,應用應使能 FFTC 的 side information 輸出,該信息包括FFTC 內部實際執(zhí)行的各級 scaling 的總和,應用在隨后的信道估計、測量、均衡處理中應考慮到各【符號,天線】上的 scaling 的不同,執(zhí)行必要的定標對齊。應用也可以不使用動態(tài)scaling,直接配置各級蝶形運算之前的移位量。無論使用動態(tài)還是靜態(tài) scaling,都需要配置靜態(tài)的 output scaling factor 參數(shù)。該參數(shù)限制了 FFT 輸出 I/Q 分量的最大幅度,應用可根據(jù)隨后的信道估計和均衡所執(zhí)行的計算,分別限制導頻符號和數(shù)據(jù)符號的 FFT 輸出最大幅度,使隨后的計算在不出現(xiàn)飽和或溢出的情況下具有盡可能高的有效數(shù)據(jù)位寬。這個例子把 output scaling factor 配置成了 0x40,這使得輸出數(shù)據(jù)的 I/Q 分量最大幅度是 Q15 定標下的 1/2,也就是說,輸出復樣本的最大幅度是 Q15 定標下的 1。不使用動態(tài) scaling 時,通常不需要使能side information 輸出。
• 上行前端 FFT 通過將 Rx 描述符 push 進相應的 QPend RxQ 來通知 c66x 核,從而啟動信道估計或均衡。在這個例子中,一個核處理天線 0~3 的信道估計,另一個核處理天線 4~7 的信道估計,因此:每個導頻符號上的天線 3 的 Rx 包被 push 進一個 QPend Q,觸發(fā)前一個核上的信道估計;每個導頻符號上的天線 7 的 Rx 包被 push 進另一個 QPend Q,觸發(fā)后一個核上的信道估計。另外,子幀中最后一個符號上的天線 7 的 Rx 包被 push 進第 3 個 QPend Q,該QPend Q 觸發(fā)均衡。剩下的所有【符號,天線】對應的 Rx 包進一個 General Purpose Q。對不同的核間分工,觸發(fā) c66x 核的細節(jié)也會不同,但只影響 Tx 描述符中的 destination Q 的配置,其它方面的設計不變。
o 本設計用 FFTC 提供的 destination Q 本地配置域指定 RxQ。其實還可以把 FFTC 本地配置中的 destination Q 配置成無效值(0x3FFF),然后配置多個 flow,為每個 flow配置不同的 destination Q,并為每個【符號,天線】的 Tx 描述符指定相應的 flow。
o 如果一個上行子幀的最后一個符號是 SRS 符號,當 PUSCH 和 SRS 由不同的核處理時,收到 QPend 中斷的 PUSCH 核應向 SRS 核發(fā)送核間中斷,觸發(fā)后者的 SRS 處理。
• UpPTS 使用和上行子幀不同的 flow。UpPTS 符號統(tǒng)一由一個核來處理,每個 UpPTS 符號的最后一根天線對應的 Rx 包觸發(fā)對該符號的處理。UpPTS 也采用符號級乒乓緩存,且和上行子幀共用緩存,但需要注意,當 UpPTS 僅含一個符號時,該符號使用的是乓(而非乒)緩存。
2.2 FFTC Rx 側設計
在 Tx 側,在一個符號內接收到的時域天線數(shù)據(jù)可以由 FFTC 在下一個符號內處理完畢,因此可以使用符號級乒乓緩存。在 Rx 側,F(xiàn)FTC 輸出的頻域數(shù)據(jù)需要被 PUSCH、PUCCH、SRS 接收機處理,其中 PUSCH 和 PUCCH 處理不是符號級的,需要對整個子幀的數(shù)據(jù)做綜合處理,且處理時間較長,理論上只要在該子幀全部收齊后 1ms 內處理完即可。因此,Rx 側數(shù)據(jù)的生存期較長,需要使用子幀級乒乓緩存。
如前所述,在圖 2 所示的例子中,上行前端 FFT 之后,PUSCH 導頻符號按天線在雙核間分工,PUSCH 數(shù)據(jù)符號按時隙分工。數(shù)據(jù)符號按時隙分工的優(yōu)點是:當使用 IRC 均衡算法時,每個 RB的所有 RE 共用一個噪聲干擾空間相關陣Rn,因此,把一個 RB 的所有 RE 的處理集中在一個核上,有利于核盡可能多地復用加載到寄存器中的Rn元素,執(zhí)行效率更高;當不做時域信道估計內插時,一個子載波在一個時隙內的 6 個數(shù)據(jù) RE 共用一個信道估計矩陣H,因此,把一個子載波在一個時隙內的所有 RE 的處理集中在一個核上,有利于核盡可能多地復用加載到寄存器中的H元素,執(zhí)行效率更高。對不同的核間分工,基本設計不變,只是 Rx 描述符中的 buffer 指針會有不同的配置,宗旨是盡量把 FFT 輸出數(shù)據(jù)直接送到將要處理該數(shù)據(jù)的那個核的 LL2,以使隨后的處理有盡可能高的執(zhí)行效率。
和 Tx 側類似,在 Rx 側,用 Acc 對 Rx General Q 中的描述符進行自動回收,但不需要產(chǎn)生 Acc中斷或 EDMA 事件。為了正常工作,Acc 要求在一個乒或乓 List Buffer Page 滿了之后,向Interrupt N Count 寄存器寫 1,作為應用對 Acc 的響應。因為不需要產(chǎn)生 Acc 事件,響應時不需要寫 EOI 寄存器。Tx 側的響應由 EDMA 完成,Rx 側的響應由核完成。對 FDD,Rx 側的 Acc 響應周期是一個子幀;對 TDD UL/DL 配置 0~5,響應周期是 UL/DL 切換周期;對 TDD UL/DL 配置6,響應周期是 10ms。對 FDD,Rx 側的 Acc 響應在“TTI 配置函數(shù)”中實現(xiàn);對 TDD,該響應在“UpPTS 配置函數(shù)”中實現(xiàn)。“TTI 配置函數(shù)”和“UpPTS 配置函數(shù)”的主要任務是修改 Rx描述符中的動態(tài)域,并完成 Rx FDQ 入隊,參見后面關于 Rx 描述符配置的部分。注意,Acc 不處理進入 QPend Q 的 Rx 描述符——如圖 2 所示,這些 Rx 描述符的回收由中斷處理函數(shù)執(zhí)行。
為了盡量減少實時運行時修改 Rx 描述符所引入的開銷,為兩個子幀內的每個【符號,天線】分配一組 FFTC Rx 描述符。當軟件架構要求 FFT 輸出的 PUSCH 和 PUCCH 數(shù)據(jù)分開存放時,每個Rx 包由 5 個描述符鏈接而成;當不要求這樣的 PUSCH/PUCCH 數(shù)據(jù)分離時,每個 Rx 包由 3 個描述符鏈接而成。因此,總共需要分配的 Rx 描述符個數(shù)是2 ∙ �sym ∙ �A ∙ 5或2 ∙ �sym ∙ NA ∙ 3。每個Rx 描述符的大小是 32B。
一次 FFT 的輸出數(shù)據(jù)塊格式如圖 6 所示——先是 16 字節(jié)的 side information(如果使能的話),然后是低頻側保護子載波,接著是 PUCCH 低頻側 RB、PUSCH RB、PUCCH 高頻側 RB,最后是高頻側保護子載波。FFTC 的 Rx PktDMA 不能自動去除兩邊的保護子載波。為了減少內存占用,可以讓所有 FFT 輸出數(shù)據(jù)塊的左側和右側保護段都輸出到同一塊內存中。
對 PUSCH/PUCCH 數(shù)據(jù)分離的情況,圖 7 以動態(tài) scaling 為例描述了上行子幀 Rx 描述符的配置。Rx PktDMA 為每個 FFT 輸出塊從 Rx FDQ 中 pop 出 5 個描述符,將這 5 個描述符鏈接成一個 Rx包,按順序將輸出數(shù)據(jù)塊(包括 side information)寫入這 5 個描述符提供的 5 個 buffer,再將這個包的 SOP 描述符(也就是構成這個包的第一個描述符)push 到 RxQ 中。因為每個上行子幀中實際承載 PUCCH 的 RB 數(shù)是動態(tài)變化的(實際上,頻段外側用于 2 類格式的 RB 數(shù)是半靜態(tài)配置的,內側用于 1 類格式的 RB 數(shù)動態(tài)變化的),所以,用于 PUSCH 和 PUCCH 的 Rx 描述符中的original buffer length 域需要根據(jù)當前上行子幀實際包含的 PUCCH RB 數(shù)進行修改。另外,當存在位于上行子幀的 SRS 符號,且軟件架構要求 SRS 使用和 PUSCH 最后一個數(shù)據(jù)符號不同的buffer 時,上行子幀中最后一個符號對應的用于 PUSCH 的 Rx 描述符中的 original buffer pointer域也需要根據(jù)該符號屬于 PUSCH 還是 SRS 動態(tài)更新。注意,SRS 符號上的 PUCCH RB 數(shù)和非SRS 符號可能不同(SRS 可能使 PUCCH 1 類格式采用協(xié)議中定義的 shortened 格式)。上行子幀 Rx 描述符動態(tài)域的修改以及它們的 Rx FDQ 入隊操作都在“TTI 配置函數(shù)”中完成,該函數(shù)必須在相應上行子幀開始之前、在該上行子幀之前使用相同的乒或乓描述符集合的最近上行子幀結束之后調用。為降低核負載,TTI 配置函數(shù)用 EDMA 完成 Rx 描述符的修改和入隊,啟動后無需等待傳輸結束,最多需要 3 個 EDMA 通道,分別對應非最后一個符號的 Rx 描述符修改、最后一個符號的 Rx 描述符修改、Rx 描述符入 Rx FDQ。
在圖 7 中,對乒或乓,高頻側保護段的輸出地址是固定的,低頻側保護段的輸出地址按照 FFTC實際處理的【符號,天線】順序從左向右遞進,每次增加 16B,目的是保存一個子幀中每個【符號,天線】對應的 side information。Side information 區(qū)域必須是子幀級乒乓的,導致保護段區(qū)域也不得不按乒乓分配。
當不要求 PUSCH 和 PUCCH 數(shù)據(jù)分離時,每個 Rx 包由 3 個描述符鏈接而成,PUCCH 位于每個buffer 的兩側。
圖 8 以動態(tài) scaling 為例描述了 UpPTS Rx 描述符的配置。和上行子幀相比,UpPTS 沒有PUSCH/PUCCH 分離的問題,所以一個 Rx 包總是由 3 個描述符鏈接而成,而且描述符的所有域都是靜態(tài)域,不需要動態(tài)修改。UpPTS Rx 描述符的 Rx FDQ 入隊操作在“UpPTS 配置函數(shù)”中完成,該函數(shù)必須在相應 UpPTS 開始之前、前一個 UpPTS 結束之后調用。為降低核負載,用EDMA 完成描述符入隊。注意,對 TDD UL/DL 配置 6,“UpPTS 配置函數(shù)”每半幀調一次,但Rx 側 Acc 響應每 10ms 只需執(zhí)行一次。
圖 9 以單片 TCI6634K2K/TCI6638K2K 實現(xiàn) 3 載扇為例描述了從 QPend 事件到核中斷的傳遞路徑實例。在這個例子中:
• 分配給每載扇的 3 個 QPend Q 的 Q 編號分別是 652/653/654、655/656/657、658/659/660。
• 每個核的 QPend 中斷索引都是 10。
• 核 0/1、2/3、4/5 分別處理三個載扇的 PUSCH。PUSCH 導頻符號按天線分工,數(shù)據(jù)符號按時隙分工。每對核中的第一個核只需接收導頻符號上第NA⁄2 − 1(從 0 開始編號)根天線對應的 QPend 中斷(觸發(fā)信道估計,而均衡可以在第二個時隙的信道估計完成后立即執(zhí)行);第二個核既要接收導頻符號上最后一根天線對應的 QPend 中斷(觸發(fā)信道估計),還要接收最后一個數(shù)據(jù)符號上最后一根天線對應的 QPend 中斷(觸發(fā)均衡)。
• 核 6 處理前載扇 0 和 2 的 PUCCH,核 7 處理載扇 1 的 PUCCH。因此,每個 QPend Q 654/657/660 事件要傳遞到 2 個核(載扇 0 是核 1 和核 6,載扇 1 是核 3 和核 7,載扇 2 是核5 和核 6)。
關于 TCI6634K2K/TCI6638K2K 的內部事件路由,參見[19]。關于 CIC(Chip Interrupt Controller),參見[20]。
2.3 硬件資源需求
對每個載扇,上行前端 FFT 所需的硬件資源如下:
• 1 個 FFTC 實例。
• 該 FFTC 實例上的 1 個 Tx/Rx 通道(和該 FFTC 實例的一個 TxQ 綁定)。
• 1 個用于上行子幀的 flow。TDD 時,還需 1 個用于 UpPTS 的 flow。
• 1 個 Tx return Q,1 個用于上行子幀的 Rx FDQ,1 個 Rx General Q,若干個 Rx QPend Q(具體個數(shù)由核間分工確定,比如:當 PUSCH 雙核處理,PUCCH 在另一個核上處理時,需要 3 個;當單核處理單載扇時,只需 1 個)。TDD 時,還需 1 個用于 UpPTS 的 Rx FDQ。
• �sym�A個用于上行子幀的 Tx 描述符。TDD 時,還需�UpPTS,sym�A個用于 UpPTS 的 Tx 描述符。每個 Tx 描述符的大小是 64B。
• 2 ∙ �sym ∙ �A ∙ 5(要求 PUSCH/PUCCH 數(shù)據(jù)分離時)或2 ∙ �sym ∙ �A ∙ 3(不要求數(shù)據(jù)分離時)個用于上行子幀的 Rx 描述符。TDD 時,還需�UpPTS,sym ∙ �A ∙ 3個用于 UpPTS 的 Rx 描述符。每個 Rx 描述符的大小是 32B。
• 用于 Tx 和 Rx 描述符回收的 Acc 所使用的 PDSP 實例。
• 用于 Tx 描述符回收的 Accumulator 通道,用于 Rx 描述符回收的 Accumulator 通道。
• Tx 側 TxQ 入隊 EDMA 用到的 1 個 CC 實例,1 個 TC 實例,1 個 EDMA 通道,3(FDD)、5(TDD UL/DL 配置 0~5)或 8(TDD UL/DL 配置 6)個 PaRAM set。
• Rx 側為上行子幀用到了 3 個 EDMA 通道,分別對應非最后一個符號的 Rx 描述符修改、最后一個符號的 Rx 描述符修改、Rx FDQ 入隊。每類操作涉及 1 個 CC 實例,1 個 TC 實例,1個 EDMA 通道,1 個 PaRAM set。Rx FDQ 入隊也可以改用 QDMA,其它兩類操作涉及 3D搬移,只能用 EDMA。TDD 時,只要在使用時間上不沖突,針對上行子幀和針對 UpPTS 的操作可以合用一套資源。
• Acc 內存資源:
o 用于 Tx 描述符回收的 List Buffer Page:
只要處理能力足夠,多個載扇可以共用一個 FFTC 實例、一個 CC 甚至 TC 實例。多扇區(qū)通常共用一個 Acc PDSP 實例。所有用于通知某個核或某組核的 QPend 事件可以來自同一個 QPend Q,軟件通過從中 pop 出的描述符地址辨別事件類型。其它資源通常不適合多載扇共用,需要為每個載扇單獨分配。
2. 4 C66x 核負載測量
采用本設計,大部分配置工作在小區(qū)建立或重配時完成,需要在實時運行過程中調用的函數(shù)僅限于 TTI 配置函數(shù)和 UpPTS 配置函數(shù)。表 1 給出了 TTI 配置函數(shù)的實測 cycle 數(shù)。TTI 配置函數(shù)的任務主要是響應 Acc 以及配置/啟動用于 Rx 描述符修改和入隊的 3 個 EDMA,因為無需等待EDMA 傳輸結束,所以該函數(shù)的負載和天線數(shù)無關。UpPTS 配置函數(shù)的負載比 TTI 配置函數(shù)更低,此處從略。本測試使用 TCI6638K2K EVM;L1P/L1D cache 初始狀態(tài)都為 cold,也就是說,函數(shù)開始執(zhí)行時,代碼和數(shù)據(jù)都不在 L1 cache 中。
3、PRACH 前端時頻轉換
圖 10 給出了 PRACH 接收機的流程圖,本章描述的 PRACH 前端時頻轉換包括去 CP 和轉換至頻域這兩個步驟。
本文用短 RACH 指代 PRACH preamble 格式 4,用長 RACH 指代其它格式。表 2 給出了各種小區(qū)帶寬情況下,長、短 RACH 的前端時頻轉換所需的 DFT 原始長度。下面分情況描述時頻轉換方案設計:
• 長 RACH:
o 對 20、15、10MHz 小區(qū),F(xiàn)FTC 不支持 DFT 原始長度,需要采用間接的時頻轉換法,具體分為兩種:
l 大點 DFT 法。該方法主要使用 FFTC,輔以少量的核處理,直接完成一個大點數(shù)的 DFT。參見 3.1 節(jié)。
l 混合法。該方法使用核完成下變頻和濾波降采樣,然后用 FFTC 在降低后的采樣率上執(zhí)行小點 DFT。參見 3.2 節(jié)。
o 對更窄帶寬的小區(qū),可以直接用 FFTC 執(zhí)行 DFT。參見 3.3 節(jié)。
•短 RACH:
o 總是可以直接用 FFTC 執(zhí)行 DFT。參見 3.4 節(jié)。
3.1 長 RACH——大點 DFT 法
本節(jié)先描述原理,再給出實現(xiàn)方案。
3.1.1 原理
一個長度為 N 的序列�(�)的 N 點 DFT 定義為
對 20MHz 小區(qū),按照 FFTC 支持的 DFT 長度對整個 24576 點序列做分割,有 24576 = 8192*3 =6144*4 = 4096*6 = 3072*8 = 2048*12 = ……,對應的抽取因子 P 分別是 3、4、6、8、12 等。對P 的選取應綜合考慮以下因素:
• C66x 核負載。P 越大,步驟 3 和 4 涉及的計算量就越大。
• 抽取 EDMA 的配置復雜度。如前一章所述,AIF 收到的上行時域天線數(shù)據(jù)是按符號乒乓緩存的,為了用 EDMA 完成 P 點抽取,最直接的方法是在 FFT 入隊 EDMA 完成后,觸發(fā)另一個EDMA 把當前符號的時域數(shù)據(jù)以 P 點抽取的方式搬到別的地方去。為了 EDMA 配置的簡單性,一個符號內的樣本數(shù)最好是 P 的倍數(shù)。對 20M小區(qū)、normal CP 場景,為了滿足此需要,P只能等于 1、2、4、8、16。
• FFTC 執(zhí)行效率。根據(jù)[21],1GHz KeyStone 器件上的一個 FFTC 的流量在 DFT 長度為 8192、6144、4096、3072、2048 時分別為 378、360、437、413、431 Msps。不同長度對應的流量有較為可觀的差異,比如,4096 點時的流量比 6144 點時高 21.4%。
綜合考慮以上因素,本文推薦使用 P=4 作為 20MHz 小區(qū)的抽取因子,對應 6144 點 DFT。對 15和 10MHz 小區(qū),假設采樣率按帶寬等比下降,則 PRACH 序列長度從 20M 時的 24576 降為18432 和 12288。對這兩類小區(qū)帶寬,分別使用 P=3 和 2,而保持 6144 作為 DFT 點數(shù)。這樣的選擇偏向更輕的核負載和 EDMA 配置簡單性,犧牲了一些 FFTC 執(zhí)行效率。
3.1.2 實現(xiàn)
如上所述,基于 DIT 的大點 DFT 有 4 個處理步驟。實現(xiàn)時,步驟 1(P 點抽取)由 EDMA 完成,步驟 2 由 FFTC 完成,步驟 3 和 4 由 c66x 核完成。
抽取 EDMA 需要用到 2 個 EDMA 通道,分別稱為 trigger 通道和 working 通道。圖 12 以“TDD UL/DL 配置 1,PRACH 配置 10,20MHz,Normal CP”為例給出了抽取 EDMA 的配置細節(jié)。
根據(jù)附錄 A,在該系統(tǒng)配置下,trigger 通道需要 7 個 EDMA PaRAM set 來響應上行前端 FFT 產(chǎn)生的長 RACH 觸發(fā)事件。第 1 個 PaRAM set 只用一次,用于響應系統(tǒng)初始化后最初的若干上行子幀符號對應的事件。之后的 6 個 PaRAM set 以 10ms 為周期重復使用,用于處理該系統(tǒng)配置下一個無線幀包含的 3 個 opportunity,以及相鄰 opportunity 之間不承載 PRACH 數(shù)據(jù)的上行子幀符號。對不承載 PRACH 的上行子幀符號,相應的長 RACH 觸發(fā)事件不觸發(fā)實際操作,本文稱這樣不承載實際數(shù)據(jù)搬移任務的 EDMA 為 dummy 類型的 EDMA。對承載 PRACH 的上行子幀符號,相應的長 RACH 觸發(fā)事件通過 trigger 通道的 chain 機制間接觸發(fā) working 通道,并且在觸發(fā)working 通道之前先用 trigger 通道修改 working 通道將要用到的 PaRAM set 中的符號級動態(tài)域。
Working 通道需要NA + 3個 PaRAM set。第 1 個 PaRAM set 只用到 1 次,屬于 dummy 類型的。后面的NA + 2個 PaRAM set 以 link 加 self-chain 的方式,以上行子幀符號為周期重復使用。對每個上行子幀符號,先執(zhí)行 1 個 dummy 類型的 PaRAM set,用于確保 trigger 通道對接下來的NA + 1個 PaRAM set 的動態(tài)域的修改已經(jīng)完成。接下來的NA個 PaRAM set 用于完成NA根天線的P 點抽取。最后 1 個 PaRAM set 用于在整個序列的最后一個符號處執(zhí)行 FFTC TxQ 入隊操作,非序列最后一個符號對應的該 PaRAM set 屬于 dummy 類型。
Working 通道的后NA + 1個 PaRAM set 中的動態(tài)域包括 SRC、DST 和 BCNT。Trigger 通道為每個上行子幀符號執(zhí)行一次對這NA + 1個 working 通道 PaRAM set 的動態(tài)更新,數(shù)據(jù)源位于內存中,稱為 PaRAM set LUT,其內容在小區(qū)初始化或重配時由驅動軟件配置。
對圖 12 示例之外的其它系統(tǒng)配置,基本原理是類似的,但細節(jié)上有一些差別。
• Trigger 通道用到的 PaRAM set 個數(shù)等于附錄 A 表格中“EDMA 分段”列給出的值加 1。
• Trigger 通道的每個 PaRAM set 負責響應的上行子幀符號數(shù)等于附錄 A 表格中“初始 Dummy符號數(shù)”列或“EDMA 段內符號數(shù)”列給出的值。對 dummy 類型的 PaRAM set,這個值配置到 BCNT;對其它 PaRAM set,配置到 CCNT。
• 對 PRACH 格式 0 和 1,一個抽取目的 buffer 包含 1 個 PRACH 序列,僅需為最后一個符號執(zhí)行 FFTC 入隊操作。對 PRACH 格式 2 和 3,一個抽取目的 buffer 包含 2 個序列。此時,為了在一個序列收齊之后立刻啟動 FFTC,需要為每個序列的最后一個符號執(zhí)行 FFTC 入隊操作。這些都通過配置 PaRAM set LUT 實現(xiàn)。
• 對 PRACH 格式 0,如果兩個相鄰的上行子幀都承載了 PRACH,需要分配兩個抽取目的buffer,以子幀為單位乒乓使用。此時,每個 buffer 有自己的 PaRAM set LUT。對其它PRACH 格式,一個 buffer 就夠了,但格式 2 和 3 的一個 buffer 實際上包含 2 個序列。
• 對 PRACH 格式 2 和 3,不能把一個 opportunity 的兩個序列的抽取輸出連續(xù)排列,這是因為DCIDX 域最大只有 16 位(包括符號位),連續(xù)排列的話正好超出了表達范圍。
• 對 PRACH 格式 2 和 3,為了讓兩個序列各自放在連續(xù)的內存中,需要對兩個序列交接處的那個符號的抽取 EDMA 做特殊處理。為此,對 working 通道,在原有的NA + 3個 PaRAM set的基礎上增加NA個,這些新增的 PaRAM set 不需要動態(tài)更新,負責處理交接符號中屬于后一個序列的部分的抽取,而原有的用于抽取的NA個 PaRAM set 現(xiàn)在只處理屬于前一個序列的部分。這兩組 PaRAM set 以相互交織的方式 link 和 self-chain,為此,LINK 必須成為動態(tài)更新域,以便動態(tài)改變 link 目標。
步驟 2,也就是 6144 點 DFT,由 FFTC 完成。這一步采用原位操作以節(jié)省內存。推薦采用動態(tài)scaling,此時每個 6144 點的 buffer 需要在頭部多留出 16B 以容納 FFTC 輸出的 side information。
步驟 3 和 4 由核實現(xiàn)。一個 PRACH opportunity 在頻域占用 6 個 RB,但并不是整個 6 RB 帶寬都被 PRACH 占用,因為兩側有相同寬度的保護頻帶。圖 13 給出了一個例子,其中,PRACH 導頻子載波被標記為紅色。
3.1.3 硬件資源需求
對每個載扇,PRACH 前端時頻轉換所需的硬件資源如下:
• 1 個 FFTC 實例。
• 該 FFTC 實例上的 1 個 Tx/Rx 通道(和該 FFTC 實例的一個 TxQ 綁定)。
• 1 個 flow。
• 1 個 Tx return Q,1 個 Rx FDQ,1 個 Rx QPend Q。
• �X ∙ �S∙ �A ∙ P個 Tx 描述符,其中�S表示一個 opportunity 中的序列個數(shù),�X表示前面所說的抽取目的 buffer 個數(shù)(1 或 2,僅格式 0 在部分配置下取 2)。每個 Tx 描述符的大小是 32B。
• Rx 描述符的個數(shù)和 Tx 描述符一樣。每個 Rx 描述符的大小是 32B。
• 抽取 EDMA 用到的 1 個 CC 實例,1 個 TC 實例,2 個 EDMA 通道。Trigger 通道需要的PaRAM set 個數(shù)等于附錄 A 表格的“EDMA 分段”列取值加 1,最大值等于 11,發(fā)生在TDD UL/DL 配置 0、PRACH 配置為 15/16/17 時。對 PRACH 格式 0 或 1,working 通道需要NA + 3個 PaRAM set;對格式 2 或 3,需要2NA + 3個。
• 用于控制的內存資源:
o PaRAM set LUT,PRACH 格式 0 或 1 時的大小是�X ∙ � ∙ (�A + 1) ∙ 12字節(jié),格式 2 或3 時的大小是� ∙ (�A + 1) ∙ 20字節(jié),其中�表示一個 opportunity 的序列部分占用的符號數(shù),如附錄 A 中的表 4 所示。
o 描述符地址數(shù)組(用于 PRACH 前端 FFTC 入隊的源 buffer),大小是 Tx 描述符個數(shù)乘以 4 字節(jié)。
只要處理能力足夠,多個載扇可以共用一個 FFTC 實例、一個 CC 甚至 TC 實例。所有用于通知某個核或某組核的 QPend 事件可以來自同一個 QPend Q,軟件通過從中 pop 出的描述符地址辨別事件類型。其它資源通常不適合多載扇共用,需要為每個載扇單獨分配。
3.1. 4 負載測量
步驟 3 和 4 在 c66x 核上的硬件實測負載如表 3 所示,對應一個 opportunity。如果在頻域有多個opportunity,則總 cycle 數(shù)要乘以 opportunity 個數(shù)。本測試使用 TMS320C6670 EVM,內存配置是:輸入、輸出 buffer 都位于 LL2;L1P/L1D cache 初始狀態(tài)都為 cold,也就是說,函數(shù)開始執(zhí)行時,代碼和數(shù)據(jù)都不在 L1 cache 中。
3.2 增大 Cboot 電容的風險分析
混合法的原理如圖 14 所示。C66x 核負責下變頻和低通濾波抽取,并啟動 FFTC 完成降采樣序列的 DFT。當頻域有多個 opportunity 時,為每個 opportunity 分別執(zhí)行整個處理流程。降采樣后的序列長度等于 1536,20、15、10MHz 小區(qū)分別對應 16、12、8 倍降采樣。
C66x 核處理任務可以每符號執(zhí)行一次,也可以在一個 PRACH 序列收集完畢后執(zhí)行一次。前者的優(yōu)點是節(jié)省內存;缺點是由多任務相互打斷而導致的 cache 開銷和任務切換開銷,由“重疊相加”或“重疊保留”分段濾波帶來的額外計算量,以及更頻繁的中斷開銷。反之,后者的優(yōu)點是核開銷較低,缺點是需要更多的內存。對后者,如果因片內內存不夠而需要把 PRACH 序列收集 buffer放到 DDR,則核開銷方面的優(yōu)點可能會被更低的內存訪問效率抵消。
采用逐符號處理時,PRACH 前端 EDMA 配置和圖 12 之間的區(qū)別是:
• 只用到了 trigger 通道,working 通道及其 PaRAM set 不再需要。
• 原本用于觸發(fā) working 通道的事件現(xiàn)在用于觸發(fā)核中斷,相應的 PaRAM set 僅做 dummy 數(shù)據(jù)搬運。
采用逐序列處理時,PRACH 前端 EDMA 配置和圖 12 之間的區(qū)別是:
• PaRAM set LUT 中的配置參數(shù)對應連續(xù)內存搬移,而非抽取操作。
• Working 通道用于 FFTC 入隊的 PaRAM set 不再需要,而它之前的那個 PaRAM set 的 final事件不僅觸發(fā) self-chain 事件,還產(chǎn)生核中斷。
下變頻和低通濾波抽取在 c66x 核上的硬件實測負載為:一個 opportunity、一個序列、一根天線上的 cycle 數(shù)是 55,958。本測試使用 TMS320C6670 EVM,系統(tǒng)參數(shù)和內存配置是:20MHz 小區(qū),32 階濾波器;分為 12 段按重疊相加法處理;輸入、輸出 buffer 都位于 LL2;L1P/L1D cache 初始狀態(tài)都為 cold。注意,這里測量的負載沒有包含多任務互相打斷而導致的額外開銷。
3. 3 長 RACH——直接 DFT
5、3、 1.4MHz 小區(qū)中的長 RACH 使用直接 DFT,因為根據(jù)表 2,這些小區(qū)帶寬下的 DFT 原始長度可以被 FFTC 直接處理。此時,PRACH 前端 EDMA 配置類似圖 12,唯一的區(qū)別是 PaRAM set LUT 中的配置參數(shù)對應連續(xù)內存搬移,而非抽取操作。
直接 DFT 沒有實時 c66x 核開銷。
3.4 短 RACH
UpPTS 的長度可以是 1 或 2 個符號,而短 RACH 僅在 UpPTS 長度是 2 個符號時才允許存在。短RACH 在 UE 側 UpPTS 結束點之前 4832Ts 處發(fā)射,CP 長度是 448Ts,序列部分從第 1 個UpPTS 符號的 0Ts(normal CP)或 736Ts(extended CP)開始,長度是 4096Ts。
如圖 4 所示,前端 FFT 入隊 EDMA 可以為 UpPTS 中的每個符號產(chǎn)生一個短 RACH 事件,該事件觸發(fā)短 RACH 的 working 通道,完成數(shù)據(jù)搬移和 FFTC 入隊。短 RACH 的 working 通道使用 4 個PaRAM set,第一個用于初始 dummy,接下來的兩個分別用于兩個符號的數(shù)據(jù)搬移,最后一個用于 FFTC 入隊。
對每個載扇,短 RACH 前端時頻轉換所需的硬件資源如下:
• 1 個 FFTC 實例。
• 該 FFTC 實例上的 1 個 Tx/Rx 通道(和該 FFTC 實例的一個 TxQ 綁定)。
• 1 個 flow。
• 1 個 Tx return Q,1 個 Rx FDQ,1 個 Rx QPend Q。
• NA個 Tx 描述符。每個 Tx 描述符的大小是 32B。
• Rx 描述符的個數(shù)和 Tx 描述符一樣。每個 Rx 描述符的大小是 32B。
• 數(shù)據(jù)搬移 EDMA 用到的 1 個 CC 實例,1 個 TC 實例,1 個 EDMA 通道,4 個 PaRAM set。
• 用于控制的內存資源:
o 描述符地址數(shù)組(用于短 RACH 前端 FFTC 入隊的源 buffer),大小是 Tx 描述符個數(shù)乘以 4 字節(jié)。
只要處理能力足夠,多個載扇可以共用一個 FFTC 實例、一個 CC 甚至 TC 實例。所有用于通知某個核或某組核的 QPend 事件可以來自同一個 QPend Q,軟件通過從中 pop 出的描述符地址辨別事件類型。其它資源通常不適合多載扇共用,需要為每個載扇單獨分配。
4、小結
本文詳細描述了在 TI 的 KeyStone 器件上實現(xiàn)高效的 LTE 上行基帶前端處理的方法,包括對常規(guī)前端 FFT 的處理和對 PRACH 前端時頻轉換的處理,并給出了實測的 c66x 核負載。
從本文的描述可見,KeyStone 架構提供的 EDMA 和 Navigator 機制非常靈活,可以把數(shù)據(jù)搬運、加速器啟動、核觸發(fā)等操作步驟串聯(lián)成一個可自動執(zhí)行的整體流程,極大降低了對核實時干預的需求。
當輸入數(shù)據(jù)位于 DDR 時,F(xiàn)FTC 的執(zhí)行效率較低。因此,對 PRACH 前端處理,建議把從符號級乒乓緩存搬移出來的數(shù)據(jù)放在片內。
對 PRACH 前端處理,大點 DFT 法比混合法節(jié)省 10 倍以上的核負載。當 FFTC 和片內存儲資源足夠時(比如對小基站),大點 DFT 較為合適。在其它情況下,哪種方法合適需要根據(jù)系統(tǒng)對c66x 核、FFTC、內存的使用情況選擇。