基于GPU的数字信道化设计

2017-09-08 10:18赵欢欢张润生
数字技术与应用 2017年6期

赵欢欢+张润生

摘要:信道化是前端接收子系统的一部分,用于区分不同的用户或信道。现代信道化采用先进的多项滤波器组来同时处理多个信道,允许同时下变频、降采样和滤波。由于传统硬件的限制,在信道数和吞吐量方面限制很大。本文基于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