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

文档序号:8905198阅读:来源:国知局
备进行通信。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支持四种基本的数据传输模式:控制传输、等时传输、中
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1