基于 Cypress 公司 USB 控制器的 图像传输技术研究 答 辨 人 : 刘 登 宇 指导老师 : 徐 超 北京理工大学学士学位论文答辩 北京理工大学信息科学技术学院 2008 年 6 月 16 日
课题背景 CMOS 图像传感器 - 电路集成 - 成本低廉 - 功耗低 USB2.0 总线接口技术 - 高速传输 - 吞吐量大 - 应用灵活 - 支持热插拔
国内外发展现状 美国 MuTech Phoenix 系列华旗数码技术实验室
USB 视频传输系统构成
USB 视频传输系统器件选择 CMOS 图像传感器: Micron MT9M001 CMOS 图像传感器 - 图像分辨率 :1280X1024 SXGA -30 帧 / 秒逐行扫描 - 电子卷帘快门 - 可编程控制增益、帧 速率、帧窗口大小 USB 控制器: Cypress EZ-USB FX2 CY7C68013 USB 控制器 - 集成 USB2.0 收发器、 SIE( 串行接口引擎 ) 、增强型 8051 微控制器 - 通用可编程接口 (GPIF) , 8 位 /16 位数据总线 - 四个可编程端点 ( 批量、同步、中断 )
EZ-USB FX USB 控制器 USB 接收器接收外部差分信号后,由智能串行接口引擎处理 USB 协议中的数 据传输格式,而微控制器 8051 则专注于应用功能。 通用可编程接口 GPIF 和主 / 从端点 FIFO(8 位或 16 位数据总线 ) 为 ATA 、 UTOPIA 、 EPP 、 PCMCIA 和 DSP 等通用接口提供了简单的无缝连接。
独特数据传输架构 数据传输通常需要 CPU 通过固件访问芯片中的端点 FIFO ,也需要 CPU 通过固 件访问外围设备的接口电路。然而,这种工作方式会因 CPU 固件程序执行效 率低而限制数据传输速率,在高速传输时显得格外突出。 FX2 采用了一种特殊的数据传输模式。在此模式下,无需 CPU 执行内部 8051 固件程序便可直接实现端点 FIFO 与外部的数据交换。从而很好地解决了因 微处理器转发方式造成的带宽瓶颈,实现了数据的高速传输。
端点 FIFO FX2 使用数量较少的大端点缓冲区代替数量较多的小端点缓冲区 FX2 为其大端点 (EP2 、 4 、 6 、 8) 提供了双倍、三倍和四倍缓冲方式
量子 FIFO 什么是量子 FIFO ? - 数据以包的形式传输 - 接口域与 USB 域共享数据存储空间 - 多级缓冲机制保证数据平稳传输
系统硬件设计
系统软件设计
固件程序源文件列表 名称描述 Fw.c 框架源程序 camera.c 摄像头固件主程序 GPIF.cGPIF 接口程序 fx2.h fx2reg.h fx2sdly.h intrins.h FX2 头文件、通用寄存器、 延时等宏定义文件 ezusb.lib 目标库链接文件 dscr.a51 描述符源文件
固件程序设计 固件程序负责完成两项任务: - 响应主机的枚举请求,配置 设备信息 - 控制外部设备数据传输 TD_Init() - 初始化用户的全局状态变量 - 配置端点及 I/O TD_Poll() - 循环调用,执行 GPIF 波形 - 读取外部 CMOS 图像数据 DR_VendorCmnd() - 主机发送自定义命令控制字
通用可编程接口 GPIF 什么是 GPIF ? - 通用可编程接口 GPIF 实质上是一个对端点 FIFO 的内部主控制器,同时也对外部设 备的工作时序(包括读、写操作)进行控制。如果没有 GPIF ,在 FX2 与外部设备之 前还必须有其它的产生工作时序的接口电路,如 CPLD 。 GPIF 的强大性能 -GPIF 可用于在 FX2 与外部 ASIC 或微处理器之间建立握手连接,它具有足够强的能力 来直接实现诸如 ATAPI(PIO 和 UDMA) 、 EPP 并行接口和 Utopia 等接口协议。例如, FX2 能够单片实现 USB 与 IDE 硬盘驱动器或 CF 卡之间的接口。 如何进行 GPIF 波形设计? -GPIF 波形可由 Cypress 公司提供的 GPIF Designer 工具进行直观的设计,设计好后的 波形可导出为 c 文件供固件程序调用
GPIF 结构框图 内部或外部提供的时钟 IFCLK 6 个可编程控制输出 CTL[5:0] 9 条地址输出线 GPIFADR[8:0] 6 个外设输入状态信号 RDY[5:0] 双向 8 位或 16 位数据总线 FD[15:0]
GPIF 波形设计
Flow State 为了高效地处理来自外部设备的突发数据, GPIF 在 FIFO 模式传 输中采用了一种叫做 Flow State 的特性。 Flow State 是这样一种 机制,它通过使用一套区别于决定态 RDY 逻辑的独立的 RDY 逻辑 ( 称之为流逻辑 ) 来实现 GPIF 对数据传输开关的有效控制 由于它可实现在每个 IFCLK 的上升沿和下降沿触发数据传输,因 此,一个运行于 48MHz 系统的 16 总线接口可通过 GPIF 引擎实现 高达 96MB/s 的突发数据传输 IFCLK 数据总线
Flow State GPIF 采用 SLAVE 模式 采用 CMOS 的行有效信号 L_Valid 作 为 Flow State 触发信号 数据传输在上升沿时触发
驱动程序及应用程序设计 FX2 驱动程序 ezusb.sys 是 CYPRESS 公司提供的通用驱动程序。用户只需稍加修 改或不需任何修改即可使用该驱动程序,本文根据实际系统需要,对其稍 作修改后编译生成 usbcam.sys 。 主机应用程序是图像采集传输系统的控制中心,它由 VC++6.0 MFC 编程实现 其主要功能有: - 检测 USB 设备 - 查看设备描述符及配置描述符 - 开启及中止图像数据采集 - 图像的实时呈现 应用程序在与一个设备通信之前,首先通过调用 Win32 函数 CreateFile() 来取 得访问设备驱动程序的句柄。然后用户程序使用 Win32 函数 DeviceIoControl() 来提交 I/O 控制码 (IOCTL) ,以此实现对外部设备的控制。
应用程序界面 MFC 多线程技术 GDI 绘图 图像呈现区域 用户控制区域
系统整体图 系统板 主机应用程序
系统测试 —— 速度测试 图 4-2 接收固定大小数据传输速度测试 图 4-3 连续数据采集传输速度测试
系统测试 —— 图像测试
总结 深入了解了 USB2.0 技术,并将其与本专业实际需要要结合设计了一个基于 USB 控制器的图像传输系统。 完成了 USB2.0 控制芯片 CY7C68013 及 CMOS 图像传感器的应用电路设计。熟 练掌握电路原理图设计、 PCB 板的制作、焊接以及电路调试的整个过程。 编写了 CY7C68013 的固件程序。采用图形化设计工具 GPIF Designer ,直观地 设计出了系统所需的 GPIF FIFO 读写波形,实现了对 CMOS 图像传感器工作时 序的控制以及图像数据的高速传输。 利用 Microsoft Visual C++6.0 编写了简单的客户端应用程序,实现了 CMOS 图 像数据的呈现。
谢谢各位评审老师! Thanks For Your Attention !