《电子技术应用》
您所在的位置:首页 > 其他 > 设计应用 > 利用USB2.0块传输方式实现CCD视频图像的无损实时传输
利用USB2.0块传输方式实现CCD视频图像的无损实时传输
王佐成1,靳 明2,乔 双3
1.白城师范学院 物理系,吉林 白城137000; 2.中国科学院长春光机所 图像处理室,吉林 长春
摘要: 利用USB2.0接口芯片CY7C68013的特点,通过块传输方式实现了视频图像的实时无损传输。详细介绍了CY7C68013的Slave FIFO工作方式在视频图像传输中的应用以及系统硬件设计。
Abstract:
Key words :

摘   要: 利用USB2.0接口芯片CY7C68013的特点,通过块传输方式实现了视频图像的实时无损传输。详细介绍了CY7C68013的Slave FIFO工作方式在视频图像传输中的应用以及系统硬件设计。
关键词: USB2.0  块传输  Slave FIFO  视频图像

  对于数据量很大的实时数据传输,USB2.0协议[1][2][3]有专门的等时传输方式来实现,但等时传输不但实现困难,且由于在数据包传输过程中和主机不进行握手,因此当数据包出现错误时主机不会要求USB重新发送数据,这样会造成数据丢失或错误。因此不适用于视频图像的精密分析与测量。而USB2.0协议中的块传输方式在数据包传输过程中和主机进行握手,当数据包出现错误时会要求USB重新发送数据,这就保证了传输数据的准确性,而且开发相对容易。本文利用USB2.0块传输方式实现了CCD视频图像的实时无损传输。
1  USB2.0接口芯片CY7C68013简介
  (1)内置USB2.0收发器和智能串口引擎(Serial Interface Engine,SIE)。
  (2)增强的8051内核,其时钟频率可为12MHz、24MHz和48MHz,同时该芯片还带有2个通用异步收发器(UART)、3个定时/计数器和2个数据指针,可支持外部中断。
  (3)可通过USB下载程序,也可从外部扩展的E2PROM中下载程序。
  (4)支持批量传输、同步传输、中断传输和控制传输4种传输方式。
  (5)具有8位或16位外部数据接口。
  (6)具有通用可编程接口GPIF。
  (7)内置I2C接口,其工作速率为100kHz或400kHz。
  (8)带有最大达8Kb的FIFO,可运行于Master或Slave方式(本文采用)。
2  USB2.0的4种传输方式及其比较
  (1)控制传输:主机发送一些控制命令字给USB设备。
  (2)中断传输:主机发送中断指令给USB设备。
  (3)等时传输(Isochronous Transfer):用于视频或音频等数据流的传输,传输时维持一定的速度,高速时会有一定的错误发生。其传输结构如图1所示。

  (4)块传输(Bulk Transfer):传输的数据量大,准确性高(若出现错误而发生传送失败,会重新传一次),且无速度上的限制(即没有固定传输速率)。其传输结构如图2所示。

  通过比较块传输和等时传输的结构可以发现:等时传输是以数据流的方式不断传输数据,可以充分保证实时数据的传送。而块传输比等时传输多了握手的部分(ACK/NAK/STALL/NYET),实时数据必须分包传输,而且每个包最大为1 024b。这样块传输的速度会受到一定的影响。从理论上看,在USB2.0协议中等时传输最高支持480Mbps,而块传输最高支持416Mbps。
  对于实时视频图像传输,采集到的视频信号为PAL制式隔行扫描黑白全电视视频信号。该信号每帧信号由奇场和偶场信号构成,每场重复周期为20ms,场消隐脉冲宽度为1 612μs,在场消隐期间无有效数据,每行重复周期为64μs,行消隐脉冲宽度为12μs。对于分辨率为800×600的实时图像而言,其要求的最低传输速度约为800×8÷64=100Mbps。因此可以看出,用Bulk方式传输此分辨率的实时视频图像在理论上是可行的。这样每次连续采集一场的数据,如果可以在场消隐的时间内完成一场数据的处理和显示,那么在下一场数据到来时就不会耽误数据的继续采集,从而可以实现图像的实时传输。实验证明,CY7C68013的块传输中Slave FIFO工作方式完全可以满足上面的要求。
3  Slave FIFO简介及其在视频图像传输中的应用
  Slave FIFO 作为USB2.0接口芯片CY7C68013的一种工作方式[4][5],其自身的特点如下:(1)采用外部Master的控制方式,减少了直接应用内部Master的繁杂。(2)直接利用芯片内部集成的FIFO进行工作,有效地将外部数据经CY7C68013进行传递。(3)同步和异步2种工作模式适应多种数据传输要求。
  采用Slave FIFO方式传输视频图像数据的原理框图如图3所示。其中IFCLK的设置决定了Slave FIFO工作在同步还是异步模式下。同步模式下,SLWR写信号受IFCLK上升沿控制,在异步模式下,SLWR写信号受读信号SLOE控制。所以,采用异步工作模式,用视频图像的采集时钟作为SLOE的触发信号。这样可以使SLWR信号和SLOE信号保持同步,经FIFO直接将采集数据写入主机。其寄存器配置为:IFCONFIG=0xCB。为了充分利用CY7C68013的内部FIFO进行数据的缓冲,可以采用4倍Buffer的方式,可以用端点6对数据进行读入(IN)操作(由于只是将采集的图像数据送入主机,所以此时不用考虑端点2和端点4这2个OUT端点。这样就只需要对IN端点6进行配置),这样按照其工作方式,可以应用全部8KB缓冲。其寄存器配置为:EP6CFG=0xE0;PKTEND直接决定FIFO中数据的传输方向及方式。应用CY7C68013芯片自身的AUTOIN方式,完全可以保证数据及时无误地从采集设备到主机的传输,其配置为:EP6FIFOCFG=0x0C;端点(ENDPOINT)6的选择可以通过对FIFOADR的寄存器进行设置来确定。这样,就可以用最短的时间将从采集到的芯片通过CY7C68013送到主机进行处理。

  在场消隐期间的处理工作是利用Slave FIFO方式传递实时视频图像的一个关键。当USB传完一场信息后,可以在IBN(IN Bulk NAK)中断中应用判断标志来实现。可以在固件中自定义一个函数proc(void),在USB Interrupt Handlers中利用该函数调用IBN中断,proc(void)定义如下:
  void proc(void)
  {
    {
    PE0=0x00;
    }
    IBNIRQ=bmEP6IBN;//clear the IBN IRQ
    IBNIE|=bmEP6IBN;
  }
  在IBN中断定义中,部分程序如下:
  void ISR_Ibn(void) interrupt 0
  {
    EZUSB_IRQ_CLEAR( );
    IBNIRQ=bmEP6IBN;
    NAKIRQ|=bmBIT0;
    PE0=0x01;
  }
  PE0为一个外部输出脚,利用PE0输出的高电平控制外围采集逻辑采集数据的时间。每次调用IBN中断前都设置PE0=0x00,一旦调用IBN中断后,PE0=0x01,输出为高电平。可以利用该高电平控制CPLD的场同步信号,利用CPLD把每场头信号A0找出来。这样利用PE0和A0做“与”运算,就可以从每场开始时就采集数据,不会造成数据的丢失。随后AD按照采样时钟进行采集,通过设置所要求的分辨率和采集时钟的大小,可以得到每场需要采集的数据点数,当数据采集完毕后,通过CPLD产生中断请求送给INT。这时固件程序进入中断服务,同时又将PE0设置为0x01,重复IBN中断的工作过程。由于在场消隐期间没有场头信号,PE0始终为高,AD不会采集数据,因此可以利用场消隐的这段时间对数据进行处理,实现和主机的数据传输。在主机端的上位机处理程序中,初始时通过在驱动中定义MaximumTransferSize的大小可以使其足够大于一场数据(800×600)。这样当USB通过线程中的DeviceIoControl将全部一场的数据送到主机的内存后,就可以通过IBN中断利用场消隐期间将采集的一场数据在主机中显示出来。实验证明,主机将存储于内存中的一场图像数据显示出来大约用300~500μs,大大小于场消隐的1 612μs,所以此方法是完全可行的。当场消隐结束后,IBN中断自动解除,又可以重新采集图像数据,实现每场图像数据和主机中的传输和显示,达到实时处理的效果。
4  系统硬件设计
  结合CCD视频图像采集和Slave FIFO的外围Master的控制及设计,确定了无损视频图像采集系统的硬件设计方案,系统硬件结构如图4所示。系统由A/D转换器、同步分离电路、锁相环电路、CPLD及USB2.0传输模块(CY7C68013)构成。系统中A/D转换器采用视频采集芯片TDA8709,具有8位数据宽度,最高数据采样率可达32MHz,内置视频放大及钳位电路,可外加增益控制。同步分离芯片采用LM1881,可以方便地从0.5~2V标准负极性NTSC、PAL或SECAM制式视频信号中提取行、场同步信息。锁相环芯片采用高速锁相环NE564,最高工作频率可达到50MHz。CPLD采用ALTERA公司的EPM7128,可用门单元为2 500个,管脚间最大延迟5ns。系统中的逻辑控制功能由CPLD和USB2.0传输模块配合完成,比外加其他处理器速度快。

  标准视频输入由同步分离电路分离出标准行同步信号HSYN和场同步信号VSYN,场同步信号送至CPLD,行同步信号经锁相环电路锁相,产生每行N个点的锁相脉冲VCOOUT输入到CPLD。一个工作周期开始时,主机首先发出块请求命令,USB2.0传输模块响应并设置位信号线PE0,指示CPLD开始采集。CPLD检测到场同步信号有效后,则将锁相脉冲CLK加至A/D的转换脉冲输入端及USB2.0模块的写脉冲输入端。每次A/D转换完毕,D[7..0]有效,并在CLK作用下将采集到的图像数据写入USB2.0传输模块并传回主机。CPLD内置一计数器,对锁相脉冲进行计数,并由场同步信号复位,计数满一场后置位信号线INT,输入到USB2.0传输模块的中断端,USB2.0传输模块响应中断并撤销信号PE0,此时主机也已接收满一场图像,一个工作周期结束。下一个工作周期仍然由主机发出块传输请求开始。现场采集的视频图像中的一帧如图5所示,完全可以满足精密分析和测量的需要。

5  结束语
  综上所述,根据CY7C68013的结构特点,使其工作在Slave FIFO模式下,应用USB的Bulk传输方式实现了CCD视频图像的实时无损传输和显示,不存在传输图像失真或数据丢失的现象。目前这一系统已成功运用于液体中化工试剂、油珠、微细颗粒的粒径测量和统计上。
参考文献
1   Compaq Hewlett-Packard Interetc.Universal Serial Bus Specification  Revision 2.0.2000
2   Anderson D,Dzatko D.Universal Serial Bus Susterm  Architecture(Second Edition).MindShare INC,2001
3   周振宇,谷海颖.基于USB总线的实时数据采集系统设计.   电子技术应用,2002;28(2)
4   Cypress Semiconductor.EZ-USB FX2 Technical Reference  Manual.2001
5   许永和.EZ-USB FX系列单片机USB外围设备设计与应用.北京:北京航空航天大学出版社,2002

此内容为AET网站原创,未经授权禁止转载。