一种基于USB的视频传输系统设计

时间:2022-09-30 02:34:46

一种基于USB的视频传输系统设计

摘要:该文设计一种基于USB的视频传输系统。首先对USB接口的工作原理进行简要介绍,在此基础上进行基于PDIUSBD12芯片的USB总线设计,并使用FPGA进行系统控制实现与PC机的信息交互。

关键词:视频传输;FPGA;USB

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)14-0216-02

1系统硬件总体架构

本系统采用P89C52控制芯片和PDIUSBD12接口芯片完成FPGA与PC之间的数据传输,数据传输部分主要包括FPGA与USB之间的数据交换和USB与PC之间的数据交换,系统总体通信结构如图1所示。

如图1所示,FPGA通过USB接口与PC进行通信,USB接口由微控制器P89C52和PDIUSBD12接口芯片组成,P89C52通过P2口与FPGA做并行数据通路。FPGA通过写选通信号控制P89C52读取数据,需要读取数据时FPGA给P89C52写选通信号有效,P89C52读取FPGA内部FIFO中的数据,数据读取完成后FPGA选通信号变为无效。

USB接口为主从模式,USB与主机的数据传输均需由主机端发起。接口控制芯片响应主机的读数请求,一旦收到主机的读数请求,接口控制芯片将数据缓冲区中的数据写入PDI-SUBD12接口芯片的端口1。PDISUBD12和89C52单片机之间的连接如图1所示(图中部分信号未列出)。

2系统软件总体设计

系统软件主要由固件程序,驱动程序,和PC端应用程序组成,其中固件程序是完成数据传输功能的核心,固件程序运行于P89C52支持USB协议。

固件程序主要由以下三部分组成:

1)初始化单片机和所有的电路;

2)主循环;

3)中断服务程序。

图2为主程序流程图,如图所示,系统上电后接口控制器(P89C52)首先进行初始化,然后向主机发出连接USB命令,主机收到接口控制器发送的连接请求后读取设备描述符,并根据设备描述符,启动相应的设备驱动程序,完成USB总线连接。然后主程序进入循环,运行控制子程序,数据传输功能由中断服务程序完成。

根据USB协议,USB数据传输均由主机发起,主机首先向PDIUSBD12发送令牌包,PDIUSBD12接收到主机发送的令牌包后向接口控制器发中断,接口控制器响应中断进入中断服务程序后,首先读PDIUSBD12的中断寄存器,判断USB令牌包的类型,然后执行相应的操作。

中断服务程序在整个程序体中非常重要,主要负责修改中断变量联合体和填充控制结构体的值,以便主循环能根据标志变量联合体中的标志变量的变化来执行具体的程序。对于总线复位和挂起改变,程序只修改其对应的标志位,但对于其它标志变化,如控制输入输出、端点输A/输出还需要执行相应的程序,以完成数据传输。PDIUSBD12收到数据包后向接口控制器发送中断请求,接口控制器响应中断,在中断服务程序中读取PDIUSBD12内部缓冲区的数据,同时清空PDIUSBD12的内部缓冲区,并修改相应的标志位。图3为中断服务程序的框图。

接口控制器通过向PDIUSBD12发送命令和数据实现与PDIUSBD12的通信。PDIUSBD12有初始化命令字、数据流命令字和通用命令字三种命令字。接口控制器首先向PDI-USBD12发送命令字,根据不同命令字的要求再发送或读出数据。本系统将每种命令字设计为命令函数,通过函数调用实现各个命令字的发送。

当接口控制器给PDIUSBD12的端点缓冲区发数据时应首先判断缓冲区是否为空,否则如果主机还没有将上一个包的数据从PDIUSBD12读走,接口控制器又将另一个包写进PDI-USBD12的缓冲区时会覆盖掉以前的数据。判断缓冲区是否为空的程序如下。

3结论

本设计方案已经经过了硬件验证,达到了预定的设计要求,实现了大数据量的实时传输且具有良好的灵活性和扩展性。

上一篇:基于B2C模式下的中药材交易平台设计与开发 下一篇:葛亮他的文字里传统与当代对接