CN104267416A - 利用gpu对卫星数据进行捕获处理的方法和装置 - Google Patents
利用gpu对卫星数据进行捕获处理的方法和装置 Download PDFInfo
- Publication number
- CN104267416A CN104267416A CN201410445890.7A CN201410445890A CN104267416A CN 104267416 A CN104267416 A CN 104267416A CN 201410445890 A CN201410445890 A CN 201410445890A CN 104267416 A CN104267416 A CN 104267416A
- Authority
- CN
- China
- Prior art keywords
- satellite data
- passage
- gpu
- time
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01S—RADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
- G01S19/00—Satellite radio beacon positioning systems; Determining position, velocity or attitude using signals transmitted by such systems
- G01S19/01—Satellite radio beacon positioning systems transmitting time-stamped messages, e.g. GPS [Global Positioning System], GLONASS [Global Orbiting Navigation Satellite System] or GALILEO
- G01S19/13—Receivers
- G01S19/35—Constructional details or hardware or software details of the signal processing chain
- G01S19/37—Hardware or software details of the signal processing chain
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01S—RADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
- G01S19/00—Satellite radio beacon positioning systems; Determining position, velocity or attitude using signals transmitted by such systems
- G01S19/01—Satellite radio beacon positioning systems transmitting time-stamped messages, e.g. GPS [Global Positioning System], GLONASS [Global Orbiting Navigation Satellite System] or GALILEO
- G01S19/13—Receivers
- G01S19/24—Acquisition or tracking or demodulation of signals transmitted by the system
Landscapes
- Engineering & Computer Science (AREA)
- Radar, Positioning & Navigation (AREA)
- Remote Sensing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Radio Relay Systems (AREA)
Abstract
本发明实施例提供了一种利用GPU对卫星数据进行捕获处理的方法和装置。该方法主要包括:在卫星信号的软件接收机中设置CPU单元和GPU单元,软件接收机中的CPU单元读取卫星数据,将所述卫星数据和捕获处理指令传输给GPU单元;所述GPU单元接收到所述卫星数据和捕获处理指令后,所述GPU单元中的多个通道并行对所述卫星数据进行捕获处理;所述GPU单元将所述多个通道分别得到的捕获处理结果进行累加,将累加结果传输给所述CPU单元。本发明实施例通过在卫星信号的软件接收机中同时设置CPU单元和GPU单元,将卫星数据的捕获处理运算部分设置在GPU平台上实现,大大提高卫星捕获速度,满足海量卫星导航信号的实时捕获要求,从而实现卫星的实施、快速失锁重捕。
Description
技术领域
本发明涉及卫星信号捕获技术领域,尤其涉及一种利用GPU(GraphicProcessing Unit,图形处理器)对卫星数据进行捕获处理的方法和装置。
背景技术
基于PC(personal computer,个人计算机)平台的软件接收机中,卫星信号的捕获、跟踪和定位都采用软件方式实现。由于基于PC平台的软件接收机需要捕获的卫星导航信号是海量的,并且卫星信号的捕获和相关所需要的算法运算量极高,因此需要对PC平台的CPU(Central Processing Unit,中央处理器)进行速度优化,以满足算法的实时性,保证对卫星导航信号的实时捕获和实时跟踪。
目前,现有技术中的一种提高基于PC平台的软件接收机对卫星导航信号的实时捕获能力的方法为:采取选用更高性能的CPU的方式,或利用利用多个CPU组成服务器阵列的方式来提高对卫星导航信号的实时捕获能力。
现有技术中的提高基于PC平台的软件接收机对卫星导航信号的实时捕获能力的方法的缺点为:两种方式都将大大提高软件接收机的成本。PC平台的CPU并非是专为计算密集型任务所设计,CPU是时分处理系统,因此,即使是更高性能的CPU也上不能满足海量卫星导航信号的实时捕获要求。
发明内容
本发明的实施例提供了一种利用GPU对卫星数据进行捕获处理的方法和装置,以提高卫星捕获速度。
本发明提供了如下方案:
一种利用GPU对卫星数据进行捕获处理的方法,在卫星信号的软件接收机中设置中央处理器CPU单元和图形处理器GPU单元,所述的方法具体包括:
软件接收机中的CPU单元读取卫星数据,将所述卫星数据和捕获处理指令传输给GPU单元;
所述GPU单元接收到所述卫星数据和捕获处理指令后,所述GPU单元中的多个通道并行对所述卫星数据进行捕获处理;
所述GPU单元将所述多个通道分别得到的捕获处理结果进行累加,将累加结果传输给所述CPU单元。
所述的软件接收机中的CPU单元读取卫星数据,将所述卫星数据和捕获处理指令传输给GPU单元,包括:
软件接收机中的CPU单元读取一段时间内的卫星数据,按照设定的时间间隔T将所述一段时间内的卫星数据划分为依次排列的多个时间片段的卫星数据;
针对第一时间片段的卫星数据,所述CPU单元设置所述GPU单元中的各个通道处理所述第一时间片段的卫星数据的共同数据起始点indexStart,根据各个通道的码相位初始值和步进值分别计算出各个通道的码相位跳变点indexEnd;
所述CPU单元将每个通道的indexStart和indexEnd设置在每个通道的索引index结构体中,将携带每个通道的index结构体的针对第一时间片段的卫星数据的捕获处理指令和所述依次排列的多个时间片段的卫星数据传输给所述GPU单元。
所述的GPU单元接收到所述卫星数据和捕获处理指令后,所述GPU单元中的多个通道并行对所述卫星数据进行捕获处理,包括:
所述GPU单元中的每个通道配置了一个处理器,所述GPU单元接收到所述捕获处理指令后,所述GPU单元中的每个通道的处理器分别获取自身通道的index结构体;
所述每个通道的处理器将自身通道的index结构体中的indexStart作为自身通道处理所述第一时间片段的卫星数据的起始数据点,将自身通道的index结构体中的indexEnd作为自身通道处理所述第一时间片段的卫星数据的结束数据点,所述每个通道的处理器计算每个线程需要处理的数据点数为:所述N为每个通道设置的线程数;
所述每个通道的处理器利用各个线程按照设定的捕获处理算法对所述第一时间片段的卫星数据进行捕获处理,将捕获处理结果传输给所述GPU单元的中心处理器,并且每个通道的处理器清除自身通道的index结构体。
所述的GPU单元将所述多个通道分别得到的捕获处理结果进行累加,将累加结果传输给所述CPU单元,包括:
所述GPU单元的中心处理器调用GPU kernel函数,计算各个通道的处理器传输过来的捕获处理结果的乘累加结果,将该乘累加结果作为所述GPU单元对所述第一时间片段的卫星数据的捕获处理结果;
所述GPU单元将所述第一时间片段的卫星数据的捕获处理结果传输给所述的CPU单元。
所述的GPU单元将所述第一时间片段的卫星数据的捕获处理结果传输给所述的CPU单元之后,还包括:
所述CPU单元接收到所述GPU单元对所述第一时间片段的卫星数据的捕获处理结果后,根据所述第一时间片段的卫星数据的捕获处理结果更新码环载波环参数;
所述CPU单元针对第二时间片段的卫星数据,更新indexStart=indexStart+T,将更新后的indexStart作为各个通道处理所述第二时间片段的卫星数据的共同数据起始点,根据更新后的码环载波环参数和各个通道的步进值分别计算出各个通道的码相位跳变点indexEnd;
所述CPU单元将每个通道的indexStart和indexEnd设置在每个通道的索引index结构体中,将携带每个通道的index结构体的针对第二时间片段的卫星数据的捕获处理指令传输给所述GPU单元;
所述GPU单元接收到所述针对第二时间片段的卫星数据的捕获处理指令后,按照所述第一时间片段的卫星数据的捕获处理过程,利用多个通道并行对所述第二时间片段的卫星数据进行捕获处理,将捕获处理结果传输给所述的CPU单元;
重复执行上述处理过程,直到所述一段时间内的卫星数据中的每个时间片段的卫星数据都进行了捕获处理。
一种利用GPU对卫星数据进行捕获处理的装置,该装置设置在卫星信号的软件接收机中,所述装置包括:
中央处理器CPU单元,用于读取卫星数据,将所述卫星数据和捕获处理指令传输给GPU单元;
图形处理器GPU单元,用于接收到所述卫星数据和捕获处理指令后,所述GPU单元中的多个通道并行对所述卫星数据进行捕获处理,将所述多个通道分别得到的捕获处理结果进行累加,将累加结果传输给所述CPU单元。
所述的CPU单元,具体用于读取一段时间内的卫星数据,按照设定的时间间隔T将所述一段时间内的卫星数据划分为依次排列的多个时间片段的卫星数据;
针对第一时间片段的卫星数据,所述CPU单元设置所述GPU单元中的各个通道处理所述第一时间片段的卫星数据的共同数据起始点indexStart,根据各个通道的码相位初始值和步进值分别计算出各个通道的码相位跳变点indexEnd;
所述CPU单元将每个通道的indexStart和indexEnd设置在每个通道的索引index结构体中,将携带每个通道的index结构体的针对第一时间片段的卫星数据的捕获处理指令和所述依次排列的多个时间片段的卫星数据传输给所述GPU单元。
所述的GPU单元,具体用于给GPU单元中的每个通道配置了一个处理器,接收到所述捕获处理指令后,所述GPU单元中的每个通道的处理器分别获取自身通道的index结构体;
所述每个通道的处理器将自身通道的index结构体中的indexStart作为自身通道处理所述第一时间片段的卫星数据的起始数据点,将自身通道的index结构体中的indexEnd作为自身通道处理所述第一时间片段的卫星数据的结束数据点,所述每个通道的处理器计算每个线程需要处理的数据点数为:所述N为每个通道设置的线程数;
所述每个通道的处理器利用各个线程按照设定的捕获处理算法对所述第一时间片段的卫星数据进行捕获处理,将捕获处理结果传输给所述GPU单元的中心处理器,并且每个通道的处理器清除自身通道的index结构体。
所述的GPU单元,具体用于利用中心处理器调用GPU kernel函数,计算各个通道的处理器传输过来的捕获处理结果的乘累加结果,将该乘累加结果作为所述GPU单元对所述第一时间片段的卫星数据的捕获处理结果;
将所述第一时间片段的卫星数据的捕获处理结果传输给所述的所述CPU单元。
所述的CPU单元,还用于接收到所述GPU单元对所述第一时间片段的卫星数据的捕获处理结果后,根据所述第一时间片段的卫星数据的捕获处理结果更新码环载波环参数;
针对第二时间片段的卫星数据,更新indexStart=indexStart+T,将更新后的indexStart作为各个通道处理所述第二时间片段的卫星数据的共同数据起始点,根据更新后的码环载波环参数和各个通道的步进值分别计算出各个通道的码相位跳变点indexEnd;
将每个通道的indexStart和indexEnd设置在每个通道的索引index结构体中,将携带每个通道的index结构体的针对第二时间片段的卫星数据的捕获处理指令传输给所述GPU单元;
所述的GPU单元,还用于接收到所述针对第二时间片段的卫星数据的捕获处理指令后,按照所述第一时间片段的卫星数据的捕获处理过程,利用多个通道并行对所述第二时间片段的卫星数据进行捕获处理,将捕获处理结果传输给所述的CPU单元;
重复执行上述处理过程,直到所述一段时间内的卫星数据中的每个时间片段的卫星数据都进行了捕获处理。
由上述本发明的实施例提供的技术方案可以看出,本发明实施例通过在卫星信号的软件接收机中同时设置CPU单元和GPU单元,将卫星数据的捕获处理运算部分设置在GPU平台上实现,大大提高卫星捕获速度,满足海量卫星导航信号的实时捕获要求,从而实现卫星的快速失锁重捕。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的一种利用GPU对卫星数据进行捕获处理的方法的处理流程图;
图2为本发明实施例二提供了一种利用GPU对卫星数据进行捕获处理的装置的具体结构示意图,图中,CPU单元21,GPU单元22。
具体实施方式
为便于对本发明实施例的理解,下面将结合附图以几个具体实施例为例做进一步的解释说明,且各个实施例并不构成对本发明实施例的限定。
实施例一
CPU提高单个核心性能的主要手段是提高处理器的工作频率,以及增加指令级并行。而随着制造工艺的不断提高,晶体管的尺寸越来越接近原子的数量级,漏电流问题愈加显著,单位尺寸上的能耗和发热也越来越大,使得处理器的频率提高速度变慢,限制了单核CPU性能的进一步提高。GPU专为计算密集型、高度并行化的计算而设计,更多晶体管用于数据处理而非数据缓存和流控制,具有强大的并行处理能力,目前计算能力已经达到1Tflops/s以上,是一种高度并行化、多线程、多核的处理器。
GPU在处理能力和存储器带宽上相对于CPU有明显优势。由于图形渲染的高度并行性,GPU通过增加并行处理单元和存储器控制单元的方式提高处理能力和存储器带宽,而在成本和功耗上也不需要付出太大代价。事实也证明在浮点运算、并行计算等部分计算方面,GPU可以提供数十倍乃至于上百倍于CPU的性能。
本发明实施例在卫星信号的软件接收机中同时设置CPU单元和GPU单元,CPU单元和GPU单元之间通过高速数据线连接。
GPU单元中设置有多个通道,每个通道配置了一个处理器,由于要在GPU单元中进行累加乘积运算,每个通道配置的线程数N必须为2的整次方数。
比如,当前显卡最多支持4096个线程,GPU单元中的通道数为12,所以一个通道内的线程数需小于4096/12=341.3,又考虑在线程内部将采用并行规约的方法来累加乘积,那么线程数必须为2的整次方数,由此每个通道设定线程数为256。
本发明实施例,将逻辑性较强的部分运算在CPU单元上运行,而可并行且计算简单的部分则在GPU单元上运行,从而实现前所未有的应用程序性能。
该实施例提供了一种利用GPU对卫星数据进行捕获处理的方法的处理流程如图1所示,包括如下的处理步骤:
步骤S110、软件接收机中的CPU单元读取一段时间内的卫星数据,并划分为依次排列的多个时间片段的卫星数据。
软件接收机中的CPU单元读取一段时间内的卫星数据,按照设定的时间间隔T将所述一段时间内的卫星数据划分为依次排列的多个时间片段的卫星数据。比如,一次读取多个相关器的10毫秒卫星数据,将该卫星数据划分为10个1毫秒卫星数据。
上述卫星数据可以为GNSS(Global Navigation Satellite System,全球导航卫星系统)卫星导航信号。
步骤S120、CPU单元计算出每个通道的index结构体,将携带每个通道的index结构体的针对第一时间片段的卫星数据的捕获处理指令和多个时间片段的卫星数据传输给所述GPU单元。
针对第一时间片段的卫星数据,所述CPU单元设置所述GPU单元中的各个通道处理所述第一时间片段的卫星数据的共同数据起始点indexStart,根据各个通道的码相位初始值和步进值分别计算出各个通道的码相位跳变点indexEnd。
所述CPU单元将每个通道的indexStart和indexEnd设置在每个通道的index(索引)结构体中,将携带每个通道的index结构体的针对第一时间片段的卫星数据的捕获处理指令和所述依次排列的多个时间片段的卫星数据通过高速数据线传输给所述GPU单元。
示例性的,上述index结构体的索引结构体如下:
在GPU单元中,多个通道处理相同的数据,数据只传一份。调一次kernel并行处理1个时间片段(比如1ms数据)的乘累加,各个通道码相位跳变点不一致,所以各通道需维护一个index结构体,来记录当前通道处理的整1ms数据的起始和结束位置。
步骤S130、GPU单元接收到所述卫星数据和捕获处理指令后,GPU单元中的多个通道并行对第一时间片段的卫星数据进行捕获处理。
所述GPU单元接收到所述针对第一时间片段的捕获处理指令后,所述GPU单元中的每个通道的处理器分别获取自身通道的index结构体。
每个通道的处理器将自身通道的index结构体中的indexStart作为自身通道处理所述第一时间片段的卫星数据的起始数据点,将自身通道的index结构体中的indexEnd作为自身通道处理所述第一时间片段的卫星数据的结束数据点,所述每个通道的处理器计算每个线程需要处理的数据点数为:N为每个通道配置的线程数。
所述每个通道的处理器利用各个线程按照设定的捕获处理算法对所述第一时间片段的卫星数据进行捕获处理,将捕获处理结果传输给所述GPU单元的中心处理器,上述捕获处理算法为现有的一些公开的算法,然后,每个通道的处理器清除自身通道的index结构体。
比如,上述每个时间片段为1ms,一个通道有256个线程,则在一个通道内部通过一个线程循环串行处理多个数据点。
步骤S140、GPU单元将所述多个通道分别得到的捕获处理结果进行累加,将累加结果传输给所述CPU单元。
所述GPU单元的中心处理器调用GPU kernel(内核)函数,计算各个通道的处理器传输过来的捕获处理结果的乘累加结果,将该乘累加结果作为所述GPU单元对所述第一时间片段的卫星数据的捕获处理结果;
GPU单元通过高速数据线将第一时间片段的卫星数据的捕获处理结果传输给CPU单元。
基于以上的设计,每10ms的数据,调用GPU kemel函数约12次,CPU与GPU数据交互也就12次。
步骤S150、CPU单元计算更新后的每个通道的index结构体,将携带每个通道的更新后的index结构体的针对第二时间片段的卫星数据的捕获处理指令传输给所述GPU单元。
所述CPU单元接收到所述GPU单元对所述第一时间片段的卫星数据的捕获处理结果后,根据所述第一时间片段的卫星数据的捕获处理结果更新码环载波环参数,更新的码环载波环参数内容包括星号、多普勒频移和码相位信息,这些信息是码环载波环工作的初始条件。
所述CPU单元针对第二时间片段的卫星数据,更新indexStart=indexStart+T,将更新后的indexStart作为各个通道处理所述第二时间片段的卫星数据的共同数据起始点,根据更新后的码环载波环参数和各个通道的步进值分别计算出各个通道的码相位跳变点indexEnd。
所述GPU单元将每个通道的indexStart和indexEnd设置在每个通道的索引index结构体中,将携带每个通道的index结构体的针对第二时间片段的卫星数据的捕获处理指令传输给所述GPU单元。
步骤S160、所述GPU单元接收到所述针对第二时间片段的卫星数据的捕获处理指令后,按照所述第一时间片段的卫星数据的捕获处理过程,利用多个通道并行对所述第二时间片段的卫星数据进行捕获处理,将捕获处理结果传输给所述的CPU单元。
重复执行上述处理过程,直到所述一段时间内的卫星数据中的每个时间片段的卫星数据都进行了捕获处理。
比如,上述一段时间内的卫星数据为10毫秒数据,如此循环直到传入的10毫秒数据都处理完,则CPU单元传入下一个10ms数据。
实施例二
该实施例提供了一种利用GPU对卫星数据进行捕获处理的装置,该装置设置在卫星信号的软件接收机中,所述装置的具体结构示意图如图2所示,包括如下的模块:
CPU单元21,用于读取卫星数据,将所述卫星数据和捕获处理指令传输给GPU单元;
GPU单元22,用于接收到所述卫星数据和捕获处理指令后,所述GPU单元中的多个通道并行对所述卫星数据进行捕获处理,将所述多个通道分别得到的捕获处理结果进行累加,将累加结果传输给所述CPU单元。
进一步地,所述的CPU单元21,具体用于读取一段时间内的卫星数据,按照设定的时间间隔T将所述一段时间内的卫星数据划分为依次排列的多个时间片段的卫星数据;
针对第一时间片段的卫星数据,所述CPU单元设置所述GPU单元中的各个通道处理所述第一时间片段的卫星数据的共同数据起始点indexStart,根据各个通道的码相位初始值和步进值分别计算出各个通道的码相位跳变点indexEnd;
所述CPU单元将每个通道的indexStart和indexEnd设置在每个通道的索引index结构体中,将携带每个通道的index结构体的针对第一时间片段的卫星数据的捕获处理指令和所述依次排列的多个时间片段的卫星数据传输给所述GPU单元。
进一步地,所述的GPU单元22,具体用于给GPU单元中的每个通道配置了一个处理器,每个处理器对应的线程数量为2的整次方数,接收到所述捕获处理指令后,所述GPU单元中的每个通道的处理器分别获取自身通道的index结构体;
所述每个通道的处理器将自身通道的index结构体中的indexStart作为自身通道处理所述第一时间片段的卫星数据的起始数据点,将自身通道的index结构体中的indexEnd作为自身通道处理所述第一时间片段的卫星数据的结束数据点,所述每个通道的处理器计算每个线程需要处理的数据点数为:
所述每个通道的处理器利用各个线程按照设定的捕获处理算法对所述第一时间片段的卫星数据进行捕获处理,将捕获处理结果传输给所述GPU单元的中心处理器,并且每个通道的处理器清除自身通道的index结构体。
进一步地,所述的GPU单元22,具体用于利用中心处理器调用GPUkernel函数,计算各个通道的处理器传输过来的捕获处理结果的乘累加结果,将该乘累加结果作为所述GPU单元对所述第一时间片段的卫星数据的捕获处理结果;
将所述第一时间片段的卫星数据的捕获处理结果传输给所述的所述CPU单元。
进一步地,所述的CPU单元21,还用于接收到所述GPU单元对所述第一时间片段的卫星数据的捕获处理结果后,根据所述第一时间片段的卫星数据的捕获处理结果更新码环载波环参数;
针对第二时间片段的卫星数据,更新indexStart=indexStart+T,将更新后的indexStart作为各个通道处理所述第二时间片段的卫星数据的共同数据起始点,根据更新后的码环载波环参数和各个通道的步进值分别计算出各个通道的码相位跳变点indexEnd;
将每个通道的indexStart和indexEnd设置在每个通道的索引index结构体中,将携带每个通道的index结构体的针对第二时间片段的卫星数据的捕获处理指令传输给所述GPU单元。
所述的GPU单元22,还用于接收到所述针对第二时间片段的卫星数据的捕获处理指令后,按照所述第一时间片段的卫星数据的捕获处理过程,利用多个通道并行对所述第二时间片段的卫星数据进行捕获处理,将捕获处理结果传输给所述的CPU单元;
重复执行上述处理过程,直到所述一段时间内的卫星数据中的每个时间片段的卫星数据都进行了捕获处理。
用本发明实施例的装置进行利用GPU对卫星数据进行捕获处理的具体过程与前述方法实施例类似,此处不再赘述。
综上所述,本发明实施例通过在卫星信号的软件接收机中同时设置CPU单元和GPU单元,将卫星数据的捕获处理运算部分设置在GPU平台上实现,大大提高卫星捕获速度,满足海量卫星导航信号的实时捕获要求,从而实现卫星的实施、快速失锁重捕。
本发明实施例综合利用了GPU单元的并行运算功能强和CPU单元的逻辑运算功能强的特点,合理设计算法结构,达到并行计算卫星快速捕获的目的,而在成本和功耗上也不需要付出太大代价。
本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (10)
1.一种利用GPU对卫星数据进行捕获处理的方法,其特征在于,在卫星信号的软件接收机中设置中央处理器CPU单元和图形处理器GPU单元,所述的方法具体包括:
软件接收机中的CPU单元读取卫星数据,将所述卫星数据和捕获处理指令传输给GPU单元;
所述GPU单元接收到所述卫星数据和捕获处理指令后,所述GPU单元中的多个通道并行对所述卫星数据进行捕获处理;
所述GPU单元将所述多个通道分别得到的捕获处理结果进行累加,将累加结果传输给所述CPU单元。
2.根据权利要求1所述的利用GPU对卫星数据进行捕获处理的方法,其特征在于,所述的软件接收机中的CPU单元读取卫星数据,将所述卫星数据和捕获处理指令传输给GPU单元,包括:
软件接收机中的CPU单元读取一段时间内的卫星数据,按照设定的时间间隔T将所述一段时间内的卫星数据划分为依次排列的多个时间片段的卫星数据;
针对第一时间片段的卫星数据,所述CPU单元设置所述GPU单元中的各个通道处理所述第一时间片段的卫星数据的共同数据起始点indexStart,根据各个通道的码相位初始值和步进值分别计算出各个通道的码相位跳变点indexEnd;
所述CPU单元将每个通道的indexStart和indexEnd设置在每个通道的索引index结构体中,将携带每个通道的index结构体的针对第一时间片段的卫星数据的捕获处理指令和所述依次排列的多个时间片段的卫星数据传输给所述GPU单元。
3.根据权利要求2所述的利用GPU对卫星数据进行捕获处理的方法,其特征在于,所述的GPU单元接收到所述卫星数据和捕获处理指令后,所述GPU单元中的多个通道并行对所述卫星数据进行捕获处理,包括:
所述GPU单元中的每个通道配置了一个处理器,所述GPU单元接收到所述捕获处理指令后,所述GPU单元中的每个通道的处理器分别获取自身通道的index结构体;
所述每个通道的处理器将自身通道的index结构体中的indexStart作为自身通道处理所述第一时间片段的卫星数据的起始数据点,将自身通道的index结构体中的indexEnd作为自身通道处理所述第一时间片段的卫星数据的结束数据点,所述每个通道的处理器计算每个线程需要处理的数据点数为:所述N为每个通道设置的线程数;
所述每个通道的处理器利用各个线程按照设定的捕获处理算法对所述第一时间片段的卫星数据进行捕获处理,将捕获处理结果传输给所述GPU单元的中心处理器,并且每个通道的处理器清除自身通道的index结构体。
4.根据权利要求3所述的利用GPU对卫星数据进行捕获处理的方法,其特征在于,所述的GPU单元将所述多个通道分别得到的捕获处理结果进行累加,将累加结果传输给所述CPU单元,包括:
所述GPU单元的中心处理器调用GPU kernel函数,计算各个通道的处理器传输过来的捕获处理结果的乘累加结果,将该乘累加结果作为所述GPU单元对所述第一时间片段的卫星数据的捕获处理结果;
所述GPU单元将所述第一时间片段的卫星数据的捕获处理结果传输给所述的CPU单元。
5.根据权利要求2至4任一项所述的利用GPU对卫星数据进行捕获处理的方法,其特征在于,所述的GPU单元将所述第一时间片段的卫星数据的捕获处理结果传输给所述的CPU单元之后,还包括:
所述CPU单元接收到所述GPU单元对所述第一时间片段的卫星数据的捕获处理结果后,根据所述第一时间片段的卫星数据的捕获处理结果更新码环载波环参数;
所述CPU单元针对第二时间片段的卫星数据,更新indexStart=indexStart+T,将更新后的indexStart作为各个通道处理所述第二时间片段的卫星数据的共同数据起始点,根据更新后的码环载波环参数和各个通道的步进值分别计算出各个通道的码相位跳变点indexEnd;
所述CPU单元将每个通道的indexStart和indexEnd设置在每个通道的索引index结构体中,将携带每个通道的index结构体的针对第二时间片段的卫星数据的捕获处理指令传输给所述GPU单元;
所述GPU单元接收到所述针对第二时间片段的卫星数据的捕获处理指令后,按照所述第一时间片段的卫星数据的捕获处理过程,利用多个通道并行对所述第二时间片段的卫星数据进行捕获处理,将捕获处理结果传输给所述的CPU单元;
重复执行上述处理过程,直到所述一段时间内的卫星数据中的每个时间片段的卫星数据都进行了捕获处理。
6.一种利用GPU对卫星数据进行捕获处理的装置,其特征在于,该装置设置在卫星信号的软件接收机中,所述装置包括:
中央处理器CPU单元,用于读取卫星数据,将所述卫星数据和捕获处理指令传输给GPU单元;
图形处理器GPU单元,用于接收到所述卫星数据和捕获处理指令后,所述GPU单元中的多个通道并行对所述卫星数据进行捕获处理,将所述多个通道分别得到的捕获处理结果进行累加,将累加结果传输给所述CPU单元。
7.根据权利要求6所述的利用GPU对卫星数据进行捕获处理的装置,其特征在于:
所述的CPU单元,具体用于读取一段时间内的卫星数据,按照设定的时间间隔T将所述一段时间内的卫星数据划分为依次排列的多个时间片段的卫星数据;
针对第一时间片段的卫星数据,所述CPU单元设置所述GPU单元中的各个通道处理所述第一时间片段的卫星数据的共同数据起始点indexStart,根据各个通道的码相位初始值和步进值分别计算出各个通道的码相位跳变点indexEnd;
所述CPU单元将每个通道的indexStart和indexEnd设置在每个通道的索引index结构体中,将携带每个通道的index结构体的针对第一时间片段的卫星数据的捕获处理指令和所述依次排列的多个时间片段的卫星数据传输给所述GPU单元。
8.根据权利要求6所述的利用GPU对卫星数据进行捕获处理的装置,其特征在于:
所述的GPU单元,具体用于给GPU单元中的每个通道配置了一个处理器,接收到所述捕获处理指令后,所述GPU单元中的每个通道的处理器分别获取自身通道的index结构体;
所述每个通道的处理器将自身通道的index结构体中的indexStart作为自身通道处理所述第一时间片段的卫星数据的起始数据点,将自身通道的index结构体中的indexEnd作为自身通道处理所述第一时间片段的卫星数据的结束数据点,所述每个通道的处理器计算每个线程需要处理的数据点数为:所述N为每个通道设置的线程数;
所述每个通道的处理器利用各个线程按照设定的捕获处理算法对所述第一时间片段的卫星数据进行捕获处理,将捕获处理结果传输给所述GPU单元的中心处理器,并且每个通道的处理器清除自身通道的index结构体。
9.根据权利要求8所述的利用GPU对卫星数据进行捕获处理的装置,其特征在于:
所述的GPU单元,具体用于利用中心处理器调用GPU kernel函数,计算各个通道的处理器传输过来的捕获处理结果的乘累加结果,将该乘累加结果作为所述GPU单元对所述第一时间片段的卫星数据的捕获处理结果;
将所述第一时间片段的卫星数据的捕获处理结果传输给所述的所述CPU单元。
10.根据权利要求7至9任一项所述的利用GPU对卫星数据进行捕获处理的装置,其特征在于:
所述的CPU单元,还用于接收到所述GPU单元对所述第一时间片段的卫星数据的捕获处理结果后,根据所述第一时间片段的卫星数据的捕获处理结果更新码环载波环参数;
针对第二时间片段的卫星数据,更新indexStart=indexStart+T,将更新后的indexStart作为各个通道处理所述第二时间片段的卫星数据的共同数据起始点,根据更新后的码环载波环参数和各个通道的步进值分别计算出各个通道的码相位跳变点indexEnd;
将每个通道的indexStart和indexEnd设置在每个通道的索引index结构体中,将携带每个通道的index结构体的针对第二时间片段的卫星数据的捕获处理指令传输给所述GPU单元;
所述的GPU单元,还用于接收到所述针对第二时间片段的卫星数据的捕获处理指令后,按照所述第一时间片段的卫星数据的捕获处理过程,利用多个通道并行对所述第二时间片段的卫星数据进行捕获处理,将捕获处理结果传输给所述的CPU单元;
重复执行上述处理过程,直到所述一段时间内的卫星数据中的每个时间片段的卫星数据都进行了捕获处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410445890.7A CN104267416A (zh) | 2014-09-03 | 2014-09-03 | 利用gpu对卫星数据进行捕获处理的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410445890.7A CN104267416A (zh) | 2014-09-03 | 2014-09-03 | 利用gpu对卫星数据进行捕获处理的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104267416A true CN104267416A (zh) | 2015-01-07 |
Family
ID=52158956
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410445890.7A Pending CN104267416A (zh) | 2014-09-03 | 2014-09-03 | 利用gpu对卫星数据进行捕获处理的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104267416A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105577229A (zh) * | 2015-12-07 | 2016-05-11 | 中国电子科技集团公司第十研究所 | Cpu辅助gpu实现扩频信号快速捕获方法 |
CN107329156A (zh) * | 2017-06-05 | 2017-11-07 | 千寻位置网络有限公司 | 一种卫星数据的处理方法及系统、定位终端、存储器 |
CN107870338A (zh) * | 2017-10-30 | 2018-04-03 | 湖南跨线桥航天科技有限公司 | 一种低更新频度的卫星导航载波跟踪方法 |
CN108226967A (zh) * | 2016-12-15 | 2018-06-29 | 展讯通信(上海)有限公司 | Gnss信号跟踪方法及装置 |
CN111651273A (zh) * | 2020-05-29 | 2020-09-11 | 中国人民解放军国防科技大学 | 一种基于gpu的大容量短突发信号接收机设计 |
CN116566468A (zh) * | 2023-05-11 | 2023-08-08 | 北京扬铭科技发展有限责任公司 | 便携式卫星信号监测装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN202041640U (zh) * | 2011-01-18 | 2011-11-16 | 西安理工大学 | 一种基于gpu的卫星导航软件接收机 |
US20140062769A1 (en) * | 2012-09-05 | 2014-03-06 | O2Micro Inc. | System and Method for Locating a Satellite Signal Receiver |
-
2014
- 2014-09-03 CN CN201410445890.7A patent/CN104267416A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN202041640U (zh) * | 2011-01-18 | 2011-11-16 | 西安理工大学 | 一种基于gpu的卫星导航软件接收机 |
US20140062769A1 (en) * | 2012-09-05 | 2014-03-06 | O2Micro Inc. | System and Method for Locating a Satellite Signal Receiver |
Non-Patent Citations (1)
Title |
---|
杨静 等: "基于GPU的GPS信号并行捕获", 《中国惯性技术学报》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105577229A (zh) * | 2015-12-07 | 2016-05-11 | 中国电子科技集团公司第十研究所 | Cpu辅助gpu实现扩频信号快速捕获方法 |
CN105577229B (zh) * | 2015-12-07 | 2018-04-13 | 中国电子科技集团公司第十研究所 | Cpu辅助gpu实现扩频信号快速捕获方法 |
CN108226967A (zh) * | 2016-12-15 | 2018-06-29 | 展讯通信(上海)有限公司 | Gnss信号跟踪方法及装置 |
CN108226967B (zh) * | 2016-12-15 | 2021-08-20 | 展讯通信(上海)有限公司 | Gnss信号跟踪方法及装置 |
CN107329156A (zh) * | 2017-06-05 | 2017-11-07 | 千寻位置网络有限公司 | 一种卫星数据的处理方法及系统、定位终端、存储器 |
CN107870338A (zh) * | 2017-10-30 | 2018-04-03 | 湖南跨线桥航天科技有限公司 | 一种低更新频度的卫星导航载波跟踪方法 |
CN111651273A (zh) * | 2020-05-29 | 2020-09-11 | 中国人民解放军国防科技大学 | 一种基于gpu的大容量短突发信号接收机设计 |
CN111651273B (zh) * | 2020-05-29 | 2023-05-05 | 中国人民解放军国防科技大学 | 一种基于gpu的大容量短突发信号接收机设计 |
CN116566468A (zh) * | 2023-05-11 | 2023-08-08 | 北京扬铭科技发展有限责任公司 | 便携式卫星信号监测装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104267416A (zh) | 利用gpu对卫星数据进行捕获处理的方法和装置 | |
Fernandez-Prades et al. | GNSS-SDR: An open source tool for researchers and developers | |
CN102183771B (zh) | 基于多核处理器的多模gnss软件接收机的实现方法 | |
CN102759739A (zh) | 快速联合捕获装置及其方法 | |
CN104345322B (zh) | 一种卫星导航信号快速捕获方法与装置 | |
CN104202209B (zh) | 一种基于cuda的多体制信号频率快速捕获实现方法 | |
US8521765B2 (en) | Method and system for post processing trace data | |
CN103308931A (zh) | 用于检测卫星信号的系统和方法 | |
CN104516004A (zh) | Gps信号的捕获方法及其捕获装置 | |
EP2791702B1 (en) | Reconfigurable correlator for a navigation system | |
Heckler et al. | Architecture of a reconfigurable software receiver | |
US7546423B2 (en) | Signal processing system control method and apparatus | |
Nichols et al. | Software-defined GNSS is ready for launch | |
CN102176033B (zh) | 一种基于通用图形处理器的卫星导航系统比特压缩跟踪方法 | |
CN110780320B (zh) | 一种软硬件一体化的卫星导航信号处理方法 | |
Gamba et al. | eNGene: An ARM based embedded real-time software GNSS receiver | |
Fridman et al. | System-on-Chip FPGA-based GNSS receiver | |
Pany et al. | Benchmarking CPUs and GPUs on embedded platforms for software receiver usage | |
CN104267414B (zh) | 基于多普勒频差衰减因子的子空间互相关干扰消除方法 | |
CN113075703A (zh) | 一种多通道卫星信号跟踪方法 | |
CN110376619A (zh) | 全球导航卫星系统中信号处理装置 | |
CN106772459B (zh) | 一种基于gpu向量运算的多相关器计算方法 | |
CN104155661A (zh) | 一种gnss接收机的控制方法、装置与系统 | |
CN105068095A (zh) | 一种提高卫星伪距精度的跟踪系统与方法 | |
CN103033826A (zh) | 一种高灵活度的定位卫星信号捕获系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150107 |
|
RJ01 | Rejection of invention patent application after publication |