利用FIFOs实现USB与DSP的高速数据传输
Using FIFOs to Realize the High-Speed Data Transmission between
USB and DSP
(湖南城建职业技术学院)杨俊峰
Yang Junfeng
摘要:利用两片SN74V245实现了TMS320C6201与EZ-USB FX2LP系列芯片CY7C68013A的连接,介绍了TMS320C6201的外部存储接口(EMIF)和CY7C68013A的通用可编程接口 (GPIF)以及它们与SN74V245的连接方案,深入研究了GPIF的波形描述符编写和固件程序开发。
关键词:TMS320C6201; SN74V245; CY7C68013A; GPIF; 数据通信 中图分类号:TP334 文献标识码:A
ABSTRACT: Using two SN74V245 FIFOs as an interface realized the connectivity between TMS320C6201 and CY7C68013A. TMS320C6201,s External Memory Interface (EMIF)and CY7C68013A,s General Programmable Interface (GPIF) are introduced, their hardware connections to SN74V245 are illustrated also. Creating waveform descriptors and development of programming Firmware are thoroughly researched.
Key words: TMS320C6201; SN74V245; CY7C68013A; GPIF; data communication
0 引言
在一些基于DSP的高速、高精度信号采集及处理领域中,需要将处理后的数据经USB传输给PC机进行分析、显示,同时PC机需要将控制命令通过USB发送给DSP。但若USB与DSP直接相连可能导致数据的传输堵塞,利用两片FIFO(first in first out SRAM)芯片来实现它们之间的双向通信可以有效地避免这一问题。文中的数字信号处理器(DSP)、FIFO和USB控制器分别选用TI公司的TMS320C6201、SN74V245和Cypress公司的CY7C68013A,SN74V245是一种高速的FIFO存储器,它的时钟频率高达133MHz,具有4096*18bit的数据空间,提供了与TI公司的TMS320TM DSPs的无缝接口[1]。EZ-USB FX2LP系列芯片CY7C68013A具有增强型8051的CPU系统以及与8051兼容的指令系统,集成了USB2.0协议的微处理器[2],与EZ-USB FX2系列芯片CY7C68013相比具有功耗低的优点,它提供了从属FIFO和GPIF两种接口模式来实现与外部逻辑的连接,在GPIF接口模式下,EZ-USB FX2LP可由软件编程输出读写控制波形,从而实现对任何总线接口的访问。
1 TMS320C6201、CY7C68013A和SN74V245的硬件连接
TMS320C6201的外部存储接口(External Memory Interface, EMIF)具有非常强的接口能力,利用它可实现与外部FIFO的直接连接。CY7C68013A的通用可编程接口(General Programmable Interface GPIF)模式是一种内部主机控制模式,使用内部集成的高效控制逻辑来取代外部的微控制器进行EZ-USB端点FIFO的控制。在EZ-USB内部,所谓的GPIF内核是一个可编程的状态机。EZ-USB使用4个用户定义的波形描述符来控制状态机,从而实现FIFO的读写操作以及单字节的数据读写操作。通过TMS320C6201的EMIF和CY7C68013A的GPIF接口可成功实现TMS320C6201、SN74V245和CY7C68013A的硬件连接。其连接框图如图1所示。
图1中TMS320C6201 EMIF的CEn空间信号与输入FIFO的读使能REN/和输出FIFO的写使能WEN/相连;读允许引脚ARE/和输出允许引脚AOE/分别与输入FIFO的读时钟引脚RCLK和输出允许引脚OE/相连;写允许引脚AWE/与输出FIFO的写时钟引脚WCLK相连;TMS320C6201的中断信号INTx/、INTy/与FIFO的半满标志HF/相连,对于输入FIFO,当
FIFO中数据量大于其容量一半时,HF/通知DSP产生中断以便读取数据,对于输出FIFO,HF/表明FIFO中有剩余空间,DSP可向其写入数据。
TMS320C6201(EMIF)CEnAREAOEINTxED15:ED0SN74V245RENRCLKOEHFQ15:Q0WCLKWENFFD15:D0RSRCLKRENOEEFQ15:Q0RSCY7C68013AIFCLKCTL0RDY1FD[15:0]PA2GPIFCTL1CTL2RDY0SN74V245AWEINTyWENWCLKHFD15:D0 图1 TMS320C6201、SN74V245和CY7C68013A的连接图
图1中CY7C68013A GPIF的IFCLK连接SN74V245的读写时钟WCLK和RCLK引脚。当WEN/有效时,在每个WCLK的上升沿将数据写入外部FIFO,当REN/和OE/有效时,在每个RCLK的上升沿将数据从外部FIFO中读出;FD[15:0]连接SN74V245的输入数据总线D15:D0和输出数据总线Q15:Q0,本文采用的是16位的总线宽度;CTL0连接SN74V245的写使能引脚WEN/。当WEN/引脚为低电平时,在每个WCLK的上升沿将数据写入外部FIFO;CTL1和CTL1分别连接SN74V245的读使能引脚REN/和输出使能引脚OE/。当REN/和OE/同时为低电平时,在每个RCLK的上升沿将数据从外部FIFO中读出;RDY0连接SN74V245的空标志引脚EF/。如果外部FIFO为空,则EF/为低电平,GPIF使用这个状态标志来控制读数据;RDY1连接SN74V245的满标志引脚FF/。当外部FIFO为满的时候,FF/为低电平,GPIF使用这个状态标志来控制写数据;PA2连接CY7C4265的复位引脚RS/。PA2引脚作为通用I/O引脚使用,用于在进行数据读写之前首先复位外部FIFO。
2 GPIF波形图设计
GPIF使用波形描述符来操作FIFO,可以将FIFO读波形和FIFO写波形分配到任何一个EZ-USB的端点FIFO上。GPIF状态机产生特定的触发和握手信号来和外部接口进行通信。Cypress公司为其EZ-USB系列芯片提供了完善的GPIF波形编辑设计工具,即GPIF Designer,利用它可以简化GPIF波形图的设计过程。在GPIF模式下,每个GPIF波形描述符可以定义7个工作状态。状态之间的转换表示了工作的流程。在每个状态下GPIF可以编程用于: 1驱动或者悬空CTL输出引脚。 ○
2采集或者驱动FIFO数据总线。 ○
3自动增加GPIF地址线上的地址值。 ○
4自动增加FIFO指针,指向当前数据。 ○
5触发GPIFWF中断。 ○
EZ-USB可以支持4个波形描述符,每个都可以配置为4种传输类型之一。这4种传输模式为:单字节写、单字节读、FIF0写和FIFO读。FIFO读、写数据传输方式是一种高效的GPIF传输模式,使用FIFO读、写数据传输方式可以在EZ-USB的GPIF与外部逻辑之间实现高速的数据传输。图2和图3分别为FIFO读、写数据的波形描述符,它们定义了4个状态S0、S1、S2、S3,其中写数据的波形描述符中每个状态的意义如下:
1S0态是一个决定态,它检测外部FIFO的满信号FF,如果为低,表明FIFO中数据已满,不能 ○
[3]
[3]
进行写操作,跳入IDLE态;如果为高,可以进行写操作,跳入S1态。
2S1态是非决定态,它将写信号WEN/拉低两个IFCLK时钟周期,保证有足够的时间将内部端○
点FIFO中的数据写到数据总线上。
3S2态是非决定态,将EZ-USB数据总线上的数据转移到外部FIFO。 ○
4S3态是一个决定态,它检测满信号FF,但无论它是何值GPIF都将跳转到IDLE态,结束此波○形。
图2 FIFO读数据波形描述符
图3 FIFO写数据波形描述符
3 固件程序设计
设置完FIFO读数据的波形图后,还需要在固件程序中进行初始化及触发GPIF等操作。固件程序中执行FIFO写数据传输的步骤如下: 1初始化GPIF配置寄存器和波形描述符。 ○
2EZ—USB固件程序中检测传输是否完成,当传输完成的时候,GPIFTRIG.7(DONE位)将○
被置1。
3在GPIFTRIG寄存器中,设置RW位为1并且对EP[1:0]加载适当的值,以选择合适的端○
点FIFO来提取数据,用于向外部FIFO写数据。
4将数据从FIFO转移到端点。有两种方式:当AUTOIN=1时,EZ-USB自动将数据从USB○
转向FIFO数据总线;当AUTOIN=0时,固件程序中手动进行数据转移,此时需要写入