wifi连网神器手机:计算机与信息技术

来源:百度文库 编辑:中财网 时间:2024/05/12 17:52:27
基于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]:
(1)USB设备的驱动程序模型必须是WDM驱动程序,这说明驱动程序中必须有AddDevice这个成员函数,而且function.h文件中必须有下列定义:
#define DRIVER_FUNCTION_ADD_DEVICE
#define DRIVER_FUNCTION_PNP
#define DRIVER_FUNCTION_POWER
(2)USB设备是即插即用设备,因此在驱动程序中要声明以下的类的成员函数。
KPnPDevice,KUSBLowerDevice,KUSBInterface
在驱动程序结束处还要声明一个数据类型:KUSBPipe
(3)在设备对象类中,必须重载OnStartDevice和OnStopDevice函数。
(4)在设备类构造体中,首先调用类KUSBLowerDevice中的成员函数来初始化其实例,然后调用类KUSBInterface中的成员函数来初始化其实例,最后再调用类KUSBPipe中的成员函数来初始化其例程。
(5)在成员函数OnStartDevice中,调用函数。
KUSBLowerDevice::ActivateConfiguration配置设备,这个函数把类KUSBPipe和KUSBInterface对象联系在一起,以及USB管道和它的接口链接起来。
(6)在成员函数OnStopDevice中,调用KUSBLowerDevice::DeActivateConfiguration。
应用程序与驱动程序完成USB通信的结构图如图4所示。

图4 应用程序与驱动程序完成USB通信的结构
4.3  用户应用程序设计
使用VC6.0作为应用程序的开发环境。由于通用驱动程序GPD即ezusb.sys提供了基本USB设备请求和数据传输的用户模式接口,用户模式应用程序通过Win32函数DeviceIo Control0给设备驱动器发送请求。Ezusb.sys提供了基本设备请求、批量读写、同步读写等一系列IOCTL函数。通过调用这些函数,可以打开设备句柄、进行读写操作、关闭设备句柄,从而对USB设备进行相应操作。同时应用程序还需对接收的图像数据进行整合、处理,实现图像显示以及保存功能。
5 结束语
本文的创新点是充分发挥了CY7C68013的优势,利用FX2的内部可编程状态机GPIF实现了与FPGA的连接,系统升级方便。待系统的硬件和软件逐步完善以后,再实现对实时的视频信号采集与传输,并将进一步把DSP引入该系统,利用DSP在数字信号处理方面的优势(一般计算机完成一次乘累加运算需要11个机器周期,而DSP完成同样的运算只需要1个机器周期),在PC外部对采集的数据进行预处理,然后再通过USB总线送入主机进一步处理,DSP与USB2.0技术的结合将大大改善大容量数据传输的速度瓶颈问题,在图像和视频传输等数据量较大且对实时性要求较高的领域必将有广阔的应用前景。随着USB口的进一步普及和计算机的发展,本文设计的这种USB图像采集系统必将得到更加广泛的应用。
参考文献
[1] 李洪伟,袁斯华编著. 基于Quartus II的FPGA/CPLD设计. 北京:电子工业出版社 2006
[2]  刘皖,何道君,谭明编著. FPGA设计与应用. 北京:清华大学出版社 2006
[3]  萧世文编著. USB2.0硬件设计. 北京:清华大学出版社. 2002
[4]  张惠娟,周利华,翟鸿鸣编著. Windows环境下的设备驱动程序设计. 西安:西安电子科技大学出版社 2002
基金项目:图的染色理论研究  基金项目批准号:10771091
收稿日期:4月15日   修改日期:4月22日
作者简介:张莉:(1982-)女,籍贯:甘肃,在读研究生,研究方向:计算机测量与控制;李敬文:(1965-)男,籍贯:辽宁,硕士生导师,研究方向:计算机应用,图染色。