董淑伟 郑宾
【摘要】针对大数据量传输问题,设计了基于FPGA和Labview的USB高速传输系统,使FPGA、USB技术和LabVIEW软件设计优势得到了有效的发挥。通过FPGA的控制,高速、高带宽USB串行接口将数据传输到PC终端,在PC终端程序开发采取的LabVIEW软件为USB传输系统提供了便捷性,具有一定的工程实用价值。
【关键词】现场可编程门阵列;通用串行总线;高速传输;虚拟仪器
1.引言
数据采集系统中需将大量的数据传输给PC机,传统的RS232串口传输速度较慢,不适合大数据量传输。USB是一种高效快速、价格低廉、体积小、功耗低、时钟频率高、并支持热拔插的串行通信接口,高速传输速率可达到480Mb/s,能够实现数据的高速传输。
2.系统整体设计
系统主要由FPGA主控电路,USB接口电路和上位机部分组成。其中FPGA为Cyclone II系列,主要芯片为EP2C8Q208C8N;USB接口芯片为CY7C68013A,它通过将USB 2.0收发器、串行接口引擎(SIE)、增强型8051微控制器,以及可编程外设接口集成到一个芯片中。该芯片支持12Mbps全速和480Mbps高速两种传输模式,带有16KB的片内RAM和4KB的FIFO存储器。配置有3种不同的接口模式:Ports(端口模式)、GPIF Master(可编程接口模式)和Slave FIFO(主从模式)。本文选用Slave FIFO模式;上位机主要由Labview来实现。
FPGA与CY7C68013A的信号连接如图1所示。
图1 FPGA与CY7C68013A的连接信号图
3.硬件设计
USB传输系统主要包括FPGA控制模块和USB接口模块。USB接口模块主要包括USB芯片、E2PROM、USB外围接口电路等,其连接如图2所示。
4.软件设计
USB传输系统涉及USB固件程序、驱动程序、上位机接收程序以及slave FIFO模式下的FPGA逻辑设计。本文着重介绍固件程序设计和上位机接收程序部分。
图3 固件程序开发流程图
4.1 固件程序设计
固件程序是USB开发的重要环节,它主要功能包括初始化、辅助硬件完成相应的任务、处理中断请求、收发数据以及外围电路控制。CY7C6S013A芯片内置增强型8051单片机,因此可以用KEIL软件进行固件程序的编写。
Cypress公司为了方便用户编程,提供了完整的固件框架和函数库。用户只需添加或修改相应的代码即可完成固件程序的开发,从而提高了开发效率。固件程序开发流程图如图3所示。
按功能区分整个固件程序可分为三个部分:(1)固件文件(fw.c),USB芯片的固件程序的核心,一般无需修改,主要用来完成USB外设请求以及协议通信;(2)功能文件(bulkloop.c),为用户自由开发预留的文件,用户为实现功能编写的代码就写在这里,同时预留了功能函数并完成中断响应;(3)描述符文件(dscr.a51),定义了枚举设备时所需用的各类描述符信息,根据用户需要进行编写,包括设备描述符、接口描述符、端点描述符、字符串信息。
主程序的源代码如下:
void main(void)
{//初始化
Sleep=FALSE;//禁止休眠模式
Rwuen=FALSE;//禁止远程喚醒
Selfpwr=FALSE;//禁止自供电
GotSUD=FALSE;//清SETUP令牌包来时的标志位
//初始化用户设备
TD_Init();//定向USB描述符
USB_Descriptor();
USB_Interrupt();//中断
USB_ReConnect();
//任务县城线程
while(TRUE)//主循环
{//列举用户设备
TD_Poll();
if(GotSUD)
{SetupCommand();
GotSUD = FALSE;/清SETUP标记
}
if (Sleep)//检查并处理
{if(TD_Suspend())
{Sleep = FALSE;//清Sleep标记
do
{EZUSB_Susp();//空闲状态处理
}
while(!Rwuen && EZUSB_EXTWAKEUP());
EZUSB_Resume();
TD_Resume();
}
}
}
}
4.2 上位机接收程序设计
上位机是USB的主机,它需要实现的功能就是接收来自存储在Flash中的测量数据,并保存在PC机中。本文中的上位机程序是使用LabVIEW开发的。
上位机与USB通信靠三步完成:(1)找到并打开设备;(2)与设备通信;(3)关闭设备。其中先将Flash中的数据读出存在硬盘内,然后在从硬盘读取数据完成数据的波形显示,并非边写边读,这样减少了内存空间的使用。LaVIEW程序及前面板如图5所示。
5.总结
本文结合FPGA、USB技术和Labview软件设计优势,开发了基于FPGA和LabVIEW的USB高速传输系统。通过FPGA的控制,高速、高带宽USB串行接口将数据传输到PC终端,在PC终端程序开发采取的LabVIEW软件为USB传输系统提供了便捷性。
参考文献
[1]马向玲,杨辉,王海玲,吴亚男.基于FPGA的多路数据光纤传输系统设计与实现[J].计算机测量与控制,2011,02:363-366.
[2]程海狮,黄玉清.基于FPGA+USB2.0多通道数据采集系统设计[J].西南科技大学学报,2011,01:56-60.
[3]张思杰,赵泰,汪振兴,石岭.基于FPGA的USB接口数据采集系统设计[J].电子技术应用,2011,05:98-100.
[4]张继军,刘小平,陶治洲,杨芳,顾适夷,范少池.基于FPGA的远程USB高速传输系统设计[J].舰船电子对抗,2012,05:97-100.
[5]甘建伟,秦付军,王鹏.基于FPGA的高速多通道数据采集系统设计[J].电子技术应用,2013,04:55-57+61.
[6]袁宝红,付奎,张德祥.基于FPGA和LabVIEW的USB数据采集与传输系统[J]. 仪表技术与传感器,2013,09:24-27.
[7]唐磊.基于FPGA的USB、Flash控制器设计[D].北京:北京交通大学,2010.
作者简介:
董淑伟(1989—),女,山东莱阳人,中北大学硕士研究生在读,研究方向:动态测试与智能仪器。
郑宾,中北大学教授。