冯 祎 吴 超 王景中
(北方工业大学信息工程学院,北京石景山 100144)
USB2.0接口以其高速的数据传输能力,在视频数据传输系统中有着广泛的应用。但以往都是在视频采集芯片和USB控制芯片之间加上了FPGA或者CPLD等逻辑控制器件,这样虽降低了开发难度,但也不可避免的增加了硬件资源,增加了生产成本。
因此,本文采用cmos视频采集芯片直接与USB控制芯片相连,数据无需再经过中间逻辑器件打包发送给USB控制器,而是直接由USB控制器上传到上位机。这里coms摄像头选用MICRON图像传感器MT9V032,USB控制器采用Cypress的EZ-USB FX2LP系列芯片,通过Slave FIFO模式进行视频数据传输。
Cypress公司的EZ-USB FX2是世界上第一款集成USB2.0的微处理器,它集成了USB2.0收发器、SIE(串行接口引擎)、增强的8051微控制器和可编程的外围接口。FX2这种独创性结构可使数据传输率达到56Mbytes/s,即USB2.0允许的最大带宽。在FX2中,智能SIE可以硬件处理许多USB1.1和USB2.0协议,从而减少了开发时间和确保了USB的兼容性。GPIF(General Programmable Interface)和主/从端点FIFO(8位或16位数据总线)为ATA、UTOPIA、EPP、PCMCIA和DSP等提供了简单和无缝连接接口。其内部结构如图1所示。它有三种封装形式:56SSOP,100TQFP和128TQFP。本文采用56引脚型号。
图1 CY7C68013结构图
当有一个与FX2芯片相连的外部逻辑只需要利用FX2做为一个USB 2.0接口而实现与主机的高速通讯,而它本身又能够提供满足Slave FIFO要求的传输时序,可以将外部逻辑作为Slave FIFO主控制器时,即可考虑用此传输方式。
Slave FIFO传输如图2所示:
图2 Slave FIFO传输
在这种方式下,FX2内嵌的8051固件的功能只是配置Slave FIFO相关的寄存器以及控制FX2何时工作在Slave FIFO模式下。一旦8051固件将相关的寄存器配置完毕,且使自身工作在Slave FIFO模式下后,外部逻辑即可按照Slave FIFO的传输时序,高速与主机进行通讯,而在通讯过程中不需要8051固件的参与。
MT9V032 是 Aptina生产的 1/3 寸 CMOS传感器,分辨率为 752×480,像素大小达到 6.0×6.0μm。该传感器具有Micron 的DigitalClarity CMOS 成像技术,它不仅具有 CMOS传感器速度高、集成度高等优势,其灵敏度达到 4.8 V/lux-sec,在高动态拍摄模式下动态范围可达 110dB,提供了比一般 CCD传感器更优的成像效果。本文使用的一帧图片时序图如图3、图4所示,MT9V032输出像素数据为10位,本系统取8位有效数据。
图3 MT9V032的行同步时序
图4 MT9V032的场同步时序
P1:帧开始标志;
A:有效数据时间;
Q:无效数据时间;
P2:帧结束标志。
系统主要硬件结构如图5所示。设计中采用I2C总线对MT9V032芯片进行配置,FX2中增强型8051单片机时钟24M输出作为传感器主时钟,PICLK像素时钟作为IFCLK时钟,为传感器主时钟翻转。LINE_VALID行同步信号接Slave FIFO写允许,根据图片帧时序,SLWR设置为高电平有效。图片帧同步信号FRAME_VALID会在一帧图像传输到控制器后触发INT0中断。由于数据量太大,本设计没有在INT0中断服务子程序中进行全部的数据处理,而是设置了一个标志位,并通过标志位的状态来在主程序中进行处理,由此来判断帧头。USB控制器的FIFO处于从模式。控制器的端点设置为EP6-512字节、四重缓存,块传输、输入模式。这样的设置可以满足系统要求。
图5 系统主要硬件结构
主要是针对USB的固件设计。为了简化固件编程,我们直接调用Cypress提供的固件编程框架,本文固件程序使用Keil C51 uVision2编写,主要共包含 STARTUP.A51、FW.C、SLAVEFIFO.C、EZUSB.LIB、DSCR.A51及USBJMPTB.OBJ等六个文件。其中,STARTUP.A51为芯片上电初始化程序,在CPU复位后执行,主要进行初始化内存以及再入函数堆栈初始化、片外存储空间初始化等功能;EZUSB.LIB为固件函数库链接程序;FW.C为固件框架程序,主要进行硬件初始化、处理标准USB设备请求等功能。DSCR.A51为设备描述符程序,其中包含USB的各种描述符;USBJMPTB.OBJ为中断向量跳转表文件;SLAVEFIFO.C为外围设备控制文件,主要进行USB功能设备的初始化以及用户函数挂钩的相关定义。
固件编程框架如图6所示:
图6 固件框架流程图
Slave FIFO模式的初始化,在void TD_Init(void)函数中执行,该函数在上电后只执行一次,这里设置EP6为块传输端点,512字节,为4倍缓冲深度,传输方向为IN。USB端点的配置必在DSCR.A51文件中进行定义,其相关代码如下:
配置CY7C68013在Slave FIFO模式下直接和视频传感器相连,节省了中间的逻辑处理单元,有效地节省了成本,并且在实际应用中成功实现视频数据的上传,数据连续无丢失。
[1] 张弘.USB接口设计[M]. 西安:西安电子科技大学出版社,2002.
[2] 薛圆圆.USB应用开发技术大全[M].北京:人民邮电出版社,2006.
[3] 边海龙.USB2.0设备的设计与开发[M].北京:人民邮电出版社,2004.
[4] 高超,姜威,李春明.基于USB2.0的高分辨率数字摄像头设计[J]. 国外电子元器件:2005(2):18-20.
[5] 黄大勇,李鉴,张建正. 基于USB2.0接口的高速数据采集系统设计[J]. 现代电子技术:2007(24):69-72.
[6] 甄国涌,张森峰. 高速USB接口设计[J]. 电子设计工程:2009(17.3):80-82.
[7] http:/ / www. cypress. com. EZ2USBFX2 Technical Reference Manual.