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

文档序号:8905198阅读:1444来源:国知局
基于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接口与外部设
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1