基于FPGA和USB的图像采集
系统设计与实现
张莉1 李敬文 1 陈永禄2
(1.兰州交通大学 电子与信息工程,甘肃 兰州 730070;2. 西北工业大学 自动化,陕西 西安 710072 )
摘 要 介绍了基于FPGA及USB的高速图像采集系统的实现方法。通过介绍Altera公司的现场可编程门阵列(FPGA)以及USB通用接口芯片CY7C68013的性能特点,提出了基于FPGA的数据采集系统硬件平台设计
方案;讨论并给出了
软件设计方法,包括FPGA内部功能模块
程序设计、驱动程序设计以及应用程序设计等。
关键字 FPGA;USB;数据采集
1 引言
随着图像处理技术迅猛发展,对图像采集设备要求也越来越高。USB接口设备支持即插即用,安装方便,易于扩展,且USB 2.0能达到480 Mb/s的理论传输速度,非常适合在类似于图像采集的高速数据采集系统中应用,本文采用USB接口总线实现了高速的数据传输。
在超高速数据采集方面,FPGA(现场可编程门阵列)有着单片机和DSP所无法比拟的优势。新一代的FPGA甚至集成了中央处理器(CPU)或数字信号处理器(DSP)的内核,在一片FPGA上进行软硬件协同设计,为实现片上可编程系统(SOPC)提供了强大的硬件支持。 FPGA时钟频率高,内部延时小,现在器件的最高
工作频率可达300MHz;硬件资源丰富,单片集成的可用门数达1000万门;全部控制逻辑由硬件资源完成,速度快,效率高;组成形式灵活,可以集成外围控制、译码和接口电路[1]。因此,本系统中用FPGA来控制A/D和USB控制芯片的运行。
2 图像采集系统设计方案
本系统主要由主机(能支持USB2.0协议的PC机)、USB微处理器、FPGA逻辑控制器和A/D转换模块组成,如图1所示。主机是系统的终端,主要完成数据接收、数据处理、数据显示以及数据保存等功能;USB微处理器主要完成数据采集、数据
通信及控制等功能;FPGA器件作为本系统的控制核心,用来控制处理A/D、D/A,进行实时信号采集和传输控制;A/D转换电路实现模拟信号的数字化。其数据传输分两部分:控制信号传输和采集数据传输。
图1 图像采集系统硬件框图
系统工作时,通过用户界面的采集开始按钮发出图像采集命令,USB微处理器接收到主机采样控制信号后,通过在FPGA芯片中的逻辑控制电路控制图像采集,向数据转换电路送出相应的控制信号即采样模式控制字,之后数据采集分系统自主控制转换,把模拟视频信号转化成数字视频值号,同时分离出同步信号和状态信号。这些信号进入逻辑控制芯片FPGA中,用FPGA作为采样控制器,将数字视频信号实时存入微控制器的可配置端点缓冲区FIFO中。当FIFO容量达到指定程度后,自动将数据打包传送给USB总线,USB微处理器依次取走批量数据,传输给主机,在采样数据传输给主机时,USB微处理器持续读取采样的结果,保证了连续高速采集数据的实时性。同时在主机端可以进行图像的实时显示、保存等功能。
3 系统硬件设计
3.1 FPGA的设计流程
FPGA的开发采用后的是一种"自顶向下"的方法,首先从系统设计入手,在顶层进行功能方框的划分和结构设计,在方框图一级进行仿真、纠错,并用硬件描述语言对高层次的系统进行描述,在系统一级进行验证。然后用综合优化工具生成具体门电路的网表,其对应的物理实现级可以是印刷电路板或专用集成电路。由于设计的主要仿真和调试过程是在高层次上完成的,这不仅有利于早期发现结构设计上的错误,避免设计工作的浪费,而且也减少了逻辑功能仿真的工作量,提高了设计的一次成功率[2]。
3.2 USB接口设计
USB 接口芯片选用Cypress公司EZ-USB FX2芯片CY7C68013A。EZ-USB芯片可以将固件储存在主机上,而不必装入芯片内。在开机或是连接时,再将固件加载到芯片内。此芯片使用每个指令周期4个脉冲周期,每一个指令需要1到5个指令周期,CPU是以24MHz来驱动。
大部分的EZ-USB芯片支持最大数目的端点:一个控制端点,30个额外的端点地址以及所有的4种传输类型。EZ-USB的固件有两个来源:外部的EEPROM的初始化字节的内容,以及芯片的EA输入状态[3]。
该芯片的内部结构如图2所示。
图2 CY7C68103(EZ-USB-FX2)的逻辑区块图
4 系统软件设计
4.1 固体程序设计
图3 固件流程图
设备固件是设备运行的核心,可采用汇编语言或单片机C语言设计。只有在该程序运行时,外设才能被称为具有给定功能的外部设备。固件程序负责初始化各硬件单元,重新配置设备及A/D采样控制。其主要功能是控制CY7C68013接收并处理USB驱动程序的请求,控制芯片CY7C68013接收应用程序的控制指令,控制A/D模块的数据采集与存储,通过CY7C68013缓存数据并传输至主机等。利用EZ-USB FX2系列提供的固件结构,可以简化固件开发。用户仅需提供其USB描述符,以及实现外围功能的程序代码,即可完成完全兼容的USB设备设置。
固件程序框图如图3所示。
4.2 驱动程序设计
在Windows内执行的USB设备驱动程序,必须符合Microsoft定义的Win32驱动程序模型(WDM)规格。在USB通信中使用的分层式驱动程序模型,每一层的驱动程序分别处理USB通信的某一部分。使用分层式的模型结构会比较有规律,因为相同的工作可以使用单一驱动程序来做即可,不需要包含在每一个驱动程序内。按照下面步骤,可以实现对USB设备的配置[4]: