位置:51电子网 » 技术资料 » 接口电路

嵌入式视频图像压缩模块的USB接口设计

发布时间:2008/6/3 0:00:00 访问次数:432

摘要:本文介绍了一种嵌入式视频图像压缩模块的usb接口设计方案,给出了该系统的硬件实现方案以及usb控制芯片cy7c68013在系统中的应用,并编写了usb固件程序、嵌入式操作系统windows ce.net下的usb驱动程序和应用程序。

关键词:视频压缩;固件程序;驱动;usb总线

视频图像监控技术已经得到了广泛应用。但是在一些特殊场合,虽然并不需要实时图像监控,对图像的质量却有很高的要求。例如需要以图像画面作为证据的远程视频监视系统,h.261和h.263图像的质量已无法胜任,而是需要高质量的jpeg图像。所以研究和设计满足工业级要求的静态图像压缩模块对于特殊场合的视频图像监控有非常重要的意义。

在远程视频监控系统中,视频采集及压缩传送是不可或缺的重要组成。本文介绍了一种基于cy7c68013的jpeg视频压缩模块设计方案,它具有130万像素图像分辨率、压缩率大、接口简单等特点,可以方便地和usb主控设备结合在一起,由上位机通过软件指令控制拍摄、视频压缩和上传压缩图像数据,从而组成静态视频监控系统。
  
硬件结构

本文所开发的这套嵌入式视频图像压缩模块,其硬件框图见图1。上位机是嵌人式智能工业控制器。它是以s3c4510b为核心处理器, 采用arm7tdmi risc内核,在其上运行wince.net 5.0操作系统。下位机由三个主芯片构成:cy7c68013、s1d13718和k9650fb模块。cy7c68013是一款集成usb2.0的微处理器,在单片机上集成了usb2.0收发器、串行接口引擎(sie)、增强的8051微控制器和可编程的外围接口,支持usb1.1和usb2.0协议。s1d13718是图像引擎芯片,负责jpeg编解码。视频采集模块采用k9650fb模块,它内部包含cmos摄像头和图像处理芯片ov9650,输出图像最大可为130万像素,并具有标准的视频接口和omnivision公司自定义的sccb配置总线。系统上位机与远程监控系统组成局域网,以接收远程监控系统的命令和上传图片数据。上位机通过usb总线将各种与拍摄相关的命令发送给cy7c68013,最后在cy7c68013的固件程序里具体实现sid13718和k9650fb的初始化,并从s1d13718片内ram中取出压缩好的jpeg图片上传。

图1 硬件结构框图

软件设计

本设计中usb软件设计包括3部分:固件程序、usb设备驱动程序和应用程序。

固件程序

在外部eeprom中存放有cy7c68013固件程序,该程序在上电后加载到8051内核,主要完成两项功能:对usb设备进行配置及实现usb数据传输;实现对s1d13718和k9650fb的初始化。

usb传输方式分为4种:控制传输、批量传输、同步传输和中断传输。考虑到实际应用环境和复杂度,在开发中使用了控制传输和批量传输。控制传输主要用来完成主机对设备的配置和各种控制操作。批量传输主要用来完成上位机和cy7c68013之间的图像数据传输。固件程序流程如图2所示。

图2 固件程序流程

在这里,步骤①~⑤主要是完成usb接口的初始化工作,而步骤⑥~⑩可以看作是任务派发阶段,完成usb事务及用户特定的任务。
驱动程序

wince.net的usb系统软件由两层组成:上层为usb设备驱动程序层,即本文所研究的内容;底层为usb功能的实现层,包括主机控制器驱动hcd以及usb协议栈usbd两部分,这一层次由wince.net操作系统本身提供。

wince.net系统提供的两种驱动模型是本机驱动程序和流接口驱动程序。前者通常适用于集成到平台上的设备,后者为一般类型的驱动程序,适用于大部分平台外部连接的设备。流接口驱动程序表现为在用户一级的动态链接库dll,用来实现一组固定的函数——流接口函数,这些流接口函数使得应用程序可以通过文件系统访问这些驱动程序。本文采用了流接口驱动程序。图3说明了流接口驱动程序的工作结构。应用程序通过文件系统的api函数调用流接口函数,然后由流接口驱动程序调用本机驱动,或者通过设备管理器与系统内核或外围设备打交道。 

图3 流接口驱动程序的工作结构
 
编写wi nce.net系统下usb总线设备的驱动程序必须实现的三个入口函数usbdeviceattach()、 usbinstalldriver()、usbuninstalldriver(),这是wince.net系统编写的usb协议栈的要求,这三个函数本身也体现了usb总线设备与其他设备驱动程序不同的编写特征。在设备接到主机上后,系统底层的usb总线功能实现层会将检测到的设备基本信息及设备某功能接口的有关信息提供给上层,usbdeviceattach()等函数会接受该信息,从而为客户端驱动的下一步工作打下基础;另外,也能更好地进行必要的注册表项设置。在wince.net系统中,设备的配置信息都是存储在系统注册表中,因此,有关具体设备的必要信息和一些附加信息可以在usbinstalldriver()中实现注册,而usbuninstalldriver()函数负责卸载这些注册的设备信息。

一个具体的流接口驱动程序跟注册表部分肯定是分不开的。这里,我们将自己写的一个注册表文件通过添加组件的方式添加到内核中。下面是这个注册表文件的内容。

[hke

摘要:本文介绍了一种嵌入式视频图像压缩模块的usb接口设计方案,给出了该系统的硬件实现方案以及usb控制芯片cy7c68013在系统中的应用,并编写了usb固件程序、嵌入式操作系统windows ce.net下的usb驱动程序和应用程序。

关键词:视频压缩;固件程序;驱动;usb总线

视频图像监控技术已经得到了广泛应用。但是在一些特殊场合,虽然并不需要实时图像监控,对图像的质量却有很高的要求。例如需要以图像画面作为证据的远程视频监视系统,h.261和h.263图像的质量已无法胜任,而是需要高质量的jpeg图像。所以研究和设计满足工业级要求的静态图像压缩模块对于特殊场合的视频图像监控有非常重要的意义。

在远程视频监控系统中,视频采集及压缩传送是不可或缺的重要组成。本文介绍了一种基于cy7c68013的jpeg视频压缩模块设计方案,它具有130万像素图像分辨率、压缩率大、接口简单等特点,可以方便地和usb主控设备结合在一起,由上位机通过软件指令控制拍摄、视频压缩和上传压缩图像数据,从而组成静态视频监控系统。
  
硬件结构

本文所开发的这套嵌入式视频图像压缩模块,其硬件框图见图1。上位机是嵌人式智能工业控制器。它是以s3c4510b为核心处理器, 采用arm7tdmi risc内核,在其上运行wince.net 5.0操作系统。下位机由三个主芯片构成:cy7c68013、s1d13718和k9650fb模块。cy7c68013是一款集成usb2.0的微处理器,在单片机上集成了usb2.0收发器、串行接口引擎(sie)、增强的8051微控制器和可编程的外围接口,支持usb1.1和usb2.0协议。s1d13718是图像引擎芯片,负责jpeg编解码。视频采集模块采用k9650fb模块,它内部包含cmos摄像头和图像处理芯片ov9650,输出图像最大可为130万像素,并具有标准的视频接口和omnivision公司自定义的sccb配置总线。系统上位机与远程监控系统组成局域网,以接收远程监控系统的命令和上传图片数据。上位机通过usb总线将各种与拍摄相关的命令发送给cy7c68013,最后在cy7c68013的固件程序里具体实现sid13718和k9650fb的初始化,并从s1d13718片内ram中取出压缩好的jpeg图片上传。

图1 硬件结构框图

软件设计

本设计中usb软件设计包括3部分:固件程序、usb设备驱动程序和应用程序。

固件程序

在外部eeprom中存放有cy7c68013固件程序,该程序在上电后加载到8051内核,主要完成两项功能:对usb设备进行配置及实现usb数据传输;实现对s1d13718和k9650fb的初始化。

usb传输方式分为4种:控制传输、批量传输、同步传输和中断传输。考虑到实际应用环境和复杂度,在开发中使用了控制传输和批量传输。控制传输主要用来完成主机对设备的配置和各种控制操作。批量传输主要用来完成上位机和cy7c68013之间的图像数据传输。固件程序流程如图2所示。

图2 固件程序流程

在这里,步骤①~⑤主要是完成usb接口的初始化工作,而步骤⑥~⑩可以看作是任务派发阶段,完成usb事务及用户特定的任务。
驱动程序

wince.net的usb系统软件由两层组成:上层为usb设备驱动程序层,即本文所研究的内容;底层为usb功能的实现层,包括主机控制器驱动hcd以及usb协议栈usbd两部分,这一层次由wince.net操作系统本身提供。

wince.net系统提供的两种驱动模型是本机驱动程序和流接口驱动程序。前者通常适用于集成到平台上的设备,后者为一般类型的驱动程序,适用于大部分平台外部连接的设备。流接口驱动程序表现为在用户一级的动态链接库dll,用来实现一组固定的函数——流接口函数,这些流接口函数使得应用程序可以通过文件系统访问这些驱动程序。本文采用了流接口驱动程序。图3说明了流接口驱动程序的工作结构。应用程序通过文件系统的api函数调用流接口函数,然后由流接口驱动程序调用本机驱动,或者通过设备管理器与系统内核或外围设备打交道。 

图3 流接口驱动程序的工作结构
 
编写wi nce.net系统下usb总线设备的驱动程序必须实现的三个入口函数usbdeviceattach()、 usbinstalldriver()、usbuninstalldriver(),这是wince.net系统编写的usb协议栈的要求,这三个函数本身也体现了usb总线设备与其他设备驱动程序不同的编写特征。在设备接到主机上后,系统底层的usb总线功能实现层会将检测到的设备基本信息及设备某功能接口的有关信息提供给上层,usbdeviceattach()等函数会接受该信息,从而为客户端驱动的下一步工作打下基础;另外,也能更好地进行必要的注册表项设置。在wince.net系统中,设备的配置信息都是存储在系统注册表中,因此,有关具体设备的必要信息和一些附加信息可以在usbinstalldriver()中实现注册,而usbuninstalldriver()函数负责卸载这些注册的设备信息。

一个具体的流接口驱动程序跟注册表部分肯定是分不开的。这里,我们将自己写的一个注册表文件通过添加组件的方式添加到内核中。下面是这个注册表文件的内容。

[hke

相关IC型号

热门点击

 

推荐技术资料

耳机放大器
    为了在听音乐时不影响家人,我萌生了做一台耳机放大器的想... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!