接口/总线/驱动
在信息技术日新月异的今天,人们对视频图像传输的需求越来越迫切,要求越来越高,而整个图像传输系统的瓶颈在于视频图像的信息量很大,而且传输的过程中容易出现延时、抖动、失真等现象,因此在选择视频图像传输的总线要求速度高,错误率低的特点。目前视频图像实时传输采用的总线主要有PCI、1394以及USB.三者比较而言,USB 2.0高速传输协议,兼有快速、通用、可靠、省电、热插拔等优点,比传统基于PCI总线、1394总线的视频输出系统,特别是在需要利用笔记本电脑等便携设备进行视频输出的场合,具有更强大的通用性和灵活性。
本文所介绍的同步视频输出系统设计方案,由作为外设的视频输出接口卡和主机上的应用软件两个部分组成,采用通用串行总线(USB)实现视频图像数据的传输,并依据PAL制电视标准与主机同步视频显示,画面流畅清晰。
视频输出接口卡的结构框图如图1所示,主要由内置MCU的USB接口芯片、图像存储SRAM、以及D/A图像输出三个部分。各部分的主要功能为:USB接口芯片和主机通信,将主机的视频图像数据按照一定时序通过USB电缆写入SRAM保存;SRAM芯片负责数字视频信号的存储;D/A图像输出部分将数字视频信号转换成模拟视频信号,按照PAL制式进行输出显示。
本系统视频图像数据是通过USB电缆传输,USB电缆包含4根电线:Vbus,D+,D-和GND.数据以480M高速信号在D+和D-信号线上差分传输,而收发器在USB接口控制芯片上,不需要外部威廉希尔官方网站 。
USB接口部分是本系统最为重要的通信部分。USB接口控制芯片采用的是CYPRESS公司的EZ USB FX2系列CY7C68013芯片。它内部集成带8KB片内RAM的增强型51系列MCU、16位并行地址总线、8/16数据总线、IIC总线、4KB FIFO 存储器以及通用可编程接口GPIF,串行接口引擎SIE和USB收发器,是USB 2.0的完整的解决方案。
串行接口引擎智能SIE通过包排序、信号产生/检测、CRC产生/校验、NRZI数据编码、位填充和包标识产生/解码来处理USB通信协议,并保证传输到USB电缆上的数据字节以LSB开头。它使MCU从繁琐的USB协议中脱身,集中注意力放在控制数据的输入和输出。
FX2内部集成的高速MCU为增强型8051,功能较传统的8051系列单片机强大,但在代码的编写上兼容,使用方便,且速度是标准8051的3~5倍,工作频率可以软件设置,最高可为48Mhz,还带有两个串口,三个计数/定时器,八级中断,双数据指针方便数据块搬移。
外设接口有两种接口方式:可编程接口GPIF和Slave FIFO.可编程逻辑接口GPIF是主控方式,可以由软件设计读写控制波形,不通过MCU,就可以实现主动对任何8/16位接口的控制器、存储器和总线进行数据的读写。而且读写的最高速度可以达到96MB/s,高于USB2.0的传输速度。Slave FIFO是从控方式,外部控制器(如DSP 和单片机等)可以像对普通的FIFO一样对FX2的多重缓冲读写,工作方式也可选择同步或异步,工作时钟可以选择输入和输出。
另外,它是基于RAM的“软”系统解决方案,不需要ROM或者其他的固化存储器,可以使用片内的程序/数据RAM.固件可以直接通过USB电缆下载,方便固件的修改和升级。
静态存储器SRAM采用IDT公司双口异步静态RAM芯片IDT70v09,8位数据线,17根地址线,64M容量。
视频信号输出转换的芯片是DAC0800, 将数字图像信号转换为模拟信号,依据PAL制输出。PAL制视频输出标准为25帧/秒,一帧分奇偶两场,20ms一场,其中场正程为17ms,逆程为3ms.系统中正是利用场同步信号作为同步标准,使USB设备的图像传输和显示一致。
当USB设备第一次插入到USB接口时,FX2通过USB电缆自动枚举,并下载固件程序和USB描述符表;接下来,FX2二次枚举,根据下载的信息定义重新定义USB设备。这两个步骤称为再枚举,设备插入时就立即执行而没有提示。二次枚举以后主机可以通过控制管道和USB设备通讯,完成USB设备的端点配置等初始化工作,完毕,开始查询USB设备是否准备好。USB设备端MCU检测外部中断INT0(场信号跳变沿),若外部中断INT0发生,则转入外部中断服务子程序,应答主机,说明USB设备已经准备好接受数据,主机查询到此应答后,应用程序发一场图像数据到FX2,单片机检测到数据到达后,启动GPIF,然后GPIF独立于MCU将图像数据导入SRAM,一场图像传输完毕,结束GPIF,退出中断服务子程序,直到下一轮中断开始。D/A部分威廉希尔官方网站 在场正程部分读取SRAM图像数据,并转换为模拟信号输出显示,而在场逆程中禁止读取SRAM.
固件是指固化在USB控制器中MCU的程序,它的主要功能是负责接收与处理主机发给设备的各种请求,并向主机返回设备的状态信息。FX2 系列的固件代码可以存储到主机中,设备上电复位以后通过USB电缆手动下载到FX2,这种方法易于升级,在系统的开发过程中很方便;固件代码可以固化到片外存储器EEPROM或者是ROM,设备上电以后,自动下载固件到片内RAM,这两种方法可以将系统固件做成产品,无须每次手动下载。
本系统中固件分两个部分,一个是数据通道的控制,一个是主机控制命令的应答。数据通道的控制主要是GPIF控制数据传输管道完成。而控制管道EP0则负责主机和USB设备端的去掉数据部分的通信:更改管道和端点配置信息,设置软件中断,更改GPIF视频图像传输的大小,获取重要寄存器的状态等等。
固件的程序框图如上所示。其中设备请求部分即为控制管道信息,是由单片机负责,而数据通道主要是通过GPIF操作,隔离了单片机的参与,提高数据传输速度。
固件代码编写使用Keil uVision,GPIF编程应用CYPRESS公司的GPIF工具(GPIFTOOL)。GPIF可以控制FX2端点FIFO,也可以产生六个控制输出端(CTL0~CTL5)和九根地址线输出,并且可以接收六个外部输入信号,并对这些信号进行逻辑编程控制,从而控制FX2与外部接口的读写时序。实际操作可以利用GPIFTOOL绘制波形描述符,转为C文件,配置各个相关的寄存器,控制SRAM接口读写逻辑。
SRAM硬件接口的时序图如下:
依据上面的波形图,我们只需要在S1结束的时候跳转S0 状态即可。将绘制的波形图应用GPIF TOOL转换为gpif.c文件,加入Project中,连接编译即可得到固件。
在固件编程中电源管理部分,由于FX2在首次枚举电流大约是75mA,FX2设备的识别则至少需要100mA,小于500mA,因此在固件中要加进电源检测,如果小于100mA,必须向主机申请更大的电流,直到主机正确识别FX2.
USB设备驱动程序是连接USB外设、操作系统以及用户应用程序的桥梁,是USB设备连接到计算机系统的软件接口。
FX2 系列CYPRESS公司提供了一个通用的USB驱动程序ezusb.sys,可以实现USB外设和应用程序之间的一般的通信和控制功能,开发者如果需要实现系统特有的通信和控制功能,必须在此基础上加以修改,比如,通用USB驱动程序每一次块传输数据大小必须小于64KB,而一般一幅图像数据的大小大于或者等于64KB,如果要求每次传输一幅图像到USB外设,则必须在通用USB驱动程序上加以改动。
此外还需要在驱动程序中添加下载固件部分,在USB外设上电以后,可以自动下载固件到FX2的RAM中,FX2二次枚举,主机正确识别USB外设。
用户的应用程序是操作系统和用户的接口,它以不同的参数调用驱动程序的函
数,控制USB外设,实现用户定义系统的各种功能:读写视频图像,利用控制管道的用户定义命令对FX2进行监控以及重新下载固件等等。
应用程序的程序框图如下:
针对视频图像同步输出实际需要,本系统采用USB 2.0的高速协议,CYPRESS公司的FX2 USB 控制器,使USB设备接口硬件简化,引入视频显示部分的场同步信号触发数据流,视频图像的显示结果标准平滑。本系统视频图像的传输速度严格依据PAL制为50场/秒,GPIF的接口速度为24MB/s.此外本系统可扩展性强,方便实用,稍加改动,可以将任何数据从主机高速导入外设,目前可以达到最大速度为23MB/s;如果加入视频采集部分威廉希尔官方网站 ,就可成为一个实时采集视频系统。
全部0条评论
快来发表一下你的评论吧 !