CN107908587A - 基于usb3.0的实时数据采集传输装置 - Google Patents
基于usb3.0的实时数据采集传输装置 Download PDFInfo
- Publication number
- CN107908587A CN107908587A CN201710976747.4A CN201710976747A CN107908587A CN 107908587 A CN107908587 A CN 107908587A CN 201710976747 A CN201710976747 A CN 201710976747A CN 107908587 A CN107908587 A CN 107908587A
- Authority
- CN
- China
- Prior art keywords
- data
- state
- fifo
- read
- fpga
- 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
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
- Communication Control (AREA)
Abstract
本发明涉及大数据信息传输技术领域,为对采集到的数据能够做到实时高效且稳定的usb传输,其数据包模式的传输对于军事、雷达、遥感等数据传输***具有现实的应用价值。为此,本发明,基于USB3.0的实时数据采集传输装置,由依次相连的模拟信号采样AD(Analog Dialogue)设备、USB芯片、现场可编程门阵列FPGA(Field-Programmable Gate Array)、上位计算机构成,USB芯片和FPGA相连接;FPGA通过MicroB接口连接上位计算机的usb接口。本发明主要应用于大数据信息usb传输场合。
Description
技术领域
本发明涉及大数据信息传输技术领域,具体讲,涉及基于USB3.0的实时数据采集传输方法。
背景技术
生活在21世纪中的人们,几乎亲眼见证了科学技术的迅猛发展,随着技术的进步,数字处理已经是信号处理领域中必不可少的一种方法,而大多数数字信号处理***的第一步都是将模拟信号转换为数字信号,即数据采集。与此同时,采集后数据的传输工作将成为一个热点的问题。
数据的采集与传输***已经应用在各种各样的设备和产品中,正如大家所熟知的音频采集***、雷达的海量数据传输***以及需要大的数据传输速率的遥测遥感等***,这些***都需要保证数据在传输过程中的稳定性与准确度,以便为后续的数字处理阶段做铺垫。与此同时,就面临着如何去设计实现一个高速而且有效的数据传输***,高速的数据传输***主要包括激励发送、数据采集与快速传输三个方面,激励发送这一方面可以负责信号的发送,数据采集主要对信号进行高速实时的采样,最后在经过快速传输协议将数据发送到信号处理端。从以上就可以看出一个高速的数据传输***必须具备两个特点,首先必须具有灵活的数据接口以便于可以进行广泛地应用,其次需要高的数据传输速率来满足高速通信时的数据吞吐率。
目前所知道的许多高速传输***大部分都是以PCI(Peripheral ComponentInterconnect,外设部件互连标准)的数据接口或是USB2.0(Universal Serial Bus2.0,第二代通用串行总线)的数据接口为主的。PCI的数据接口传输速率大但却易用性不强,而USB2.0的数据接口被局限在了480Mbps的带宽,近几年推出的USB3.0(Universal SerialBus3.0,第三代通用串行总线)的数据接口以其热插拔的特性及传输速度快、性能稳定等特点而使其应用广泛,其易用性强、数据吞吐率又高,可谓是解决以上两个矛盾的最佳“替代品”,必将在未来的市场上有较好的发展前景。
USB3.0的接口技术是在PCI数据协议上做了进一步改进,高速传输特性更好,更适合于长线传输。主要不同之处表现在:(1)USB3.0的***采用的是串行式的接口,它可以从接收到的数据信息中恢复出时钟信号,不像PCI接口数据的发送和接收端都必须采用相同的参考时钟;(2)USB3.0使用了低频周期信号的旁频带信号,用途广泛,如睡眠模式的返回和复位等;(3)USB3.0内部带有均衡器,可用于补偿信号在线路传输过程中所带来的畸变以及损耗。
发明内容
为克服现有技术的不足,本发明旨在提出一种基于USB3.0的实时数据采集***软件设计,对采集到的数据能够做到实时高效且稳定的传输,其数据包模式的传输对于军事、雷达、遥感等数据传输***具有现实的应用价值。为此,本发明采用的技术方案是,基于USB3.0的实时数据采集传输装置,由依次相连的模拟信号采样AD(Analog Dialogue)设备、USB芯片、现场可编程门阵列FPGA(Field-Programmable Gate Array)、上位计算机构成,USB芯片和FPGA的具体连接方式是,USB芯片的SLCS、SLOE、SLRD、SLWR、PKTEND、FLAGA和FLAGB管脚分别与FPGA相连,SLOE为SLAVE FIFO的输出使能引脚;SLRD为其读使能引脚;SLWR为其写使能引脚;PKTEND引脚能够强制发送USB3.0缓存中的数据包,而不用管此时的数据包长度是否已经达到了端点设置的要求;FLAGA和FLAGB可反映当前线程FIFO的‘满’或‘空’的状态,以便程序可以读取此标志位,从而更好地进行数据的读操作和数据的写操作,在USB芯片和FPGA之间还配置有8位、16位或者32位宽度的数据总线、两位地址信号线,SLCS为片选信号输入管脚;FPGA通过MicroB接口连接上位计算机的usb接口。
USB芯片和FPGA之间采用通用可编程接口GPIFⅡ(General ProgrammableInterface)接口连接,寄存器IFCONFIG配置USB芯片的从属数据传输SLAVE FIFO模式下的接口时钟;通过相关寄存器EPxFIFOCFG的WORDWIDE位选择配置为8位、16位或者32位宽度的数据总线FD;Addr[1:0]引脚将选择哪一个先进先出数据缓存器FIFO(First In FirstOut)连接到数据总线FD上,即地址信号Addr[1:0]表示要访问的线程;SLOE为SLAVE FIFO的输出使能引脚;SLRD为其读使能引脚;SLWR为其写使能引脚;PKTEND引脚能够强制发送USB3.0缓存中的数据包,而不用管此时的数据包长度是否已经达到了端点设置的要求;FLAGA和FLAGB可反映当前线程FIFO的‘满’或‘空’的状态,以便程序可以读取此标志位,从而更好地进行数据的读操作和数据的写操作。
FPGA与USB芯片的写数据时序控制:
IDLE:当CYUSB3014芯片要接收来自FPGA的AD采样的数据时,即写事件发生时,进入STATE 1;
STATE 1:设定SLAVE FIFO的地址A0:A1,同时将SLCS拉低,地址的指针指向FIFO,随后跳进STATE 2;
STATE 2:如果当前FIFO的full信号有效时,即full=1时,表示当前FIFO已被数据写满,则需要在该状态进行等待,否则进入到STATE 3;
STATE 3:到STATE 3后,CYUSB3014芯片的SLWR信号和外部的读信号使能将有效,数据将写至FIFO,而且FIFO的指针会随着USB3.0的时钟PCLK的上升沿而进行更新,写至一定的数目后,进入到STATE 4;
STATE 4:这一状态如果还想要写入更多的数据,则继续跳回到STATE 2,如果数据传输已经完毕,则回到IDLE状态进行下一次的数据传输。
USB芯片与PC端的读数据时序控制:
IDLE:当PC上位机端的FIFO要接收来自CYUSB3014芯片的数据时,而且USB芯片的FIFO没有空时,读事件将发生,进入STATE 1;
STATE 1:设定SLAVE FIFO的地址A0:A1,同时将SLCS拉低,地址的指针指向CYUSB3014芯片的FIFO,随后跳进STATE 2;
STATE 2:如果当前FIFO的empty信号有效时,即empty=1时,表示当前芯片FIFO已空,则需要在该状态进行等待,否则进入到STATE 3;
STATE 3:到STATE 3后,CYUSB3014芯片的SLRD信号和外部的写信号使能将有效,FPGA将会把数据从数据总线中读走,而且FIFO的指针会随时钟的上升沿而进行更新,然后在进入到STATE 4;
STATE 4:这一状态如果还想要读出芯片FIFO中更多的数据,则继续跳回到STATE2,如果数据读取已经完毕,则回到IDLE状态进行下一次的数据读操作。
USB3.0块传输协议下的数据流模式
IDLE:USB3.0的FIFO缓存端要接收采样数据,即写事件要发生时,进入到AD_WR_ADDR状态;
AD_WR_ADDR:选择USB3.0的数据缓存FIFO端口地址,如果flaga=1'b1时,说明此时的FIFO端口中存在数据则需先将数据读出,跳回到IDLE状态,否则进入到WAIT_DATA的状态;
WAIT_DATA:此状态下判断data_reach是否为1,也就是时钟1MHz的上升沿是否到达。如果有效则进入到AD_WR_DATA状态,否则一直等待判断;
AD_WR_DATA:将到达的数据写至USB3.0的缓存端,slcs和slwr信号都会置低有效,且此状态下cf位会置1,也就是说cf的上升沿到达,此时data_reach位将清0,以等待下一个1MHz时钟上升沿的到来;
AD_WR_WAIT:当USB3.0的FIFO缓存端口数据没满时则可继续向里写数据,这时跳回到写地址AD_WR_ADDR的状态,否则flagb=1'b0即满时将停留在此状态等待数据被读出。且在此状态下cf位重新清0。
USB3.0块传输协议下的数据包模式
IDLE:USB3.0的FIFO缓存端即将接收采样数据,发生写事件时,进入到AD_WR_ADDR状态;
AD_WR_ADDR:选择USB3.0的数据缓存FIFO端口地址,如果flaga=1'b1时,说明此时的FIFO端口中存在数据则需先将数据读出,跳回到IDLE状态,否则进入到WAIT_DATA的状态;
WAIT_DATA:此状态下判断所设计的FIFO中数据有没有写到500个,即满标志prog_full信号是否有效,也要判断USB3.0缓存端有没有满。即prog_full=1且flagb=1时将进入到AD_WR_DATA状态,否则一直等待判断;
AD_WR_DATA:当ad_wr_count=127信号有效时,说明所设计FIFO中的数据已被读出128个,就进入到数据等待AD_WR_WAIT状态,或者flagb=0表示此时USB3.0缓存端已满,不应在往里写数据,也将进入到AD_WR_WAIT状态,否则将停留在此状态进行写数据。这一状态slcs和slwr信号都会置低有效,从而使一直读出FIFO中的数据被写至USB3.0的缓存端;
AD_WR_WAIT:当USB3.0的FIFO缓存端口数据没满时则可继续向里写数据,这时跳回到写地址AD_WR_ADDR的状态,否则flagb=1'b0即满时将停留在此状态等待数据被读出。
本发明的特点及有益效果是:
本发明基于USB3.0设计了一个高速稳定的数据传输***,利用xc6v1x130t的FPGA芯片以及ADS4249数据采集芯片,将采集后的数据通过CYUSB3014的USB3.0芯片,成功传输到PC端。总体而言本发明设计的***具有数据传输速率快、稳定性好的特点,且采集出的数据能够正确上传到PC端进行存储。本发明设计的***具有以下特点:
1)应用广泛,实用性更强:USB3.0是一种采用了8b/10b编码方式的高速串行总线,这种串行总线是全双工的高速差分数据传输,具有高达5Gbps的大带宽,传输速率是非常快的。相对于传统的PCI及USB2.0数据传输速率大幅度提高,目前已经广泛应用于手机数据接口、雷达数据传输***等大型数据传输***;
2)数据传输稳定且效率高效:USB3.0采用的8b/10b的编码方式是由IBM(国际商业机器)公司在1982年开发出来的一种编码机制,该编码机制是一种数值查找类型,具体编码机制可见下图1所示。通过这样的编码方式,每次发送的串行比特流数据会跟随一个时钟信号,这样的话就不需要每次发送的串行比特流数据还要单独在发送一个时钟信号了,从而使得端口链路上的线路安排更加方便。更重要的一点是,时钟是不需要与通道信号的跟踪长度完全匹配的,通道之间的互相连接也会变得更加容易,从而使得数据传输的效率变得更加高效;
3)数据传输正确度高:在USB3.0的链路层中,可以使两个端口在逻辑上和物理上相互连接起来,从而使得数据包在整个传输过程中能够保证其完整性,与此同时,链路层还要负责监控整个链路的电源管理以及畅通性。其中的完整性不仅仅要对数据包实行循环冗余校验,还要对接收和发送的数据缓存端进行管理。如果检测到数据包是有错误的或者已经丢失了数据包,链路层就会对这些错误包或者丢失包重新发送。数据链路层要确保数据成功完成了在链路两端的传输,这种机制主要以传输包和命令包的形式进行控制传输的,每个包必须是完全封装好的,而且会包含主机与设备的数据信息。所以说链路层保证了数据传输的正确性,它可以保持整个链路过程中数据的畅通性。
本发明设计的USB3.0实时数据采集***有力地克服了USB2.0数据传输慢且不稳定的缺陷,在工业及军事应用中具有现实的价值意义。
附图说明:
图1本次发明设计的整体框架图;
图2整个USB3.0数据传输***装置平台图;
图3USB3.0的数据传输协议结构图;
图4USB3.0编码机制图;
图5FPGA与CYUSB3014芯片及PC端的数据传输接口连接图;
图6FPGA与CYUSB3014芯片的GPIF II接口连接图;
图7CYUSB3014芯片与上位机PC端的DMA通道连接图;
图8FPGA与CYUSB3014芯片的写数据时序控制图;
图9CYUSB3014芯片与PC端的读数据时序控制图;
图10ADS4249数据采集芯片工作时序图;
图11USB3.0数据传输的写状态机设计图;
图12USB3.0数据传输的读状态机设计图;
图13USB3.0块传输协议下的数据流模式状态机设计图;
图14USB3.0块传输协议下的数据包模式状态机设计图;
图15采集的正弦波信号图;
图16USB3.0数据流模式与数据包模式下的传输速率比较图。
具体实施方式
本发明属于大数据信息领域,将FPGA硬件平台与上位机软件***结合起来,是一套完整的电子信息数据传输***。本发明将利用现有的FPGA硬件平台实现USB3.0的高速数据传输,传输速率可到达5Gbps,对解决高速数据的传输问题有一定的现实研究意义。
本次发明的主要意义在于利用USB3.0更高的传输性能以及更快的数据转换能力,尤其在数据量特别大的时候,实现数据的高速传输,极大地提高数据在传输过程中的带宽,减少占用FPGA和计算机的时间。另外USB3.0接口技术的传输稳定性能也较高,对需要PC机和外设进行高速数据通信的电路设计具有一定的参考价值。
针对USB2.0在信息***中传输慢且传输的数据不稳定的缺陷,已经不适用于大数据时代下进行实时的数据传输,本发明提出了一种基于USB3.0的实时数据采集***软件设计,对采集到的数据能够做到实时高效且稳定的传输,并对块传输下的数据流模式和数据包模式的传输速率进行了比较,进一步证明了数据包模式的传输对于军事、雷达、遥感等数据传输***具有现实的应用价值。
本发明采用如下的技术方案:
1.设计整体框架
本次发明将会利用Cypress(赛普拉斯)公司提供的EZ_USB FX3系列CYUSB3014的主控芯片与XILINX(赛灵思)公司提供的xc6v1x130t FPGA芯片进行整个时序电路的设计,以此来实现FPGA与PC端的高速数据通信。本次发明设计的整体框图如下图1所示。
在常见的现代专用集成电路中,FPGA即现场可编程逻辑门阵列是集成度最高的一种,只要使用者对其内部的逻辑模块和输入输出口模块进行相应的配置,便能实现相应的逻辑操作及对应的设计功能,其主要优点有:(a)FPGA不需要后端复杂的设计,从而使开发时间大大减少;(b)内部的寄存器和I/O等硬件资源丰富,数字设计逻辑功能相对容易;(c)可反复擦写,重复使用。由于根据不同的任务可进行***的在线定制,已使FPGA应用到非常广阔的领域中。其中,CYUSB3014的主控芯片灵活性强、集成度高,能帮助开发人员为任何***增加USB3.0的功能。其中CYUSB3014芯片的逻辑连线如下图2所示。
2.数据采集
数据采集工作是数据传输的一个基础前提,为了满足高速数据的传输要求,本次发明将采集高频正弦波信号并将模拟的正弦波信号进行数字化,从而进行高速数据的稳定实时传输。
3.USB3.0数据传输协议的设计
USB3.0主要包括块传输、控制传输、中断传输和同步传输等四种不同类型的数据传输协议,本次发明采用的是USB3.0的块传输数据协议。USB3.0的数据传输协议结构图如下图3所示。
块传输是USB接口协议中最重要的一种数据传输方式,一般用在全速、高速和超速的设备中,特别适合传输大量的数据,而且要求数据在传输过程中保持较高正确率,但对传输时间、传输速率和实时性却不做很大的限制。所以这种方式一般应用于数据采集卡、USB打印机和扫描仪等设备中。块传输采用了灵活的传输机制,能够在传输很多数据的同时不会造成USB总线的堵塞。即当总线带宽紧张的时候,块传输会自动为其他传输类型让出自己所占用的帧或者比较小的帧时间,这时的数据传输将会被滞后,从而使得传输速率降低以及传输时间变长;USB总线空闲的时候,块传输会更多地利用总线带宽,此时的传输速率将会变高、传输时间变短。这种机制虽然会使传输时间和传输速率得不到保证,但它的差错控制和重试机制可以保证数据传输的正确率和稳定性。当然,块传输的数据包长度是有规定的,全速模式下的最大数据包长度一般为8、16、32或64字节;高速模式下的最大数据包长度具有唯一性,只能为512字节;超速模式下的最大数据包长度为1024字节。如果一次传输的数据量大于最大数据包长度时,USB主控器会将整个传输分成多个块事物从而进行数据的分段传输,即先将分段的块以最大长度传输,最后再将剩余的小于或等于传输最大长度的数据块发送出去。
为了实现块传输数据协议,本发明将采用Cypress公司的CYUSB3014芯片,此芯片集成度非常高,使用起来也很灵活。作为新一代的USB接口芯片,它的内部集成了ARM9的CPU处理器,能支持高达200M的工作频率,另外此芯片还包括512KB的RAM(Ramdom AccessMemory,随机读写存储器)及USB3.0物理层的收发器。本发明设计将利用100MHz的SLAVEFIFO的接口,将此接口主要与FPGA和处理器等进行相连。
3.1CYUSB3014芯片的SLAVE FIFO模式
CYUSB3014芯片主要由USB3.0的收发器、FIFO存储器、数据总线、地址总线、IIC(Inter-Integrated Circuit,集成电路总线)控制器和GPIF(通用可编程接口)等接口构成,此片内集成了512K字节的SRAM(静态随机读写存储器)、8K字节的数据缓存和8K字节的指令缓存,功能非常强大,使用起来也比较方便。CYUSB3014芯片在进行数据通信时,与FPGA或者一些集成电路等下位机的通信主要通过GPIF II的接口,该接口主要工作在主从SLAVEFIFO模式和GPIF II的主控模式下,本发明设计利用的是SLAVE FIFO模式;与PC端等上位机的通信可通过DMA(Direct Memory Access,直接内存存取)通道实现。与FPGA、电脑PC端相连后,数据之间的相互通信与传输示意图可见图5所示。
3.2FPGA与CYUSB3014芯片的GPIF Ⅱ接口连接
FX3系列芯片的数据通信需要和***的下位机以及上位机都进行实时的通信,与FPGA通信的接口主要是GPIF II接口。
Cypress公司上一代USB2.0的产品用的是GPIF接口,而USB3.0的GPIF II接口是其的增强版本,能提供多达256个的可编程状态,可选择与FPGA、ASIC(Application SpecificIntegrated Circuit,专用集成电路)、DSP(Digital Signal Processor,数字信号处理器)等处理器进行连接工作,数据总线可配置为8bit、16bit或32bit,从而实现与任意外部设备之间的数据高速并行传输。本发明是基于FPGA的设计,通过FPGA与GPIF II接口之间的相互配合,实现主从SLAVE FIFO模式的同步读写工作。
本次发明将GPIF II接口工作配置在100MHz的时钟频率下,其接口选择为32位数据缓存的SLAVE FIFO同步读写模式。SLAVE FIFO模式的接口电路示意图可见图6所示。其中,寄存器IFCONFIG可配置CYUSB3014芯片的SLAVE FIFO模式下的接口时钟;通过相关寄存器EPxFIFOCFG的WORDWIDE位可选择配置为8位、16位或者32位宽度的数据总线FD;Addr[1:0]引脚将选择哪一个FIFO连接到数据总线FD上,即地址信号Addr[1:0](地址信号线)表示要访问的线程;SLOE为SLAVE FIFO的输出使能引脚;SLRD为其读使能引脚;SLWR为其写使能引脚;PKTEND引脚能够强制发送USB3.0缓存中的数据包,而不用管此时的数据包长度是否已经达到了端点设置的要求;FLAGA和FLAGB可反映当前线程FIFO的‘满’或‘空’的状态,以便程序可以读取此标志位,从而更好地进行数据的读操作和数据的写操作。
3.3CYUSB3014芯片与上位机PC端的DMA通道连接
通过DMA通道,就可以将FX3的CYUSB3014芯片与电脑PC端连接起来进行数据通信,每当FX3的缓冲区已经被写满数据时,就会通过此通道上传至PC机,从而实现USB3.0与PC端的数据传输工作。DMA通道说到底其实是一种软件结构,它封装了3种硬件元素,分别为描述符、套接字以及缓冲区。其实在电脑PC端外部接口的硬件模块中就存在该套接字,***当然也是允许外部接口存在多个套接字的,以便数据可以通过套接字在DMA通道中来回的传输。本次发明DMA通道的两端都存在套接字,两个套接字的用途也不相同,一个用于数据的输入,另一个用于数据的输出。缓冲区是数据在DMA通道传输时的中转站,也就是控制器***中的数据缓冲区,数据在经过套接字后会首先到达缓冲区的中转站,然后用于输出数据的套接字会将其从中转站中读走。描述符主要用于套接字与缓冲区的关联,它是一种数据结构。
FX3系列的芯片有多种的DMA通道模式,从自动化程度上可分为自动的DMA通道与手动的DMA通道两种。自动的DMA通道一旦建立起来后,在其运行过程中固件是不能够干预数据流的传输状态,从而使得数据源源不断地从DMA数据通道中传输,不需要固件干预的这一特点使这种自动的DMA通道模式提供了很大的数据效率;不同于自动的DMA通道,手动的DMA通道需要PC端的CPU去干预数据的流动传输过程,以便实时监控和随时修改传输的数据流,但其并也不是没有缺点的,最大的缺点就是会降低数据的传输效率。基于以上的考虑,本次发明采用了自动的DMA通道模式。可见图7所示,展示了一个DMA的数据通道,方向为P2U,套接字为PIB和UIB,数据缓存通道由8个大小相同的16K字节构成。
3.4FPGA与CYUSB3014芯片的写数据时序控制
SLAVE FIFO模式既有同步下的读与写,也有异步下的读与写,CYUSB3014通过GPIFII的接口与FPGA相连时,FPGA会对芯片内部的FIFO缓冲区进行数据的访问。数据访问过程中,FPGA将提供FIFO ADDR[1:0]线上的地址,通过设置写探针或读探针进行数据的缓存与传输。本次发明将利用SLAVE FIFO的同步读写模式,使AD采样的数据通过FPGA的时序逻辑控制传输到主控芯片缓存端口,最后将数据通过DMA通道传至上位机PC端。
FPGA与CYUSB3014芯片的写数据时序控制如下图8所示。程序控制上可用以下状态表示。
IDLE:当CYUSB3014芯片要接收来自FPGA的AD采样的数据时,即写事件发生时,进入STATE 1;
STATE 1:设定SLAVE FIFO的地址A0:A1,同时将SLCS拉低,地址的指针指向FIFO,随后跳进STATE 2;
STATE 2:如果当前FIFO的full(满)信号有效时,即full=1时,表示当前FIFO已被数据写满,则需要在该状态进行等待,否则进入到STATE 3;
STATE 3:到STATE 3后,CYUSB3014芯片的SLWR信号和外部的读信号使能将有效,数据将写至FIFO,而且FIFO的指针会随着USB3.0的时钟PCLK的上升沿而进行更新,写至一定的数目后,进入到STATE 4;
STATE 4:这一状态如果还想要写入更多的数据,则继续跳回到STATE 2,如果数据传输已经完毕,则回到IDLE状态进行下一次的数据传输。
3.5CYUSB3014芯片与PC端的读数据时序控制
CYUSB3014芯片与PC端的读数据时序控制如下图9所示。程序控制上可用以下状态表示。
IDLE:当PC上位机端的FIFO要接收来自CYUSB3014芯片的数据时,而且CYUSB3014芯片的FIFO没有空时,读事件将发生,进入STATE 1;
STATE 1:设定SLAVE FIFO的地址A0:A1,同时将SLCS拉低,地址的指针指向CYUSB3014芯片的FIFO,随后跳进STATE 2;
STATE 2:如果当前FIFO的empty(空)信号有效时,即empty=1时,表示当前芯片FIFO已空,则需要在该状态进行等待,否则进入到STATE 3;
STATE 3:到STATE 3后,CYUSB3014芯片的SLRD信号和外部的写信号使能将有效,FPGA将会把数据从数据总线中读走,而且FIFO的指针会随时钟的上升沿而进行更新,然后在进入到STATE 4;
STATE 4:这一状态如果还想要读出芯片FIFO中更多的数据,则继续跳回到STATE2,如果数据读取已经完毕,则回到IDLE状态进行下一次的数据读操作。
4.USB3.0块传输协议下的数据流模式
块传输的数据流模式,即还是本着块传输的数据协议,每次来一个采样数据就会把数据发送到USB3.0的数据传输模块中,直到数据缓存端处于满状态时,最后由PC端进行数据的接收。数据流模式可以应用在FIR滤波器设计中,优点是每次的结果是随时更新的,缺点是要求使用的处理器速度足够高,能够在下一个样本到达之前完成所有的运算。当然,这种模式不可避免的会影响数据的传输速率,相当于每来一个数据就要等待很长的时间下一个数据才到达,FPGA控制循环状态的次数较多,时间延迟就较长,速率也就较低。
5.USB3.0块传输协议下的数据流模式
块传输下的数据包模式,也是本着块传输的数据协议,当采样数据缓存至USB3.0的FIFO中一定程度后,再将这些数据像类似于包的形式统一发送到PC端进行数据接收。数据包模式的应用也比较广泛,如1024点的FFT运算,就是当1024个点相当于一帧的数据到齐之后在进行运算,优点是能减小频繁读写存储器带来的而外开销从而够获得较高的处理效率,另外就是处理器速度可以不用很高,缺点便是运算的时延加长,以及需要足够大的存储空间。这种模式数据的传输速率较第一种模式高,因为其相当于一包数据全部到达之后,直到USB3.0的缓存端满后,再去通知CPU打开一道“通路”去读取数据。这样FPGA控制状态机的循环次数较少,每次数据包的传输时间较短,速率自然较高。
下面结合附图与实例对本发明作进一步说明。
1)数据采集
本次发明将利用ADS4249芯片进行正弦波数据的采集,其中ADS4249芯片最大采样率为250MSPS,且是双通道的14位采样,采样时会用到差分数据信号,此信号的主要优点是容易识别小信号且对外部电磁干扰呈高度免疫性,可见本发明设计的***稳定性强,抗干扰能力好。
采集的时序图可见下图10所示。工作原理如下:AD芯片输入FPGA的LVDS(Low-Voltage Differential Signaling,低电压差分信号)差分信号数据时钟经过IBUFGDS(全局时钟输入缓冲)转化为单端时钟作为数据采集的主时钟,同时LVDS差分的数据信号经过IBUFDS转化为单端信号,经过IDDR(双倍速率同步动态随机存储器)在时钟的上升沿和下降沿都采样数据,然后再把采样到的数据组合成14位数据。
2)USB3.0数据传输协议的设计
数据传输主要包括数据的读和写。在进行写操作时,本发明设计的状态图如下图11所示。其中IDLE为初始状态,AD_WR_ADDR为数据写USB3.0的FIFO缓存地址状态,AD_WR_DATA为数据写状态,AD_WR_WAIT为数据的写等待状态。
●IDLE:USB3.0的FIFO缓存端即将接收采样数据发生写事件时,进入到AD_WR_ADDR状态;
●AD_WR_ADDR:FPGA选择CYUSB3104芯片的数据缓存FIFO端口地址,如果flaga=1'b1时,说明此时的USB3.0的FIFO端口中存在数据则需先将数据读出,跳回到IDLE状态,否则进入到写数据AD_WR_DATA的状态;
●AD_WR_DATA:如果flaga=1'b1时,同样跳回到IDLE状态先讲数据读出,或者如果此状态下的ad_wr_count计数达到80后,就进入到数据等待AD_WR_WAIT状态,否则将停留在此状态,一直读FIFO中的数据,且slcs和slwr信号都会置低有效,从FIFO中读出的数据会被送至USB3.0的缓存端口;
●AD_WR_WAIT:当USB3.0的FIFO缓存端口数据没满时则可继续向里写数据,这时跳回到写地址AD_WR_ADDR的状态,否则flagb=1'b0即满时将停留在此状态等待数据被读出。
在进行读操作时,本发明设计的状态图如下图12所示。其中IDLE为初始状态,RD_ADDR为数据的读USB3.0的FIFO缓存地址状态,RD_DATA为数据读状态,RD_WAIT为数据的读等待状态。
◆IDLE:当PC上位机端要接收来自CYUSB3014芯片的数据时,即USB3.0发生读事件时,进入到下一状态RD_ADDR;
◆RD_ADDR:选择USB3.0的数据读FIFO端口地址,然后进入到RD_DATA的状态;
◆RD_DATA:如果flaga=1'b0,说明此时的缓存端口中没有数据则进入到RD_WAIT状态,否则将停留在此状态将缓存端口中的数据读出,此时slcs和slrd信号都会置低有效,sloe信号也会低有效,从而驱动数据总线将数据读出;
◆RD_WAIT:当flaga=1'b1时,说明又有数据要被读出,则又进入到IDLE状态,否则将停留在此数据读等待状态。
3)USB3.0块传输协议下的数据流模式
此模式下的状态转换设计如下图13所示。具体说明可见如下:
IDLE:USB3.0的FIFO缓存端要接收采样数据,即写事件要发生时,进入到AD_WR_ADDR状态;
AD_WR_ADDR:选择USB3.0的数据缓存FIFO端口地址,如果flaga=1'b1时,说明此时的FIFO端口中存在数据则需先将数据读出,跳回到IDLE状态,否则进入到WAIT_DATA的状态;
WAIT_DATA:此状态下判断data_reach是否为1,也就是时钟1MHz的上升沿是否到达。如果有效则进入到AD_WR_DATA状态,否则一直等待判断;
AD_WR_DATA:将到达的数据写至USB3.0的缓存端,slcs和slwr信号都会置低有效,且此状态下cf位会置1,也就是说cf的上升沿到达,此时data_reach位将清0,以等待下一个1MHz时钟上升沿的到来;
AD_WR_WAIT:当USB3.0的FIFO缓存端口数据没满时则可继续向里写数据,这时跳回到写地址AD_WR_ADDR的状态,否则flagb=1'b0即满时将停留在此状态等待数据被读出。且在此状态下cf位重新清0。
4)USB3.0块传输协议下的数据包模式
此模式下的状态转换设计如下图14所示。具体说明可见如下:
IDLE:USB3.0的FIFO缓存端即将接收采样数据,发生写事件时,进入到AD_WR_ADDR状态;
AD_WR_ADDR:选择USB3.0的数据缓存FIFO端口地址,如果flaga=1'b1时,说明此时的FIFO端口中存在数据则需先将数据读出,跳回到IDLE状态,否则进入到WAIT_DATA的状态;
WAIT_DATA:此状态下判断所设计的FIFO中数据有没有写到500个,即prog_full信号是否有效,也要判断USB3.0缓存端有没有满。即prog_full=1且flagb=1时将进入到AD_WR_DATA状态,否则一直等待判断;
AD_WR_DATA:当ad_wr_count=127信号有效时,说明所设计FIFO中的数据已被读出128个,就进入到数据等待AD_WR_WAIT状态,或者flagb=0表示此时USB3.0缓存端已满,不应在往里写数据,也将进入到AD_WR_WAIT状态,否则将停留在此状态进行写数据。这一状态slcs和slwr信号都会置低有效,从而使一直读出FIFO中的数据被写至USB3.0的缓存端;
AD_WR_WAIT:当USB3.0的FIFO缓存端口数据没满时则可继续向里写数据,这时跳回到写地址AD_WR_ADDR的状态,否则flagb=1'b0即满时将停留在此状态等待数据被读出。
Claims (6)
1.一种基于USB3.0的实时数据采集传输装置,其特征是,由依次相连的模拟信号采样AD(Analog Dialogue)设备、USB芯片、现场可编程门阵列FPGA(Field-Programmable GateArray)、上位计算机构成,USB芯片和FPGA的具体连接方式是,USB芯片的SLCS、SLOE、SLRD、SLWR、PKTEND、FLAGA和FLAGB管脚分别与FPGA相连,SLOE为SLAVE FIFO的输出使能引脚;SLRD为其读使能引脚;SLWR为其写使能引脚;PKTEND引脚能够强制发送USB3.0缓存中的数据包,而不用管此时的数据包长度是否已经达到了端点设置的要求;FLAGA和FLAGB可反映当前线程FIFO的‘满’或‘空’的状态,以便程序可以读取此标志位,从而更好地进行数据的读操作和数据的写操作,在USB芯片和FPGA之间还配置有8位、16位或者32位宽度的数据总线、两位地址信号线,SLCS为片选信号输入管脚;FPGA通过MicroB接口连接上位计算机的usb接口。
2.如权利要求1所述的基于USB3.0的实时数据采集传输装置,其特征是,USB芯片和FPGA之间采用通用可编程接口GPIFⅡ(General Programmable Interface)接口连接,寄存器IFCONFIG配置USB芯片的从属数据传输SLAVE FIFO模式下的接口时钟;通过相关寄存器EPxFIFOCFG的WORDWIDE位选择配置为8位、16位或者32位宽度的数据总线FD;Addr[1:0]引脚将选择哪一个先进先出数据缓存器FIFO(First In First Out)连接到数据总线FD上,即地址信号Addr[1:0]表示要访问的线程;SLOE为SLAVE FIFO的输出使能引脚;SLRD为其读使能引脚;SLWR为其写使能引脚;PKTEND引脚能够强制发送USB3.0缓存中的数据包,而不用管此时的数据包长度是否已经达到了端点设置的要求;FLAGA和FLAGB可反映当前线程FIFO的‘满’或‘空’的状态,以便程序可以读取此标志位,从而更好地进行数据的读操作和数据的写操作。
3.如权利要求1所述的基于USB3.0的实时数据采集传输装置,其特征是,FPGA与USB芯片的写数据时序控制:
IDLE:当CYUSB3014芯片要接收来自FPGA的AD采样的数据时,即写事件发生时,进入STATE 1;
STATE 1:设定SLAVE FIFO的地址A0:A1,同时将SLCS拉低,地址的指针指向FIFO,随后跳进STATE 2;
STATE 2:如果当前FIFO的full信号有效时,即full=1时,表示当前FIFO已被数据写满,则需要在该状态进行等待,否则进入到STATE 3;
STATE 3:到STATE 3后,CYUSB3014芯片的SLWR信号和外部的读信号使能将有效,数据将写至FIFO,而且FIFO的指针会随着USB3.0的时钟PCLK的上升沿而进行更新,写至一定的数目后,进入到STATE 4;
STATE 4:这一状态如果还想要写入更多的数据,则继续跳回到STATE 2,如果数据传输已经完毕,则回到IDLE状态进行下一次的数据传输。
4.如权利要求1所述的基于USB3.0的实时数据采集传输装置,其特征是,USB芯片与PC端的读数据时序控制:
IDLE:当PC上位机端的FIFO要接收来自CYUSB3014芯片的数据时,而且USB芯片的FIFO没有空时,读事件将发生,进入STATE 1;
STATE 1:设定SLAVE FIFO的地址A0:A1,同时将SLCS拉低,地址的指针指向CYUSB3014芯片的FIFO,随后跳进STATE 2;
STATE 2:如果当前FIFO的empty信号有效时,即empty=1时,表示当前芯片FIFO已空,则需要在该状态进行等待,否则进入到STATE 3;
STATE 3:到STATE 3后,CYUSB3014芯片的SLRD信号和外部的写信号使能将有效,FPGA将会把数据从数据总线中读走,而且FIFO的指针会随时钟的上升沿而进行更新,然后在进入到STATE 4;
STATE 4:这一状态如果还想要读出芯片FIFO中更多的数据,则继续跳回到STATE 2,如果数据读取已经完毕,则回到IDLE状态进行下一次的数据读操作。
5.如权利要求1所述的基于USB3.0的实时数据采集传输装置,其特征是,USB3.0块传输协议下的数据流模式:
IDLE:USB3.0的FIFO缓存端要接收采样数据,即写事件要发生时,进入到AD_WR_ADDR状态;
AD_WR_ADDR:选择USB3.0的数据缓存FIFO端口地址,如果flaga=1'b1时,说明此时的FIFO端口中存在数据则需先将数据读出,跳回到IDLE状态,否则进入到WAIT_DATA的状态;
WAIT_DATA:此状态下判断data_reach是否为1,也就是时钟1MHz的上升沿是否到达。如果有效则进入到AD_WR_DATA状态,否则一直等待判断;
AD_WR_DATA:将到达的数据写至USB3.0的缓存端,slcs和slwr信号都会置低有效,且此状态下cf位会置1,也就是说cf的上升沿到达,此时data_reach位将清0,以等待下一个1MHz时钟上升沿的到来;
AD_WR_WAIT:当USB3.0的FIFO缓存端口数据没满时则可继续向里写数据,这时跳回到写地址AD_WR_ADDR的状态,否则flagb=1'b0即满时将停留在此状态等待数据被读出。且在此状态下cf位重新清0。
6.如权利要求1所述的基于USB3.0的实时数据采集传输装置,其特征是,USB3.0块传输协议下的数据包模式:
IDLE:USB3.0的FIFO缓存端即将接收采样数据,发生写事件时,进入到AD_WR_ADDR状态;
AD_WR_ADDR:选择USB3.0的数据缓存FIFO端口地址,如果flaga=1'b1时,说明此时的FIFO端口中存在数据则需先将数据读出,跳回到IDLE状态,否则进入到WAIT_DATA的状态;
WAIT_DATA:此状态下判断所设计的FIFO中数据有没有写到500个,即满标志prog_full信号是否有效,也要判断USB3.0缓存端有没有满。即prog_full=1且flagb=1时将进入到AD_WR_DATA状态,否则一直等待判断;
AD_WR_DATA:当ad_wr_count=127信号有效时,说明所设计FIFO中的数据已被读出128个,就进入到数据等待AD_WR_WAIT状态,或者flagb=0表示此时USB3.0缓存端已满,不应在往里写数据,也将进入到AD_WR_WAIT状态,否则将停留在此状态进行写数据。这一状态slcs和slwr信号都会置低有效,从而使一直读出FIFO中的数据被写至USB3.0的缓存端;
AD_WR_WAIT:当USB3.0的FIFO缓存端口数据没满时则可继续向里写数据,这时跳回到写地址AD_WR_ADDR的状态,否则flagb=1'b0即满时将停留在此状态等待数据被读出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710976747.4A CN107908587A (zh) | 2017-10-19 | 2017-10-19 | 基于usb3.0的实时数据采集传输装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710976747.4A CN107908587A (zh) | 2017-10-19 | 2017-10-19 | 基于usb3.0的实时数据采集传输装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107908587A true CN107908587A (zh) | 2018-04-13 |
Family
ID=61840651
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710976747.4A Pending CN107908587A (zh) | 2017-10-19 | 2017-10-19 | 基于usb3.0的实时数据采集传输装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107908587A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110069435A (zh) * | 2019-05-07 | 2019-07-30 | 珠海达明科技有限公司 | 基于usb3.0转sccb的多摄像模组配置装置及方法 |
CN110096461A (zh) * | 2019-04-16 | 2019-08-06 | 中国科学院国家空间科学中心 | 一种基于usb3.0辅助协议的实时高速数据传输方法及*** |
CN110209358A (zh) * | 2019-06-05 | 2019-09-06 | 哈尔滨工业大学 | 一种基于FPGA的NVMe设备存储速度提升方法 |
CN111698366A (zh) * | 2020-05-08 | 2020-09-22 | 北京连山时代科技有限公司 | 一种基于usb接口的手机硬件扩展方式 |
CN112305961A (zh) * | 2020-10-19 | 2021-02-02 | 武汉大学 | 新型信号探测采集设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030074489A1 (en) * | 2001-08-14 | 2003-04-17 | Steger Perry C. | Measurement system with modular measurement modules that convey interface information |
CN104361143A (zh) * | 2014-11-28 | 2015-02-18 | 成都龙腾中远信息技术有限公司 | 一种便携式数据采集卡及其方法 |
CN104866444A (zh) * | 2015-06-10 | 2015-08-26 | 北京航空航天大学 | 一种分布式pos用数据存储计算机*** |
-
2017
- 2017-10-19 CN CN201710976747.4A patent/CN107908587A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030074489A1 (en) * | 2001-08-14 | 2003-04-17 | Steger Perry C. | Measurement system with modular measurement modules that convey interface information |
CN104361143A (zh) * | 2014-11-28 | 2015-02-18 | 成都龙腾中远信息技术有限公司 | 一种便携式数据采集卡及其方法 |
CN104866444A (zh) * | 2015-06-10 | 2015-08-26 | 北京航空航天大学 | 一种分布式pos用数据存储计算机*** |
Non-Patent Citations (1)
Title |
---|
王早: "《USB3.0高速实时数据采集与记录***硬件设计》", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110096461A (zh) * | 2019-04-16 | 2019-08-06 | 中国科学院国家空间科学中心 | 一种基于usb3.0辅助协议的实时高速数据传输方法及*** |
CN110069435A (zh) * | 2019-05-07 | 2019-07-30 | 珠海达明科技有限公司 | 基于usb3.0转sccb的多摄像模组配置装置及方法 |
CN110069435B (zh) * | 2019-05-07 | 2024-06-14 | 珠海市运泰利自动化设备有限公司 | 基于usb3.0转sccb的多摄像模组配置方法 |
CN110209358A (zh) * | 2019-06-05 | 2019-09-06 | 哈尔滨工业大学 | 一种基于FPGA的NVMe设备存储速度提升方法 |
CN110209358B (zh) * | 2019-06-05 | 2022-07-15 | 哈尔滨工业大学 | 一种基于FPGA的NVMe设备存储速度提升方法 |
CN111698366A (zh) * | 2020-05-08 | 2020-09-22 | 北京连山时代科技有限公司 | 一种基于usb接口的手机硬件扩展方式 |
CN111698366B (zh) * | 2020-05-08 | 2021-03-19 | 北京连山科技股份有限公司 | 一种基于usb接口的手机硬件扩展方法 |
CN112305961A (zh) * | 2020-10-19 | 2021-02-02 | 武汉大学 | 新型信号探测采集设备 |
CN112305961B (zh) * | 2020-10-19 | 2022-04-12 | 武汉大学 | 新型信号探测采集设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107908587A (zh) | 基于usb3.0的实时数据采集传输装置 | |
CN105208034B (zh) | 一种spi总线与can总线协议转换电路及方法 | |
CN101923440B (zh) | 一种高速异步数据采集*** | |
CN110471872B (zh) | 一种基于zynq芯片实现m-lvds总线数据交互***和方法 | |
CN106815157A (zh) | 一种数据采集模块及数据采集*** | |
CN109828941A (zh) | Axi2wb总线桥实现方法、装置、设备及存储介质 | |
CN109412914A (zh) | 流数据与axi接口通信装置 | |
CN103106169B (zh) | 基于aurora协议的高速总线接口的扩展架构 | |
CN203812236U (zh) | 一种基于处理器和现场可编程门阵列的数据交换*** | |
CN102841870B (zh) | 基于高速串行总线的通用dma结构及预读方法 | |
CN102841871A (zh) | 基于高速串行总线的DMA结构的pipeline读写方法 | |
CN104102160B (zh) | 一种can总线信号收发解析工具 | |
CN102752180A (zh) | Can总线网络节点的实现方法 | |
CN107193769A (zh) | 一种基于asi接口的数据收发*** | |
CN102567272B (zh) | 一种提高spi接口电路工作频率的方法 | |
CN114443170A (zh) | Fpga动态并行加卸载*** | |
CN109656856A (zh) | 利用fpga实现非复用总线与复用总线互联装置及方法 | |
CN201075248Y (zh) | 一种usb接口实时数据采集控制器 | |
CN201878182U (zh) | 一种基于fpga的总线型通信*** | |
CN105786741A (zh) | 一种soc高速低功耗总线及转换方法 | |
CN107153412B (zh) | 一种具有发送fifo的can总线控制器电路 | |
CN102546033A (zh) | 采用脉冲调制结合串口方式实现的多机通信装置 | |
CN114297124A (zh) | 一种基于fpga的srio高速总线的通讯*** | |
CN108199867A (zh) | 一种有线传感器网络的组网方法及数据传输方法 | |
Zhou et al. | Optimization design of high-speed data acquisition system based on DMA double cache mechanism |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180413 |