基于USB接口的同步视频输出系统设计
固件的程序框图如上所示。其中设备请求部分即为控制管道信息,是由单片机负责,而数据通道主要是通过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。
3.用户应用程序和USB设备驱动程序设计
USB设备驱动程序是连接USB外设、操作系统以及用户应用程序的桥梁,是USB设备连接到计算机系统的软件接口。
FX2 系列CYPRESS公司提供了一个通用的USB驱动程序ezusb.sys,可以实现USB外设和应用程序之间的一般的通信和控制功能,开发者如果需要实现系统特有的通信和控制功能,必须在此基础上加以修改,比如,通用USB驱动程序每一次块传输数据大小必须小于64KB,而一般一幅图像数据的大小大于或者等于64KB,如果要求每次传输一幅图像到USB外设,则必须在通用USB驱动程序上加以改动。
此外还需要在驱动程序中添加下载固件部分,在USB外设上电以后,可以自动下载固件到FX2的RAM中,FX2二次枚举,主机正确识别USB外设。
用户的应用程序是操作系统和用户的接口,它以不同的参数调用驱动程序的函
数,控制USB外设,实现用户定义系统的各种功能:读写视频图像,利用控制管道的用户定义命令对FX2进行监控以及重新下载固件等等。
应用程序的程序框图如下:
4.结束语
针对视频图像同步输出实际需要,本系统采用USB 2.0的高速协议,CYPRESS公司的FX2 USB 控制器,使USB设备接口硬件简化,引入视频显示部分的场同步信号触发数据流,视频图像的显示结果标准平滑。本系统视频图像的传输速度严格依据PAL制为50场/秒,GPIF的接口速度为24MB/s。此外本系统可扩展性强,方便实用,稍加改动,可以将任何数据从主机高速导入外设,目前可以达到最大速度为23MB/s;如果加入视频采集部分电路,就可成为一个实时采集视频系统。