一种实时软件帧的同步方法

文档序号:7554085阅读:259来源:国知局
专利名称:一种实时软件帧的同步方法
技术领域
本发明属于卫星遥感领域,涉及软件帧同步格式化器,特别涉及一种高效的实时软件帧同步方法。
背景技术
快视系统是遥感卫星地面接收站的重要组成部分,处理流程如附图2所示,它负责将实时接收到的卫星基带数据进行格式化处理,并将处理后的图像和辅助数据进行移动窗显示,快视系统不仅可以实时监测图像质量(参见Yang Ren-zhong, YU Gang, ZHANG Ning.AQuality Identifying Method and Implementation of Remote Sensing Satellite RawData[J], Control&Automation, 2010, 04:207-209),而且在应急模式下,快视图像产品可直接被相关部门使用,大大提高了遥感卫星影像利用的时效性(参见Yang Ren-zhong, CAIXing-wen, YANG Lei, SHI Lu.Research on Technology of Quick Look Processing ofGeneral Remote Sensing Satellite[J].Remote Sensing Application, 2009, 5:32-35)(参见 Yang Ren-zhong, ZHANG Ning, SHI Lu.Design and Implementation of RemoteSensing Satellite Raw Data Record System Software[J].Control&Automation, 2010, 26:114-116)。帧同步格式化器是快视系统的关键设备,主要负责从卫星下传的基带数据流中提取帧同步字、成帧处理,并进行数据解扰。帧同步格式化器分为硬件和软件两种,硬件帧同步格式化器速度快、可实现实时处理,但是开发周期较长,成本较高(参见CHEN Yan.A Method of Implementing Frame-Synchronization Based on FPGA For High-speedCommunication [J].Ratio Engineering, 2010, Vol.40N0.5:25-39);软件巾贞同步格式化器开发周期短、成本低、可配置性和可移植性强,但是速度较低(参见ZHU Dang-jie, YangRen-zhong.Research and Realization of a New Algorithm in Software FrameSynchronization [J].Science Technology and Engineering, 2007,16:4044-4057),是制约软件帧同步实时处理的瓶颈。目前,KMP算法和查找表方法已应用到软件帧同步器中,有效的提高了帧同步处理速度,但是传统软件帧同步算法仍然无法满足快视系统中高码速率数据实时处理要求。卫星原始数据在开始和结束位置往往会出现无效数据,主要有两个原因:一是解调器处于失锁状态,此时所记录的数据就是无效数据;二是由于天线在开始和结束接收数据时,仰角较低,易受到大气干扰、遮挡或跟踪捕捉信号差的原因,导致出现大量误码。传统软件帧同步方法在处理稳定数据区域时,由于数据误码率较低,大部分搜索处于锁定状态,处理速度较快;但是在处理不稳定数据区时,由于数据的误码率很高,存在大量无效数据,处理效率较低,无法满足实时性要求。对于下行码率较低(低于100Mbps)的传统卫星,可通过增加缓存的办法缓解不稳定数据区处理效率低的问题,但随着现代卫星数传码率的提高(如部分卫星码率已大于400Mbps),增加缓存的方式已经无法满足处理效率要求。

发明内容
为了解决该问题,本发明在研究KMP算法的基础上,提出了一种实时软件帧的同步方法,避免了对大量连续无效数据的帧同步字检测,大大提高了帧同步处理速度。本发明提出了一种实时软件帧的同步方法,在进行帧同步处理时对接收到的卫星基带数据进行逻辑分段,搜索态时,首先采用逆向搜索的方法,通过检测当前数据段尾部数据,判断该数据段是否包含同步字,如果尾部数据检测到同步字,说明该数据段包含数据帧,那么再从该数据段头部开始逐字节检测同步字,否则直接处理下一数据段,并依次类推;校验态和锁定态时,将相邻两段数据作为连续数据进行处理。一种实时软件帧的同步方法,包括以下步骤:步骤一:首先对任务订单进行解析,获取卫星和传感器标识、接收和发送IP与端口号任务信息,根据任务订单读取参数文件;
步骤二:根据步骤一读取的参数文件进行初始化,生成同步码查找表、字节查找表、字节对齐查找表、PN码解扰数组,开辟接收和发送循环缓存buffer块;所述接收和发送循环缓存buffer块个数为数据分组个数,buffer块大小为每组字节数;步骤三:启动数据接收、发送和处理三个线程,初始化数据接收和数据发送网络端口,并将接收线程设为监听状态,所述数据接收线程负责接收通过网络发送的卫星原始数据,将接收的数据缓存到接收buffer块中,并通知处理线程进行处理;所述处理线程负责原始数据同步字提取、字节对齐、数据解扰,并通知发送线程进行数据发送;所述发送线程负责将处理线程帧同步处理得到的成帧数据通过网络发送到外部处理单元,进行后续处理;步骤四:接收数据时,将接收到的所述的卫星原始数据依次写入到接收循环缓存buffer块中,写满一个buffer块后,将其状态标识设为写结束状态,并通知处理线程进行中贞同步处理,当写完最后一个buffer块时,返回第一个buffer块继续写入;步骤五:处理线程开始帧同步处理,若当前buffer状态为不含数据帧状态,对其最后几帧长度数据逐字节与同步码位移查找表比对,若搜索到同步码则转到步骤六处理,否则等待下一 buffer块指针,继续对其进行处理,所述同步码位移查找表是在程序初始化时根据同步字建立的查找表,该表包括了同步字在不同比特偏移下所对应的值;步骤六:将当前buffer状态设定为含有数据巾贞模式,从该buffer块头部逐字节进行同步字检测,检测到同步码后,转到步骤七;步骤七:进入校验状态,如果当前同步字位置到该buffer块结尾不够两帧长度,等待下一 buffer块指针,并将当前buffer块剩余数据补充到下一 buffer块前面,组成连续数据,从当前搜索到的同步字位置开始跨越一个帧长进行同步字检测,检验该位置同步字是否存在位移或比特错误,若超出容错范围则校验失败,则转到步骤八重新进入搜索状态,若校验成功则将程序状态设为锁定态,则转到步骤九处理;步骤八:从当前同步字位置逐字节进行同步字检测,若检测到同步字,转到步骤七处理,否则等待下一 buffer块指针,转到步骤五处理;步骤九:程序进入锁定态时,将当前锁定成功的一帧数据逐字节根据比特移位数在字节对齐查找表中搜索后填充对应的内容,完成字节对齐操作,然后将对齐后的数据与预处理阶段生成的解扰表进行异或,将结果填充到输出环形buffer中,通知发送线程发送数据,并转到步骤七继续处理,所述字节对齐查找表是在程序初始化时建立的,该表给出了比特偏移后数据、比特偏移量与原字节的对应关系,利用该表可完成字节对齐;所述比特移位数是同步字的比特偏移量;步骤十:发送线程接到发送通知后,对输出环形buffer进行检测,并将格式化后的数据发送到其他处理单元,如果数据接收和处理线程结束返回,格式化数据发送完毕后,帧同步程序退出。步骤一中所述的参数文件是事先存放在本地硬盘上的的文件,该文件包含待处理数据的同步字、同步字长度、帧长、数据分组个数、每组字节数以及扰码文件路径等处理参数。
步骤二中所述buffer块有四种状态,分别是正在读、正在写、读完毕和写完毕,正在读状态表示从当前buffer块读取数据,正在写状态表示向当前buffer块写入数据,读完毕状态表示从当前buffer块读取数据完毕,写完毕状态表示向当前buffer块写入数据完毕。本发明所提出的一种实时软件帧同步方法的优点在于:(I)本方法通过对高频操作以及大量使用的相似性操作建立查找表,提高了效率,减少了时间,通过引入容错机制,在帧同步过程中可以实现位容错和滑动容错。(2)本方法充分利用计算机对于字节处理的优势,对于原始数据不进行IQ比特的分离,对于IQ两路数据直接采取合并处理的方式进行同步,避免了数据分离与合并的操作,提高了处理效率,同时也防止双路输出导致的IQ路数据时间同步的问题。(3)本方法通过配置文件实现去传感器化,将同步头、帧长度、扰码文件位置等信息存放在配置文件中,只需改变该配置文件中的信息,即可兼容多卫星多传感器数据,极大提高了该软件的灵活性和实用性。(4)本方法将数据进行分段和逆向搜索,避免了对大量连续无效数据的同步字检测,提闻了巾贞同步效率。


图1为本发明一种实时软件帧同步方法的帧同步处理流程图;图2为遥感卫星地面接收站快视系统流程图;图3为本发明一种实时软件帧同步方法中接收和发送buffer示意图;图4为本发明一种实时软件帧同步方法的网络初始化流程图;图5为本发明一种实时软件帧同步方法的同步字提取流程图;图6为本发明一种实时软件帧同步方法的字节对齐处理流程图;图7为本发明一种实时软件帧同步方法的数据解扰处理流程图;图8为本发明一种实时软件帧同步方法与传统帧同步处理方法对HJlA卫星原始数据处理速度对比图。
具体实施例方式下面将结合附图对本发明方法作进一步的详细说明。
本发明提出了一种实时软件帧同步方法,帧同步处理的目的是从遥感卫星下传的基带数据流中提取帧同步字、成帧处理,并进行数据解扰。本发明方法在进行帧同步处理时对接收到的卫星基带数据进行逻辑分段,搜索态时,首先通过检测当前数据段尾部数据,判断该数据段是否包含同步字,如果尾部数据检测到同步字,说明该数据段包含同步字,那么再从该数据段头部开始逐字节检测同步字,否则直接处理下一数据段,并依次类推;校验态和锁定态时,将相邻两段数据作为连续数据进行处理。本方法通过数据分组和逆向搜索处理,避免了对大量连续无效数据的帧同步字检测,大大提高了帧同步处理速度。如附图1所示,一种实时软件帧同步方法,包括以下步骤:步骤一:以HJlA卫星原始数据为例,帧同步软件启动后,对任务订单进行解析,获取卫星标识,传感器标识,接收和发送IP、端口号等任务信息,根据任务订单读取本地硬盘上的参数文件,HJlA卫星数传帧1、Q交织后长度为2078字节,同步字长度为8字节,数据分组数为100,每组大小为4M字节;所述本地硬盘上的参数文件是事先存放在本地硬盘上的文件,该文件包含原始数据的同步字、同步字长度、帧长、数据分组个数、每组字节数以及扰码文件路径等处理参数。步骤二:根据步骤一读取的处理参数进行初始化,生成同步码查找表、字节查找表、字节对齐查找表、PN码解扰数组等,开 辟接收和发送循环缓存buffer块,所述buffer块个数为数据分组个数,buffer块大小为数据组字节数,buffer块分组方式如图4所示。根据本地参数文件设置,循环接收缓存单元共有100个buffer块组成,每个buffer块大小为4MByte,循环发送缓存单元共有100个buffer块组成,每个buffer块大小为128帧HJlA数传帧长。每个buffer块有四种状态,分别是正在读、正在写、读完毕和写完毕,正在读状态表示从当前buffer块读取数据;正在写状态表示向当前buffer块写入数据;读完毕状态表示从当前buffer块读取数据完毕;写完毕状态表示向当前buffer块写入数据完毕。帧同步处理时共有三种状态:搜索态、锁定态和校验态,其中搜索态和锁定态为帧同步处理的主要工作状态,校验态是搜索态向锁定态转变的一个中间状态,用于减少同步码的误判。步骤三:启动数据接收、发送和处理三个线程,初始化网络端口,并将接收线程设为监听状态,所述数据接收线程负责接收通过网络发送的卫星原始数据,将接收的数据缓存到接收buffer块中,并通知处理线程进行处理;所述处理线程负责原始数据同步字提取、字节对齐、数据解扰,并通知发送线程进行数据发送;所述发送线程负责将处理线程帧同步处理得到的成帧数据通过网络发送到外部处理单元,进行后续处理。步骤四:接收数据时,将接收到的数据依次写入到buffer块中,写满一个buffer块后,将其状态标识设为写结束状态,并通知处理线程进行帧同步处理。步骤五:处理线程开始帧同步处理,若当前buffer状态为不含数据帧状态,对其最后几帧长度数据逐字节与同步码位移查找表比对,若搜索到同步码,转到步骤6处理,否则等待下一 buffer块指针,返回步骤5对其进行处理,同步字提取流程如附图6所示。在同步字提取过程中,数据以buffer块为单位进行除判,搜索态下对整buffer块数据进行逐字节同步码搜索会占用大量处理时间,可以仅对buffer块最后3帧长度数据进行逐字节的同步码搜索,若无法找到同步码则认为当前buffer块不存在数据帧而进行整块的丢弃;若搜索到同步码则对该帧从buffer块的头部进行逐字节的同步码搜索。由于每传感器传输的数据均大于单一 buffer块的容量,可以认为若某一 buffer块中含有数据帧,则该buffer块结尾部分含有帧数据。根据抽屉原理,在m帧长度的随机连续数据中至少包含m-Ι个完整的数据帧,对于同步头长度为n bit,信道误码率为P (假设每bit误码概率相互独立)的情况下,该数据段包含的m-Ι个帧同步头中均存在错误,即可以被程序误判的概率Pmis为[1-(1-P)T1,由于O < P < I,Pmis正比于η,取典型值η = 64,p = lX10_5,m = 4可以计算得Pmis最大值的数量级为I ΧΙΟ,。步骤六:将当前buffer状态设定为含有数 据巾贞模式,从该buffer块头部逐字节进行搜索,搜索到同步码后,转到步骤7 ;步骤七:程序进入校验状态,如果当前同步头位置到该buffer块结尾不够两帧长度,等待下一 buffer块指针,并将剩余数据补充到将该buffer块前面,组成连续数据。从当前搜索到的同步头位置开始跨越一个帧长进行搜索,检测该位置同步码是否存在位移或bit错误,若超出容错范围则校验失败,转到步骤8重新进入搜索状态,若校验成功则设定为锁定态,转到步骤9处理。步骤八:从当前同步头位置逐字节进行搜索,若检测到同步字,转到步骤7处理,否则等待下一 buffer块指针,转到步骤5处理;步骤九:程序进入锁定状态时,将当前锁定成功的一帧数据逐字节根据搜索到的bit移位数在字节对齐查找表中搜索后填充对应的内容,完成字节对齐操作,然后将对齐后的数据与预处理阶段生成的解扰表进行异或,将结果填充到输出环形buffer中,通知发送线程发送数据,并转到步骤7继续处理。字节对齐处理主要利用同步码提取处理标识出的同步码及其偏移量对数据进行bit移位,实现数据帧的“字对齐”,该操作利用查表的方式进行,处理后的数据为已经成帧的数据,字节对齐处理流程如附图6所示。由于同步码提取模块按照字节单方向位移进行搜索,因此进行字节对齐时进行的位移,每字节只需考虑当前字节和下一字节的内容,共有28X 28即216种情况,每字节移位情况共有8即23种情况,因此建立一个8X65536的位移查找表就可以满足字节对齐的搜索要求,该表占用内存约512KB,每字节进行对齐处理的时间复杂度为0(1)。数据解扰处理主要完成帧数据的恢复,利用扰码序列与加扰的数据进行处理,实现数据的解扰,数据解扰处理流程如附图7所示。初始化阶段主要完成扰码序列的获取,进行处理时只需要将帧数据同扰码缓存逐块进行异或即可完成解扰过程。为了便于扩充功能,扰码序列为预先存储在本地硬盘中的以pn为扩展名的文件,该文件通过专门的外部程序事先生成,内容为从帧头开始到开始进行解扰的位之前均以O填充,从开始解扰的位开始填充生成的扰码序列。生成扰码序列时需要提供符合业内标准的扰码生成多项式(二进制形式)、扰码生成多项式长度、头部长度、扰码周期长度、加扰长度、帧长度、结尾需要填充额外内容的位数和填充内容(O或I)。生成的算法为:程序先生成头部长度位数个0,然后采用按位与和位段结合的方式获得扰码序列,如对于某10位起始1111111111的扰码初态,生成规则为(从左侧起)第1、3、7位进行异或得到结果填充到改式子的左侧,那么处理流程为:首先将该数据扩充为16位,即0000001111111111,该数据段位从右侧起至左侧为bo到bl5,每位段为I位,处理时,数据同0000001010001000进行按位与得到结果0000001010001000,通过段位将结果所有位进行异或操作得到1,然后将数据的bio置I,将bo输出,然后将整个数据右移I位重复上面操作,直到得到整个扰码序列,再根据参数填充对应长度的O或I,最后填充O补满一个帧长,并将结果存储到以卫星标识、传感器标识组成文件名的Pn文件中。帧同步软件运行时,数据解扰处理在预处理阶段根据参数读入PN码序列到一个包含一帧长度的64bit整数倍的PN码缓存中,进行处理时,(在64位平台上)以每64bit为一个单位进行异或操作得到解扰后数据。步骤十:发送线程接到发送通知后,对输出环形buffer进行检测,并将格式化后数据发送到其他处理单元,如果数据接收和处理线程结束返回,格式化数据发送完毕后,帧同步程序退出。以Visual Studio2008 为开发环境,在计算机平台(Xeon CPU X567002.93GHz36GBRAM)上对本发明算法进行了仿真测试,测试数据选取HJlA真实卫星数据,大小为766MB,数传帧长为2078字节,同步字8字节。测试方案如下:(I)在同步字偏移O比特和7比特两种情况下,利用本软件分别对帧头数据无误码、错3bit、多3bit以及少3bit数据进行帧同步处理,以检验 本算法位容错
及抗滑帧能力,测试结果如表I所示。
权利要求
1.一种实时软件帧的同步方法,其特征在于,包括以下步骤: 步骤一:首先对任务订单进行解析,获取卫星和传感器标识、接收和发送IP与端口号任务信息,根据任务订单读取参数文件; 步骤二:根据步骤一读取的参数文件进行初始化,生成同步码查找表、字节查找表、字节对齐查找表、PN码解扰数组,开辟接收和发送循环缓存buffer块;所述接收和发送循环缓存buffer块个数为数据分组个数,buffer块大小为每组字节数; 步骤三:启动数据接收、发送和处理三个线程,初始化数据接收和数据发送网络端口,并将接收线程设为监听状态,所述数据接收线程负责接收通过网络发送的卫星原始数据,将接收的数据缓存到接收buffer块中,并通知处理线程进行处理;所述处理线程负责原始数据同步字提取、字节对齐、数据解扰,并通知发送线程进行数据发送;所述发送线程负责将处理线程帧同步处理得到的成帧数据通过网络发送到外部处理单元,进行后续处理;步骤四:接收数据时,将接收到的所述的卫星原始数据依次写入到接收循环缓存buffer块中,写满一个buffer块后,将其状态标识设为写结束状态,并通知处理线程进行中贞同步处理,当写完最后一个buffer块时,返回第一个buffer块继续写入; 步骤五:处理线程开始帧同步处理,若当前buffer状态为不含数据帧状态,对其最后几帧长度数据逐字节与同步码位移查找表比对,若搜索到同步码则转到步骤六处理,否则等待下一 buffer块指针,继续对其进行处理,所述同步码位移查找表是在程序初始化时根据同步字建立的查找表,该表包括了同步字在不同比特偏移下所对应的值; 步骤六:将当前buffer状态设定为含有数据帧模式,从该buffer块头部逐字节进行同步字检测,检测到同步码后,转到步骤七; 步骤七:进入校验状态,如果当前同步字位置到该buffer块结尾不够两帧长度,等待下一 buffer块指针,并将当前buffer块剩余数据补充到下一 buffer块前面,组成连续数据,从当前搜索到的同步字位置开始跨越一个帧长进行同步字检测,检验该位置同步字是否存在位移或比特错误,若超出容错范围则校验失败,则转到步骤八重新进入搜索状态,若校验成功则将程序状态设为锁定态,则转到步骤九处理; 步骤八:从当前同步字位置逐字节进行同步字检测,若检测到同步字,转到步骤七处理,否则等待下一 buffer块指针,转到步骤五处理; 步骤九:程序进入锁定态时,将当前锁定成功的一帧数据逐字节根据比特移位数在字节对齐查找表中搜索后填充对应的内容,完成字节对齐操作,然后将对齐后的数据与预处理阶段生成的解扰表进行异或,将结果填充到输出环形buffer中,通知发送线程发送数据,并转到步骤七继续处理,所述字节对齐查找表是在程序初始化时建立的,该表给出了比特偏移后数据、比特偏移量与原字节的对应关系,利用该表可完成字节对齐;所述比特移位数是同步字的比特偏移量; 步骤十:发送线程接到发送通知后,对输出环形buffer进行检测,并将格式化后的数据发送到其他处理单元,如果数据接收和处理线程结束返回,格式化数据发送完毕后,帧同步程序退出。
2.如权利要求1所述的一种实时软件帧的同步方法,其特征在于,步骤一中所述的参数文件是事先存放在本地硬盘上的的文件,该文件包含待处理数据的同步字、同步字长度、帧长、数据分组个数、每组字节数以及扰码文件路径等处理参数。
3.如权利要求1或2所述的一种实时软件帧的同步方法,其特征在于,步骤二中所述buffer块有四种状态,分别是正在读、正在写、读完毕和写完毕,正在读状态表示从当前buffer块读取数据,正在写状态表示向当前buffer块写入数据,读完毕状态表示从当前buffer块读取数据完毕, 写完毕状态表示向当前buffer块写入数据完毕。
全文摘要
本发明提出了一种实时软件帧的同步方法,避免了对大量连续无效数据的帧同步字检测,大大提高了帧同步处理速度。本发明在进行帧同步处理时对接收到的卫星基带数据进行逻辑分段,搜索态时,首先采用逆向搜索的方法,通过检测当前数据段尾部数据,判断该数据段是否包含同步字,如果尾部数据检测到同步字,说明该数据段包含数据帧,那么再从该数据段头部开始逐字节检测同步字,否则直接处理下一数据段,并依次类推;校验态和锁定态时,将相邻两段数据作为连续数据进行处理。
文档编号H04L27/26GK103227660SQ20131009877
公开日2013年7月31日 申请日期2013年3月26日 优先权日2013年3月26日
发明者侯仰拴, 石涛, 胡玉新, 高辰阳 申请人:中国科学院电子学研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1