摘 要: 选取Altera公司Cyclone III系列EP3C40F484作为新型高速数据传输系统控制平台,将DDR2作为FIFO,借助USB3.0中的CYUSB3014,完成FPGA与PC之间的高速图像数据传输。通过软硬件测试,验证了该系统图像数据传输的高速和可靠性。
关键词:USB3.0;CYUSB3014;喷绘机;FPGA,DDR2
随着科技的不断进步,喷绘机对图像数据的传输速度有了更高的要求,传统USB1.0或2.0传输显示已不能达到要求。虽然理论上USB3.0[1]协议传输速度达 5 Gb/s,但由于种种原因,数据传输速度[2]离理论数值还有很大差值,如何在实际速度上提高图像数据的传输速度值得研究。
1 系统总体设计
本系统主要研究PC和FPGA间的数据传输,图1是系统的总体设计。从图中看出,图像数据从PC发送时经过USB3.0接口,并在内部通过DMA传送方式把图像数据传送到GPIF II接口,然后FPGA直接从GPIF II接口处读出图像数据,发送给需要的I/O接口或外部器件。若把FPGA作为数据源向PC发送数据,为给批量(BULK)传输提供足够的缓存空间,需要把DDR2作为FIFO,数据从FPGA经过FIFO缓冲区通过FX3系统的USB3.0接口传送到PC。FPGA采用了50 MHz的主频,其中4个按键中一个是复位键,剩下3个按键对应到测试速度指示灯,并且按键的状态FPGA发送到FX3系统,然后上传到上位机。
2 系统硬件设计
设计中采用Altera公司Cyclone III系列EP3C40F484芯片作为FPGA的主控芯片,以MT47H64M16HR芯片DDR2为数据设立缓冲区 ,以FX3系列CYUSB3014芯片作为USB3.0的驱动[2],采用在上位机编程和Eclipse软件进行编译下载到USB3.0控制系统板级上程序,形成API应用,进行数据传输测试。系统设计过程中采用了2片1 Gbit存储量的DDR2作为FIFO,缓冲FPGA到主机图像数据,同时2片DDR2分别采用独立的地址、控制总线和数据总线,支持乒乓倒的数据传输模式。
图2所示为FPGA硬件系统的搭建与配置,搭建的过程主要把FPGA、DDR2以及USB3.0进行搭建构成完整的通信链路。从图可以看出DDR2的时钟主频频率来自FPGA的SYS_CLK_50M引脚,即50 MHz。DDR2采用双边沿触发,即上升沿与下降沿即为100 MHz的读写频率。通过led_io[0]引脚信号来控制数据方向(即FPGA从DDR2读数据还是写数据),并根据读写使能对DDR2的数据位以及地址位进行严格控制。图中配置了USB3.0的usb_pclk、usb_dp[31:0]、usb_slwr、usb_sldr、KEY1~KEY3、LED0~LED3、UART的TX、RX。
3 系统的软件设计
在整个软件架构中分别对GPIF II状态机、DDR2中的FIFO读写、USB的数据流传输等进行设计与研究。为后续测试、观察的需要,在上位机分别进行C++编程和Eclipse 新建并编译工程且通过JTAG下载到FX3系统的板级上,方便上位机与下位机通信观察和控制。
3.1 DDR2中的FIFO读写设计
FIFO建立主要是为了FPGA向上位机发送数据时能提供足够大的缓存,以便可以批量地的处理数据。设计中的FIFO主要通过DDR2实现,所以在设计过程中要分别对DDR2的读写进行控制,图3为FIFO同步写操作时序控制。
图3中的SLWR和SLCS是外部写使能信号,低电平有效。SLWR有效的前提下,每当PCLK信号上升沿将数据总线上的数据写入到DDR2的FIFO中,而且每当时钟的上升沿更新FIFO的指针即FIFO ADDR。FlAGA来源于FX3系统,用来查看被标记地址状态信号。FIFO同步读写时tas、tws等有严格的时限,为解决后顾之忧和延时的精确性,采用在FPGA中寄存器分频并且设置比较器的方法来精确定时。
3.2 USB数据流传输
图4为 USB数据流传输状态图,此处USB[3]遵循Device IN Stream 协议。此协议描述了状态切换机制,主机中Endpoint数据用来促发状态转换。当配置Endpoint后,pipe处于(Disabled)失能状态,主机传送pipe从而切换到Primr Pige状态。在Prime Pige状态下发送NRDY并且设置PP=0而进入idle状态,在空闲状态下等待信号去选择进入Move Data状态还是 Start Stream状态。若设置了Nump>0,则进入到Start Stream状态,接收到Dp时通过Streamn和CStream的关系决定切换到Move Data状态还是Start Stream End状态。图像数据传输完成后通过传输PP和Prime进入Prime Pipe ACK状态,然后返回到空闲状态。
3.3 FX3系统中GPIF II状态机设计
FX3系统中GPIF II接口是USB3.0控制系统必经过的一个接口,为使系统整体结构更加清晰,此处采用状态机切换机制。图5为GPIF II状态机设计转化图,由图5知系统配置完后,从开始状态切换到State1状态,此状态下查询FV是否有效,FV有效后切换到State2状态,此状态下检测输入信号(FV和LV)来决定是否切换到Stata3状态。若State3和state4数据传送是缓冲区的边界时,接下来数据传送从State3和State4分别切换到State7和State8,传送的数据不是缓冲区的边界时,接下来数据传送在等待LV的返回信号后从State3和State4切换到State5和State6。State9、State10、State11、State12是每个框架结束以后CPU得到一个中断,在中断里回调一个函数去使能CPU执行不同的任务。
4 系统的测试
上位机中通过C++编写工程并用Eclipse软件进行工程编辑、编译,通过JTAG下载到USB3.0控制系统板级上,形成API应用,此应用程序可以观测数据的传输速率、波形显示等。结合系统总体架构的软件和硬件平台,最后测试的结果如图6、图7所示。图6显示了上位机的应用程序获取到的板级信息,包括当前器件的信息Cypress USB3.0 Generic Driver F1、设备的PID、设备的VID和设备的类型等。通过上位机的器件信息知上位机读取到的信息和板级上的USB3.0设备吻合,验证了上位机API应用程序的准确性。图7的速度性能测试是在上位机的API应用程序上调用速率测试截图,图为FIFO同步写的速率测试,从图知可以通过“终止”按键停止图像数据传输。图中的运行状态显示Cypress USB3.0 Generic Driver F1传送了1 680个数据包,失败为0个数据包,速度最小值为153 600 kB/s,最大值为327 680 kB/s,平均值225 979 kB/s,达到了预期的效果,在一定程度上解决了喷绘机图像数据传输速度低的瓶颈。
随着数字喷绘机的发展,如何在精准数据前提下提高数据的传输速率值得探究。本设计系统基于USB3.0协议结合当今流行的硬件可编辑逻辑处理器—FPGA+USB3.0控制系统+DDR2实现,从理论和实际上提高了喷绘机数据传输速度,达到了理想的预期效果。但设计系统没能完全面向客户,还有不少缺陷和不足,需要在以后弥补和改正。希望将来此设计系统可以打开高速数据在喷绘机传输中的应用。
参考文献
[1]王宗超,倪凯, 王伟能,等. 新一代高速串行接口USB3.0介绍[J].记录媒体技术,2010(2):34-36.
[2] 朱君丽, 汪文. USB3.0的高速信息传输瓶颈研究[J].新器件新技术,2013(6):47-48.
[3] 索晓杰,翟正军,姜红梅. USB3.0协议分析与框架设计[J].计算机测量与控制,2012(8):2233-2235.