基于USB2.0的MPEG视频卡的设计与实现
发布时间:2008/6/3 0:00:00 访问次数:425
作者email: lql0607@163.com
摘 要: 本文介绍了一种基于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后,将操作结
作者email: lql0607@163.com
摘 要: 本文介绍了一种基于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后,将操作结