基于多块USB接口芯片提高与上位机通讯速率的方法技术

技术编号:21913864 阅读:38 留言:0更新日期:2019-08-21 12:24
本发明专利技术公开了一种基于多块USB接口芯片提高与上位机通讯速率的方法,解决下位机数据输入模块的速率与上位机通讯速率不匹配问题。本发明专利技术包括并口数据输入模块、N块USB接口芯片、上位机多线程并发数据处理程序。其中数据输入模块通过并口连接于FPGA,FPGA通过SPI通讯协议分别连接于各块USB接口芯片,同时各块USB接口芯片通过USB协议连接于上位机,由上位机多线程并发程序解析各块USB接口芯片数据。本发明专利技术通过多块USB接口芯片并行传输,大幅提高了传输速率,解决了下位机数据输入速率与上位机传输速度不匹配问题。

A Method of Improving Communication Rate with PC Based on Multiple USB Interface Chips

【技术实现步骤摘要】
基于多块USB接口芯片提高与上位机通讯速率的方法
本专利技术涉及下位机和上位机数据通讯领域,具体涉及解决数据输入模块与多块USB接口芯片并行传输方法。
技术介绍
由于上位机具有运行速率快,计算能力强等特点,通常将下位机的产生的各种数据送入上位机进行处理,而当下位机数据传输速率小于数据输入速率时,将会造成数据的冗余,因而如何提高和上位机的通讯速率是该方式的关键。为解决实时传输的问题,通常采用通讯速率更快的接口总线,或者自己实现USB通讯协议,针对具体的数据指定固定的传输模式。现有技术方案一:采用PCI总线传输方式,该总线的主要特点是传输速率高,其传输速度大于采样传输速度时,可达到实时传输的目的。其缺点为:PCI不支持热插拔,且需要插入电脑主机的PCI插槽才可以使用,而通常笔记本电脑不具备PCI插槽,使用具有局限性。现有技术方案二:USB接口芯片具有接口简单,通讯简单等特点。其内部集成了MCU,工作原理是USB转串口的机制,因而传输速度受到了限制,出了采用该种芯片,还可采取纯粹的USB芯片,需要自己实现和USB通讯协议,完成上位机的数据交互,传输速率可以一定程度上提高,达到实时传输的目的。其缺点为:该方案需要自己实现USB通讯协议,开发难度大,且存在通讯不稳地等特点。
技术实现思路
本专利技术的目的是提供一种数据输入速率与上位机通讯速率不匹配的解决办法,避免数据冗余。本专利技术是这样实现的:一种基于多块USB接口芯片提高与上位机通讯速率的方法,包括并口数据输入模块、多块USB接口芯片、上位机多线程数据处理程序,FPGA控制模块,其中并口数据输入模块采取16线或8线并口作为输入接口,多块USB接口芯片传输速率总和大于并口数据输入模块的传输速率,FPGA控制模块通过并口连接于并口数据输入模块,通过SPI通讯协议连接于各块USB接口芯片,各块USB接口芯片通过USB协议连接于上位机,FPGA控制模块共有(N+1)个并行子程序,FPGA控制模块内部创建N个缓冲区用于保存并口数据输入模块里面的数据,每个缓冲区的大小为64个字节,FPGA控制模块第一个并行子程序为读取子程序,其功能是将并口数据输入模块里面的数据按字节大小依次写入N个缓冲区,每个缓冲区对应一块USB接口芯片,然后其余N个并行子程序为传输子程序,其功能是通过SPI协议驱动各个USB接口芯片将每块缓冲区的数据传输至上位机,在上位机创建N+1个线程安全队列:queue,queue1……queueN,上位机创建N+1个子线程,其中前N个子线程用于接收N块USB接口芯片传上来的数据,并将数据依次存入queue1到queueN线程安全队列里,第N+1个子线程将queue1,queue2……queueN线程安全队列的数据依次取出放入queue线程安全队列里,合成并口数据输入模块的原始数据,即把queue1里面的数据弹出一帧数据放入queue线程安全队列,然后把queue2里面的数据弹出一帧数据放入queue线程安全队列,直到把第N个queueN线程安全队列里面的数据弹出一帧数据放入queue线程安全队列,然后重复以上步骤,queue线程安全队列里面的数据便是原始数据信号,供数字信号处理。FPGA的工作流程如下:(f)FPGA创建N个数据帧为64个字节的缓冲区:buffer1、buffer2……bufferN,N为缓冲区的编号,(g)创建N个与缓冲区相对应的状态变量标志Full1、Full2……FullN,其中FullN为0代表缓冲区N未满,FullN为1代表缓冲区N为满,(h)创建代表缓冲区对应USB接口芯片状态变量Flag,Flag取值为1到N,flag=k代表往第k块USB接口芯片写入并口数据输入模块的数据,(i)FPGA读取并行子程序用于依次将并口数据输入模块的数据写入FPGA的N块缓冲区,其逻辑流程分别为如下所示:S1:初始化buffer1=0……buffer2=0,Flag=1,Full1……FullN=0S2:读取Flag值,S3:FPGA检测Flag是否大于零,若是执行S4,否则执行S7,S4:FPGA检测Flag是否等于1,若是执行S5,否则执行S6,S5:FPGA将FullN置零,执行S7,S6:FPGA将Full[Flag-1]置零,S7:FPGA读取并口输入数据写入Flag值对应的缓冲区Buffer[Flag],S8:FPGA将Full[Flag]置1,S9:FPGA将Flag标志值加1,S10:FPGA检测Flag是否等于N+1,若是执行S11,否者执行S2,S11:FPGA将Flag置1,执行S2,(j)其余N个FPGA传输子程序逻辑流程一致,只是N的取值不同,其逻辑流程为:S1:初始化N块USB接口芯片,S2:读取N块USB接口芯片的FullN标志,S3:FPGA检测FullN标志是否为1,若是执行S4,否则执行S2,S4:驱动第N块USB接口芯片把bufferN的数据传入上位机,执行S2,上位机的程序流程为:(a)通过上位机建立的多线程并发数据处理程序:包括主线程,用于初始化各外设,界面配置,以及开启N个数据接收线程来处理并口数据输入模块数据的接收,包括buffer1数据接收线程……bufferN数据接收线程,以及N个用于保存FPGA控制模块数据的线程安全队列queue1……queueN,数据解析线程,以及用以存放合成数据的线程安全队列缓冲区queue。(b)主线程的逻辑流程为:S1:初始化界面配置,初始化USB接口芯片,S2:开启buffer1……bufferN数据接收线程,S3:开启数据解析线程,(c)N个数据接收线程的逻辑流程是一致的,只是对应N值不同,其逻辑流程为:S1:调用USB接口芯片官方提供的DLL函数库里面的读取函数,S2:判断是否成功读取bufferN中的数据,若读取失败表示暂时无数据传送到上位机,执行S1,否则执行S3,S3:将该帧数据写入queueN,S4:是否结束线程,若是结束,否则执行S1,(d)数据解析线程的逻辑流程为:S1:读取queue1……queueN中各帧的大小,S2:检测queue1……queueN的数据大小是否都大于100帧,若否执行S1,若是执行S3,S3:依次从queue1……queueN中取出100帧数据,放入queue,S4:是否结束线程,若是直接结束,否则执行步骤S1。本专利技术提供了一种用于解决数据输入模块与上位机实时通讯的一种解决办法,通过多块USB接口芯片并行传输,大幅提高了传输速率,解决了下位机数据输入速率与传输速度的不匹配问题,本专利技术相比采用高速接口芯片以及底层自己实现传输协议具有价格低廉,方法简单等特点。附图说明图1为数据输入模块与各块USB接口芯片的连接关系及各块USB接口芯片与上位机的连接关系图。图2为FPGA读取子程序逻辑流程图。图3FPGA中N个传输子程序的逻辑流程图。图4为上位机主线程的逻辑流程图。图5N个buffer缓冲区数据接收线程的逻辑流程图。图6数据解析的逻辑流程图。具体实施方式FPGA控制模块采用EP4CE6F17C8,USB接口芯片选择CH372。当并口数据输入模块来自于采集模块时,采样率为625K/s时,一个采样点3个字节数据,因而需要的实时传输速率为1.8本文档来自技高网...

【技术保护点】
1.基于多块USB接口芯片提高与上位机通讯速率的方法,其特征在于,包括并口数据输入模块、多块USB接口芯片、上位机多线程数据处理程序,FPGA控制模块,其中并口数据输入模块采取16线或8线并口作为输入接口,多块USB接口芯片传输速率总和大于并口数据输入模块的传输速率,FPGA控制模块通过并口连接于并口数据输入模块,通过SPI通讯协议连接于各块USB接口芯片,各块USB接口芯片通过USB协议连接于上位机,FPGA控制模块共有(N+1)个并行子程序,FPGA控制模块内部创建N个缓冲区用于保存并口数据输入模块里面的数据,每个缓冲区的大小为64个字节,FPGA控制模块第一个并行子程序为读取子程序,其功能是将并口数据输入模块里面的数据按字节大小依次写入N个缓冲区,每个缓冲区对应一块USB接口芯片,然后其余N个并行子程序为传输子程序,其功能是通过SPI协议驱动各个USB接口芯片将每块缓冲区的数据传输至上位机,在上位机创建N+1个线程安全队列:queue,queue1……queueN,上位机创建N+1个子线程,其中前N个子线程用于接收N块USB接口芯片传上来的数据,并将数据依次存入queue1到queueN线程安全队列里,第N+1个子线程将queue1,queue2……queueN线程安全队列的数据依次取出放入queue线程安全队列里,合成并口数据输入模块的原始数据,即把queue1里面的数据弹出一帧数据放入queue线程安全队列,然后把queue2里面的数据弹出一帧数据放入queue线程安全队列,直到把第N个queueN线程安全队列里面的数据弹出一帧数据放入queue线程安全队列,然后重复以上步骤,queue线程安全队列里面的数据便是原始数据信号,供数字信号处理。...

【技术特征摘要】
1.基于多块USB接口芯片提高与上位机通讯速率的方法,其特征在于,包括并口数据输入模块、多块USB接口芯片、上位机多线程数据处理程序,FPGA控制模块,其中并口数据输入模块采取16线或8线并口作为输入接口,多块USB接口芯片传输速率总和大于并口数据输入模块的传输速率,FPGA控制模块通过并口连接于并口数据输入模块,通过SPI通讯协议连接于各块USB接口芯片,各块USB接口芯片通过USB协议连接于上位机,FPGA控制模块共有(N+1)个并行子程序,FPGA控制模块内部创建N个缓冲区用于保存并口数据输入模块里面的数据,每个缓冲区的大小为64个字节,FPGA控制模块第一个并行子程序为读取子程序,其功能是将并口数据输入模块里面的数据按字节大小依次写入N个缓冲区,每个缓冲区对应一块USB接口芯片,然后其余N个并行子程序为传输子程序,其功能是通过SPI协议驱动各个USB接口芯片将每块缓冲区的数据传输至上位机,在上位机创建N+1个线程安全队列:queue,queue1……queueN,上位机创建N+1个子线程,其中前N个子线程用于接收N块USB接口芯片传上来的数据,并将数据依次存入queue1到queueN线程安全队列里,第N+1个子线程将queue1,queue2……queueN线程安全队列的数据依次取出放入queue线程安全队列里,合成并口数据输入模块的原始数据,即把queue1里面的数据弹出一帧数据放入queue线程安全队列,然后把queue2里面的数据弹出一帧数据放入queue线程安全队列,直到把第N个queueN线程安全队列里面的数据弹出一帧数据放入queue线程安全队列,然后重复以上步骤,queue线程安全队列里面的数据便是原始数据信号,供数字信号处理。2.根据权利要求1所述的基于多块USB接口芯片提高与上位机通讯速率的方法,其特征在于,FPGA的工作流程如下:(a)FPGA创建N个数据帧为64个字节的缓冲区:buffer1、buffer2……bufferN,N为缓冲区的编号,(b)创建N个与缓冲区相对应的状态变量标志Full1、Full2……FullN,其中FullN为0代表缓冲区N未满,FullN为1代表缓冲区N为满,(c)创建代表缓冲区对应USB接口芯片状态变量Flag,Flag取值为1到N,flag=k代表往第k块USB接口芯片写入并口数据输入模块的数据,(d)FPGA读取并行子程序用于依次将并口数据输入模块的数据写入FPGA的N块缓冲区,其逻...

【专利技术属性】
技术研发人员:张治国赖小松王艺璇施博文
申请(专利权)人:电子科技大学
类型:发明
国别省市:四川,51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1