基于USB3.0技术和FPGA器件实现多串口数据采集与传输系统的设计

多串口数据通信技术主要研究数据的多串口采集、存储和处理。由于串口通信技术的广泛应用,使得多串口采集卡一直是研究的热点,从早期的基于pci总线的多串口数据采集卡到后来的基于usb的多串口数据采集卡,以及现在的基于usb3.0的多串口数据采集卡。
pci采集卡由于使用不方便,逐渐被淘汰,目前usb传输系统被广泛应用。usb2.0理论传输速度为480mb/s,而usb3.0的传输速率可高达5gb/s,且在usb2.0的基础上又增加了超高速传输模式。本文设计的系统中有80个485传输通道,每个通道的速率为1~10mb/s,最高传输速率可达800mb/s,usb2.0已不能满足此要求。因此本文采用了cypress的cyusb3014和altera的cycloneiii系列fpga,cyusb3014保证与pc的传输性能,fpga负责多串口数据的采集以及对cyusb3014的控制。
1 ez-usb3.0 fx3与fpga接口设计
1.1系统框架
整个多串口数据采集与传输系统框图如图1所示。图中虚线部分为该系统的硬件框图,整个系统由3部分组成,usb3.0芯片选择了业界性能表现最好的cypress的cyusb3014芯片(简称fx3芯片),理论上通信速率可达4.8gb/s,该芯片除了拥有gpif2.0接口可方便与外设进行通信外,还有标准的spi、uart、i2c、i2s与外设进行通信;fpga采用了cyclone3c40系列的芯片,逻辑资源、片上ram以及i/o脚数目都能充分满足本系统设计;80路485传输芯片采用了adi的adm3485e,是一款3.3v低功耗数据收发器,提供±15kv的esd保护,适用于多点总线线路的半双工通信。共模输入范围-7v~+12v,数据速率可达12mb/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会启动外围接口电路进入正常的数据采集过程。
2 usb3.0芯片固件设计
cypress公司为usb3.0芯片提供了一个开发包,其中包括了典型的固件代码。对usb3.0芯片固件的设计,可利用ez-usbfx3固件函数库简化加速usb3.0固件程序的开发。固件程序主要完成的工作有:初始化、处理标准的usb设备请求及usb挂起时的电源管理等。任务循环的流程图如图2所示。
图2任务循环流程图
3 fpga逻辑设计
fpga采用了altera公司的cycloneiii系列的3c40-c8,其逻辑门数有200万门左右,最高工作频率可以达到300mhz.整个工程使用了verilog语言编写,整个工程的综合、布局布线都是在quartus11.0版本下进行,仿真软件使用modelsim6.5se版本。本设计中fpga逻辑设计主要包括485数据采集模块及与fx3的读写时序控制逻辑,整个工程使用逻辑单元,片上ram使用率接近系统的95%,整个系统工作频率为100mhz.
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总线利用率,此处只设计了两种缓存,即接收缓存和发送缓存,大小都设置为512kb,80路的485接收和发送buffer最终都汇聚到这两种缓存上,有效地减少了短包和空包发生率。
3.2 fx3接口时序
fpga与fx3之间采用了slavefifo模式,fpga通过状态标志的flaga、flagb、flagc、flagd来判断fx3的接收/发送缓存的数据状态,当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.5gb/s,满足了整个系统的性能,如图5所示。
图5读速率测试结果图
该系统适合于超高速数据的传输,具有电路简单、体积小等优点。fpga技术与usb3.0的结合有极大的灵活性和可扩展性,基于fpga和usb3.0的突出优点,该设计方案必将应用在更广阔的领域。

场景“聚焦”时期 平安城市建设是安防未来发展的重要方向
剖析鞋服行业仓储物流智能化的变革
vivo V20 2021版本现身印度亚马逊平台
电机好坏的判断方法
单片机的组成和指令系统与汇编语言程序等基础知识说明
基于USB3.0技术和FPGA器件实现多串口数据采集与传输系统的设计
基于STM32单片机的婴儿床控制系统设计
CITE 2015: 智能新时代 数字新生活
荣耀Magic4新品发布会 荣耀Magic4“超大杯”超有料
FPGA交换矩阵的使用实现
特斯拉Model 3预定量达40万 为何还说它面临的风险是巨大的?
用ROHM Arduino传感器套件打造DIY万圣节僵尸面具
荣耀9怎么样?荣耀9评测:华为Mate9现已降至冰点价,华为荣耀9黑马来袭
索罗斯进入比特币市场会产生哪些影响
传美国几大移动运营商正在测试iPhone 5
苹果iPhone 12系列配置曝光最高搭载6GB运存
宝马公司的下一代电气化、自动驾驶等方面的战略介绍
评估示波器:要深挖细找次要技术指标
创建升级数据架构是企业加强竞争优势和提高创新的关键
魅族Pro6s评测 为实用主义者打造的旗舰手机