基于fpga的usb3.0接口模块的制作方法

xiaoxiao2020-10-23  13

基于fpga的usb 3.0接口模块的制作方法
【技术领域】
[0001]本发明涉及一种USB 3.0接口模块。
【背景技术】
[0002]计算机是常用的数据存储与显示设备,但是其数据处理能力较弱,不利于大数据处理。随着信息技术的飞跃发展,爆炸性增长的数据给数据处理与传输提出了新的挑战。而FPGA以其处理速度快、处理数据量大等特点,成为数据处理的理想平台。为了实现计算机与FPGA之间的数据传输,需要设计实现一种基于FPGA的高速接口。
[0003]计算机常用接口有USB 2.0、USB 3.0、PCI以及以太网等。由于USB 2.0传输速率较低,最高仅为480Mbps,PCI总线不支持热插拔且仅限于台式计算机,而以太网传输时延非常大。USB 3.0以其5Gbps的超高速、较低传输时延以及便携等特点,成为了一种广泛应用的数据传输接口。
[0004]基于以上原因考虑,我们希望设计一种基于FPGA的USB 3.0高速接口,便于计算机等设备与FPGA之间的数据传输。

【发明内容】

[0005]本发明是为了实现兼容USB2.0高速接口、实现计算机与FPGA之间的高速数据传输,从而提出一种基于FPGA的USB 3.0接口模块。
[0006]基于FPGA的USB 3.0接口模块,该接口模块采用FPGA实现逻辑控制,并通过芯片FX3内部同步从设备FIFO的数据读写操作实现高速数据传输;
[0007]该接口模块控制逻辑包括USB 3.0发送模块、USB 3.0接收模块、用于跨时钟域操作的发送先入先出队列FIFO模块和用于跨时钟域操作的接收先入先出队列FIFO模块;
[0008]所述USB 3.0发送模块包括如下状态:
[0009]USB_out_idle状态:该状态下,初始化所有寄存器与信号;
[0010]USB_out_flagc_rcvd状态:当检测到标志位flagc = I时,发送线程生产者USB插座为满,即:检测到USB发送的数据,则启动对数据的发送;
[0011]USB_out_wait_flagd状态:延迟一个时钟周期,等待检测发送线程生产者同步从设备FIFO满;
[0012]USB_out_read状态:当检测到标志位flagd = I时,发送线程同步从设备FIFO为满,激活读控制信号,FPGA读取同步从设备FIFO数据;
[0013]USB_out_read_rd_oe_delay状态:当标志位flagd = O时,芯片FX3对处于激活状态的读信号进行三个时钟周期的采样,读信号和输出使能信号始终有效;
[0014]USB_out_read_oe_delay状态:芯片FX3完成对处于激活状态的读信号采样后,输出使能信号需要保持四个时钟周期后跳转到USB_out_idle状态;
[0015]所述USB 3.0接收模块包括如下状态:
[0016]USB_in_idle状态:该状态下,初始化所有寄存器与信号;
[0017]USB_in_wait_flagb状态:当标志位flaga = I时,接收线程消耗者USB插座为空,即:USB未发送数据,则启动对数据的接收;
[0018]USB_in_write状态:当检测到标志位flagb = I时,接收线程生产者同步从设备FIFO为空,FPGA将数据写入同步从设备FIFO ;
[0019]USB_in_write_wr_delay状态:当检测到标志位flagb = O时,芯片FX3对处于激活状态的写信号进行两个时钟周期的采样,之后跳转到USB_in_idle状态。
[0020]芯片FX3 的型号 CYUSB3014。
[0021]FPGA 通过 GPIF II 接口与 CYUSB3014 芯片相连,CYUSB3014 芯片的 USB 接口与Micro B接口连接,采用I2C接口引导启动,若I2C配置失败,则使用USB接口方式配置启动。
[0022]CYUSB3014芯片中还嵌入有JTAG接口,用于作为调试接口。
[0023]在进行FX3固件设计时,首先将GPIF II接口配置为同步从设备FIFO接口 ;采用GPIF II Designer 工具实现 GPIF II 接口配置。
[0024]FX3固件程序、FX3固件框架、FX3API库和RTOS模块;
[0025]所述RTOS模块:用于创建多个线程;
[0026]FX3API库:用于提供与FX3硬件实现控制与数据传输的接口 ;
[0027]FX3固件框架:用于开发用户定制的固件程序,包括启动与初始化代码以及USB、GPIF II等模块驱动程序;
[0028]FX3固件程序包括初始化子程序与应用子程序。
[0029]初始化子程序的具体执行方法为:
[0030]FX3固件程序首先调用函数CyU3PFirmwareEntry O实现MMU与堆栈初始化,并消除无效缓存;
[0031]CyU3PToolChainInit O函数用于初始化工具链,实现堆栈和C语言库的初始化;
[0032]设备初始化:依次执行以下四步操作:
[0033]步骤A、设备初始化:通过调用CyU3roeviceInit O函数设置CPU时钟、初始化VIC以及配置PLL ;
[0034]步骤B、设备缓存配置:FX3设备有8KB数据缓存和8KB命令缓存,只需使能命令缓存;
[0035]步骤C、I/O配置:配置FX3的接P,包括:GPIF II接口、SPI接口、I2C接P、I2S接口、GP1 接口和 UART 接口,调用 CyU3PDeviceConfigure10Matrix O 对 I/O 矩阵数据结构进行初始化;
[0036]步骤D、调用RTOS:通过CyU3PKerneIEntry O调用ThreadX OS操作系统,完成ThreadX OS初始化并设置OS时钟;
[0037]创建应用线程:初始化ThreadX OS后,通过调用CyFxApplicat1nDef ine O创建应用程序线程。
[0038]初始化子程序的具体执行方法为:
[0039]Debug 模块初始化:调用 CyFxSlFifoApplnDebuglnit O 实现 Debug 模块初始化,首先初始化并配置UART状态,之后再调用CyU3roebugInit()初始化Debug应用;
[0040]定制应用初始化:应用初始化包括两部分,GPIF II初始化与USB初始化,在GPIFII初始化中将从设备FIFO描述符加载到GPIF II寄存器中并启动GPIF II状态机,在USB初始化中设置USB描述符、创建USB连接与事件并设置USB描述符;
[0041]处理USB请求:译码USB请求信号,处理建立USB连接请求与清除USB连接请求;
[0042]USB事件处理:USB包括配置请求、复位与断开连接3种事件,当检测到配置请求时启动USB传输应用,否则,停止USB应用;
[0043]启动USB传输应用:检测到配置请求,固件启动USB传输应用,根据USB传输速率确定数据包大小与DMA缓冲区大小,创建DMA传输通道;
[0044]停止USB应用:检测到复位/断开连接请求,释放内存、关闭DMA通道;
[0045]USB to Processor 通道/Processor to USB 通道:调用 DMA 函数传输数据,U2P/P2U通道实现自动DMA通道。
[0046]在FX3固件中设置两个DMA通道:发送通道为U2P通道,接收通道为P2U通道,该两个DMA通道设置为传输速率更高的自动DMA通道。
[0047]该USB 3.0接口模块的数据传输模式为批量传输,在进行FX3固件配置时,增大U2P通道缓冲区大小,降低P2U通道缓冲区大小。
[0048]本发明提出了一种基于FPGA的USB 3.0超高速接口,能够兼容USB2.0高速接口,实现计算机与FPGA之间的高速数据传输,且传输速率最高可达2.5Gbps ;同时对其他USB3.0控制器和部分其他系列的FPGA具有一定的通用性。
【附图说明】
[0049]图1是CYUSB3014的逻辑框图;
[0050]图2是基于FX3同步从设备的USB 3.0接口模块原理示意图;
[0051]图3是USB 3.0接口逻辑框图;
[0052]图4是USB 3.0发送模块状态转换图;
[0053]图5是USB3.0接收模块状态转换图;
[0054]图6是GPIF II配置流程示意图;
[0055]图7是FX3固件结构示意图;
[0056]图8是初始化子程序流程示意图;
[0057]图9是用户应用子程序流程示意图;
[0058]图10是FX3固件程序DMA通道设置示意图;
【具体实施方式】
[0059]【具体实施方式】一、结合图1至图10说明本【具体实施方式】,基于FPGA的USB 3.0接口丰旲块,
[0060]本发明以CYPRESS公司的USB 3.0外设控制器FX3系列芯片CYUSB3014为基础,以Altera公司的FPGA作为主控芯片控制FX3芯片读写时序,以实现USB 3.0高速接口为目标,设计出最高可达2.5Gbps传输速率的数据传输接口。
[0061]1、硬件电路
[0062]CYPRESS公司FX3系列CYUSB3014芯片以其高度集成的灵活特性成为USB 3.0外设控制器的主流选择。FX3内部集成32位ARM926EJ-S微处理器,工作频率为200MHz,具有强大的数据处理能力。该芯片集成USB 3.0和USB 2.0物理层,并提供3?1、12(:、以1?1'和123接口与外部设 备进行通信。FX3具有一个高性能、高灵活度、可进行完全配置的并行通用可编程接口 GPIF II (General Programmable InterFace II),可与 FPGA 等任意处理器无缝连接,传输速率可达2.5Gbps。片载512KB RAM适合代码与数据存储,内部集成inter-portDMA架构,可实现超过3.2Gbps的数据传输能力。CYUSB3014逻辑框图如图1所示。
[0063]本发明采用基于CYUSB3014的USB3.0接口设计,同步从设备FIFO接口适合外部处理器(FPGA/ASIC/DSP)需要对EZ-USB FX3内部FIFO缓冲区进行数据读写操作的应用。同步从设备FIFO接口是GPIF II的主要实施方式,可以满足高吞吐量的传输要求,本设计使用从设备FIFO进行接口设计,其硬件系统框图如图2所示。FPGA通过GPIF II接口与CYUSB3014芯片相连,USB接口与Micro B接口连接。采用I2C接口引导启动,如果I2C配置失败则使用USB接口方式配置启动。同时,预留JTAG接口以便调试。
[0064]2、接口逻辑
[0065]USB 3.0接口控制主要由FPGA逻辑实现,通过对FX3内部同步从设备FIFO的数据读写操作实现高速数据传输。接口逻辑包括两个模块:USB 3.0发送模块、USB 3.0接收模块,以及用于跨时钟域操作的发送FIFO(First Input First Output,先入先出队列)与接收FIFO。同时,该接口逻辑兼容USB 2.0接口。
[0066]2.1、USB 3.0 发送模块
[0067]USB 3.0发送模块主要实现计算机数据的发送功能,其数据量大,传输速率要求高。根据FX同步从设备FIFO接口读时序,设计USB发送模块状态机如图4所示:
[0068](I)、USB_out_idle状态:该状态初始化所有寄存器与信号;
[0069](2)、USB_out_flagc_rcvd状态:flagc = I,发送线程生产者USB插座为满,即检测到USB发送的数据,启动发送状态机;
[0070](3)、USB_out_wait_flagd状态:延迟一个时钟周期,等待检测发送线程生产者同步从设备FIFO满;
[0071](4)、USB_out_read状态:flagd = I,发送线程同步从设备FIFO为满,激活读控制信号,FPGA读取同步从设备FIFO数据;
[0072](5)、USB_out_read_rd_oe_delay 状态:flagd = 0,FX3 需要对处于激活状态的读信号进行三个时钟周期的采样,读信号和输出使能信号始终有效;
[0073](6)、USB_out_read_oe_delay状态:FX3完成对处于激活状态的读信号采样后,输出使能信号需要保持四个时钟周期方可跳转到USB_out_idle状态。
[0074]2.2、USB 3.0 接收模块
[0075]USB接收模块主要实现FPGA数据的回传,其数据量大,传输速率要求高。根据FX同步从设备FIFO接口写时序,设计USB接收模块状态机如图5所示:
[0076](I)、USB_in_idle状态:该状态初始化所有寄存器与信号;
[0077](2)、USB_in_wait_flagb 状态:flaga = I,接收线程消耗者 USB 插座为空,即 USB未发送数据,启动接收状态机;
[0078](3)、USB_in_write状态:flagb = 1,接收线程生产者同步从设备FIFO为空,FPGA将数据写入同步从设备FIFO;
[0079](4)、USB_in_write_wr_delay 状态:flagb = 0,FX3 需要对处于激活状态的写信号进行两个时钟周期的采样,之后跳转到USB_in_idle状态。
[0080]3、固件程序
[0081]为了实现USB 3.0接口的高速数据传输,需要设计固件程序对FX3进行配置。
[0082]3.1、GPIF II 接口配置
[0083]在进行FX3固件设计时,首先需要将GPIF II接口配置为同步从设备FIFO接口。CYPRESS公司提供了 GPIF II Designer工具实现GPIF II接口配置,其配置流程如图6所示。GPIF II配置数据作为FX3固件程序的底层数据以供固件程序调用。
[0084]3.2、FX3 固件结构
[0085]CYPRESS 提供了 FX3SDK(Software Development Kit)和固件结构,以便在 FX3 内部的ARM9处理器中开发USB固件应用。FX3固件结构如图7所示:
[0086](I)、RTOS (Real Time Operating System):FX3 固件内嵌 ThreadX Real Time0S(多线程实时操作系统),具有规模小、实时性强、可靠性高、易于使用等特点,通过RTOS可以创建多个线程以简化固件流程;
[0087](2)、FX3API 库:FX3API (Applicat1n Programming Interface)库提供了一系列与FX3硬件实现控制与数据传输的接口,包括FX3、GPIF 11,USB等模块以及ThreadX OS接P ;
[0088](3)、FX3固件框架:FX3SDK提供了一系列基于API库生成的固件框架,包括启动与初始化代码以及USB、GPIF II等模块驱动程序,利用该固件框架开发用户定制的固件程序具有很强的灵活性,可以缩短研发周期;
[0089](4)、FX3固件程序:基于FX3固件框架与FX3API开发的满足需要的定制固件程序。FX3固件程序包括两部分:初始化子程序与应用子程序。
[0090]3.3、初始化子程序
[0091]设计用户定制的应用固件程序之前,首先需要对设备、RTOS等进行初始化,固件初始化子程序流程图如图8所示。
[0092](I)、FX3 固件程序首先调用函数 CyU3PFirmwareEntry O 实现 MMU (MemoryManagement Unit)与堆栈初始化,并消除无效缓存,该函数定义在FX3API库并且对用户不可见;
[0093](2)、CyU3PToolChainInit O函数的功能是初始化工具链,实现堆栈和C语言库的初始化;
[0094](3)、设备初始化:设备初始化需要执行以下四步操作:
[0095]I)、设备初始化:通过调用CyU3PDeViCeInit O函数设置CPU时钟、初始化VIC(Vectored Interrupt Controller)以及配置 PLL(Phase Locking Loop);
[0096]2)、设备缓存配置:FX3设备有8KB数据缓存和8KB命令缓存,只需使能命令缓存;
[0097]3)、1/0 配置:配置 FX3 各种接口(GPIF I1、SP1、I2C、I2S、GP1 和 UART),调用CyU3PDeviceConfigure10Matrix O对1/0矩阵数据结构进行初始化;
[0098]4)、调用 RTOS:通过CyU3PKernelEntry O 调用 ThreadX OS操作系统,完成ThreadXOS初始化并设置OS时钟。
[0099](4)、创建应用线程 Jl^WtThreadX OS 后,通过调用 CyFxApplicat1nDefineO创建应用程序线程。
[0100]3.4、用户应用子程序
[0101]完成固件初始化后,调用SlFifoAppThread_EntryO函数进入用户应用子程序。用户定制的应用固件子程序完成DMA通道、DMA缓冲区、USB传输方式以及从设备FIFO等配置,实现USB数据传输。用户应用子程序流程如图9所示。
[0102](I)、Debug 模块初始化:调用 CyFxSlFifoApplnDebuglnit O 实现 Debug 模块初始化,Debug模块需使用UART输出Debug信息,因此首先需初始化并配置UART状态,之后再调用 CyUSF1DebugInit O 初始化 Debug 应用;
[0103](2)、定制应用初始化:应用初始化包括两部分,GPIF II初始化与USB初始化,在GPIF II初始化中将从设备FIFO描述符加载到GPIF II寄存器中并启动GPIF II状态机,在USB初始化中设置USB描述符、创建USB连接与事件并设置USB描述符;
[0104](3)、处理USB请求:译码USB请求信号,处理建立USB连接请求与清除USB连接请求等;
[0105](4)、USB事件处理:USB包括配置请求、复位与断开连接3种事件,当检测到配置请求时启动USB传输应用,否则,停止USB应用;
[0106](5)、启动USB传输应用:检测到配置请求,固件启动USB传输应用,根据USB传输速率(FS/HS/SS)确定数据包大小与DMA缓冲区大小,创建DMA传输通道;
[0107](6)、停止USB应用:检测到复位/断开连接请求,释放内存、关闭DMA通道;
[0108](7) ,USB to Processor (U2P)通道/Processor to USB (P2U)通道:调用 DMA 函数传输数据,由于本发明中不要求FX3CPU对传输的数据流进行修改处理,U2P/P2U通道将实现自动DMA通道。
[0109]为了实现USB 3.0的双向数据传输,需在固件中设置2个DMA通道:发送通道为U2P通道,接收通道为P2U通道。由于本设计中的USB 3.0接口仅用于数据传输,而在FPGA进行数据处理,因此将DMA通道设置为传输速率更高的自动DMA通道。USB支持四种基本的数据传输模式:控制传输、等时传输、中 断传输与批量传输。其中,批量传输数据流,主要是利用USB总线的空闲带宽进行数据传输,可以在不确定的时间内传输大量数据,适合于数据量大、数据传输正确性要求高的场合,本设计在FX3固件中将USB 3.0数据传输模式设置为批量传输。在进行FX3固件配置时,增大U2P通道缓冲区大小,适当降低P2U通道缓冲区大小。本设计中,每个DMA缓冲区大小设置为16KB,U2P通道DMA缓冲区计数为8,P2U通道DMA缓冲区计数为4。FX3固件程序DMA通道设置如图10所示。
[0110]由于USB 2.0与USB 3.0的固件程序主要差异是DMA缓冲区大小,为了兼容USB2.0接口,在设计固件程序时对连接接口进行判断,判断为USB 3.0或USB 2.0接口后设置相应的DMA缓冲区。
[0111]具体实施例:
[0112]1、发送通道:
[0113]I)、CYPRESS公司提供的主机软件发送数据;
[0114]2)、FX3芯片固件程序接收主机软件发送的数据并写入从设备FIFO中;
[0115]3)、USB 3.0固件程序输出发送状态到USB 3.0接口逻辑;
[0116]4)、USB 3.0接口逻辑发送模块进入状态转换,并检测FX3固件状态;
[0117]5)、USB 3.0接口逻辑发送模块从FX3芯片从设备FIFO中读取数据;
[0118]2、接收通道:
[0119]I)、CYPRESS公司提供的主机软件发送接收请求;
[0120]2)、USB 3.0固件程序输出接收状态到USB 3.0接口逻辑;
[0121]3)、USB 3.0接口逻辑接收模块进入状态转换,接收数据;
[0122]4)、USB 3.0接口逻辑接收模块将接收数据写入FX3芯片从设备FIFO中;
[0123]5)、USB 3.0驱动读取FX芯片从设备FIFO中的数据并传递给主机软件。
[0124]本发明达到的效果:
[0125]1、实现超高速USB 3.0接口,传输速率可达到2.5Gbps ;
[0126]2、兼容USB 2.0接口,可实现计算机与FPGA之间USB 2.0接口通讯;
[0127]3、由控制芯片FPGA逻辑实现USB 3.0控制器FX3芯片的读写时序控制;
[0128]4、将接口逻辑发送FIFO与接收FIFO对接,可实现环路传输。
【主权项】
1.基于FPGA的USB3.0接口模块,其特征是:该接口模块采用FPGA实现逻辑控制,并通过芯片FX3内部同步从设备FIFO的数据读写操作实现高速数据传输; 该接口模块控制逻辑包括USB 3.0发送模块、USB 3.0接收模块、用于跨时钟域操作的发送先入先出队列FIFO模块和用于跨时钟域操作的接收先入先出队列FIFO模块; 所述USB 3.0发送模块包括如下状态: USB_out_idle状态:该状态下,初始化所有寄存器与信号; USB_out_flagc_rcvd状态:当检测到标志位flagc = I时,发送线程生产者USB插座为满,即:检测到USB发送的数据,则启动对数据的发送; USB_out_wait_flagd状态:延迟一个时钟周期,等待检测发送线程生产者同步从设备FIFO 满; USB_out_read状态:当检测到标志位flagd = I时,发送线程同步从设备FIFO为满,激活读控制信号,FPGA读取同步从设备FIFO数据; USB_out_read_rd_oe_delay状态:当标志位flagd = O时,芯片FX3对处于激活状态的读信号进行三个时钟周期的采样,读信号和输出使能信号始终有效; USB_out_read_oe_delay状态:芯片FX3完成对处于激活状态的读信号采样后,输出使能信号需要保持四个时钟周期后跳转到USB_out_idle状态; 所述USB 3.0接收模块包括如下状态: USB_in_idle状态:该状态下,初始化所有寄存器与信号; USB_in_wait_fIagb状态:当标志位flaga = I时,接收线程消耗者USB插座为空,即:USB未发送数据,则启动对数据的接收; USB_in_write状态:当检测到标志位flagb = I时,接收线程生产者同步从设备FIFO为空,FPGA将数据写入同步从设备FIFO ; USB_in_write_wr_delay状态:当检测到标志位flagb = O时,芯片FX3对处于激活状态的写信号进行两个时钟周期的采样,之后跳转到USB_in_idle状态。2.根据权利要求1所述的基于FPGA的USB3.0接口模块,其特征在于芯片FX3的型号CYUSB3014。3.根据权利要求2所述的基于FPGA的USB3.0接口模块,其特征在于FPGA通过GPIFII接口与CYUSB3014芯片相连,CYUSB3014芯片的USB接口与Micro B接口连接,采用I2C接口引导启动,若I2C配置失败,则使用USB接口方式配置启动。4.根据权利要求3所述的基于FPGA的USB3.0接口模块,其特征在于CYUSB3014芯片中还嵌入有JTAG接口,用于作为调试接口。5.根据权利要求4所述的基于FPGA的USB3.0接口模块,其特征在于在进行FX3固件设计时,首先将GPIF II接口配置为同步从设备FIFO接口 ;采用GPIF II Designer工具实现GPIF II接口配置。6.根据权利要求5所述的基于FPGA的USB3.0接口模块,其特征在于FX3固件程序、FX3固件框架、FX3API库和RTOS模块; 所述RTOS模块:用于创建多个线程; FX3API库:用于提供与FX3硬件实现控制与数据传输的接口 ; FX3固件框架:用于开发用户定制的固件程序,包括启动与初始化代码以及USB、GPIFII等模块驱动程序; FX3固件程序包括初始化子程序与应用子程序。7.根据权利要求6所述的基于FPGA的USB3.0接口模块,其特征在于初始化子程序的具体执行方法为: FX3固件程序首先调用函数CyU3PFirmWareEntry()实现MMU与堆栈初始化,并消除无效缓存; CyU3PToolChainInit()函数用于初始化工具链,实现堆栈和C语言库的初始化; 设备初始化:依次执行以下四步操作: 步骤A、设备初始化:通过调用CyU3PDeViceInit O函数设置CPU时钟、初始化VIC以及配置PLL ; 步骤B、设备缓存配置:FX3设备有8KB数据缓存和8KB命令缓存,只需使能命令缓存;步骤C、I/O配置:配置FX3的接口,包括:GPIF II接口、SPI接口、I2C接口、I2S接口、GP1 接口和 UART 接口,调用 CyU3PDeviceConf igurelOMatrix O 对 I/O 矩阵数据结构进行初始化; 步骤D、调用RTOS:通过CyU3PKerneIEntry O调用ThreadX OS操作系统,完成ThreadXOS初始化并设置OS时钟; 创建应用线程Jl^WtThreadX OS后,通过调用CyFxApplicat1nDefineO创建应用程序线程。8.根据权利要求7所述的基于FPGA的USB3.0接口模块,其特征在于初始化子程序的具体执行方法为: Debug模块初始化:调用CyFxSlFifoApplnDebuglnitO实现Debug模块初始化,首先初始化并配置UART状态,之后再调用CyU3roebugInit()初始化Debug应用; 定制应用初始化:应用初始化包括两部分,GPIF II初始化与USB初始化,在GPIF II初始化中将从设备FIFO描述符加载到GPIF II寄存器中并启动GPIF II状态机,在USB初始化中设置USB描述符、创建USB连接与事件并设置USB描述符; 处理USB请求:译码USB请求信号,处理建立USB连接请求与清除USB连接请求; USB事件处理:USB包括配置请求、复位与断开连接3种事件,当检测到配置请求时启动USB传输应用,否则,停止USB应用; 启动USB传输应用:检测到配置请求,固件启动USB传输应用,根据USB传输速率确定数据包大小与DMA缓冲区大小,创建DMA传输通道; 停止USB应用:检测到复位/断开连接请求,释放内存、关闭DMA通道; USB to Processor 通道/Processor to USB 通道:调用 DMA 函数传输数据,U2P/P2U通道实现自动DMA通道。9.根据权利要求8所述的基于FPGA的USB3.0接口模块,其特征在于在FX3固件中设置两个DMA通道:发送通道为U2P通道,接收通道为P2U通道,该两个DMA通道设置为传输速率更高的自动DMA通道。10.根据权利要求9所述的基于FPGA的USB3.0接口模块,其特征在于该USB 3.0接口模块的数据传输模式为批量传输,在进行FX3固件配置时,增大U2P通道缓冲区大小,降低P2U通道缓冲区大小。
【专利摘要】基于FPGA的USB 3.0接口模块,涉及一种USB 3.0接口模块。本发明是为了实现兼容USB2.0高速接口、实现计算机与FPGA之间的高速数据传输。该接口模块采用FPGA实现逻辑控制,并通过芯片FX3内部同步从设备FIFO的数据读写操作实现高速数据传输;该接口模块控制逻辑包括USB 3.0发送模块、USB 3.0接收模块、用于跨时钟域操作的发送先入先出队列FIFO模块和用于跨时钟域操作的接收先入先出队列FIFO模块;本发明提出了一种基于FPGA的USB 3.0超高速接口,并且兼容USB2.0高速接口,实现计算机与FPGA之间的高速数据传输。
【IPC分类】G06F13/40
【公开号】CN104881388
【申请号】CN201510324325
【发明人】彭宇, 马云彤, 蒙春城, 李攀, 潘大为, 彭喜元
【申请人】哈尔滨工业大学
【公开日】2015年9月2日
【申请日】2015年6月12日
转载请注明原文地址:https://www.famiwei.com/read-8138687.html

最新回复(0)