朱 捷 席 兵 劉 勇
1(重慶郵電大學通信與信息工程學院 重慶 400065)2(重慶郵電大學通信網(wǎng)與測試技術重點實驗室 重慶 400065)
現(xiàn)代無線通信系統(tǒng)中,良好的接收機設計對于系統(tǒng)性能的發(fā)揮起到重要保障作用。隨著近兩年TM9模式的逐步商用,針對多天線技術的增強特性逐步部署于現(xiàn)有的移動通信系統(tǒng)中,對于信號檢測環(huán)節(jié)的設計及優(yōu)化工作提出了新的挑戰(zhàn)。當前市場上以Xilinx、Wasiela為代表的公司研發(fā)的主流產(chǎn)品IP集中在MMSE和k-best兩種檢測器上,高吞吐、低延時的檢測模塊設計仍然為研究熱點。文獻[1]提出了一種基于乒乓操作的多天線檢測方案,其應用場景簡單、數(shù)據(jù)量小,不能滿足現(xiàn)有的吞吐和存儲需求。文獻[2]提出了一種基于MGS-QR分解的高效檢測器結構,通過數(shù)據(jù)級并行、任務級并行等策略提高了計算效率,但該設計方案復雜度過高,硬件資源損耗過多。文獻[3]的設計方案能很好地應用于無線空中接口系統(tǒng),具有良好的EVM指標及吞吐性能,但該方案不支持多天線增強特性,如TM9下的信道估計是基于DMRS(DeModulation Reference Signal)的,模塊需進一步優(yōu)化以滿足新的應用需求。
針對現(xiàn)有方案的不足,本文提出了一種高效率的多天線信號檢測方案。針對高帶寬、高吞吐的設計需求,將DDR3存儲器整合至接收端信號檢測環(huán)節(jié),并采取基于AXI4-Stream接口封裝的形式實現(xiàn)了高速的數(shù)據(jù)交互。通過功能劃分及模塊集成,接收端形成一種近似流水線的工作方式,并行處理各子幀數(shù)據(jù)。本文方案現(xiàn)已應用于一款空口監(jiān)測儀表中,具備實用性。
隨著信號處理技術的發(fā)展,僅依靠片內(nèi)的存儲資源是遠遠不夠的,本文采取了片外DDR3的方式實現(xiàn)各個模塊的高速數(shù)據(jù)交互。
Xilinx公司為DDR3提供了MIG IP核作為控制器,并提供實例設計便于對用戶接口進行封裝,極大地便利了開發(fā)工作,但由于其讀寫指令通道復用需要實時關注兩個ready信號,造成了時序操作上的不方便[4]。為了解決這一問題,可以采取將DDR3控制器封裝為AXI總線接口的方式,充分利用其讀寫通道分離的特點實現(xiàn)雙向的數(shù)據(jù)傳輸,同時又結合了SOC的架構優(yōu)勢,方便掛在總線上的PL端通過地址訪問。AXI4總線包含三種類型的接口,即AXI4、AXI4-lite、AXI4-stream??紤]到項目中需處理的數(shù)據(jù)量較大,本文選取了最佳的AXI4-Stream[5]。
數(shù)據(jù)讀寫的整體設計如圖1所示,由PL端發(fā)起讀寫操作命令,通過MIG控制片外DDR3。基于AXI4-Stream的流接口封裝,收發(fā)雙方可采取點對點的數(shù)據(jù)傳輸方式,故不需要總線地址,數(shù)據(jù)吞吐率較高,但開發(fā)人員需要自行封裝控制地址的映射和讀寫仲裁等。本文在讀寫仲裁方面進行了簡單的輪轉FIFO設計,即數(shù)據(jù)的讀寫總線命令同時有效時,進行控制協(xié)調(diào)并分別例化一個FIFO用于緩存地址和數(shù)據(jù)。仲裁模塊通過MIG側的優(yōu)先級輪換邏輯實現(xiàn)輪流讀取,即每次選一個FIFO讀取直至為空再重新選擇。
圖1 DDR3讀寫模塊設計
在此基礎上,將DDR3模塊整合至接收端物理層的信號檢測。此時數(shù)據(jù)讀寫操作對象主要為頻域數(shù)據(jù)和信道估計值,故與DDR3進行數(shù)據(jù)交互的模塊為信道估計、同步時偏修正、MIMO檢測模塊。設計中為了達到低耦合的設計目標,將參考信號的提取集成到信道估計模塊實現(xiàn),同時由于多個物理信道在檢測流程上相似,故將MIMO檢測模塊集成為下行接收端所有信道復用的一個模塊。為了便于各子幀檢測時數(shù)據(jù)同步,本文采取DDR3統(tǒng)一存儲數(shù)據(jù),資源解映射模塊進行狀態(tài)地址信息交互,然后再調(diào)度數(shù)據(jù)給MIMO檢測模塊的方式。此時下行接收端在進行信號檢測時各模塊間相互獨立,整體形成一種近似流水線的工作方式,設計方案如圖2所示。
圖2 信號檢測整體設計
所有天線的多路IQ數(shù)據(jù)依次經(jīng)過低電壓差分信號(Low-Voltage Differential Signaling, LVDS)接口適配、去直流、頻偏修正、幀同步、FFT和時偏修正等模塊進入CRS(Cell-specific reference signal)信道估計和數(shù)據(jù)DDR3存儲,然后進行多用戶(UE)場景下的信號檢測。具體流程如下:
(1) CRS信道估計模塊將數(shù)據(jù)以頻域幀結構的形式輪流存入DDR中,最多存儲4份子幀數(shù)據(jù)。
(2) 一個子幀數(shù)據(jù)寫入DDR完畢即可拉高對應標志端口電平,通知后級資源解映射模塊提取數(shù)據(jù)。然后依次提取PBCH、PCFICH、PDCCH信道數(shù)據(jù),送往后級譯碼模塊進行信道譯碼。
(3) 考慮到多個UE的情況,PDCCH譯碼模塊每譯碼出一個UE的DCI(Downlink Control Information),進而計算出UE的參數(shù),如調(diào)制模式、RE數(shù)量、碼塊大小、碼流數(shù)目等[6]。根據(jù)UE的參數(shù),資源解映射模塊計算出UE所占用的PDSCH位置,從DDR中讀出UE的數(shù)據(jù)。
(4) 根據(jù)DCI提示的傳輸類型,如果是TM7-TM9,則將UE的數(shù)據(jù)送往DMRS信道估計模塊,然后送往MIMO檢測模塊,否則直接送往MIMO檢測模塊。將該模塊的數(shù)據(jù)送入PDSCH模塊進行譯碼,從而得到一個UE的數(shù)據(jù)。
(5) 獲取另一個UE的DCI信息,重復執(zhí)行第(3)步至第(5)步,直至將一個子幀里面的所有UE數(shù)據(jù)處理完畢??紤]到如果出現(xiàn)異常中斷情況,即在執(zhí)行第(6)步的過程中DDR的提示狀態(tài)發(fā)生了改變,那么FPGA執(zhí)行完當前的UE操作后會立即跳轉到第(2)步進行下一輪操作,同時保存上一個子幀的所有狀態(tài),在執(zhí)行完PBCH、PCFICH和PDCCH譯碼后,F(xiàn)PGA再接著處理上一個子幀的UE數(shù)據(jù)。如果完全執(zhí)行結束,那么FPGA從第(2)步開始一輪新的操作。最終,將PDSCH、PBCH、PCFICH輸出的數(shù)據(jù)進行組裝后輸出。
在該設計模式下,接收端在遍歷子幀時可以達到并行處理數(shù)據(jù)的特點,即前一子幀的數(shù)據(jù)存儲和后一子幀的數(shù)據(jù)處理同步進行,整體上提高了數(shù)據(jù)的實時處理能力,為后續(xù)模塊贏取時間。經(jīng)過測試,在200 MHz差分時鐘下以1個符號的12個子載波為基本單位,寫入連續(xù)讀出離散的情況下,DDR3的性能達到600 MB/s。
由上述分析可知,該方案中DDR3模塊負責數(shù)據(jù)存儲,資源解映射模塊負責各階段的資源位置提取,通過與DDR3進行地址信息交互調(diào)度數(shù)據(jù)給MIMO檢測模塊,核心計算部分為MIMO檢測模塊。本文選取主流的MMSE檢測器,采取流水線結構,充分利用了FPGA并行處理數(shù)據(jù)的優(yōu)勢。
MIMO檢測模塊進行的是反向預編碼、解層映射和復原調(diào)制符號最優(yōu)估計的處理,該模式需滿足不同的傳輸模式。針對當前的LTE-A系統(tǒng),實現(xiàn)時采取了每個子幀完成14列OFDM符號的信道估計后統(tǒng)一進行MIMO檢測的方案,在同一子幀內(nèi)采取了遍歷子載波的檢測方式。檢測流程設計如圖3所示。
圖3 MIMO檢測流程設計
具體包括:
(1) 通過資源解映射模塊添加子幀、OFDM符號列數(shù)、子載波號等地址信息向DDR3請求數(shù)據(jù)。
(2) DDR3通過AXI4-Stream接口返回地址及數(shù)據(jù)信息給MIMO檢測模塊。
(3) 通過拆分控制流信息讀取傳輸模式,參數(shù)有誤則Security驗證失敗。
(4) 由讀取的頻域數(shù)據(jù)rm(i)及信道估計數(shù)據(jù)Hm ,n(i)構造等效信道矩陣H和接收向量r。Hm ,n(i)表示接收天線m與發(fā)射天線n之間的第i個數(shù)據(jù)符號的信道估計值,rm(i)表示接收天線接收的第i個數(shù)據(jù)符號的數(shù)據(jù)。構造等效信道矩陣的過程即對應解預編碼,不同的傳輸模式對應不同形式的等效信道矩陣[7-10]。
(5) 執(zhí)行檢測算法,即本文選擇的MMSE算法:
(1)
(6) 解層映射及后續(xù)處理,主要針對發(fā)射分集模式,對結果中一個數(shù)據(jù)流求共軛。
按照自頂向下的設計原則,對檢測模塊進行了FPGA設計,頂層的設計框圖如圖4所示。
圖4 MIMO檢測模塊頂層設計
控制模塊主要包括時鐘信號、復位信號、握手信號、參數(shù)控制流等。時鐘管理方面,采取了全局時鐘緩沖(BUFG)的方法,即一個高扇出緩沖器,它將信號連接到全局布線資源,實現(xiàn)了整個系統(tǒng)的同步。
矩陣求逆部分是限制吞吐性能的主要瓶頸。目前,LTE-A系統(tǒng)中基站端接收天線數(shù)至多為8,故運算中復矩陣B的形式為2×2、4×4、8×8,且均為Hermite正定矩陣。國內(nèi)市場處于4×4MIMO初步商用的階段,故本文設計主要支持中小規(guī)模MIMO,即4維以下的矩陣求逆。
基于Cholesky分解的矩陣求逆方案的基本思想是通過矩陣分解簡化為下三角陣求逆的問題,可拆分為Cholesky分解、下三角矩陣求逆、矩陣乘法三個模塊。
以4×4的矩陣規(guī)模為例,其Cholesky分解形式如下:
(2)
由數(shù)據(jù)依賴關系可以看出,Cholesky分解是基于開方運算來實現(xiàn)的,且每一列的數(shù)據(jù)運算均依賴于前幾列的元素。故設計時,拆分為4個Col子模塊,每個子模塊完成一列元素的計算并緩存初始的輸入數(shù)據(jù)。具體即Col1模塊輸入目標矩陣的下三角元素,計算出下三角矩陣L中的第一列元素并緩存剩余元素;Col2模塊的輸入數(shù)據(jù)為Col1模塊的輸出及緩存的原矩陣剩余元素。以此類推,分解為4級實現(xiàn),各模塊輸出時將計算出的結果與寄存的非計算元素輸出至下一模塊即可。
為了提高運算效率,4個子模塊計算時均通過數(shù)據(jù)依賴關系拆分組合邏輯于內(nèi)部流水實現(xiàn),每一列處理均優(yōu)先計算出主對角線元素,然后依次參與非對角線元素的計算。如Col1模塊的l21、l31、l41的計算均依賴于l11,先計算出l11并緩存,再并行處理l21、l31、l41的計算。Col2和Col3模塊時序較為復雜,圖5給出了第二列的流水線設計結構。Col4模塊主要計算l44元素,累積誤差已經(jīng)較為明顯,其取值依賴于l41、l42、l43,故在截位操作時需保障精度。子模塊間通過valid、ready握手信號控制。
圖5 Col2模塊的流水線結構設計
由Cholesky分解得到下三角矩陣,求逆后進行矩陣乘法即可得到最終結果。基于數(shù)據(jù)依賴關系采取了流水+空間并行的方式,即脈動陣列求解。傳統(tǒng)的設計均是針對上三角矩陣,由于上三角陣與下三角陣存在良好的轉置對稱關系,故二者的脈動陣列設計幾乎完全相同,僅需調(diào)整進入PE單元的元素順序即可。本文使用了傳統(tǒng)的設計方案,即單元設計仍是基于乘加單元和除法單元。
對于2×2MIMO系統(tǒng),矩陣維度最小,設計中希望進一步提高模塊的吞吐率。2×2場景下Cholesky分解模塊與三角陣求逆模塊間的數(shù)據(jù)依賴關系較為簡單,為了減少緩存數(shù)據(jù)消耗的寄存器資源同時提高運算效率,本文又提出了一種無數(shù)據(jù)回流的全流水線設計結構。
設輸入正定矩陣為A,元素用aij表示。
經(jīng)過Cholesky分解后得到下三角矩陣L如下:
(3)
對于下三角矩陣的求逆即為:
(4)
在二維矩陣規(guī)模中,經(jīng)過Cholesky分解后可以根據(jù)數(shù)據(jù)依賴關系由數(shù)據(jù)流直接構建出逆矩陣LINV的形式,無需再對中間過程三角陣的元素進行位置標識。對于求解LINV(2,1),數(shù)據(jù)依賴于l11、l22和l21,進一步拆分組合邏輯,設計為先求解對角線元素,再利用對角線元素的結果進行兩次乘法運算避免了更為復雜的除法運算,達到快速求解的目的。整體上模塊的輸入端可以同時處理目標矩陣所有元素,內(nèi)部轉化為3路數(shù)據(jù)流并行處理的流水線結構,極大地提高了模塊的吞吐率。模塊內(nèi)部涉及的乘法、除法、開方運算均通過Xilinx公司提供的成熟的IP核來實現(xiàn),一定程度上保證了計算精度和性能發(fā)揮。2×2矩陣求逆整體設計結構如圖6所示。
圖6 求逆模塊流水線結構設計
為了更好地評估設計方案,本節(jié)以ZYNQ系列的XC7Z100-2FFG900 FPGA芯片為硬件平臺進行綜合實現(xiàn),并通過聯(lián)合Vivado、Novas、Synopsys Vcs等軟件進行了功能測試。
仿真選取在20MHz FDD系統(tǒng)下進行,天線配置為2×2,TM3傳輸場景。系統(tǒng)時鐘最高可以支持187.5 MHz,完成一個RE的信號檢測約耗時0.007 ms,仿真結果如圖7所示。
圖7 檢測模塊FPGA功能仿真圖
圖7中,valid、ready信號為AXI4-Stream使用的握手信號,valid為高電平時數(shù)據(jù)有效,ready阻塞信號為低電平時表示本模塊當前暫停接收數(shù)據(jù)。輸入的信道估計值及頻域數(shù)據(jù)均為32位,高16位為虛部,低16位為實部。m_axis_datao數(shù)據(jù)為解層映射后輸出的32位IQ數(shù)據(jù)流。
通常設計中信道估計及資源解映射環(huán)節(jié)會占用過多的塊RAM資源,隨著流水線級數(shù)和延時單元的增加,塊RAM的使用量會進一步增多。為了節(jié)約資源,本設計主要使用分布式RAM即LUT資源。設計方案的資源消耗如表1所示。
表1 檢測模塊資源消耗
與文獻[1]相比,本文在資源開銷不大的情況下達到了較高的吞吐率。文獻[1]中,部分資源消耗占比過高,如RAM資源占用達到33.74%,本文的設計方案中各項資源的占用率較為合理且有所降低,均為10%左右。吞吐性能方面,文獻[1]采取了子幀內(nèi)并行處理的方式,本文則是各子幀間并行處理數(shù)據(jù),無明顯差異。
如圖8所示,將Vcs仿真導出的數(shù)據(jù)與MATLAB浮點數(shù)仿真的結果進行相對誤差分析,通過大量的數(shù)據(jù)測試可以看出雖然存在一定的精度損失,但僅在10-4量級,即實現(xiàn)的精度在合理范圍內(nèi)。
圖8 檢測模塊誤差分析圖
該方案現(xiàn)已應用于當前LTE-A系統(tǒng)下的空口監(jiān)測產(chǎn)品中[11],實測環(huán)境下經(jīng)CMW500儀表驗證在雙流傳輸場景下PDSCH檢測吞吐可達140 Mbit/s,EVM指標接近5%,符合空中接口協(xié)議要求。
本文提出了一種高效率的多天線信號檢測FPGA實現(xiàn)方案,該方案充分利用了DDR3高速讀寫數(shù)據(jù)的優(yōu)勢并采取了基于AXI4-Stream接口封裝的技術極大地提高了數(shù)據(jù)處理效率。對于其核心模塊MIMO檢測,基于數(shù)據(jù)依賴關系,本文采取了流水線的設計結構,針對2×2MIMO場景又提出了一種新的低消耗、高吞吐的設計方案,通過全流水的方式將矩陣分解和三角陣求逆兩個獨立模塊結合起來,節(jié)省了中間過程因控制和存儲造成的資源消耗。本文方案能滿足當前TM9模式的應用需求,也為無線通信系統(tǒng)基帶核心處理部分提供了解決方案。