CN103838694B - 一种fpga高速读取usb接口数据的方法 - Google Patents
一种fpga高速读取usb接口数据的方法 Download PDFInfo
- Publication number
- CN103838694B CN103838694B CN201410077587.6A CN201410077587A CN103838694B CN 103838694 B CN103838694 B CN 103838694B CN 201410077587 A CN201410077587 A CN 201410077587A CN 103838694 B CN103838694 B CN 103838694B
- Authority
- CN
- China
- Prior art keywords
- data
- fpga
- arm processor
- usb
- sent
- 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.)
- Expired - Fee Related
Links
Landscapes
- Information Transfer Systems (AREA)
Abstract
本发明涉及一种FPGA高速读取USB接口数据的方法该具体过程为:步骤1,ARM初始化;步骤2,监控FPGA初始化工作;步骤3,被传数据参数提取;ARM处理器读入USB外设被传数据信息,计算传输次数;步骤4,启动数据传输;步骤5,判断FPGA准备接收状态;步骤6,组帧转发数据;步骤7,判断数据是否发送完毕;ARM处理器中的控制模块计算所有数据是否发送完毕,如果没有完毕,转入步骤5继续发送数据,如果发送完毕,则停止发送数据;步骤8,结束数据转发。本发明采用ARM处理器间接实现FPGA读取US B设备的数据,大大降低FPGA控制和管理USB设备的工作量,从而节省FPGA的资源开销,间接降低FPGA的成本开销。
Description
技术领域
本发明涉及电子设备的USB接口领域,尤其涉及一种基于FPGA实现USB接口高速获取大容量数据的方法。
背景技术
USB具有传输速率快、即插即用、灵活性高、成本低和简便易用等特点,USB接口越来越受消费者、研究者的青睐,USB标准接口正逐渐取代其他接口,成为计算机外部设备应用最广泛的标准接口。而FPGA由于其具有高集成度、高速、可编程等优点,推动了数字系统设计的单片化、自动化发展,在超高速信号处理和实时测控方面有非常广泛的应用。因此,将FPGA与USB接口结合,使FPGA能够通过USB接口实现高速读取外部设备的数据已成为嵌入式电子系统设计的重要手段。
具有USB接口的设备可分为从设备和主设备。目前FPGA作为从设备,通过USB接口实现与上位机(通常指计算机)的通信较为成熟,应用较广的方案为上位机通过CY68013芯片实现与FPGA之间的通信,由于上位机一般体积较大,它约束了以FPGA为主的便携式嵌入式系统的推广。目前FPGA作为主设备实现高速读取U盘、SD卡、数码相机、移动硬盘等USB设备的数据存在困难,其原因有二,一是FPGA作为主设备,在其内部实现USB控制和传输协议较为困难,它需要实现USB底层传输协议,和USB控制协议;USB底层协议如果自己开发,工作量大,如果采用IP核,需要付专利费;同时USB控制协议一般需要通过内建一个CPU软核来实现,这导致设计复杂,并且也占用较多的FPGA片上资源。二是FPGA外部采用专用USB芯片的解决方案。
典型的方案有两种:第一种是集成了USB控制器和USB收发器,但需自行实现文件系统;另一种则是实现了包括文件系统在内的所有USB读取U盘所需的软硬件,只需要FPGA发送命令进行控制即可实现读取U盘。
在这两类方案中,CY7C67300集成度高,但其只支持USB 1.1,传输速率较慢,同时需要FPGA对其进行配置和控制和实现文件系统,FPGA端的开发量较大。CH376支持USB 2.0接口,是一个真正的单芯片解决方案。但CH376只支持FAT16/32文件系统,不支持NTFS文件系统,无法读取大于4GB的大文件;同时CH376需要FPGA进行配置和控制,因此需要实现CH376的控制逻辑并占用一定的FPGA资源,而实际CH376芯片数据传输平均速度较慢,难以满足高速传输要求。
鉴于上述缺陷,本发明创作者经过长时间的研究和实践终于获得了本创作。
发明内容
本发明的目的在于提供一种FPGA高速读取USB接口数据的方法,用以克服上述技术缺陷。
为实现上述目的,本发明提供一种FPGA高速读取USB接口数据的方法,该方法具体包括如下步骤:
步骤1,ARM处理器初始化;
ARM处理器完成自身操作系统的加载,与数据传输相关部分的初始化工作,在USB外设插入后,完成USB设备驱动的加载;
步骤2,监控FPGA初始化工作;
如果FPGA完成自身系统加载工作,FPGA会通过响应线向ARM处理器发出响应信号,表明已准备好接受数据,此时ARM处理器会通过信号指示灯指示用户进入数据转发阶段;
步骤3,被传数据参数提取;
ARM处理器读入USB外设被传数据信息;
步骤4,启动数据传输;
ARM处理器将USB外设数据转发给FPGA;
本步骤包括两个过程,分别为从USB外设读入ARM处理器的内存缓存器以及将内存缓存器的数据组帧转发给FPGA两个过程,
采用“乒乓方式”读取USB外设数据,即,ARM处理器开辟两个缓存空间,以便在进行当前缓存空间组帧发送的同时,ARM将USB外设数据读入另一缓存空间;
所述ARM处理器开辟第一缓存器和第二缓存器,所述ARM处理器监控数据转发模块是否发完第一缓存器的数据,如果未发完,等待数据发完;如果发送完毕,则向第一缓存器读入新的数据,再判断第二缓存器的数据是否发完,依此循环操作;
ARM处理器采用并行传输模式向FPGA发送数据,根据所读取的文件大小信息和用于ARM处理器和FPGA模块之间数据传输的数据位宽计算传输次数;数据位宽可选用8位、16位和32位;
所述ARM处理器和FPGA接口信号线包括片选信号、写信号、响应信号线、地址总线和数据总线,FPGA在完成初始化或接收完一帧数据后,通过响应信号线向ARM处理器发出允许发数据信号,ARM处理器通过数据总线向FPGA发数据,同时向FPGA发出片选信号、写信号和地址总线辅助信息供FPGA正确接收数据用;
步骤5,判断FPGA准备接收状态;
步骤6,组帧转发数据;
ARM处理器中的转发模块将待发的数据采用帧格式进行打包处理,添加帧头信息,包括是否最后一包数据以及有效数据长度,FPGA可以判定数据是否完全发送完毕以及提取每帧有效数据;
步骤7,判断数据是否发送完毕;
ARM处理器中的控制模块计算所有数据是否发送完毕,如果没有完毕,转入步骤5继续发送数据,如果发送完毕,则停止发送数据;其中ARM处理器采用连续发送方式发送完一帧数据;所述FPGA在发送下一帧数据时判断FPGA是否准备好接收下一帧数据,如果未收到FPGA通过响应线发来的准备好接收信号,则继续等待,直到FPGA准备好接收数据为止;
步骤8,结束数据转发;
在转发完数据后,ARM处理器关闭对USB外设的操作,通过指示灯提示数据发送完毕。
进一步地,在上述步骤6中,ARM处理器中的转发模块中传输的帧头信息默认长度为2字节,可根据需要进行调整。
与现有技术相比较本发明的有益效果在于:1)本发明由于采用ARM处理器间接实现FPGA读取USB设备的数据,大大降低FPGA控制和管理USB设备的工作量,从而节省FPGA的资源开销,间接降低FPGA的成本开销。
2)本发明由于采用ARM处理器乒乓方式传输数据并以帧格式方式通过并行总线发送给FPGA,可以实现FPGA高速读取数据的功能,便于开展超大规模图像尺寸的FPGA图像处理;
3)本发明由于采用ARM处理器,ARM处理器便于移植,系统便于升级处理以兼容更多USB外设。
4)本发明由于ARM处理器和FPGA模块之间数据总线采用8位、16位和32位可调位宽设计,适合不同类型的数据传输处理。
5)本发明中的FPGA只需简单处理,根据帧格式提取数据,相比之前的方法更为简洁,可以保证高速、实时接收数据。
附图说明
图1为本发明FPGA读取USB设备数据装置的示意图;
图2为本发明FPGA与ARM处理器之间连线示意图;
图3为本发明ARM处理器数据转发组帧结构示意图;
图4为本发明ARM处理器控制转发USB设备数据流程图。
具体实施方式
以下结合附图,对本发明上述的和另外的技术特征和优点作更详细的说明。
请参阅图1所示,其为本发明FPGA读取USB设备数据装置的示意图,该装置包括数据读取模块、控制模块、数据转发模块、接收模块和DDR模块,其中,数据读取模块、控制模块和数据转发模块存储在ARM处理器中,DDR模块与FPGA连接。
所述数据读取模块与USB外设连接,用于从USB外设中存储的数据,在用户启动数据读取功能后,数据读取模块根据预定的文件路径,从USB外设打开指定的文件,获取文件大小信息,并按预设置的数据块大小依次读取,直至读完数据并关闭文件。
所述控制模块,控制ARM处理器读取并转发USB外设中的数据,在进入数据转发工作后,控制模块采用“乒乓操作”模式负责将USB外设数据依次读入内存中开辟的第一缓存器和第二缓存器,即监控数据转发模块是否发完第一缓存器的数据,如果未发完,等待数据发完;如果发送完毕,则向第一缓存器读入新的数据,再判断第二缓存器的数据是否发完,依此循环操作;由于ARM处理器从USB外设读入的数据速率比转发的数据速率快,因此,它不会造成数据的丢失。
所述数据转发模块,用于将内存中的第一缓存器和第二缓存器的数据转发给FPGA,数据转发模块根据所读取的文件大小信息,判断需要传输的次数,每次按帧数据格式组帧,然后发送给FPGA接收端。
所述数据接收模块,用于实现与ARM处理器之间的数据交互;FPGA将接收到的数据暂存于内部开辟的RAM,如果只需处理少量数据,FPGA数据处理单元可以直接处理该部分数据,如果需要处理大量的数据,如大尺寸图像数据,则可将暂存于RAM的数据存入DDR高速缓存芯片以便实时处理。
请参阅图2所示,其为本发明FPGA与ARM处理器之间连线示意图,本发明的ARM处理器和FPGA接口信号线包括片选信号、写信号、响应信号线、地址总线和数据总线,FPGA在完成初始化或接收完一帧数据后,通过响应信号线向ARM处理器发出允许发数据信号,ARM处理器通过数据总线向FPGA发数据,同时向FPGA发出片选信号、写信号和地址总线等辅助信息供FPGA正确接收数据用。
请参阅图3所示,其为本发明ARM处理器数据转发组帧结构置示意图,本发明的帧格式,包括帧类型、扩展位、帧有效数据长度和数据信息,其中帧类型占2位位宽,用于区分是否最后一帧数据。扩展位用于今后功能扩展,帧有效数据长度表示将转发的数据长度,数据信息为被传的有效数据。
本发明中,所述的FPGA选用Xilinx公司的XC5VFX130T-1738芯片;所述的ARM处理器选用三星的S5V210芯片,它支持USb2.0协议,满足高速传输要求;所述的FPGA存储模块选用美光公司的MT47H128M16HG芯片,单片存储容量2Gbit,支持高速缓存,支持并联以扩大存储容量。
请参阅图4所示,其为本发明ARM处理器控制转发USB设备数据流程图,本发明的ARM处理器控制发送USB外设数据流程如下:
步骤1,ARM处理器初始化;
ARM处理器完成自身操作系统的加载,与数据传输相关部分的初始化工作,在USB外设插入后,完成USB设备驱动的加载。
步骤2,监控FPGA初始化工作;
如果FPGA完成自身系统加载工作,FPGA会通过响应线向ARM处理器发出响应信号,表明已准备好接受数据,此时ARM处理器会通过信号指示灯指示用户进入数据转发阶段。
步骤3,被传数据参数提取;
ARM处理器读入USB外设被传数据信息,计算传输次数;
步骤4,启动数据传输;
ARM处理器将USB外设数据转发给FPGA包括两过程,即从USB外设读入ARM处理器内存缓存器以及将内存缓存器的数据组帧转发给FPGA两过程,为了快速发送数据,需要采用“乒乓方式”读取USB外设数据,即,ARM处理器开辟两缓存空间,以便在进行当前缓存空间组帧发送的同时,ARM将USB外设数据读入另一缓存空间,由于ARM处理器从USB外设数据读入的速度比组帧发送给FPGA的速度快,通过这样处理不会造成数据的丢失,并且可以提高整个系统读取USB外设的速度。
数据组帧并行传输工作,ARM处理器采用并行传输模式向FPGA发送数据,数据位宽可以选用8位、16位和32位等,为了保证FPGA快速读取数据,采用帧格式进行数据打包,ARM采用连续发送方式发送完一帧数据。
步骤5,判断FPGA准备接收状态;
由于FPGA接收一帧数据后需要根据需求转发数据,为了保证FPGA准确接收数据,需要在发送下一帧数据时判断FPGA是否准备好接收下一帧数据,如果未收到FPGA通过响应线发来的准备好接收信号,则继续等待,直到FPGA准备好接收数据为止。
步骤6,组帧转发数据;
ARM转发模块将待发的数据进行打包处理,添加帧头信息,包括是否最后一包数据以及有效数据长度,为节省帧开销,帧头信息默认长度为2字节,可根据需要进行调整。通过以上处理,FPGA可以判定数据是否完全发送完毕以及提取每帧有效数据。
步骤7,判断数据是否发送完毕;
ARM控制模块计算所有数据是否发送完毕,如果没有完毕,转入步骤5继续发送数据,如果发送完毕,则停止发送数据。
步骤8,结束数据转发;
在转发完数据后,ARM处理器关闭对USB外设的操作,通过指示灯提示数据发送完毕。
本发明中的FPGA只需简单处理,根据帧格式提取数据,相比之前的方法更为简洁,可以保证高速、实时接收数据。
以上所述仅为本发明的较佳实施例,对发明而言仅仅是说明性的,而非限制性的。本专业技术人员理解,在发明权利要求所限定的精神和范围内可对其进行许多改变,修改,甚至等效,但都将落入本发明的保护范围内。
Claims (2)
1.一种FPGA高速读取USB接口数据的方法,其特征在于,该方法具体包括如下步骤:
步骤1,ARM处理器初始化;
ARM处理器完成自身操作系统的加载,与数据传输相关部分的初始化工作,在USB外设插入后,完成USB设备驱动的加载;
步骤2,监控FPGA初始化工作;
如果FPGA完成自身系统加载工作,FPGA会通过响应线向ARM处理器发出响应信号,表明已准备好接受数据,此时ARM处理器会通过信号指示灯指示用户进入数据转发阶段;
步骤3,被传数据参数提取;
ARM处理器读入USB外设被传数据信息;
步骤4,启动数据传输;
ARM处理器将USB外设数据转发给FPGA;
本步骤包括两个过程,分别为从USB外设读入ARM处理器的内存缓存器以及将内存缓存器的数据组帧转发给FPGA两个过程,
采用“乒乓方式”读取USB外设数据,即,ARM处理器开辟两个缓存空间,以便在进行当前缓存空间组帧发送的同时,ARM将USB外设数据读入另一缓存空间;
所述ARM处理器开辟第一缓存器和第二缓存器,所述ARM处理器监控数据转发模块是否发完第一缓存器的数据,如果未发完,等待数据发完;如果发送完毕,则向第一缓存器读入新的数据,再判断第二缓存器的数据是否发完,依此循环操作;
ARM处理器采用并行传输模式向FPGA发送数据,根据所读取的文件大小信息和用于ARM处理器和FPGA模块之间数据传输的数据位宽计算传输次数;数据位宽可选用8位、16位和32位;
所述ARM处理器和FPGA接口信号线包括片选信号、写信号、响应信号线、地址总线和数据总线,FPGA在完成初始化或接收完一帧数据后,通过响应信号线向ARM处理器发出允许发数据信号,ARM处理器通过数据总线向FPGA发数据,同时向FPGA发出片选信号、写信号和地址总线辅助信息供FPGA正确接收数据用;
步骤5,判断FPGA准备接收状态;
步骤6,组帧转发数据;
ARM处理器中的转发模块将待发的数据采用帧格式进行打包处理,添加帧头信息,包括是否最后一包数据以及有效数据长度,FPGA可以判定数据是否完全发送完毕以及提取每帧有效数据;
步骤7,判断数据是否发送完毕;
ARM处理器中的控制模块计算所有数据是否发送完毕,如果没有完毕,转入步骤5继续发送数据,如果发送完毕,则停止发送数据;其中ARM处理器采用连续发送方式发送完一帧数据;所述FPGA在发送下一帧数据时判断FPGA是否准备好接收下一帧数据,如果未收到FPGA通过响应线发来的准备好接收信号,则继续等待,直到FPGA准备好接收数据为止;
步骤8,结束数据转发;
在转发完数据后,ARM处理器关闭对USB外设的操作,通过指示灯提示数据发送完毕。
2.根据权利要求1所述的FPGA高速读取USB接口数据的方法,其特征在于,在上述步骤6中,ARM处理器中的转发模块中传输的帧头信息默认长度为2字节,可根据需要进行调整。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410077587.6A CN103838694B (zh) | 2014-02-28 | 2014-02-28 | 一种fpga高速读取usb接口数据的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410077587.6A CN103838694B (zh) | 2014-02-28 | 2014-02-28 | 一种fpga高速读取usb接口数据的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103838694A CN103838694A (zh) | 2014-06-04 |
CN103838694B true CN103838694B (zh) | 2017-02-08 |
Family
ID=50802212
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410077587.6A Expired - Fee Related CN103838694B (zh) | 2014-02-28 | 2014-02-28 | 一种fpga高速读取usb接口数据的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103838694B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104461392A (zh) * | 2014-12-08 | 2015-03-25 | 中北大学 | 基于ch378的高速串行数据u盘记录设备 |
CN105302612B (zh) * | 2015-11-18 | 2018-05-08 | 西南技术物理研究所 | 快速升级电子系统机箱内单片机软件程序的方法 |
CN107454166A (zh) * | 2017-08-04 | 2017-12-08 | 北京航天发射技术研究所 | 一种面向无文件系统数据源的文件传输方法 |
CN117056259A (zh) * | 2023-08-08 | 2023-11-14 | 广东高云半导体科技股份有限公司 | 一种数据处理装置及方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102033841A (zh) * | 2010-12-02 | 2011-04-27 | 西北工业大学 | Usb2.0总线与高速智能统一总线的直接接口方法 |
CN201975076U (zh) * | 2009-08-07 | 2011-09-14 | 天津威磊电子技术有限公司 | Usb通用编程器 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8667192B2 (en) * | 2011-02-28 | 2014-03-04 | Xilinx, Inc. | Integrated circuit with programmable circuitry and an embedded processor system |
-
2014
- 2014-02-28 CN CN201410077587.6A patent/CN103838694B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN201975076U (zh) * | 2009-08-07 | 2011-09-14 | 天津威磊电子技术有限公司 | Usb通用编程器 |
CN102033841A (zh) * | 2010-12-02 | 2011-04-27 | 西北工业大学 | Usb2.0总线与高速智能统一总线的直接接口方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103838694A (zh) | 2014-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11176068B2 (en) | Methods and apparatus for synchronizing uplink and downlink transactions on an inter-device communication link | |
EP2763045B1 (en) | Method and apparatus for allocating memory space with write-combine attribute | |
KR101932920B1 (ko) | 비휘발성 메모리 카드를 제어하는 호스트, 이를 포함하는 시스템 및 이의 동작 방법 | |
CN111090221B (zh) | 用于直写式光刻系统中的PCIe DMA数据传输系统及其传输方法 | |
CN106155960B (zh) | 基于gpio握手和edma的uart串口通信方法 | |
CN103838694B (zh) | 一种fpga高速读取usb接口数据的方法 | |
CN106951388A (zh) | 一种基于PCIe的DMA数据传输方法及系统 | |
US9881680B2 (en) | Multi-host power controller (MHPC) of a flash-memory-based storage device | |
CN104714918B (zh) | 主机环境下高速fc总线数据接收及缓冲方法 | |
US8626963B2 (en) | Packet based data transfer system and method for host-slave interface | |
CN103294836A (zh) | 基于pcie的雷达数据采集显控系统及其方法 | |
CN103268238A (zh) | 基于ReWorks操作系统的USB摄像头驱动实现的方法 | |
CN102841871A (zh) | 基于高速串行总线的DMA结构的pipeline读写方法 | |
CN107329929B (zh) | 一种基于SoC FPGA的数据传输系统及数据传输方法 | |
CN107908587A (zh) | 基于usb3.0的实时数据采集传输装置 | |
CN110941578A (zh) | 一种具有dma功能的lio的设计方法及装置 | |
CN104571942B (zh) | 数据存储系统和非信号分析方法 | |
CN109408426B (zh) | 一种灵活通用的串行通信方法及系统 | |
CN104317747A (zh) | 一种网格接收机的数据缓存与发送装置及方法 | |
CN105988955B (zh) | Sdio设备及其应用的电子装置和数据传输方法 | |
CN115904259B (zh) | 非易失性存储器标准NVMe指令的处理方法及相关装置 | |
CN110399314B (zh) | 一种cpu、一种电子设备以及一种cpu缓存控制方法 | |
CN204256731U (zh) | 一种fpga高速读取usb设备数据装置 | |
US20080034106A1 (en) | Reducing power consumption for bulk data transfers | |
TW201435597A (zh) | 應用於通用序列匯流排系統的資料傳輸電路及相關的資料傳輸方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170208 Termination date: 20180228 |
|
CF01 | Termination of patent right due to non-payment of annual fee |