CN115080206A - 一种基于多线程机制的高速回波数据实时记录***及记录方法 - Google Patents

一种基于多线程机制的高速回波数据实时记录***及记录方法 Download PDF

Info

Publication number
CN115080206A
CN115080206A CN202210673222.4A CN202210673222A CN115080206A CN 115080206 A CN115080206 A CN 115080206A CN 202210673222 A CN202210673222 A CN 202210673222A CN 115080206 A CN115080206 A CN 115080206A
Authority
CN
China
Prior art keywords
data
thread
buffer
cmd
queue
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.)
Granted
Application number
CN202210673222.4A
Other languages
English (en)
Other versions
CN115080206B (zh
Inventor
张京超
高沛文
乔立岩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Harbin Institute of Technology
Original Assignee
Harbin Institute of Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Harbin Institute of Technology filed Critical Harbin Institute of Technology
Priority to CN202210673222.4A priority Critical patent/CN115080206B/zh
Publication of CN115080206A publication Critical patent/CN115080206A/zh
Application granted granted Critical
Publication of CN115080206B publication Critical patent/CN115080206B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01SRADIO 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
    • G01S7/00Details of systems according to groups G01S13/00, G01S15/00, G01S17/00
    • G01S7/02Details of systems according to groups G01S13/00, G01S15/00, G01S17/00 of systems according to group G01S13/00
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01SRADIO 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
    • G01S13/00Systems using the reflection or reradiation of radio waves, e.g. radar systems; Analogous systems using reflection or reradiation of waves whose nature or wavelength is irrelevant or unspecified
    • G01S13/02Systems using reflection of radio waves, e.g. primary radar systems; Analogous systems
    • G01S2013/0236Special technical features
    • G01S2013/0245Radar with phased array antenna
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5021Priority
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02ATECHNOLOGIES FOR ADAPTATION TO CLIMATE CHANGE
    • Y02A90/00Technologies having an indirect contribution to adaptation to climate change
    • Y02A90/10Information and communication technologies [ICT] supporting adaptation to climate change, e.g. for weather forecasting or climate simulation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

一种基于多线程机制的高速回波数据实时记录***及记录方法,本发明涉及基于多线程机制的高速回波数据实时记录***及记录方法。本发明的目的是为了解决现有方法无法实现将不同接口产生的大量高速回波数据实时准确记录下来的问题。***包括:一块高速数据采集板卡和上位机;板卡包括FPGA、DDR、外设接口;上位机包括PCIe插槽、硬盘、用户软件;上位机内部设有的用户软件使用多线程机制,对多个任务进行分割,在多核处理器中,每个处理器各自执行一个线程,多个任务能够并行执行;多线程机制包括主线程和辅助线程;主线程用于用户界面的显示、更新、用户操作的响应;辅助线程用于采集,缓存,写入硬盘。本发明用于电子测量技术领域。

Description

一种基于多线程机制的高速回波数据实时记录***及记录 方法
技术领域
本发明涉及电子测量技术领域,具体涉及基于多线程机制的高速回波数据实时记录***及记录方法。
背景技术
相控阵雷达由相当密集的天线阵列构成,它通过改变天线表面阵列所发出波束的合成方式来改变波束扫描方向。这种工作方式下,会产生大量的回波数据,工业领域为处理大量的高速数据,推进发展了串行传输技术如10Gbit Ethernet、Fibre Channel、SRIO等,给数据采集提供了接口方案。同时在一些实际任务中,为了对***进行实时监测,对高速数据的采集记录也提出了实时性要求。将不同接口产生的大量高速回波数据实时准确记录下来,成为雷达***需要解决的重要问题。
发明内容
本发明的目的是为了解决现有方法无法实现将不同接口产生的大量高速回波数据实时准确记录下来的问题,而提出一种基于多线程机制的高速回波数据实时记录***及记录方法。
一种基于多线程机制的高速回波数据实时记录***包括:一块高速数据采集板卡和上位机;
板卡包括FPGA、DDR、外设接口;
上位机PC主要包括PCIe插槽、硬盘、用户软件;
所述FPGA用于实现网口、光纤、PCIe外设接口的连接以及数据的采集和传输功能;所述DDR用于增加数据传输带宽,负责FPGA接收数据的第一级缓存;
所述上位机PC内部设有的PCIe插槽用于连接数据采集板卡;
所述上位机PC内部设有的硬盘用于数据的存储;
所述上位机PC内部设有的用户软件用于控制数据采集板卡;
所述上位机PC内部设有的用户软件是基于National Instrument的LabWindows/CVI平台设计的;
在LabWindows/CVI软件中使用多线程机制,对多个任务进行分割,在多核处理器中,每个处理器各自执行一个线程,多个任务能够并行执行;
所述多线程机制包括主线程和辅助线程;
所述主线程main thread用于用户界面的显示、更新、用户操作的响应;
所述辅助线程worker thread用于采集,缓存,写入硬盘;
所述辅助线程包括辅助线程worker thread1、辅助线程worker thread2和辅助线程worker thread3;
所述thread为线程;
为接收的数据开辟N个数据缓存区buffer,每个数据缓存区buffer的容量是1帧,并把数据缓存区buffer的首地址存储在数组队列中;
所述数组队列中存储buffer的id,写辅助线程worker thread2从buffer0开始写,每写完1个buffer就把对应的id写入到队列中,读辅助线程worker thread3从队列中取出buffer已经写满的id,然后从对应的buffer中读取数据并写入磁盘;
所述thread1用于读取板卡的state_fifo,如果为空,等待更新;如果不空,则把数据state_data写入到对应的命令cmd_fifo和Queue(cmd)中,通过数据采集板卡的PCI-e总线将数据传输给上位机PC;
所述thread2用于令i=0,从Queue中读取命令cmd,根据命令cmd的值选择把C2H的数据读入到data[cmd]的buffer[data[cmd]i]中,读完后把data[cmd]i写入队列,判断i取值是否为N-1,是,结束;否,令i=i+1,继续从Queue中读取命令cmd,根据命令cmd的值选择把C2H的数据读入到data[cmd]的buffer[data[cmd]i]中,读完后把data[cmd]i写入队列;
所述Thread3用于从队列取出buffer的id,然后把该buffer中的数据写入到硬盘中,判断i取值是否为N-1,是,结束;否,令i=i+1,继续从队列取出buffer的id,然后把该buffer中的数据写入到硬盘中,直至i取值是N-1;
N为数据缓存区buffer的个数。
一种基于多线程机制的高速回波数据实时记录方法具体过程为:
步骤一、采用数据采集板卡接收高速回波数据;
步骤二、采用PCI-e总线接口将接收的高速回波数据传递给上位机PC内部的软件;
所述上位机PC内部的软件LabWindows是基于National Instrument的CVI平台设计的;
在软件LabWindows/CVI中使用多线程机制,对多个任务进行分割,在多核处理器中,每个处理器各自执行一个线程,多个任务能够并行同时执行;
所述多线程为大于等于2个线程;
所述多核为8核或16核;
所述多线程机制包括主线程和辅助线程;
步骤三、将上位机PC内部软件接收的数据写入硬盘。
本发明的有益效果:
基于FPGA硬件平台可以实现丰富的外设接口功能,能够完成多种传输协议下的高速数据采集任务,FPGA的并行处理的能力增强了采集***的实时性;在LabWindows/CVI基于多线程机制设计实时数据记录软件,可以充分利用多核处理器增强软件性能,每个处理器单独执行一个线程可以保证实时的采集任务不被其它因素中断;同时配合内存设计数据缓冲区,将数据写入缓冲区再依次读出存入硬盘的方式避免了因***因素造成线程调度不及时而使数据丢失的情况,保证了数据的完整性。解决了现有方法无法实现将不同接口产生的大量高速回波数据实时准确记录下来的问题。
附图说明
图1为本发明硬件总体框图;
图2为本发明多线程软件结构图;
图3为本发明数据缓存区结构图;
图4a为本发明多线程软件中主线程流程图;
图4b为本发明多线程软件中辅线程流程图。
具体实施方式
具体实施方式一:本实施方式一种基于多线程机制的高速回波数据实时记录***包括:一块高速数据采集板卡和上位机;
所述数据采集板卡上FPGA芯片的高速收发器单路支持的传输速率为0.5~13.1Gbps;
板卡主要包括FPGA、DDR、外设接口;
上位机PC主要包括PCIe插槽、硬盘、用户软件;
所述FPGA用于实现网口、光纤、PCIe等外设接口的连接以及数据的采集和传输功能;所述DDR用于增加数据传输带宽,负责FPGA接收数据的第一级缓存;
基于FPGA搭建采集***,硬件总体框图如图1。
所述上位机PC内部设有的PCIe插槽用于连接数据采集板卡;
所述上位机PC内部设有的硬盘用于数据的存储;
所述上位机PC内部设有的用户软件用于控制数据采集板卡;
所述上位机PC内部设有的用户软件是基于National Instrument的LabWindows/CVI平台设计的;
在LabWindows/CVI软件中使用多线程机制,对多个任务进行分割,在多核处理器中,每个处理器各自执行一个线程,多个任务能够并行执行;使得数据采集、用户数据显示、数据写入硬盘三个任务能够同时执行;
所述多线程机制包括主线程和辅助线程;
所述主线程main thread用于用户界面的显示、更新、用户操作的响应;
所述辅助线程worker thread用于采集,缓存,写入硬盘;
所述辅助线程包括辅助线程worker thread1、辅助线程worker thread2和辅助线程worker thread3;
所述thread为线程;
FIFO在FPGA内通过硬件实现的,可以理解成一个缓存器,里面可以先存取内容,用户需要的时候再读取。
为接收的高速回波数据开辟N个数据缓存区buffer,每个数据缓存区buffer的容量是1帧(4MB),并把数据缓存区buffer的首地址存储在数组队列中;
所述数组队列中存储buffer的id(0~N-1),写辅助线程worker thread2从buffer0开始写,每写完1个buffer就把对应的id写入到队列中,读辅助线程workerthread3从队列中取出buffer已经写满的id,然后从对应的buffer中读取数据并写入磁盘;
所述thread1用于读取板卡的state_fifo,如果为空,等待更新;如果不空,则把数据state_data写入到对应的命令cmd_fifo和Queue(cmd)中,通过数据采集板卡的PCI-e总线将数据传输给上位机PC;
所述thread2用于令i=0,从Queue中读取命令cmd,根据命令cmd的值选择把C2H(板卡到主机)的数据读入到data[cmd]的buffer[data[cmd]i]中,读完后把data[cmd]i写入队列,判断i取值是否为N-1,是,结束;否,令i=i+1,继续从Queue中读取命令cmd,根据命令cmd的值选择把C2H(板卡到主机)的数据读入到data[cmd]的buffer[data[cmd]i]中,读完后把data[cmd]i写入队列;
所述Thread3用于从队列取出buffer的id,然后把该buffer中的数据写入到硬盘中,判断i取值是否为N-1,是,结束;否,令i=i+1,继续从队列取出buffer的id,然后把该buffer中的数据写入到硬盘中,直至i取值是N-1;
N为数据缓存区buffer的个数(设定)。
所述LabWindows/CVI软件程序在高速回波数据实时记录软件中使用线程池技术;
所述LabWindows/CVI提供的线程安全队列用于保护数据,帮助在线程间安全地传递数据。
具体实施方式二:本实施方式与具体实施方式一不同的是,所述多线程为大于等于2个线程。
其它步骤及参数与具体实施方式一相同。
具体实施方式三:本实施方式与具体实施方式一或二不同的是,所述多核为8核或16核。
其它步骤及参数与具体实施方式一或二相同。
具体实施方式四:本实施方式一种基于多线程机制的高速回波数据实时记录方法具体过程为:
步骤一、采用数据采集板卡接收高速回波数据;
步骤二、采用PCI-e总线接口将接收的高速回波数据传递给上位机PC内部的软件;
所述上位机PC内部的软件LabWindows是基于National Instrument的CVI平台设计的;
在软件LabWindows/CVI中使用多线程机制,对多个任务进行分割,在多核处理器中,每个处理器各自执行一个线程,多个任务能够并行同时执行;使得数据采集、用户数据显示和数据写入硬盘三两个任务能够同时执行;
所述多线程为大于等于2个线程;
所述多核为8核或16核;
所述多线程机制包括主线程和辅助线程;
步骤三、将上位机PC内部软件接收的数据写入硬盘。
具体实施方式五:本实施方式与具体实施方式四不同的是,所述主线程的具体执行过程为:
步骤1:判断主程序用户界面是否加载成功,若是,执行步骤2;若否,执行步骤4;
步骤2:创建辅助线程,判断辅助线程是否创建成功,若是,执行步骤3;若否,执行步骤4;
步骤3:响应用户操作,判断是否退出,否,继续响应用户操作;是,执行步骤4;
步骤4:释放内存。
其它步骤及参数与具体实施方式四相同。
具体实施方式六:本实施方式与具体实施方式四或五不同的是,所述步骤2中辅助线程的具体执行过程为:
步骤21、数据采集板卡每次完成一帧数据接收后写一次state_fifo,一帧数据的大小为4MB;
用户软件读取数据采集板卡的state_fifo是否为空,是,等待更新;否,执行步骤22;
FIFO在FPGA内通过硬件实现的,可以理解成一个缓存器,里面可以先存取内容,用户需要的时候再读取。
步骤22、把数据state_data写入到对应的命令cmd_fifo和Queue(cmd)中,通过数据采集板卡的PCI-e总线将数据传输给上位机PC,执行步骤23;
Queue(安全队列)是CVI多线程数据保护的一个软件机制。
前面一个线程产生数据,加入安全队列;后面一个线程显示数据,读取安全队列;
步骤23、令i=0,从步骤22的Queue(cmd)中读取命令cmd,根据命令cmd的值选择把C2H(板卡到主机)的数据读入到data[cmd]的buffer[data[cmd]i]缓存器中,读完后把data[cmd]i写入队列,判断buffer[i]缓存器是否写满,是,执行步骤24;否,重复步骤23;
步骤24、令i=i+1,更新数据采集板卡的State_fifo,从队列取出buffer缓存器的id,然后把该buffer缓存器中的数据写入到硬盘中,判断i取值是否为N-1,是,结束;否,执行步骤24,直至i取值是N-1;
N为数据缓存区buffer的个数(设定);
其它步骤及参数与具体实施方式四或五相同。
上位机软件选用National Instrument的LabWindows/CVI开发平台,进行数据采集的程序往往包含其它多个任务如用户界面显示、数据写入磁盘等,这些任务中的一个或多个对时间有严格的要求而且容易被其他任务干涉。而数据采集恰是时间要求严格的任务,还很可能被用户界面的任务打断。因此,设计在LabWindows/CVI软件程序中使用多线程技术,对多个任务进行分割;将数据采集操作放在一个线程中,而将用户界面处理放在另一个线程中;在用户对界面进行操作时,操作***将进行线程切换,为数据采集线程提供完成任务所需的时间;避免当用户在界面上进行操作时,线程不能返回到数据采集任务,导致数据采集缓冲区的溢出的情况。而且借助多处理器计算机运行多线程程序可以提高软件性能。用计算机上的每个处理器可以都执行一个线程,使得用户数据显示和数据写入磁盘两个任务能够同时执行。
在多线程程序中,除了主线程外,程序还通知操作***创建其他的线程,这些线程被称为辅助线程。程序中的辅助线程负责获取数据,主线程在数据可用时读取数据然后分析显示数据。LabWindows/CVI提供了两种在辅助进程中运行代码的高级机制,分别是线程池和异步定时器。线程池适合于执行若干次的或者一个循环内执行的任务,而异步定时器适合于定期进行的任务。在高速回波数据实时记录软件中使用线程池技术。此外,CVI提供的线程安全队列可以用来保护数据,帮助在线程间安全地传递数据。当需要用一个线程来采集数据而用另一个线程来处理数据时,线程安全队列可以在其内部处理所有的数据锁定。
软件的线程结构如图2所示,各个线程的功能如下:
·主线程(MainThread):UI的显示、更新、用户操作的响应。
·Thread-1:读取板卡的state_fifo,并把数据写入到对应的cmd_fifo,让板卡开始上传数据。
·Thread-2:当前端队列不空时,读取板卡C2H上的数据,并根据cmd的值写入到后续对应的data队列中。
·Thread3:读取前端队列的数据,写入到SSD中。
主函数中使用CmtNewThreadPool(3,&Poolhandle)函数创建一个3线程的线程池并在整个程序结束后使用CmtDiscardThreadPool(Poolhandle)函数释放线程池。下面的代码展示了在主线程中利用辅助线程进行数据采集。
int CVICALLBACK ReadDataThreadFunction(void*functionData);
int main(int argc,char*argv[])
{…
CmtScheduleThreadPoolFunction(DEFAULT_THREAD_POOL_HANDLE,ReadDataThreadFunction,NULL,&functionId);
…}
int CVICALLBACK ReadDataThreadFunction(void*functionData)
{
while(!quit)
{
Acquire(...);
}
}
主线程调用了CmtScheduleThreadPoolFunction函数,将数据写入缓冲区的辅助线程Thread-2函数名称ReadDataThreadFunction传入,类似的传入其它辅助线程。在Windows***中,可以指定每个线程工作时的优先级。当多个线程需要运行的时候,具有最高优先级的线程首先运行。使用CmtScheduleThreadFunctionAdv函数来将函数调度到线程池中运行时,可以指定执行所调度函数的线程的优先级。线程池在运行被调度的函数前会改变线程优先级。在函数结束运行后,线程池会将线程优先级恢复到原来的优先级。根据***配置情况和当前状态,线程池可能会创建新的线程来执行、也可能会使用已存在的空闲进程或者等待一个活跃的线程变为空闲然后使用。
主线程从CmtScheduleThreadPoolFunction函数返回,而无须等待辅助线程函数完成。在辅助线程中的ReadDataThreadFunction函数与主线程中的调用是同时执行的。因此,用户在主线程中对用户界面进行鼠标点击拖拽操作或对数据进行实时更新显示时,辅助线程也能持续运行进行数据采集,通过读取板卡状态FIFO获取指令,将数据写入缓冲区,最后在从缓冲区依次循环读出存入磁盘。
针对需要进行大量数据处理并通过界面反馈给用户的雷达***,这种基于多线程机制的高速回波数据记录方法可以充分发挥多线程设计的优势,增强软件性能,保证数据采集不会因为其它因素中断。同时配合内存设计数据缓冲区,将数据写入缓冲区再依次读出存盘的方式避免了***因素造成线程调度不及时而使数据丢失的情况,保证了回波数据完整性。
本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,本领域技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

Claims (6)

1.一种基于多线程机制的高速回波数据实时记录***,其特征在于:所述***包括:一块高速数据采集板卡和上位机;
板卡包括FPGA、DDR、外设接口;
上位机PC主要包括PCIe插槽、硬盘、用户软件;
所述FPGA用于实现网口、光纤、PCIe外设接口的连接以及数据的采集和传输功能;所述DDR用于增加数据传输带宽,负责FPGA接收数据的第一级缓存;
所述上位机PC内部设有的PCIe插槽用于连接数据采集板卡;
所述上位机PC内部设有的硬盘用于数据的存储;
所述上位机PC内部设有的用户软件用于控制数据采集板卡;
所述上位机PC内部设有的用户软件是基于National Instrument的LabWindows/CVI平台设计的;
在LabWindows/CVI软件中使用多线程机制,对多个任务进行分割,在多核处理器中,每个处理器各自执行一个线程,多个任务能够并行执行;
所述多线程机制包括主线程和辅助线程;
所述主线程main thread用于用户界面的显示、更新、用户操作的响应;
所述辅助线程worker thread用于采集,缓存,写入硬盘;
所述辅助线程包括辅助线程worker thread1、辅助线程worker thread2和辅助线程worker thread3;
所述thread为线程;
为接收的数据开辟N个数据缓存区buffer,每个数据缓存区buffer的容量是1帧,并把数据缓存区buffer的首地址存储在数组队列中;
所述数组队列中存储buffer的id,写辅助线程worker thread2从buffer0开始写,每写完1个buffer就把对应的id写入到队列中,读辅助线程worker thread3从队列中取出buffer已经写满的id,然后从对应的buffer中读取数据并写入磁盘;
所述thread1用于读取板卡的state_fifo,如果为空,等待更新;如果不空,则把数据state_data写入到对应的命令cmd_fifo和Queue(cmd)中,通过数据采集板卡的PCI-e总线将数据传输给上位机PC;
所述thread2用于令i=0,从Queue中读取命令cmd,根据命令cmd的值选择把C2H的数据读入到data[cmd]的buffer[data[cmd]i]中,读完后把data[cmd]i写入队列,判断i取值是否为N-1,是,结束;否,令i=i+1,继续从Queue中读取命令cmd,根据命令cmd的值选择把C2H的数据读入到data[cmd]的buffer[data[cmd]i]中,读完后把data[cmd]i写入队列;
所述Thread3用于从队列取出buffer的id,然后把该buffer中的数据写入到硬盘中,判断i取值是否为N-1,是,结束;否,令i=i+1,继续从队列取出buffer的id,然后把该buffer中的数据写入到硬盘中,直至i取值是N-1;
N为数据缓存区buffer的个数。
2.根据权利要求1所述一种基于多线程机制的高速回波数据实时记录***,其特征在于:所述多线程为大于等于2个线程。
3.根据权利要求2所述一种基于多线程机制的高速回波数据实时记录***,其特征在于:所述多核为8核或16核。
4.一种基于权利要求1所述***的一种基于多线程机制的高速回波数据实时记录方法,其特征在于:所述方法具体过程为:
步骤一、采用数据采集板卡接收高速回波数据;
步骤二、采用PCI-e总线接口将接收的高速回波数据传递给上位机PC内部的软件;
所述上位机PC内部的软件LabWindows是基于National Instrument的CVI平台设计的;
在软件LabWindows/CVI中使用多线程机制,对多个任务进行分割,在多核处理器中,每个处理器各自执行一个线程,多个任务能够并行同时执行;
所述多线程为大于等于2个线程;
所述多核为8核或16核;
所述多线程机制包括主线程和辅助线程;
步骤三、将上位机PC内部软件接收的数据写入硬盘。
5.根据权利要求4所述一种基于多线程机制的高速回波数据实时记录***,其特征在于:所述主线程的具体执行过程为:
步骤1:判断主程序用户界面是否加载成功,若是,执行步骤2;若否,执行步骤4;
步骤2:创建辅助线程,判断辅助线程是否创建成功,若是,执行步骤3;若否,执行步骤4;
步骤3:响应用户操作,判断是否退出,否,继续响应用户操作;是,执行步骤4;
步骤4:释放内存。
6.根据权利要求5所述一种基于多线程机制的高速回波数据实时记录***,其特征在于:所述步骤2中辅助线程的具体执行过程为:
步骤21、数据采集板卡每次完成一帧数据接收后写一次state_fifo,一帧数据的大小为4MB;
用户软件读取数据采集板卡的state_fifo是否为空,是,等待更新;否,执行步骤22;
步骤22、把数据state_data写入到对应的命令cmd_fifo和Queue(cmd)中,通过数据采集板卡的PCI-e总线将数据传输给上位机PC,执行步骤23;
步骤23、令i=0,从步骤22的Queue(cmd)中读取命令cmd,根据命令cmd的值选择把C2H的数据读入到data[cmd]的buffer[data[cmd]i]缓存器中,读完后把data[cmd]i写入队列,判断buffer[i]缓存器是否写满,是,执行步骤24;否,重复步骤23;
步骤24、令i=i+1,更新数据采集板卡的State_fifo,从队列取出buffer缓存器的id,然后把该buffer缓存器中的数据写入到硬盘中,判断i取值是否为N-1,是,结束;否,执行步骤24,直至i取值是N-1;
N为数据缓存区buffer的个数。
CN202210673222.4A 2022-06-14 2022-06-14 一种基于多线程机制的高速回波数据实时记录***及记录方法 Active CN115080206B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210673222.4A CN115080206B (zh) 2022-06-14 2022-06-14 一种基于多线程机制的高速回波数据实时记录***及记录方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210673222.4A CN115080206B (zh) 2022-06-14 2022-06-14 一种基于多线程机制的高速回波数据实时记录***及记录方法

Publications (2)

Publication Number Publication Date
CN115080206A true CN115080206A (zh) 2022-09-20
CN115080206B CN115080206B (zh) 2023-08-08

Family

ID=83251071

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210673222.4A Active CN115080206B (zh) 2022-06-14 2022-06-14 一种基于多线程机制的高速回波数据实时记录***及记录方法

Country Status (1)

Country Link
CN (1) CN115080206B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117591300A (zh) * 2024-01-17 2024-02-23 杭州长川科技股份有限公司 测试机多线程通信方法、装置和测试机
CN117872298A (zh) * 2024-03-13 2024-04-12 西安电子科技大学 一种基于Qt的雷达***的上位机***及控制方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060020945A1 (en) * 2004-06-07 2006-01-26 Chien Che-Hui C System, circuitry and method for parallel processing real-time signal with open structure
CN101777034A (zh) * 2010-03-22 2010-07-14 哈尔滨工业大学 具有硬件定时发送功能的rs422异步串行卡及其通信方法
CN101788922A (zh) * 2009-01-22 2010-07-28 国际商业机器公司 基于辅助线程实现事务存储***的方法和装置
CN102331923A (zh) * 2011-10-13 2012-01-25 西安电子科技大学 一种基于多核多线程处理器的功能宏流水线实现方法
CN113109778A (zh) * 2021-02-26 2021-07-13 西安电子科技大学 一种基于中断响应机制的多体制雷达预处理实现方法
CN113671478A (zh) * 2021-07-27 2021-11-19 西安电子科技大学 基于多核cpu的高速机动目标识别数据处理方法
CN113866738A (zh) * 2021-09-03 2021-12-31 湖北中南鹏力海洋探测***工程有限公司 一种基于地波雷达的海态回波采集***及方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060020945A1 (en) * 2004-06-07 2006-01-26 Chien Che-Hui C System, circuitry and method for parallel processing real-time signal with open structure
CN101788922A (zh) * 2009-01-22 2010-07-28 国际商业机器公司 基于辅助线程实现事务存储***的方法和装置
CN101777034A (zh) * 2010-03-22 2010-07-14 哈尔滨工业大学 具有硬件定时发送功能的rs422异步串行卡及其通信方法
CN102331923A (zh) * 2011-10-13 2012-01-25 西安电子科技大学 一种基于多核多线程处理器的功能宏流水线实现方法
CN113109778A (zh) * 2021-02-26 2021-07-13 西安电子科技大学 一种基于中断响应机制的多体制雷达预处理实现方法
CN113671478A (zh) * 2021-07-27 2021-11-19 西安电子科技大学 基于多核cpu的高速机动目标识别数据处理方法
CN113866738A (zh) * 2021-09-03 2021-12-31 湖北中南鹏力海洋探测***工程有限公司 一种基于地波雷达的海态回波采集***及方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
JINGCHAO ZHANG: "An FPGA based real-time radar target simulator with high spur suppression", pages 126 - 130 *
KOJI KOBAYASHI: "Competitive buffer management for multi-queue switches in qos networks using packet buffering algorithms", pages 328 *
方欣;胡顺星;赵培涛;王敏;曹开法;谢军;汪少林;: "ATS-1激光雷达实时处理显示***设计", no. 11, pages 282 - 285 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117591300A (zh) * 2024-01-17 2024-02-23 杭州长川科技股份有限公司 测试机多线程通信方法、装置和测试机
CN117591300B (zh) * 2024-01-17 2024-05-17 杭州长川科技股份有限公司 测试机多线程通信方法、装置和测试机
CN117872298A (zh) * 2024-03-13 2024-04-12 西安电子科技大学 一种基于Qt的雷达***的上位机***及控制方法
CN117872298B (zh) * 2024-03-13 2024-06-11 西安电子科技大学 一种基于Qt的雷达***的上位机***及控制方法

Also Published As

Publication number Publication date
CN115080206B (zh) 2023-08-08

Similar Documents

Publication Publication Date Title
CN115080206B (zh) 一种基于多线程机制的高速回波数据实时记录***及记录方法
US11550627B2 (en) Hardware accelerated dynamic work creation on a graphics processing unit
EP0732659B1 (en) Controlling (n+i) I/O channels with (n) data managers in a homogeneous software programming environment
US7650602B2 (en) Parallel processing computer
US7543295B2 (en) Method for enhancing efficiency in mutual exclusion
US20150186068A1 (en) Command queuing using linked list queues
US8145822B2 (en) Computer system for electronic data processing
JPH02168341A (ja) データ処理システム
CN108333566B (zh) 一种基于zynq的便携式雷达测试***及测试方法
US10983833B2 (en) Virtualized and synchronous access to hardware accelerators
KR0128274B1 (ko) 인터페이스 시스템 및 그 동작 방법
US20030177288A1 (en) Multiprocessor system
US20110265093A1 (en) Computer System and Program Product
CN107391400A (zh) 一种支持复杂访存指令的内存扩展方法和***
US20060206663A1 (en) Disk array device and shared memory device thereof, and control program and control method of disk array device
CN106095604A (zh) 一种多核处理器的核间通信方法及装置
US5353416A (en) CPU lock logic for corrected operation with a posted write array
US20120017217A1 (en) Multi-core processing system and computer readable recording medium recorded thereon a schedule management program
CN111432899B (zh) 用于管理对共享端口的多核访问的***和方法
KR20080105390A (ko) 플래시 메모리에 사용되는 명령어들을 제어하는 방법 및장치
DE102023101520A1 (de) Effizientes Starten von Aufgaben auf einem Prozessor
US8307141B2 (en) Multi-core processor, control method thereof, and information processing apparatus
CN113220608A (zh) 一种NVMe命令处理器及其处理方法
CN112767978A (zh) 一种ddr命令调度方法、装置、设备及介质
CN106681658A (zh) 基于多线程实现数据记录仪海量数据高速转存的方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant