当前位置: 东星资源网 > 高考资料 > 高考体检 > 正文

【DSP的USB仿真模块的研究与设计】USB模块

时间:2019-02-09 来源:东星资源网 本文已影响 手机版

  摘 要:在DSP技术飞速发展及其广泛应用的大背景下,本文提出了基于USB2.0接口的仿真模块,其设计理念是使用简便,系统可移植性高,既可以对本身DSP板进行仿真,还可以对外部的DSP板进行仿真。本文主要阐述仿真模块系统硬件结构、设计思路及实现方案,包括芯片之间的引脚连接、传输的信号类型及作用等。
  关键词:仿真;USB;DSP
  0 引言
   要实现USB2.0接口的仿真功能,首先要解决USB 设备驱动程序的安装调试问题。USB是一种应用在计算机领域的新型接口技术,对每一个新接的USB设备,PC机都会检查然后为其安装合适的驱动,如果没有合适的驱动程序,就需要用户自己安装合适的驱动程序。其次,处理USB设备请求。本文提出设计一种基于USB2.0接口的DSP仿真功能模块,从方便使用出发,定位在便宜的价格,以高速传输为核心,设计出一款大众化,可对各种自制的DSP目标板进行仿真的DSP仿真模块。
  1 硬件结构设计
   整个仿真模块的硬件结构主要以USB2.0控制器CY7C68013和JTAG接口扫描芯片ACT8990为核心,由24C01芯片、74LS244芯片等组成,整个仿真模块的系统结构图如图1所示。
  
  图1 仿真模块系统结构图
   上面的系统结构图说明如下:
   1)USB2.0接口的一对差模信号D+/D-与USB2.0控制器68013芯片上的D+/D-相连接,实现该仿真模块与PC机之间的数据传输;
   2)24C01芯片主要是存储对CY68013芯片的配置参数文件,引脚SDA、SCL与CY68013芯片上对应的SDA、SCL连接。其中SDA引脚是数据线,SCL是时钟信号线,都属于IIC接口。
   3)CY68013与ACT8990的连接。
   数据控制线:选用PB0-PB7,PD0-PD7引脚,分别与ACT8990的DATA0-DATA15引脚连接,构成16位双向数据总线,实现数据的读取或写入到TBC寄存器。引脚PB0-PB7、PD0-PD7都是复用引脚,并且功能由IFCONFIG[1:0]选择。地址控制线:本设计选用PC0-PC4充当地址引脚,分别连接至ACT8990的ADRS0-ADRS4引脚,形成的5位地址总线,通过选择地址在指定的内存单元(TCB寄存器)读出或写入数据。
   4)ACT8990、74LS244与JTAG接口的连接。
   芯片74LS244将ACT8990与DSP隔离开来,从而保护ACT8990避免受到DSP传输的高电压伤害。ACT8990通过74LS244与JTAG接口连接。
   整个模块电源由计算机的USB口提供,该仿真模块通过下方JTAG接口与DSP目标板的JTAG接口连接,通过左侧的USB接口与PC机连接,实现与CCS仿真软件的数据通信。
  2 软件结构设计
   整个仿真模块的软件结构,主要包括USB通信技术处理程序;USB接口与DSP仿真软件CCS的连接;USB接口与68013连接,主要是通过加载在24C01的配置文件实现的,即对CY68013进行配置,当连接上PC机时,计算机得以识别USB仿真设备;USB2.0控制器CY68013与ACT8990的连接及ACT8990与DSP连接,主要通过JTAG接口,安装加载驱动程序实现。
  3 USB控制器通信程序
  3.1 描述符文件
   描述符文件定义了系统使用的各种USB描述符:设备描述符、配置描述符、接口描述符、端点描述符和字符串描述符。本文使用USB2.0版本,同时支持全速和高速模式,所以分别定义了在全速传输模式和高速传输模式下工作的两种配置描述符,高速配置下块端点的最大数据包长度初始化为512字节,而全速配置下为64字节。
  3.2 用户请求处理程序文件
   用户请求处理程序文件包含各种用户功能函数(如TD_Init、TD_Pol、DR_VendorCmndl等)和各种中断函数的定义与实现,他们共同实现了本仿真模块的功能。
   1)TD_Init(void)函数,设备启动时调用,初始化设备代码,完成传输数据前的处理,如IO口配置、时钟、端点、FIFO的选择等。该函数首先设置CPU时钟频率为48MHz,然后设置EZ-USB FX2工作于从属FIFO模式,并配置端点工作状态。程序最后使FX2的双自动指针特性和远程唤醒功能。
   2)void TD_Poll(void)事务处理函数,完成用户所指定的功能,将被固件主程序循环调用。ACT8990将扫描获取的数据传送给USB控制器68013处理,即如何将数据传输到PC机上的DSP仿真软件CCS中。本文中,该函数用于数据传输,数据通过端点2与端点6传送给PC机。首先,查询端点2的EMPTY标志,如果不为1,说明有数据,然后查询端点6的FULL标志,如果不为1,说明端点6 FIFO为空,可以接收数据。当检查到端点2 out FIFO有数据且端点6 IN FIFO为空时,就可以将EP2的数据“copy”到EP6。使用自动指针直接更换二者的指针,实现数据传送。
   3)DR_VendorCmnd函数,负责处理上位机发出的供应商自定义请求,以控制整个硬件系统的运行。本文中定义VR_NAKALL_ON请求来通知控制器开始工作,使用VR_NAKALL_OFF请求来通知系统停止工作。该函数的具体实现如下:
   BOOL DR_VendorCmnd(void)
   { BYTE tmp;
   switch (SETUPDAT[1])
   {case VR_NAKALL_ON: //通知系统开始工作
   tmp = FIFORESET;
   tmp |= bmNAKALL; SYNCDELAY;
   FIFORESET = tmp;
   break;
   case VR_NAKALL_OFF: //通知系统停止工作
   tmp = FIFORESET;
   tmp&=~bmNAKALL;SYNCDELAY;
   FIFORESET = tmp
   break;
   default: return(TRUE);
   }
   return(FALSE);
   }
  3.3 USB设备请求处理文件
   USB设备请求处理程序文件是整个USB的固件根本,负责处理主机发出的各种USB设备请求。USB协议方面的通信都是在这里完成的,包括上电枚举、重枚举、唤醒以及调用用户自己的程序和控制命令等,实现流程图如图2所示。
  
  图2 USB设备请求处理实现流程图
   USB设备请求处理程序首先初始化所有内部状态变量,然后调用TD_Init用户函数进行初始化,并打开中断,最后固件程序开始列举USB设备,直到在端点0上接收到SET-UP令牌包为止。一旦接收到SETUP令牌包,将重复执行下面任务:
   1)调用函数TD_Poll,完成用户指定任务,即数据传输。
   2)判断是否有USB设备请求(SETUP令牌包)。如果有,则调用ParseControlTransfer函数进行相应处理,否则继续向下执行。
   3)检测USB总线是否空闲。如果空闲,则调用TD_Suspend,以交由用户处理。在TD_Suspend返回真值后,它将调用EZUSB_Susp函数,让8051处于空闲状态。这时,只有USB总线活动或芯片WAKEUP#管脚活动,才能将8051重启。
   4)8051被激活后,固件程序将首先调用EZUSB_Resume函数,以使8051从空闲状态中恢复出来,然后再调用TD_Resume函数来处理用户指令。
  4 小结
   整个仿真模块由CY7C68013、ACT8990、24C01及74LS244组成。由74LS244连接外部JTAG接口,ACT8990与74LS244连接通过JTAG接口对外部数据进行扫描,再将数据传送给CY7C68013处理通过USB接口与CCS软件连接进行仿真。
  
  参考文献:
  [1] 汪安民.基于USB2.0接口的DSP仿真器技术.单片机与嵌入式系统应用,2005,10.
  [2] 张实华、伍乾永.一种基于JTAG的嵌入式DSP可调试系统的设计.微电子学,2007,2.
  [3] 颜荣江.嵌入USB控制器的51系列单片机EZ-USB.单片机与嵌入式系统应用,2002,2.

标签:仿真 模块 研究 设计