APP下载

一种应用于实时图像系统的USB2.0通信设计

2010-07-02杨斌刘布民吴斌程鹏

电子技术应用 2010年2期
关键词:固件空闲驱动程序

杨斌,刘布民,吴斌,程鹏

(1.电子科技大学 微电子与固体电子学院,四川 成都 610054;2.中国科学院微电子研究所,北京 100029)

随着数字通信与数字多媒体技术的发展,实时图像系统已经被广泛应用于商业、工业、医学、军事、科学研究等领域。目前的实时图像系统中,海量的数据处理和数据成像功能,通常借助计算机终端(PC终端)完成,所以系统需要实时地将采集到的图像数据传递到PC终端。而现在大多数以PC为终端的实时图像系统,都采用PCI接口进行数据采集后的数据传输[1],具有安装复杂、开发周期长、体积大等缺点,不适于小型化设备的应用场合。针对这种情况,本文提出了一种以PC为终端,基于FPGA和USB2.0芯片的便携式实时图像采集传输系统。该系统充分利用了FPGA的实时控制能力和实时数据处理能力,以及USB2.0芯片低成本、高吞吐率、移植方便等特点,使得整体系统具有成本低、可扩展性强、功耗低、设备体积小等优势,能够作为小型化设备应用于多种实际场合,有较高的应用价值。

1 系统框架及芯片简介

系统由 USB2.0芯片、FPGA和图像传感器组成[2],外加PC终端,配合系统工作。系统框图如图1所示。

系统工作原理:系统上电后,在PC终端的图形界面中,定义图像传感器的配置信息;USB2.0芯片将配置信息转发至FPGA;FPGA根据所得信息,对图像传感器进行初始化配置;配置完成后,传感器周期性地采集图像信号发送至FPGA;FPGA利用内部2个采用乒乓操作的FIFO,将图像数据缓存后,发送至 USB2.0芯片(USB2.0芯片传输速度比图像数据获取速度快);USB2.0芯片将图像数据转发至PC终端;最后PC终端将实时图像信息显示出来。如果PC终端显示的图像未达到用户要求,可实时修改图像传感器工作模式,以满足要求。

图1 系统框图

系统中,图像传感器采用OmniVision公司的低功耗CMOS彩色图像传感器芯片 OV7649;FPGA采用 Altera公司面向低功耗、低成本应用而推出的CycloneII系列中的EP2C5AF256A7;USB2.0芯片选用Cypress公司的CY7C68013A,它是应用广泛的USB2.0芯片CY7C68013的低功耗版本。EP2C5AF256A7、CY7C68013A组成USB2.0通信部分,该部分为本系统的核心。

1.1 FPGA芯片(EP2C5AF256A7)

FPGA处于系统中核心位置,用于控制图像传感器和USB2.0芯片,并将实时图像数据缓存转发。

EP2C5AF256A7的逻辑功能较强,完成系统功能后,还有不少逻辑余量,可用于其他控制逻辑,使系统具有较强的可扩展性。

1.2 USB2.0芯片(CY7C68013A)

USB2.0芯片是系统中数据传输的核心,用于将图像数据转发至PC终端,并将配置信息转发到FPGA。图2为CY7C68013A芯片框图,片内集成了USB2.0收发器、串行接口引擎(SIE)、增强型的8051微处理器和可编程的外围接口[3]。

CY7C68013A有3种可用的接口模式:

(1)端口模式下,数据经内部8051微处理器转发,设计灵活,但数据传输速度较慢。

(2)从属FIFO模式下,数据通过片内FIFO与外部逻辑连接,传输速率高,但需要外部逻辑来提高设计灵活性。

图2 CY7C68013A芯片框图

(3)GPIF模式下,片内FIFO和外部逻辑之间,集成可编程接口,以牺牲传输速率来提高数据传输的灵活性,是端口模式和从属FIFO模式的折中。

考虑到系统实时性和采用的FPGA逻辑功能较强等原因素,CY7C68013A工作在从属FIFO模式。

2 硬件架构

在USB2.0通信部分,主要的硬件连接为FPGA与USB2.0芯片的硬件连接。图3为FPGA与USB2.0芯片中对应管脚之间的电气连接。

图3 USB2.0芯片与FPGA的硬件连接

图中,IFCLK用于数据同步和控制信息同步,采用48 MHz的时钟频率。FLAGB_FULL和FLAGC_EMPTY为FIFO状态标识信号。FIFOADR[1:0]为端点选择信号:当传递图像数据时,FIFOADR[1:0]=10;当传递配置信息时,FIFOADR[1:0]=00。SLOE为数据使能信号。SLRD、SLWR为读写控制信号:SLRD有效时,USB2.0芯片转发配置信息;SLWR有效时,USB2.0芯片转发图像数据。PKTEND为包结束命令:FPGA发送完1帧图像数据后,将该信号置为有效1次,防止数据流不连续。FD[7:0]为FPGA与USB2.0芯片之间通信的双向8位数据总线。

3 软件实现

USB2.0通信部分的软件实现包括:(1)USB2.0芯片固件程序;(2)PC终端驱动程序;(3)FPGA的控制代码。

3.1 固件程序

USB2.0芯片内嵌了加强型8051微处理器,帮助 USB2.0芯片完成初始化、协议通信和片内电源管理等工作[4]。要使微处理器正常工作,就离不开固件的控制和协调,固件应该完成下面的内容:

(1)初始化:设置特殊功能寄存器的初值,使USB2.0芯片做好工作准备。

(2)完成USB2.0协议规定的USB设备端的响应动作。

(3)处理收到的中断。

(4)完成数据的收发和处理。

(5)控制与外围电路的接口,协同外围电路工作。

在Keil uVision 2软件环境下,修改Cypress公司提供的固件框架中的TD_Init()函数,配置USB2.0芯片进入用户所需要的工作方式;修改TD_Poll()函数,定义USB2.0芯片的数据传输方式,即可完成固件程序的编写。下面是核心固件代码:

//接口配置:

IFCONFIG=0x43;

SYNCDELAY;

FIFOPINPOLAR=0x0C;

SYNCDELAY;

//设定端点2工作模式:

EP2CFG=0xA2;

SYNCDELAY;

OUTPKTEND=0x82;

SYNCDELAY;

OUTPKTEND=0x82;

SYNCDELAY;

EP2FIFOCFG=0x10;

SYNCDELAY;

//设定端点6工作模式:

EP6CFG=0xE0;

SYNCDELAY;

EP6FIFOCFG=0x0C;

SYNCDELAY;

EP6AUTOINLENH=0x02;

SYNCDELAY;

EP6AUTOINLENL=0x00;

SYNCDELAY;

3.2 驱动程序

驱动程序通过控制PC终端的硬件,完成USB2.0协议中主机端动作;完成PC终端和USB2.0芯片之间的数据收发和存储[5]。

驱动程序基于Windows XP系统环境开发,使用JUNGO公司的 Windriver和Microsoft公司的Visual C++6.0进行实现。具体开发过程:

(1)通过Windriver获取USB2.0芯片的硬件连接情况和各个通信管道的状态参数。

(2)根据得到的信息,对Windriver中的参数进行修改,生成驱动程序框架。

(3)使用Visual C++6.0修改驱动程序框架,完成系统中PC终端的驱动程序。

3.3 控制代码

从USB2.0协议角度,FPGA是USB2.0设备端:响应主机端命令;从数据收发角度,FPGA是主控器:与USB2.0芯片内的FIFO进行通信。图4为FPGA读写数据时的状态转移图。

图4 FPGA读写数据时的状态转移图

FPGA完成数据收发的过程可以分为FPGA读数据和FPGA写数据两个部分:

(1)FPGA读数据

①复位后,进入空闲状态。

②开始读信号有效后,判断FIFO状态,如 FIFO空,跳回空闲状态;FIFO不空,跳入读数据状态。

③在读数据状态中,FPGA读数,并将读数计数器加1。

④读完1个数据后,判断读信号和FIFO标志位,如果读信号有效且FIFO不空,跳回读数据状态;如果读信号无效或FIFO空,跳入空闲状态。

⑤跳入空闲状态后,等待触发条件。

图5是该模块在Quartus 8.0软件的SignalTap II Logic Analyzer中获得的波形。

(2)FPGA写数据

①复位后,进入空闲状态。

图5 FPGA往PC终端读3 bit波形

图6 FPGA往PC终端写3 bit波形

②开始写信号有效后,判断FIFO状态,如FIFO满,跳回空闲状态;FIFO不满,跳入写数据状态。

③写完1个数据后,判断写信号和FIFO标志位,如果写信号有效且FIFO不满,跳回写数据状态;如果写信号无效或FIFO满,跳入空闲状态。

④跳入空闲状态后,等待触发条件。

图6是该模块在Quartus 8.0软件的SignalTap II Logic Analyzer中获得的波形。

在系统实测中,图像传感器芯片工作在27 MHz时钟频率下,采集84 S/s、640×480分辨率的实时图像数据,实时峰值采集速率接近207 Mb/s;USB2.0通信部分,峰值传输速率可达423 Mb/s,为实时图像采集速度的2倍;FPGA在完成系统功能后,还有不少的逻辑余量。所以,该系统可通过以下方式扩展:(1)多路实时图像数据采集;(2)提高图像分辨率或帧频;(3)利用逻辑余量增加系统功能。

本文提出的实时图像系统具有低成本、低功耗、高吞吐率和扩展性强等优点,能够很好地适用于多种小型化便携式设备应用场合。

[1]BI Bo,SUN Shu Ying,WANG Chun Ping.Design of data acquisition equipment based on USB[C].ICEMI’2007,8th,IEEE,2007:866-869.

[2]方加喜,李玉山.USB接口的数字摄像系统设计[J].电子技术应用,2002,28(7):50-52.

[3]钱峰.EZ-USB FX2单片机原理、编程及应用[M].北京:北京航空航天大学出版社,2006.

[4]张鑫,苏东林,李保权,等.基于 USB的 DSP高速数据传输系统[J].电子技术应用,2006,32(10):99-101.

[5]胡文静,陈松.基于EZ-USB芯片CY7C68013的驱动程序设计[J].计算机应用研究,2005(9):121-122.

猜你喜欢

固件空闲驱动程序
“鸟”字谜
西湾村采风
计算机硬件设备驱动程序分析
彪悍的“宠”生,不需要解释
基于固件的远程身份认证
WLAN和LTE交通规则
提取ROM固件中的APP
一种通过USB接口的可靠固件升级技术
基于MPC8280的CPU单元与内部总线驱动程序设计
多路手机固件升级工具设计