利用USB 3.0控制器芯片CYUSB3014实现FPGA与上位机之间的高宽带数据传输系统

2017-12-27 17:26:00 来源:AET电子技术应用
标签:
相关器件
现场可编程门阵列(FPGA)的高度灵活性和强大的数据处理能力,使其在越来越多的领域得到应用。USB 3.0也是目前主流的数据传输协议之一,具有速度快、功耗低等优点。将USB 3.0接口应用到FPGA上,能够有效地解决FPGA与上位机之间的数据传输问题,大大提高生产效率。文章利用USB 3.0的控制器芯片CYUSB3014实现了FPGA与上位机之间的高达390 MB/s的数据传输系统。
 
0引言
现场可编程门阵列(FPGA)具有极高的灵活性以及强大的数据处理能力,在科学研究、大型实验仪器和商用医疗设备等诸多领域中早已被成熟使用。但是FPGA本身并没有提供任何与上位机通信的接口,这使得FPGA与上位机之间传输数据变得很不方便。开发者每次都必须根据具体外设重新开发FPGA和上位机的数据传输系统,从而降低了开发效率。
 
通用串行总线(USB)3.0标准早在2008年就已经提出,现在已取代USB2.0成为USB主要使用版本。USB3.0比USB2.0有更高的传输速度和更低的功耗。USB3.0的协议速度高达5.0 Gb/s(625 MB/s),是USB2.0的10倍之多。CYUSB3014是赛普拉斯(CYPRESS)公司设计的一款USB3.0外设控制芯片,它的主要功能是在USB主机与外设之间传输高宽带数据。该芯片提供一个第二代通用可编程接口(GPIF II),开发者可以对GPIF II和FPGA编程,来实现从FPGA到USB控制器,再到上位机的数据传输通道。
 
本文利用USB3.0外设控制器CYUSB3014,实现了基于FPGA与上位机之间的数据传输接口设计[13]。经测试,本设计可以实现390 MB/s的FPGA到上位机的数据传输通道,以及355 MB/s的上位机到FPGA的数据传输通道,几乎达到了该芯片支持的最高速度(400 MB/s)。
 
1系统结构
 
 
图1为整个系统的结构。上位机的软件应用程序(例如MATLAB)通过调用驱动程序中的应用程序编程接口(API),向CYUSB3014控制器发送数据或从它接收数据;USB控制器芯片内部通过直接内存存取(DMA)互联结构建立USB端点到GPIF II的数据传输通道;FPGA内部接口逻辑模块负责其他逻辑模块与GPIF之间的数据传输。
 
图1系统整体结构本设计以FPGA接口逻辑为主设备,GPIF为从设备,接口逻辑负责控制整个系统的工作状态。为了通用性起见,本文设计了上位机对FPGA进行FIFO读写和寄存器读写共4种功能。FIFO读写可以完成高宽带高速数据的双向传输;寄存器读写则可以完成控制和监测的功能。这样的设计能够满足大部分FPGA设计对上位机接口的需求。
 
2控制器芯片工作原理
赛普拉斯公司设计生产的USB3.0外设控制芯片CYUSB3014具有高度集成的灵活特性,它具有一个可进行完全配置的并行通用可编程接口GPIF II,可与任何处理器、ASIC或FPGA连接。芯片集成了USB 3.0和USB 2.0物理层(PHY)以及32位ARM926EJS微处理器,具有强大的数据处理能力,并可用于构建定制应用。
 
图2表示了控制器芯片的数据输入输出。其中DMA描述符(DMA Descriptor)保存了DMA缓冲区的地址和大小,以及指向下一个DMA描述符的指针。套接字(Socket)是外设硬件模块与RAM之间的连接点,每个外设硬件模块(如USB、GPIF、UART和SPI)具有各自固定的套接字数量,简单来说可以把套接字看成外设的接口。DMA缓冲区(DMA Buffer)是RAM的一部分,用来缓存外设间需要传输的数据,这部分RAM的地址正是DMA描述符中保存的地址。
 
  
 
当外设之间进行数据传输时,例如将GPIF的数据传输到USB端点,控制器会自动加载相应的DMA描述符,然后从GPIF的套接字接收数据,保存到RAM中DMA描述符所指定的地址。当前DMA描述符处理完后,系统会自动加载下一个DMA描述符。DMA缓冲区的切换需要消耗几个微秒的时间,在切换DMA缓冲区时,当前的DMA通道不能进行数据传输[4]。当某个DMA缓冲区被写满,或者GPIF主动提交数据包时,系统开始把该缓冲区的数据发送到USB端点。从USB端点到GPIF的数据传输过程与之类似,只不过数据传输的方向刚好相反。
 
3系统设计
3.1控制器芯片固件设计
USB控制器芯片的固件设计包括GPIF II状态机设计和运行于芯片内部ARM微处理器上的可执行程序设计。其中,GPIF II状态机的设计是关键,它描述了USB芯片如何响应主设备FPGA接口逻辑模块发出的请求。
 
图3给出了USB控制芯片与FPGA的接口连接。其中,CLK是由FPGA提供的频率最高为100 MHz的时钟信号。DATA信号是双向数据线,完成GPIF与FPGA之间的双向数据传输。ADDR为地址线,用于选择使用哪个GPIF进程传输数据。GPIF共有4个独立进程,每个进程与相应的DMA通道绑定。FPGA通过改变地址线ADDR,从而选择使用哪个DMA通道进行数据传输。控制信号均由FPGA发出,控制信号包括SLOE、SLCS、SLWR、SLRD、PKTEND,这些信号均为低电平有效。SLCS为片选信号,系统工作时,SLCS必须始终有效(即始终为0)。SLRD为读请求信号,该信号有效时,GPIF会把缓存在RAM中的数据传输给FPGA。SLOE为输出使能信号,它的唯一作用是驱动数据总线DATA翻转。因为FPGA发出读请求后,USB芯片并不能立刻将有效数据传递到GPIF端点,从SLRD有效到DATA有效有两个时钟周期的延迟[5],因此需要额外的数据总线驱动信号SLOE。SLWR是写请求信号,该信号有效时,FPGA会发送数据给GPIF,GPIF随之将这些数据缓存在RAM中。PKTEND为传输结束信号,该信号用来标志此次数据传输结束。
 
 
另外,还有4个DMA标志信号FLAGX。这些信号由USB芯片发出,FPGA接收。这些信号并不是由GPIF状态机控制的,FLAG信号用来标志指定DMA通道对应的缓冲区的状态。
 
3.2FPGA接口设计
FPGA接口既要完成与USB控制器GPIF II对接,同时也要提供对FPGA内部逻辑模块的数据传输接口。FPGA接口逻辑是本系统的核心,它作为主设备,控制着从设备GPIF的工作状态。FPGA接口逻辑模块内部有一些标志工作状态的寄存器,用户可以通过上位机软件来配置这些寄存器,从而指定整个系统的工作模式。因此,在执行某种操作之前,需要通过上位机软件先对FPGA接口逻辑模块进行配置。
 
 
 
FPGA接口逻辑除了具有3.1节中与GPIF II相连接的接口外,还提供了其他接口与FPGA内部其他逻辑模块相连接。图4给出了这些接口信号。CLK是接口的工作时钟(100 MHz),同时这个时钟也是GPIF II的工作时钟。RST是全局复位信号。剩下的信号则用来完成FIFO读写和寄存器读写的功能。
 
在进行FIFO读操作时,使用的接口信号是RD_ACK、RD_VALID和RD_DATA。当RD_VALID有效时,标志着外部FIFO数据有效,RD_ACK作为应答信号告知外部逻辑已经完成对该有效数据的读取。使用时,先通过上位机软件对接口逻辑模块进行配置,配置的信息确定了接口模块将工作在读FIFO模式,同时还确定了此次读FIFO的数据个数。当读取FIFO的数据个数达到上位机所请求的个数时,接口逻辑模块停止读取外部FIFO,同时停止向GPIF发送数据,并且发出PKTEND信号,标志着此次传输结束。
 
在进行FIFO写操作时,使用的接口信号是WR_ACK、WR_READY、WR_DATA。当WR_READY有效时,标志着接口模块可以向外部FIFO写入数据,WR_ACK作为应答信号告知外部逻辑已经完成了数据的写入。与读FIFO类似,使用时先通过上位机软件对接口模块进行配置。配置信息确定了接口模块工作在FIFO写模式,同时确定了将要写入的数据个数。
 
 
图5FPGA接口逻辑状态机图5给出了FPGA接口逻辑模块的状态机向GPIF收发数据时的工作流程。系统最初处在空闲状态(IDLE),然后根据配置信息确定的工作模式,以及DMA通道的FLAG标志信号,进入相应的状态机流程中。
 
此外,接口逻辑模块还实现了寄存器读写的功能,寄存器读写使用的DMA通道与FIFO读写的通道相同,只是传输的数据个数始终为1。
 
 
关注与非网微信 ( ee-focus )
限量版产业观察、行业动态、技术大餐每日推荐
享受快时代的精品慢阅读
 

 

继续阅读
【技术分享】英特尔10纳米Agilex FPGA核心技术全解读

英特尔的10纳米FPGA终于来了。在四月刚刚结束的英特尔“以数据为中心创新日”中,曾经代号为Falcon Mesa的英特尔最新一代10纳米FPGA正式亮相,并正式命名为Agilex™。

【技术分享】针对FPGA的GTP信号,PCB设计时应考虑的信号完整性问题

千兆位级串行I/O技术有着极其出色的优越性能,但这些优越的性能是需要条件来保证的,即优秀的信号完整性。例如,有个供应商报告说,他们第一次试图将高速、千兆位级串行设计用于某种特定应用时,失败率为90%。

FPGA业务仅占营收的3%却成为10nm工艺第一批受益者,英特尔是怎么想的?
FPGA业务仅占营收的3%却成为10nm工艺第一批受益者,英特尔是怎么想的?

和过去几代产品相比,AMD近期推出的产品给了英特尔更为激烈的竞争压力,这将帮助AMD逐步超越英特尔;近几年来,英特尔一直深陷制造工艺升级泥潭,它最近发布的10纳米 FPGA表明它的10纳米工艺还有一些尚未得到解决的问题;AMD很有可能重现二十年前的辉煌,再次夺得CPU性能的铁王座。

【技术分享】使用EPROM或EEPROM配置FPGA大家都会,使用NOR闪存呢?

NOR闪存已作为FPGA(现场可编程门列阵)的配置器件被广泛部署。其为FPGA带来的低延迟和高数据吞吐量特性使得FPGA在工业、通信和汽车ADAS(高级驾驶辅助系统)等应用中得到广泛采用。汽车场景中摄像头系统的快速启动时间要求就是很好的一个例子——车辆启动后后视图像在仪表板显示屏上的显示速度是最为突出的设计挑战。

【技术分享】详解FPGA中的DDS技术

我知道,我对与电子有关的所有事情都很着迷,但不论从哪个角度看,今天的现场可编程门阵列(FPGA),都显得“鹤立鸡群”,真是非常棒的器件。如果在这个智能时代,在这个领域,想拥有一技之长的你还没有关注FPGA,那么世界将抛弃你,时代将抛弃你。

更多资讯
高云半导体研讨会圆满召开,累计出货已达1500万片

2019年4月12日,中国武汉,高云半导体FPGA技术研讨会系列活动于武汉凯悦酒店成功召开,现场气氛热烈,座无虚席。

高云半导体研讨会圆满召开,累计出货已达1500万

2019年4月12日,中国武汉,高云半导体FPGA技术研讨会系列活动于武汉凯悦酒店成功召开,现场气氛热烈,座无虚席。

【技术分享】FPGA越来越精密,对DC-DC电源的精度也越来越高

FPGA厂商不断采用更先进的工艺来降低器件功耗,提高性能,同时FPGA对供电电源的精度要求也越加苛刻,电压必须维持在非常严格的容限内,如果供电电压范围超出了规范的要求,就有会影响到FPGA的可靠性,甚至导致FPGA失效。

【技术分享】详解迭代开发FPGA的思想,FPGA增量编译使用教程

FPGA设计的特点是需要不断不断的迭代各个设计流程来达到最终的设计,同时迭代的成本大,它比单片机开发更注重迭代的开发思想。所以,设计的前期一定要从系统的角度考虑好系统的方案,然后在系统这个方案中不断的迭代,不然后期发现由于系统方案的问题就得不偿失了,好的系统架构就是成功一大半了。其中,在FPGA设计中可以通过增量编译来加快我们的开发。

【技术分享】CRT/OLED/LCD等视频显示系统控制原理分析

作为消费者,我们对于各种形式的视频系统都已经非常熟悉了。但是从嵌入式开发人员的角度来看,视频就好像是一张纷繁复杂的网络,里面充满了各种不同的分辨率、格式、标准与显示等。

Moore8直播课堂
开发板测评
技术讨论
电路方案

1970-01-01 08:00:00