APP下载

USB3.0超高速多串口传输系统的设计*

2013-09-07朱耀麟马慧铭

电子技术应用 2013年9期
关键词:固件时序串口

朱耀麟,马慧铭

(1.西安工程大学 电子信息学院,陕西 西安 710048;2.西安理工大学 自动化与信息工程学院,陕西 西安 710048)

多串口数据通信技术主要研究数据的多串口采集、存储和处理。由于串口通信技术的广泛应用,使得多串口采集卡一直是研究的热点,从早期的基于PCI总线的多串口数据采集卡到后来的基于USB的多串口数据采集卡,以及现在的基于USB3.0的多串口数据采集卡。

PCI采集卡由于使用不方便,逐渐被淘汰,目前USB传输系统被广泛应用。USB2.0理论传输速度为480 Mb/s,而USB3.0的传输速率可高达5 Gb/s,且在USB2.0的基础上又增加了超高速传输模式[1]。本文设计的系统中有80个485传输通道,每个通道的速率为1~10 Mb/s,最高传输速率可达800 Mb/s,USB2.0已不能满足此要求。因此本文采用了Cypress的CYUSB3014和Altera的CycloneIII系列FPGA,CYUSB3014保证与PC的传输性能,FPGA负责多串口数据的采集以及对CYUSB3014的控制[2]。

1 EZ-USB3.0 FX3与FPGA接口设计[3]

1.1 系统框架

整个多串口数据采集与传输系统[4-6]框图如图1所示。图中虚线部分为该系统的硬件框图,整个系统由3部分组成,USB3.0芯片选择了业界性能表现最好的Cypress的CYUSB3014芯片(简称FX3芯片),理论上通信速率可达4.8 Gb/s,该芯片除了拥有GPIF2.0接口可方便与外设进行通信外,还有标准的SPI、UART、I2C、I2S与外设进行通信;FPGA采用了Cyclone 3C40系列的芯片,逻辑资源、片上RAM以及I/O脚数目都能充分满足本系统设计;80路485传输芯片采用了ADI的ADM3485E,是一款3.3 V低功耗数据收发器,提供±15 kV的ESD保护,适用于多点总线线路的半双工通信。共模输入范围-7 V~+12 V,数据速率可达12 Mb/s,能满足本系统的设计要求。

图1 多串口数据传输系统框图

1.2 FX3与FPGA的通信设计

FX3与FPGA通信主要分为两类:

(1)FX3对FPGA的配置信息:PC通过FX3将串口的相关信息发送给FPGA,如各串口的奇偶校验、波特率、空闲位、每路的统计信息等配置,此类信息数据量比较小;

(2)FX3与FPGA的大容量数据通信:FPGA将485采集的数据通过FX3传输到PC。

为了有效地利用FX3的超高速数据传输特性,针对这两种不同的数据类型,本设计将两种数据通道分开设计,其中配置信息较少,而采集的485数据容量很大,为了不使配置信息数据打断485数据通道,将配置信息和数据信息通过两个独立的通道进行传输,其中配置信息采用了通过FX3的UART和FPGA进行通信,通信格式如下:

①EZ-USB向FPGA发送命令格式

?

②FPGA返回命令格式

?

FX3每发一条配置参数给FPGA,FPGA都会返回相应配置回应,并通知FX3可以继续发送下一条配置信息,在配置信息都发送完成后,FX3最后会发送一条配置完成命令,此时FPGA会启动外围接口电路进入正常的数据采集过程[7]。

2 USB3.0芯片固件设计

Cypress公司为USB3.0芯片提供了一个开发包,其中包括了典型的固件代码。对USB3.0芯片固件的设计,可利用EZ-USB FX3固件函数库简化加速USB3.0固件程序的开发。固件程序主要完成的工作有:初始化、处理标准的USB设备请求及USB挂起时的电源管理等[8-9]。任务循环的流程图如图2所示。

图2 任务循环流程图

3 FPGA逻辑设计

FPGA采用了Altera公司的Cyclone III系列的3C40-C8,其逻辑门数有200万门左右,最高工作频率可以达到300 MHz。整个工程使用了Verilog语言编写,整个工程的综合、布局布线都是在Quartus11.0版本下进行,仿真软件使用Modelsim6.5se版本。本设计中FPGA逻辑设计主要包括485数据采集模块及与FX3的读写时序控制逻辑,整个工程使用逻辑单元,片上RAM使用率接近系统的95%,整个系统工作频率为100 MHz。

3.1 逻辑模块设计

系统的逻辑模块分为时钟模块、FX3发送/接收缓存模块、发送/接收控制模块、FX3读写控制模块、485接收模块、485发送模块以及配置串口参数模块。

整个系统的数据流分为两个过程:485数据采集过程和485发送控制命令过程。

(1)485数据采集过程:485数据通过485接收模块传送给FX3接收缓存模块,在FX3数据接口没有被占用时,通过FX3读写控制模块发送给USB3.0芯片并传到PC端。

(2)485数据发送过程:USB3.0芯片通过FX3读写控制模块将数据发送到FX3发送缓存模块中,在收发控制模块检测到相关串口空闲后通过485发送模块将相关数据发送出去。

485收发相对于USB3.0速度来说,属于慢速设备。为了提高USB3.0总线利用率,此处只设计了两种缓存,即接收缓存和发送缓存,大小都设置为512 KB,80路的485接收和发送buffer最终都汇聚到这两种缓存上,有效地减少了短包和空包发生率。

3.2 FX3接口时序

FPGA与FX3之间采用了Slave fifo模式,FPGA通过状态标志的flaga、flagb、flagc、flagd来判断FX3的接收/发送缓存的数据状态[10],当flaga/flagc为高时,表示FX3缓存中接收到了数据;当flagb/flagd为高时,表示FX3的发送缓存为非满状态,FPGA可对其进行写数据操作。

图3所示为FX3的A通道读时序,FPGA先检测i_usb_flaga是否为高电平,如果为高电平则表示A通道buffer中有数据可读,此时将通道地址信号设置为0,片选信号o_usb_slcs_n/o_usb_sloe_n拉低,o_usb_slrd_n信号拉低后,在4个时钟之后,数据将出现在io_usb_dq上,如果进行写操作则将o_usb_slwr_n拉低。对应的通道号地址选对,同时将片选信号拉低即可,写通道时序如图4所示。

图3 FX3的A通道数据读取时序

图4 FX3的B通道写数据时序

4 通信速度实验结果

利用Cypress的Streamer软件,可以测试该USB3.0传输系统的传输速率。将Packets per Xfer设置为256,在win764位下(电脑配置为华硕N53XI241SN,Fresco FL1000系列的控制器)的传输速率测试结果为2.5 Gb/s,满足了整个系统的性能,如图5所示。

图5 读速率测试结果图

该系统适合于超高速数据的传输,具有电路简单、体积小等优点。FPGA技术与USB3.0的结合有极大的灵活性和可扩展性,基于FPGA和USB3.0的突出优点,该设计方案必将应用在更广阔的领域。

[1]马俊涛,李振宇.SlaveFIFO模式下CY7C68013和FPGA的数据通信[J].中国传媒大学学报(自然科学版),2009,16(2)∶38-44.

[2]倪明辉,周军,杨庚.USB在FPGA控制的高速数据采集系统中的应用[J].计算机测量与控制,2006,14(2)∶268-271.

[3]白海亮.USB2.0微控制器CY7C68013与外FIFO通信发送过程的GPIF接口设计[J].黑龙江科技信息,2009(3)∶79.

[4]薛园园,赵建领.USB应用开发宝典[M].北京:人民邮电出版社,2011.

[5]黄大勇,李鉴,张建正.基于USB2.0接口的高速数据采集系统设计[J].现代电子技术,2007(24)∶69-72.

[6]吕超,张玉霞,王立欣.USB接口高速数据传输的实现[J].计算机测量与控制,2009,17(5)∶1003-1005.

[7]袁江南.基于USB2.0与FPGA技术的高速数据采集系统的设计[J].电子技术应用,2007,33(7)∶116-118.

[8]张世伟,印世平,何运桃.USB2.0接口传输的FPGA控制与实现[J].国外电子测量技术,2009,28(11)∶74-76.

[9]索晓杰,翟正军,姜红梅.USB3.0协议分析与框架设计[J].计算机测量与控制,2012,20(8)∶2233-2235.

[10]王宗超,倪凯,王伟能,等.新一代高速串行接口USB3.0介绍[J].记录媒体技术,2010(2)∶32-34.

猜你喜欢

固件时序串口
清明
浅谈AB PLC串口跟RFID传感器的通讯应用
基于不同建设时序的地铁互联互通方案分析
基于FPGA 的时序信号光纤传输系统
基于UEFI固件的攻击验证技术研究*
基于固件的远程身份认证
基于模体演化的时序链路预测方法
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索
串口技术的实物调试和虚拟仿真联合教学模式