学海荡舟手机网

主页 > 实用文摘 > 教育文摘_22 > > 详细内容

基于USB2.0的MPEG视频卡的设计与实现_接口电路论文

摘  要: 本文介绍了一种基于usb2.0接口的mpeg视频卡的设计方案及其软硬件设计方法。

    关键词 :usb; 视频卡; mpeg; wdm

    通用串行总线(universal serial bus,即usb)以其方便的即插即用和热插拔特性,以及较高的传输速率,成为pc领域广为应用的外设连接规范。目前,国内外普遍采用的是usb1.1规范,它支持两种传输速率:1.5mbps和12mbps,主要应用在低速传输要求的场合。2000年发布的usb2.0规范提供了480mbs的传输速率,以满足更快的数据传输要求。

    为了使mpeg视频卡快速地向pc机传送大量的数据,我们在设计mpeg视频卡与pc机的接口时采用usb2.0技术。对usb的设计与开发,我们是基于cypress公司的ez-usb fx2系列的cy7c68013芯片及其fx2开发包。

    1、 硬件设计

    传统的采用pci接口的mpeg视频卡, 不但占用了有限的pci插槽,安装不方便,而且不支持热插拔和即插即用。所以,在本设计中,我们选用usb2.0接口芯片对传统的mpeg视频卡进行了改进。

    改进后的usb2.0接口的方案如图1所示。

   

    该usb2.0接口的mpeg视频卡的工作原理为:音视频信号经ak4550音频处理芯片及aa7113视频处理芯片进行a/d转换,将模拟信号转换成8bit的pcm格式的数字信号,传入sz1510音视频压缩采集芯片进行处理,将编码调制pcm格式的数据转化为符合格式mpeg-1的混合影视文件,最后mpeg-1数据经usb接口芯片送给pc机作进一步的处理,如存储、显示等。

    设计中,我们选用的usb接口芯片是ez-usb fx2 系列的cy7c68013芯片。该芯片是针对usb2.0的,而且和usb1.1兼容,它支持两种传输速率:全速(full_speed)12mbps和高速(high_speed)480mbps,它不支持低速(low_speed)1.5mbps。该芯片的内部结构如图2所示。

    cy7c68013-128ac内部集成了一个增强的8051内核,它既与标准的8051兼容,又有诸多的改进:最高工作频率48mhz,一个指令周期只需4个时钟周期,比标准的8051平均提高了2.5倍;2个uarts端口;3个定时/记数器;扩展的中断系统及其更多i/o口等。cy7c68013内部集成的usb2.0的sie能完成大部分usb2.0协议的处理工作,减少了用户对繁杂的usb协议的处理。另外,用户在开发时,可以利用gpif和fifo方式实现与高速外围设备之间的逻辑连接,并进行高速数据的传输。在该改进方案中,我们选用的是gpif方式,实现和z1510之间的通信。

    2、 软件设计

    usb 软件设计包括三方面的工作:固件(fireware)设计,驱动程序设计和主机端应用程序的设计。

    (1) 固件设计

    设计中,我们考虑到mpeg视频卡要求快速地持续地传送大量数据,并对数据的完整性要求不太高,我们采用iso传输方式。另外,我们让cy7c68013工作在gpif模式下的fifo read方式,最多可以传输4g byte(wordwide=0)或word(wordwide=1)。外设的数据由于不需8051的处理,我们采用自动打包的方式(autoin=1),直接从fifo到sie,这样有利于提高传输速率。其主要实现代码如下:

void  td_init( )
{
cpucs = 0x01;       file://clkspd[1:0]=10; for 48mhz operation.
gpifinit( );
   ……
syncdelay;
ep6cfg = 0xda;     file://端点配置: 同步in方式、缓冲大小1024字节
syncdelay;
fiforeset = 0x80;    // activate nak_all to avoid race conditions
syncdelay;
fiforeset = 0x06;    file://reset, fifo 6
syncdelay;
fiforeset = 0x00;    file://deactivate nak_all

syncdelay;
ep6fifocfg = 0x0d;   file://wordwide=1
syncdelay;
……
}

    (2) 驱动程序设计

    在windows平台下,usb 驱动程序由三部分组成:usb设备驱动程序,usb总线驱动程序和usb主控制器驱动程序,它们必须遵循win32驱动程序模型(wdm)。其中,windows操作系统已经提供了处于驱动程序栈底的usb总线驱动程序和usb主控制器驱动程序。而usb设备驱动程序由设备开发者编写,它通过向usb总线驱动程序发送包含urb(usb  request block)的irp(i/o request packet),来实现usb外设之间的交换。当主机应用程序要对usb设备进行i/o操作时,它调用windows api函数对win32子系统进行win32调用,由i/o管理器将此请求构造成一个合适的irp,并把它传递给usb设备驱动程序。usb设备驱动程序接受到这个irp后,根据irp中包含的具体操作代码,构造响应的urb并把它放到一个新irp中,然后把此irp传递到usb总线驱动程序,usb总线驱动程序根据irp中所包含的urb执行响应的操作,并把操作结果通过irp返还给usb设备驱动程序。usb设备驱动程序接受到此irp后,将操作结果通过irp返还i/o管理器。最后,i/o管理器将此irp中操作结果返还给应用程序,至此应用程序对usb设备的一次i/o操作完成。

    开发usb设备驱动程序,可采用numega公司的开发包driver works和 microsoft公司的2000ddk,并以vc++6.0作为辅助开发环境。driver works提供的驱动向导,,可根据用户的需要,自动生成代码框架。减少了开发的难度,缩短了开发的周期。

    在cypress公司的ez-usb fx2开发包中,有一个通用的驱动程序,该程序可不加修改经ddk编译后直接使用。在本设计中,由于时间关系,我们采用的就是这个通用驱动程序(gpd)。

    (3) 应用程序设计

    usb主机应用程序是计算机中完成特定功能的程序,其关键是实现从usb 外设读取或发送特定数量的数据,usb标准设备请求和特定的命令等。另外,可以对数据做进一步的处理,如:存储、显示、快速傅立叶变换等。在windows 2000下,我们所使用的应用程序开发工具是vc++6.0。

    3、 结束语

    该卡是对传统的pci接口的mpeg视频卡的改进,它支持热插拔和即插即用。由于采用usb2.0接口,其传输速率也高于后者,满足了数据高速传输的要求,解决了usb1.1存在的传输瓶颈。相信随着各大电脑主板商对usb2.0的支持,usb2.0必将在pc机应用的各个领域得到广泛的应用。