首页> 中国专利> 一种基于轮询/中断的实时虚拟无线电数据的同步方法

一种基于轮询/中断的实时虚拟无线电数据的同步方法

摘要

本发明提供一种基于轮询/中断的实时虚拟无线电数据的同步方法,包括虚拟无线电系统中物理层状态机在PCI设备中的相关FPGA中写入收发指令;PCI设备中的FPGA判断为发送指令还是接收指令;若是接收指令,FPGA接收数据并将接收的数据传输到PC中的环形队列中,并通过轮询或中断,读取环形队列中的有效数据;若是发送指令,每当环形队列中存储N个有效BLOCK数据块时,FPGA将PC中的环形队列中的有效数据读取到FPGA中的DMA数据区。本发明的基于轮询/中断的实时虚拟无线电数据的同步方法解决了基于RTX和Windows的虚拟无线电系统中PC与RCB之间数据同步问题。

著录项

  • 公开/公告号CN106294235A

    专利类型发明专利

  • 公开/公告日2017-01-04

    原文格式PDF

  • 申请/专利权人 中国科学院上海高等研究院;

    申请/专利号CN201510292254.X

  • 发明设计人 陈达;李志伟;陆小凡;李明齐;

    申请日2015-06-01

  • 分类号G06F13/32;G06F13/366;

  • 代理机构上海光华专利事务所;

  • 代理人高园园

  • 地址 201210 上海市浦东新区海科路99号

  • 入库时间 2023-06-19 01:14:33

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-02-01

    授权

    授权

  • 2017-02-01

    实质审查的生效 IPC(主分类):G06F13/32 申请日:20150601

    实质审查的生效

  • 2017-01-04

    公开

    公开

说明书

技术领域

本发明涉及虚拟无线电数据同步的技术领域,特别是涉及一种基于轮询/中断的实时虚拟无线电数据的同步方法。

背景技术

硬件与PC中的应用程序之间的数据同步问题是虚拟无线电系统的难点之一。目前,有轮询和中断两种数据同步方法。现有技术中,最常用的是基于轮询的数据同步方法,如为申请号201410484793.9,发明名称是《基于RTX实施扩展子系统的PCI总线数据同步方法》的中国发明专利中公开一种基于RTX实时扩展子系统的PCI总线数据同步方法,包括以下步骤,步骤(1)、将上位机安装XP操作系统、下位机安装RTX实时扩展子系统;步骤(2)、将RTX实时扩展子系统内开发PCI设备的驱动,以便进行PCI总线上的实时数据传输,数据传输采用DMA模式;步骤(3)、在RTX实时扩展子系统内的PCI设备的驱动中建立软中断机制;步骤(4)、上位机的XP操作系统与下位机的RTX实时扩展子系统,根据建立的建立软中断机制,实现数据同步通信。但是该方法中,RTX需要不断轮询底层硬件的标志,本质上还是轮询的方式,没有充分发挥RTX的实时特性。

基于中断的数据同步方法是通过开发PC中的驱动程序实现的。如申请号为201210004050.8,发明名称为《软件无线电系统中基于PCI总线的数据同步方法及系统》的中国发明专利公开一种软件无线电系统中基于PCI总线的数据同步方法,所述软件无线电系统包括处理器模块、射频模块和连接在所述处理器模块和所述射频模块之间的接口控制模块,其中,所述处理器模块和所述接口控制模块之间通过PCI总线相连,所述方法包括以下步骤:所述接口控制模块根据所述射频模块的时钟生成时间信息;所述接口控制模块根据所述时间信息产生中断,并通过所述PCI总线向所述处理器模块发送中断信号;所述处理器模块的中断响应程序根据所述中断信号接收所述时间信息,并触发软件无线电系统中相应的无线系统物理层调制或解调程序以及高层协议栈程序,并根据所述时间信息进行处理;通过所述PCI总线完成相应数据的读和/或写操作,并在所述接口控制模块进行缓存,以根据所述时间信息通过所述射频模块完成数据的接收和/或发送。该方法的优点是能够显著提高处理器的利用率;缺点是实现复杂,由于在通用操作系统下实现,容易被硬件中断和高优先级的线程中断,无法提供实时的数据同步。

发明内容

鉴于以上所述现有技术的缺点,本发明的目的在于提供一种基于轮询/中断的实时虚拟无线电数据的同步方法,用于解决基于RTX和Windows的虚拟无线电系统中主机(PC)与射频板卡(RCB)之间数据同步问题。

为实现上述目的及其他相关目的,本发明提供一种基于轮询的实时虚拟无线电数据的同步方法,PC中的环形队列用于存储若干个BLOCK数据块,每个BLOCK数据块包括32对IQ两路采样数据,每一路数据的最后一个无效位组成信息位;第一个信息位是标志位,表示数据是否有效,第二个信息位是天线号,用于表明发送/接收数据的天线;最后一个信息位是时间戳,用于在接收数据时记录采样的时间点;

所述基于轮询的实时虚拟无线电数据的同步方法包括以下步骤:步骤S11、虚拟无线电系统中物理层状态机根据收发指令,在PCI设备中的相关FPGA中的寄存器中写入收发指令;步骤S12、PCI设备中的FPGA检测寄存器中的指令,判断为发送指令还是接收指令;若是接收指令,转入步骤S13;若是发送指令,转入步骤S14;步骤S13、FPGA接收数据并将接收的数据传输到PC中的环形队列中,并在接收的数据大小首次超过一个BLOCK数据块的大小时触发中断;PC响应该中断,开启轮询线程,不断轮询环形队列,读取环形队列中的有效数据并传递到下一个通信模块或者上层协议进行后续的处理;步骤S14、每当环形队列中存储N个有效BLOCK数据块时,PC就在FPGA中写入一个标志;FPGA根据该标志,将PC中的环形队列中的有效数据读取到FPGA中的DMA数据区,并在规定时间发送反馈帧。

根据上述的基于轮询的实时虚拟无线电数据的同步方法,其中:每一个BLOCK数据块的大小为128Bytes,采样的位宽是16bits。

根据上述的基于轮询的实时虚拟无线电数据的同步方法,其中:所述步骤S13中,FPGA将接收的数据打包成BLOCK数据块,并设置每一个BLOCK的第一个I路的最后一位为0,同时设置BLOCK数据块的天线号和时间戳。

根据上述的基于轮询的实时虚拟无线电数据的同步方法,其中:所述环形队列初始化时全部位都为1;所述步骤S13中,在读取环形队列中BLOCK数据块的数据后,将BLOCK数据块的所有位设置为1。

根据上述的基于轮询的实时虚拟无线电数据的同步方法,其中:PC和FPGA中分别设定有超时时间T;如果FPGA在超时时间T内检测不到数据,就停止接收数据;如果PC在超时时间T内检测不到数据,则中断轮询线程。

同时,本发明还提供一种基于中断的实时虚拟无线电数据的同步方法,PC中的环形队列 用于存储若干个BLOCK数据块,每个BLOCK数据块包括32对IQ两路采样数据,每一路数据的最后一个无效位组成信息位;第一个信息位是标志位,表示数据是否有效,第二个信息位是天线号,用于表明发送/接收数据的天线;最后一个信息位是时间戳,用于在接收数据时记录采样的时间点;

所述基于中断的实时虚拟无线电数据的同步方法包括以下步骤:

步骤S21、虚拟无线电系统中物理层状态机根据收发指令,向PCI设备中的相关FPGA的寄存器中写入收发指令,并设置中断间隔;

步骤S22、PCI设备中的FPGA检测寄存器中的指令,判断为发送指令还是接收指令;若是接收指令,转入步骤S23;若是发送指令,转入步骤S24;

步骤S23、FPGA接收数据并将接收的数据传输到PC中的环形队列中,并当接收的数据达到设定的中断间隔时,触发中断;PC响应该中断,并读取环形队列中的有效数据,传输到下一个通信模块或者上层协议进行后续处理;

步骤S24、每当环形队列中存储N个有效数据块时,PC就在FPGA中写入一个标志;FPGA根据该标志,将PC中的环形队列中的有效数据读取到FPGA中的DMA数据区,并在规定时间发送反馈帧。

根据上述的基于中断的实时虚拟无线电数据的同步方法,其中:每一个BLOCK数据块的大小为128Bytes,采样的位宽是16bits。

根据上述的基于中断的实时虚拟无线电数据的同步方法,其中:所述中断间隔为100个BLOCK数据块的大小。

根据上述的基于中断的实时虚拟无线电数据的同步方法,其中:所述步骤S23中,FPGA将接收的数据打包成BLOCK数据块,并设置每一个BLOCK的第一个I路的最后一位为0;同时设置该BLOCK数据块的天线号和时间戳。

根据上述的基于中断的实时虚拟无线电数据的同步方法,其中:环形队列在初始化时全部位都为1;所述步骤S23中,从环形队列中读取BLOCK数据块中的有效数据后,将BLOCK数据块的所有位设置为1。

如上所述,本发明的基于轮询/中断的实时虚拟无线电数据的同步方法中:

基于轮询的数据同步方式有以下有益的技术效果:

(11)轮询线程基于实时操作系统RTX(Real Time eXtension)实现,能够屏蔽所有的Windows硬件中断和高优先级的中断,从而减少轮询线程被挂起的概率,进而减少有效数据被覆盖的可能;

(12)在轮询查询和读取数据时,设置超时时间,若在超时时间内,轮询线程查询不到数据,则终止该线程,从而显著提高了CPU的利用率;

(13)设计了一种BLOCK的数据结构,其中的时间戳记录了接收数据的采样时间点,如果需要在规定时间内发送反馈帧,可以根据最后一个接收数据的时间戳计算发送反馈帧的时间,并将该时间点和反馈帧传给FPGA,等待发送,从而提高了系统的实时性。

基于中断的数据同步方式有以下有益的技术效果:

(21)充分利用RTX的实时特性,基于中断实现数据同步,明显提高CPU的处理效率;

(22)通过设定中断间隔,可以兼容不同的通信协议对数据处理的要求;

(23)RTX中的中断延时在微秒级,并且RTX的中断服务例程具有较高的优先级,从而显著提高数据同步的实时性;

(24)设计了一种BLOCK的数据结构,通过记录接收的最后一个BLOCK的时间戳,计算出待发送的反馈帧的发送时间,并将该时间传递给FPGA,FPGA在发送的时间点上发送反馈帧,从而满足协议规定的实时性。

附图说明

图1显示为现有技术中的基于RTX的虚拟无线电系统的结构示意图;

图2显示为本发明的PC和RCB之间的数据同步的结构示意图;

图3显示为本发明的BLOCK数据块的结构示意图;

图4显示为本发明的基于轮询的实时虚拟无线电数据的同步方法的流程图;

图5显示为本发明的基于中断的实时虚拟无线电数据的同步方法的流程图。

具体实施方式

以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。

需要说明的是,本实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。

如图1所示,在虚拟无线电系统的实现架构中,硬件部分(如RCB)和RTX中的应用程序之间的数据同步是该架构的技术难点之一。PC和RCB之间的数据同步问题是指RCB和 PC中的数据交互问题,包括接收过程中将RCB接收后的数据传递给PC中的应用程序以待后续处理,以及发送过程中将PC中的应用程序处理后的数据发送到RCB中,以待发送。RCB中的主要功能是由FPGA实现的。因此,本发明所涉及的PC与RCB的数据同步也就是PC和FPGA的数据同步。

在虚拟无线电系统中,RCB和PC之间的数据同步结构如图2所示。具体地,RCB利用DMA的方式,将天线上接收到的数据通过PCI总线传输到PC中的环形队列中;同时,PC中虚拟无线电上层协议处理后的数据存到环形队列中,然后通过DMA的方式传输到RCB中。

为了实现基于RTX和Windows的虚拟无线电系统中PC与RCB之间数据同步问题,本发明设计了一种数据块结构BLOCK,BLOCK数据块的大小可以根据需要设定。由于PC和射频板卡之间的数据传输是通过PCI总线实现,而PCI总线的数据传输是按照TLP(交换层信息包)格式传输的。PCI规定TLP的大小为64—1024Bytes,而PC中处理通过PCI总线传输过来的数据是以128Bytes为单位进行的。因此,本发明设定一个BLOCK数据块的大小为128Bytes。在虚拟无线电系统中,采样的位宽是16bits,分为IQ两路。因此,在虚拟无线电系统中以(128*8)/(16*2)=32个采样点来打包成BLOCK数据块。BLOCK数据块的格式如图3所示。

具体地,对于每一个BLOCK数据块的结构如下:

1、每一个BLOCK数据块包括32对IQ采样数据,采样的位宽是16bits,BLOCK数据块的大小为128Bytes。

2、无论是I路还是Q路,有效的位宽是12bits或14bits。

3、在每一个BLOCK数据块内,取每一路数据的最后一个无效位组成信息位;其中第一个信息位是标志位,占1bit,0表示数据有效,1表示数据无效;第二个信息位是天线号,占7bits,用于表明发送数据的天线,或者表明接收数据的天线;最后一个信息位是时间戳,占56bits,用于在接收数据时,记录采样的时间点。

其中,时间戳主要用于控制数据块的发送时间。例如有些协议规定接收数据结束需要在规定时间发送一个反馈帧(ACK帧)。这时可以解析接收到的数据的最后一个BLOCK数据块的时间戳,计算出发送反馈帧的时间;然后将反馈帧和发送时间同时传递给FPGA,FPGA通过定时在准确的时间点发送反馈帧。如果没有严格的发送反馈帧的时间限制,时间戳可以忽略。

本发明的实时虚拟无线电数据的同步方法包括轮询和中断两种数据同步方式。下面来分别阐述两种数据同步方式。

实施例一

在本发明的基于轮询的实时虚拟无线电数据的同步方法中,PC中的环形队列用于存储若干个BLOCK数据块,每一个BLOCK数据块的大小为128Bytes,包括32对IQ两路采样数据,采样的位宽是16bits;且在每一个BLOCK数据块内,每一路数据的最后一个无效位组成信息位;第一个信息位是标志位,表示数据是否有效,第二个信息位是天线号,用于表明发送/接收数据的天线;最后一个信息位是时间戳,用于在接收数据时记录采样的时间点。

参照图4,本发明的基于轮询的实时虚拟无线电数据的同步方法包括以下步骤:

步骤S11、虚拟无线电系统中物理层状态机根据收发指令,在PCI设备中的相关FPGA中的寄存器中写入收发指令。

步骤S12、PCI设备中的FPGA检测寄存器中的指令,判断为发送指令还是接收指令;若是接收指令,转入步骤S13;若是发送指令,转入步骤S14。

步骤S13、FPGA接收数据并将接收的数据利用DMA的方式,通过PCI总线传输到PC中的环形队列中,并在接收的数据大小首次超过一个BLOCK数据块的大小时触发中断;PC响应该中断,开启轮询线程,不断轮询环形队列,读取环形队列中的有效数据并传递到下一个通信模块或者上层协议进行后续的处理。

其中,FPGA将接收的数据打包成BLOCK数据块,并设置每一个BLOCK的第一个I路的最后一位为0,即设置BLOCK数据块的标志位为0,以表明该数据块中的数据有效;同时设置该BLOCK数据块的天线号和时间戳。

具体地,当接收的数据第一次达到一个BLOCK数据块的大小时,FPGA触发一个中断,以触发PC中的轮询线程。需要说明的是,FPGA仅在接收的数据第一次满足一个BLOCK数据块大小时触发中断。

PC中的轮询线程通过检查BLOCK数据块中的标志位是否为0来判断该BLOCK数据块是否有效;如果有效,则读取该BLOCK数据块中的有效数据并传输到下一个通信模块或者上层协议作后续处理,并且将BLOCK数据块的所有位设置为1;如果无效,则PC的轮询线程继续检测下一个BLOCK数据块的有效性,直到数据接收结束。

在本发明中,环形队列在初始化时是全部位都为1,在读线程读取环形队列中的BLOCK数据块的数据后也将其全部位设置为1。这是为了下一次读取环形队列是,能够通过检测BLOCK数据块的标志位是否为1,来判断数据的有效性。

需要说明的是,PC和FPGA中分别设定有超时时间T;如果FPGA在超时时间T内检测不到数据,就停止接收数据;如果PC在超时时间T内检测不到数据,则中断轮询线程,从 而提高CPU的利用率,避免不必要的空转。

PC中的轮询线程是基于实时操作系RTX实现的。轮询线程不会被Windows系统的硬件中断和高优先级的线程打断,从而显著减少了数据没被读取就被覆盖的可能,显著提高了数据处理的实时性。

步骤S14、每当环形队列中存储N个有效BLOCK数据块时,PC就在FPGA中写入一个标志;FPGA根据该标志,利用DMA的方式,通过PCI总线将PC中的环形队列中的有效数据读取到FPGA中的DMA数据区,并在规定时间发送反馈帧。

其中,N没有具体的范围限制,可以根据需要,设置成不同的大小。对于不同的通信协议,设置不同的大小,以达到实时性和性能的最优。

其中,PC中的轮询线程根据BLOCK数据块中的信息位判断发送反馈帧的时间,并将该时间发送到FPGA,FPGA通过定时,在准确的时间点上发送该ACK反馈帧。

本发明的一个实施例中,基于RTX的虚拟无线电实现802.11系列无线局域网协议。协议规定在接收完数据后,须在16us发送一个ACK帧。因此,当数据发送结束,PC中的轮询线程通过解析FPGA传输的最后一个BLOCK的时间戳来判断接收时间,并计算出发送反馈帧的时间,即在时间戳上的时间加上16us,然后将该时间发送到FPGA,FPGA通过定时,在准确的时间点上发送该ACK反馈帧。

实施例二

在本发明的基于中断的实时虚拟无线电数据的同步方法中,PC中的环形队列用于存储若干个BLOCK数据块,每一个BLOCK数据块的大小为128Bytes,包括32对IQ两路采样数据,采样的位宽是16bits;且在每一个BLOCK数据块内,每一路数据的最后一个无效位组成信息位;第一个信息位是标志位,表示数据是否有效,第二个信息位是天线号,用于表明发送/接收数据的天线;最后一个信息位是时间戳,用于在接收数据时记录采样的时间点。

参照图5,本发明的基于中断的实时虚拟无线电数据的同步方法包括以下步骤:

步骤S21、虚拟无线电系统中物理层状态机根据收发指令,向PCI设备中的相关FPGA的寄存器中写入收发指令,并设置中断间隔。

具体地,中断间隔可以根据需要设定。优选地,将中断间隔设定为100个BLOCK数据块的大小,也就是3200个采样点。FPGA每接收3200个采样点的数据,即触发一次中断。

步骤S22、PCI设备中的FPGA检测寄存器中的指令,判断为发送指令还是接收指令;若是接收指令,转入步骤S23;若是发送指令,转入步骤S24。

步骤S23、FPGA接收数据并将接收的数据利用DMA的方式,通过PCI总线传输到PC 中的环形队列中,并当接收的数据达到设定的中断间隔时,触发中断;PC响应该中断,并读取环形队列中的有效数据,传输到下一个通信模块或者上层协议进行后续处理。

FPGA将接收的数据打包成BLOCK数据块,并设置每一个BLOCK的第一个I路的最后一位为0,即设置BLOCK数据块的标志位为0,以表明该数据块中的数据有效;同时设置该BLOCK数据块的天线号和时间戳。

优选地,当FPGA接收的数据超过3200个采样点,即100个BLOCK,就触发一个中断。PC中相应的中断处理例程响应该中断,并从环形队列中读取100个BLOCK数据块中的有效数据,并将读取的数据传输到下一个通信模块或者上层协议进行后续处理,并且将BLOCK数据块的所有位设置为1;同时挂起该中断处理例程,等待下一次中断的到来。

环形队列在初始化时是全部位都为1,在读线程读取环形队列中的BLOCK数据块的数据后也将其全部位设置为1。这是为了下一次读取环形队列是,能够通过检测BLOCK数据块的标志位是否为1,来判断数据的有效性。

需要说明的是,在FPGA中设定有超时时间T;如果FPGA在超时时间T内检测不到数据,就停止接收数据,从而提高CPU的利用率,避免不必要的空转。

步骤S24、每当环形队列中存储N个有效数据块时,PC就在FPGA中写入一个标志;FPGA根据该标志,利用DMA的方式,通过PCI总线将PC中的环形队列中的有效数据读取到FPGA中的DMA数据区,并在规定时间发送反馈帧。

其中,N没有具体的范围限制,可以根据需要,设置成不同的大小。对于不同的通信协议,设置不同的大小,以达到实时性和性能的最优。

具体地,一旦数据发送结束,PC中的中断服务例程通过解析FPGA传输的最后一个BLOCK数据块的时间戳来判断接收时间,计算出发送反馈帧的时间,并将该时间发送到FPGA,FPGA通过定时,在准确的时间点上发送反馈帧。

本发明的一个实施例:基于RTX的虚拟无线电实现802.11系列无线局域网协议。协议规定在接收完数据后,须在16us发送一个ACK帧。因此,当数据发送结束时,PC中的中断服务例程通过解析FPGA传输的最后一个BLOCK的时间戳判断接收时间,并计算出发送反馈帧的时间,即在时间戳上的时间加上16us,然后将该时间发送到FPGA。FPGA通过定时,在准确的时间点上发送该反馈帧。

综上所述,本发明的基于轮询/中断的实时虚拟无线电数据的同步方法中,基于轮询的数据同步方式中轮询线程基于实时操作系统RTX实现,能够屏蔽所有的Windows硬件中断和高优先级的中断,从而减少轮询线程被挂起的概率,进而减少有效数据被覆盖的可能;在轮 询查询和读取数据时,设置超时时间,若在超时时间内,轮询线程查询不到数据,则终止该线程,从而显著提高了CPU的利用率;设计了一种BLOCK的数据结构,其中的时间戳记录了接收数据的采样时间点,如果需要在规定时间内发送反馈帧,可以根据最后一个接收数据的时间戳计算发送反馈帧的时间,并将该时间点和反馈帧传给FPGA,等待发送,从而提高了系统的实时性。基于中断的数据同步方式充分利用RTX的实时特性,基于中断实现数据同步,明显提高CPU的处理效率;通过设定中断间隔,可以兼容不同的通信协议对数据处理的要求;RTX中的中断延时在微秒级,并且RTX的中断服务例程具有较高的优先级,从而显著提高数据同步的实时性;设计了一种BLOCK的数据结构,通过记录接收的最后一个BLOCK的时间戳,计算出待发送的反馈帧的发送时间,并将该时间传递给FPGA,FPGA在时间点上发送反馈帧,从而满足协议规定的实时性。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。

上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号