趙歡歡+張潤生
摘要:信道化是前端接收子系統的一部分,用于區分不同的用戶或信道?,F代信道化采用先進的多項濾波器組來同時處理多個信道,允許同時下變頻、降采樣和濾波。由于傳統硬件的限制,在信道數和吞吐量方面限制很大。本文基于GPU技術,將多相濾波數學模型映射到并行計算單元,實現了具有多信道、高吞吐量等特征的信道化方法,并在短波系統中驗證使用。
關鍵詞:多相濾波;信道化;CUDA
中圖分類號:TP391.4 文獻標識碼:A 文章編號:1007-9416(2017)06-0162-02
通信接收系統分為2個主要子系統:前端和后端系統。前端負責信道估計、下變頻和變采樣。后端負責信道、信源編碼[1]。其中,模擬前端負責下變頻,數字前端將信道下變頻到基帶以待處理[1]。變頻,濾波是信道化的主要任務。
信道化是分離多用戶或信道的處理過程,主要有3個任務:下變頻、降采樣和通過濾波拒絕臨近信道。現代信道化中多相濾波器組技術集成運用內積和離散傅里葉變換來同時完成不同任務,同時多相濾波器可以實現濾波連續變換采樣。其提供的矩陣結構,用于內積操作,適合并行計算。
本文利用通用GPU編程語言CUDA在采用輕量級線程和多核計算展現復雜的并行信號處理,通過數據并行實現多相濾波器信道化方法。
1 信道化
1.1 多相濾波信道化原理
數字信道化[2]通過多相濾波器組實現,多相濾波可以把整個采樣頻帶(0~fs)劃分成若干個并行的信道輸出,并通過抽取,將輸出的各個子帶信號變為低速率的基帶信號。
1.2 多相濾波參數設計
為了實現信號無盲區接收,避免信道間頻譜混疊,相鄰子信道要有50%的重疊,同時采用非臨界抽樣。因為子信道重疊50%,因此可將抽取倍數D取為信道數的1/2。信道間隔為,信道化濾波器表達式為:
2 CUDA
CUDA(Compute Unified Device Architecture,統一計算設備框架)是NVIDIA于2007年推出,將GPU作為數據并行計算設備的軟硬件體系,采用SIMT模型,將計算任務映射為大量相互獨立且可并行執行的線程,并由硬件調度運行。CUDA將這些線程以網格(Grid)的形式進行組織和管理,網格又進一步劃分成線程塊(block),線程塊有若干線程組成。線程塊間的執行是相互獨立的,可并行執行。這樣,在kernel函數中就存在著兩層并行性:Grid中的block間的并行和 block中的thread并行。
CUDA編程模型將CPU作為主機端,GPU做為設備端。CPU負責邏輯性較強的事務處理和串行計算,而GPU負責高度并行化的數據計算。GPU不能獨立運行,程序的執行由CPU端控制。CPU啟動程序運行,并將適用于并行計算部分交給GPU執行(kernel函數),GPU執行完畢后,結果返回CPU。
3 數字信道化的GPU設計
本文按照CUDA編程模型進行映射,算法偽代碼如下所示。
(1)設置信道化路數;
(2)拷貝信道化濾波器系數至GPU;
(3)while 滿足計算數據量 do;
拷貝原始數據至GPU;
GPU降采樣抽取成M*N矩陣;
GPU多路濾波;
按列CUFFT計算;
結果輸出至CPU;
(4)end while。其中,數據降采樣抽取、多路濾波采用CUD Akernel函數實現,按列DFT計算采用CUFFT庫實現。降采樣抽取kernel算法采用2維結構輸出實現,根據矩陣的行列索引,通過統一的公式計算得到輸入序列的索引,進行矩陣形式抽取。
對多路濾波算法進行GPU優化實現時,網格層實現多信道并行,線程塊層實現卷積計算,線程塊內一次性將所需濾波器系數、初始狀態、數據讀取至共享緩存中,避免重復讀取。kernel偽代碼如下所示:
(1)聲明GPU共享緩存;
(2)線程塊共同讀取濾波器系數
(3)當前索引=線程ID
(4)while當前索引<數據長度do
線程塊共同讀取當前濾波數據
if當前索引<線程塊大小then
線程塊共同讀取初始狀態
else then
線程塊共同讀取當前狀態
各線程相同指令卷積計算
當前索引按線程塊大小累計
(5)線程塊共同將當前狀態寫入寄存器
end while
4 仿真試驗
為了檢驗本文實現的信道化方法,采用采樣率6.5536MHz,瞬時帶寬4MHz的采樣數據,在NVIDIA K20卡,CUDA 6.0版本上編程驗證。
本實驗設計了2組,信道數128對應信道帶寬51.2KHz,信道數1024對應信道帶寬6.4KHz,為了驗證本方法的通用性及與實體接收機接口的一致性,實驗設計采用了固定信道輸出512采樣點,結果見表1。
5 結語
本文針對硬件實現信道化,采樣率固定、信道數固定等限制,應用GPU并行技術,在通用平臺上實現了具有信道數可設、高吞吐量等特征的信道化方法。該方法在短波系統中驗證使用,結果滿足預期。
參考文獻
[1]F.J. Harris, Multirate Signal Processing for Communication Systems. Prentice Hall, 2004.
[2]楊書玲,王玉林,趙研.寬帶數字信道化EDA設計[J].無線電工程,2007,37,(6):23-25.
Abstract:A channelizer is a part of a receiver front-end subsystem, that separates different users or channels. A modern channelizer uses advantages of polyphase filter banks to process multiple channels at the same time, allowing down conversion, downsampling, and filtering all at the same time. However, due to limitations imposed by hardware, there are disadvances in the count of channels and throughput. This paper uses GPU , provides a multi-channel, high-throughput of channelizer, that is uesed in HF reciver system.
Key Words:polyphase filter; channelizer; CUDAendprint