- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于GPU数字信道化设计
基于GPU数字信道化设计
摘要:信道化是前端接收子系统的一部分,用于区分不同的用户或信道。现代信道化采用先进的多项滤波器组来同时处理多个信道,允许同时下变频、降采样和滤波。由于传统硬件的限制,在信道数和吞吐量方面限制很大。本文基于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,为了验证本方法的通用性及与实体接收机接口的一
原创力文档


文档评论(0)