DSP6416的主机接口(HPI)与USB接口的连接与设计 _技术频道
2010-07-28 11:15:50 作者:液晶屏 来源:技术 浏览次数:0 网友评论 0 条
DSP6416的主机接口(HPI)与USB接口的连接与设计
作者:王 申 陈 曦 于宏毅
摘 要:本文以基于3G 技术的移动自组织网(MANET)的研究为背景,用现在较为流行的高速USB接口与DSP的主机接口HPI相连接,成功地解决了MANET移动终端与主机之间的数据交换问题。本文在介绍了TI公司DSP芯片TMS320C6416和CYPRESS公司的USB接口控制芯片CY7C68013特点以后,介绍了两者连接的一种硬件设计以及USB芯片的固件的编写和调试。
关键词:移动自组织网;HPI接口;USB接口;固件;波形描述符
一、引言
当前,数字信号处理器(DSP) 芯片以其强大的运算能力在通信、电子、图像处理等各个领域得到了广泛的应用。使用DSP的系统可以按处理器使用的数目分为单处理器系统和多处理器系统。单 DSP的系统尽管结构简单,但系统的功能将不可避免地有所限制。在使用DSP的多处理器系统中,由于DSP的控制功能不是非常强大,因此往往把DSP作为一个相对独立的子系统专门负责复杂的运算,而另外使用一个主机(PC机或是单片机)对整个系统的运行进行控制。所以,在使用DSP的多处理器系统中,主机 (单片机、PC机或另一个DSP芯片)与子系统 DSP的数据交互就成为应用系统设计中必须考虑的重要问题。
在基于3G 技术的移动自组织网的研究项目中需要设计一个MANET移动终端,该移动终端由一台PC(或PDA)和一个无线收发设备组成。无线收发设备完成物理层和 MAC层的数据处理,其中DSP完成部分物理层的解调功能和MAC层的协议数据处理功能;而网络层和网络层以上的部分由PC机或PDA承担。这样就需要设计一个接口完成DSP与主机之间的数据交互。由于USB接口具有热插拔、速度快(包括低、中、高模式)和外设容量大(理论上可挂接127个设备)等特点,使其成为PC机的外围设备扩展中应用日益广泛的接口标准。因此我们选择了USB作为无线收发设备和PC机之间的接口方式。结合MANET移动终端的实际需要,我们设计了DSP芯片与PC机之间进行通信的接口。该接口通过TI公司的TMS320C6416(7E3)DSP芯片(以下简称DSP6416)的 HPI-16总线与CYPRESS公司的FX2系列的CY7C68013相连,可使PC机通过USB2.0接口实时地与DSP进行数据交互,从而将DSP 从数据传输中解放了出来,解决了MAC层与网络层之间的数据交互问题。
二、背景知识
1.USB协议
USB总线是INTEL、NEC、MICROSOFT、IBM等公司于1995年联合提出的一种串行总线规范。为了适应高速数据传输的需要,这些公司又于2000年4月在原协议1.1版本的基础上制定了USB2.0协议规范,使其传输速度可高达480Mbps。
由于USB协议非常复杂,开发者不可能直接在USB底层协议的基础上进行开发。目前,市场上已经有许多对USB协议进行了封装的接口芯片,如:National Semiconductor公司的USBN9602、Phillips公司的PDIUSBD12等。本项目中选用的是CYPRESS公司带单片机内核的FX2系列USB接口芯片CY7C68013。
2.芯片介绍
(1)DSP芯片
DSP6416是 TI公司的TMS320C6000系列DSP中一款性能极高的定点DSP芯片。它是TI公司基于第二代、高性能的超常指令集结构(VelociTI.2TM)而研发的一款DSP。在工作时钟为720 MHz时,其最高处理能力能够达到5 760 MIPS,并且具有极强的并行处理能力,因此在高速DSP处理应用领域中具有不可替代的卓越性能。
(2)DSP芯片的主机接口(HPI)
DSP6416芯片的主机接口是一个16/32 bit宽度的、由主机直接访问DSP存储空间的并行端口。HPI与DSP存储空间的连接是通过DMA或者增强性DMA(EDMA)控制器完成的。借助专门的地址寄存器(HPIA)、数据寄存器(HPID)和控制寄存器(HPIC),通过DMA或EDMA辅助通道,主机可对DSP的存储空间进行直接访问。
(3)USB接口芯片
本项目中采用的USB接口芯片CY7C68013属于Cypress公司的FX2系列产品。EZUSB FX2是Cypress生产的世界上第一个USB2.0的集成微控制器。其性能详见参考文献[3]。
CY7C68013与外设有主/从两种接口方式:可编程接口GPIF和 Slave FIFO。可编程接口GPIF是主机方式,可以由软件编写读写控制时序,灵活方便,几乎可以和所有8/16 bit接口的控制器、存储器和总线进行无缝连接。Slave FIFO方式是从机方式,外部控制器可以像对待普通FIFO一样对FX2内的多个缓冲区进行读写。Slave FIFO接口也可以灵活配置以适应不同的需要。在本项目的设计中,我们采用的是可编程接口GPIF方式。
三、接口的设计与调试
1.基本工作流程
在本系统中,无线收发设备中的DSP 与主机之间的接口主要由3个部分组成:主机(能够支持USB2.0协议的PC机),内含一个51核及高速缓存的USB接口芯片(CY7C68013)和高速DSP芯片(TMS320C6416-7E3),如图1所示。其基本工作流程是:当USB设备插入计算机时,计算机和USB设备之间会产生一个枚举过程:计算机检测到有设备插入,自动发出查询请求;USB设备回应这个请求,送出设备的Vendor ID和Product ID;计算机根据这两个ID装载相应的设备驱动程序,完成枚举过程。枚举过程结束后即可以进行数据的交互,在接收数据即DSP有数据要传送给PC机时,它首先向FX2发送一个硬件中断信号,FX2接收到该中断后,启动接收程序,并通过HPI接口设置DSP6416的HPIC寄存器的HINT标志位(将其置 1),使DSP下一次仍然可以通过该位发出中断;然后通过端口6将固定长度(512字节)的数据读入FIFO;在端口6读取数据的过程中为了保证较高的传输速度,FX2中的CPU是不干预该过程的,当FIFO中的数据达到一定数量后FX2自动将数据打包传送给USB总线;在发送数据即PC机有数据要发送时,它将数据包直接传给FX2,FX2收到后,按指定的字节长度将数据读到发送端口2的FIFO中,然后自动启动GPIF,将数据传送给DSP,接下来 FX2通过HPI接口设置DSP6416的HPIC寄存器中的DSPINT位(将其置1),向DSP6416发起中断,通知DSP6416有数据包到。同样,为保证较高的传输速度,在发送数据时FX2的CPU也是不进行干预的。

2.硬件电路设计及原理
由于DSP的HPI接口是主从模式的,且DSP作为从模式,因此CY7C68013须以主模式参与连接,这样我们选择可编程控制接口GPIF方式与DSP HPI的接口进行连接。电路设计原理图如图2所示。
图中两个芯片的管脚说明请参见参考文献[2]和[3],具体的电路连接方面不是很复杂,但是有几点需要说明:
(1) 该电路中,我们采用的是CY7C68013的56 SSOP管脚封装的芯片进行设计的,但是建议在固件和驱动没有进行调试或没有调试经验的情况下最好使用100或128管脚封装的芯片,因为这两种封装的芯片带有串口,这在固件和驱动的调试中可以通过串口进行单步调试,这样会在调试过程中减少很多不必要的麻烦;
(2)FX2有3种启动后的固件加载方式:① 通过主机的驱动进行加载;②通过I2C总线外挂E2PROM加载;③通过外挂存储器ROM进行加载。我们在该设计中采用的是第一种方式,所以SCL和SDA两个管脚应该上拉;
(3)为了更好地与各种不同的接口进行无缝连接,CY7C68013提供了多个输入和输出控制管脚,这些管脚在读写时的时序都可以在固件中编程实现,使得GPIF方式使用起来极为方便灵活。在该设计中,HCNTL[0-1]和HINT这些输入控制逻辑信号连接至PA0~PA2输入管脚上;HHWIL、 HDS1和H/#R,这些输出逻辑信号连接至CTL0~CTL2输出管脚上;HRDY与68013的RDY0专门与Ready信号连接的管脚相连;
(4)由于没有地址和数据总线复用的情况,所以DSP6416的#HAS管脚应上拉;
(5)DSP6416的HPI接口有32 bit和16 bit两种工作模式,其工作模式的选择是通过芯片在复位时读取HD5管脚的电平来决定的。当HD5为高电平时,DSP工作于HPI32模式下;当HD5 为低时,DSP工作于HPI16模式下。为使DSP工作于HPI16模式,应将HD5管脚下拉。
3.固件程序设计与调试
(1)固件的设计
固件是在USB 接口芯片加电后,由其它设备加载到CY7C68013中并在其中运行完成接口数据传送功能的一段程序。在本接口中采用的是由PC机通过USB接口加载固件的方式(在前面已经提到)。固件的功能主要包括:①加载后于主机驱动配合完成接口设备的第二次枚举;②处理与DSP6416的HPI接口的数据交换;③处理与主机之间的USB接口的数据交换。
在68013芯片中数据的交换是通过不同的数据端口来实现的。FX2一共有十几个端口可以使用,其中0端口是控制端口,用于传送主机驱动命令;
端口1有2个,一个是输入端口一个是输出端口;余下的是几个通用的数据端口,端口2、4、6、8,这几个端口的性质(包括输入或输出、端口缓冲区大块数和大小等)参数需要在固件中进行配置的。本例中的端口配置如表1所示。
固件程序的编写主要分几个大的模块:
1) 主模块,主要完成设备的初始化、固件运行后的“重新枚举”、进入循环不断接收PC机发送的一些命令并等待数据的传送;
2) 数据收发模块,主要完成初始化数据传送端口,并且处理0端口发出的命令。当输出端口有数据时把数据通过GPIF按照给定的时序把数据传送到预先指定的 DSP存储空间,并向DSP发出中断,通知它有数据包到;当收到DSP有数据要传入的中断时,启动GPIF的HPI接收时序,把DSP中的数据接收到输入端口的缓冲区,并通知PC机,PC机通过USB接口将数据取走,接着清除DSP中HPI端口的控制寄存器的中断标志位;
3) GPIF模块,主要是对DSP6416 HPI接口的时序进行编程,使得自己与DSP之间的接口时序完全与DSP HPI的时序相一致,这种时序的编程具体来说就是设定一个个波形描述符,每个波形包含有S0~S6七个有效状态和一个空闲状态。一共有4个波形描述符:两个单字的写时序(前后两个字的写时序不一样)、一个批量数据的读时序、一个批量数据的写时序。GPIF波形描述符的编程一般使用Cypress公司提供的 GPIFTOOL工具进行配置;
4)设备描述模块,该模块唯一的功能就是提供主机启动在重新枚举设备时所需要的VID和PID以及其它一些必要的设备描述符。这个模块的格式是基本固定的,除了VID和PID外一般不需要改动。
在固件的编写中关键的是GPIF波形描述符的编写。波形描述符的编写首先必须弄清楚HPI的读写时序,设置好输入和输出控制信号。
以下以HPI16接口的批量数据读时序为例,列出部分波形描述符的源代码(包括控制信号的设置以及时序的编程)供大家参考。GPIF波形图的具体编程参见参考文献[4]。

固件程序框图如图3所示。
(2)固件的调试
一般固件的调试方法很多,我们采用的是用Cypress公司提供的EZ USB Control Panel与TI公司的CCS加上DSP的仿真器联合进行调试的。如果用100或128管脚的CY7C68013芯片,可以通过串口用Keil C进行固件加载后的单步调试,这样会方便很多。
调试的大致过程为:首先启动Control Panel和CCS,然后在CCS中将预先约定的数据收发缓存去清零,接着通过Control Panel下载固件到CY7C68013中,重新枚举后,在Control Panel中通过0端口设置所要传输的字节数和要传输的数据在DSP中的首地址,接着向端口2发送数据,在CCS中通过内存地址查看工具查看从首地址开始的内存地址内容,看DSP对应的地址中是否有刚才写入的数据。如果有,说明固件的数据发送已经没有问题了。接着再通过端口0设置读入首地址,在CCS中运行HPI中断出发程序,通过DSP向FX2发起中断,固件收到中断后会自动运行中断服务程序,从端口6中读入一批长度为512字节的数据,如果读入的数据与DSP中对应的地址中的数据一致说明固件的数据接收也通过了。剩下的工作就是在和驱动的调试中与驱动之间的传输协议的调试了。
四、结束语
在基于TD -SCDMA的MANET移动终端的具体实现中,用CY7C68013芯片将DSP的HPI与主机的USB接口进行连接,既很好地利用了该芯片接口可编程灵活和外围电路简单的特点,而且也提高了数据传输的稳定性和速度。运用DSP芯片提供的HPI接口进行MAC层与网络层的数据传送,使得DSP基本无需参与这部分数据的传输,从而减轻了DSP的负担。目前,该技术已经成功的应用到具体项目中,并取得了良好的效果。
参考文献
[1]TMS320C6000 DSP Host Port Interface(HPI)Reference Guide (Literature Number:SPRU578)[Z].Texas Instruments Incorporated,2003.
[2] TMS320C6414, TMS320C6415, TMS320C6416 Fixed-Point Digital Signal Processors (Revised) [Z].Texas Instruments Incorporated,2003 .
[3]CY7C68013EZ-USB FX2TMUSB Microcontroller High-speed USB Peripheral Controller[Z].Cypress Semiconductor Corporation,2002.
[4]EZ-USB FX2 Technical Reference Manual[Z].Cypress Semiconductor Corporation,2002.
[5]许永和. EZ-USB FX 系列单片机USB外围设计和应用[M]. 北京:北京航空航天大学出版社,2002.
相关文章
[错误报告] [推荐] [收藏] [打印] [关闭] [返回顶部]


已有