设计应用

基于CY7C68013A的USB2.0高速接口设计

作者:赵 林, 孟令军, 于 磊, 张 园
发布日期:2014-03-25
来源:来源:电子技术应用2014年第1期

    USB(Universal Serial Bus)是一种通用串行总线,主要用于USB主机和USB设备的通信。USB接口以其快速、即插即拔、接口规范统一及使用方便等优点成为现代数据传输的发展趋势[1-2]。虽然USB2.0接口最高可达到60 MB/s(480 Mb/s)的传输速度,但是目前多数USB2.0设备的传输速度通常低于30 MB/s,难以满足某些系统对高速数据传输的需求,如高清图像、高清视频的实时采集。本文所设计的USB2.0传输速度可达约49 MB/s,满足了高速数据传输的要求。
1 芯片介绍
    CY7C68013A芯片是赛普拉斯开云棋牌官网在线客服公司USB2.0控制器中的旗舰产品,单片集成USB2.0收发器、智能串行接口引擎和增强型8051微处理器,16 kB代码/数据RAM,4 kB FIFO,可配置为2倍、3倍和4倍缓冲区,一个可编程GPIF接口,支持USB2.0协议规定的控制传输、同步传输、中断传输以及批量传输。支持速率为12 Mb/s的全速传输和速率为480 Mb/s的高速传输[3-4]。
2 接口设计
2.1 硬件连接

 采用ALTERA公司CycloneIII系列的FPGA芯片作为主控器, CY7C68013A工作在SLAVE FIFO模式, 内部的CPU不参与数据传输,FPGA直接对芯片内部FIFO进行读取,硬件连接如图1所示,各信号功能如表1所示。

2.2 固件设计
    为了缩短开发周期,赛普拉斯开云棋牌官网在线客服公司为用户提供了固件框架,用户只需在此固件的基础上进行修改即可实现二次开发。固件的工作流程为:上电复位后,首先初始化全局变量,然后调用TD_Init()函数来配置传输所用到的端点和FIFO,初始化用户自定义变量。使能中断后,CPU进入循环中,每次循环都调用一次TD_Poll()函数,用户程序放在此函数中。需要用户修改的函数是TD_Init()和TD_Poll()。
    CY7C68013A内部集成8个512 B缓冲区,有12种配置方法。为了实现高速传输,本设计用到所有缓冲区,设置成2个端点:端点2为输出端点,端点深度4×512 B;端点6为输入端点,端点深度4×512 B。具体代码如下:
void TD_Init( void )
{
    CPUCS=0x12;                //CPU工作时钟为48 MHz
    IFCONFIG=0x43;        //同步SLAVE FIFO工作模式,
                        同步时钟由FPGA提供,频率为
                        48 MHz
    SYNCDELAY;
    EP2CFG=0xA0;        //端点2方向为OUT,4倍缓冲,
                        每个缓冲区大小为512 B
    SYNCDELAY;
    EP6CFG=0xE0;        //端点6方向为IN,4倍缓冲,每
                        个缓冲区大小为512 B
    SYNCDELAY;
    FIFORESET=0x80;                   //激活AK-ALL
    SYNCDELAY;
    FIFORESET=0x02;                         //复位端点2
    SYNCDELAY;
    FIFORESET=0x06;                      //复位端点6
    SYNCDELAY
    FIFORESET=0x00;                              //关闭AK-ALL
    SYNCDELAY;
    PINFLAGSAB=0xE6;             //FLAGB为端点6满标志
    SYNCDELAY;
    PINFLAGSCD=0xF8;              //FLAGC为端点2空标志
    SYNCDELAY;
    FIFOPINPOLAR=0x00;               //所有控制信号低有效
    SYNCDELAY;
    EP2FIFOCFG=0x11;        //端点2为自动模式,宽度
                            为16 bit
    SYNCDELAY;
    EP6FIFOCFG=0x09;        //端点6为自动模式,宽度
                            为16 bit
}
void TD_Poll( void )
{
                 //为了实现高速传输,内部低速CPU不参
                      //与数据传输,读写FIFO由FPGA来完成,
                      //此处不需代码
}
3 工作过程
3.1 写入数据

    FPGA不断检测FLAGB(端点6满信号),当FLAGB为高时,端点6非满,FPGA拉低SLWR信号,在每个IFCLK上升沿写入一个16 bit数据;当FLAGB为低时,端点6满,FPGA拉高SLWR信号,停止写数。工作流程如图2所示。

4 调试结果
    实验用Quartus II自带逻辑分析仪Signal Tap II对读写数据进行实时采样。
4.1 写入数据
 图4为写入数据的波形, FIFOADDR指向端点6,FPGA检测到端点6非满时,拉低SLWR信号,在SLWR低电平期间每个IFCLK上升沿写入一个16 bit数据。为了便于看清整体传输过程,将写入波形缩小,如图5所示。

    图5显示了一次性将512 B数据写入端点6所用的时间,约为5.3 ?滋s,突发数据传输速率为96 MB/s。在每次写入512 B数据后会有一段约为4.9 μs的空闲时间,空闲时间是主机用来处理数据的时间,即是主机而不是CY7C68013A限制着传输速度。由突发传输阶段和空闲阶段可以算出平均写入数据的速率约为49.8 MB/s。
4.2 读出数据
    图6为读出数据的波形,FIFOADDR指向端点2,FPGA检测到端点2非空时,拉低SLRD和SLOE信号,在SLRD低电平期间每个IFCLK上升沿读出一个16 bit数据。为了便于看清整体传输过程,将写入波形缩小,如图7所示。
    图7显示了从端点2一次性读出512 B数据所用的时间,约为5.3 ?滋s,突发数据传输速率为96 MB/s。在每次读出512 B数据后会有一段约为5.1 ?滋s的空闲时间,空闲时间是主机用来处理数据的时间,即是主机而不是CY7C68013A限制着传输速度。由突发传输阶段和空闲阶段可以算出平均读出数据的速率约为48.9 MB/s。

 

    本文阐述了一种高速USB2.0接口的整体设计过程,充分利用了USB2.0带宽,读写速度可达49 MB/s。实践表明,该接口可应用于高清图像、高清视频的实时采集系统中。
参考文献
[1] Cypress Semiconductor Corporation. EZ-USB[R]. FX2LP  Datasheet.USA,2012.
[2] Cypress Semiconductor Corporation. EZ-USB[R]. Technical Reference Manual. USA, 2011.
[3] 胡晓军.USB接口开发技术[M]. 西安:西安电子科技大学出版社, 2005.
[4] 戴小俊.基于USB和DSP的数据采集系统设计[J]. 电子技术应用,2007,33(1):84-86.

此内容为AET网站原创,未经授权禁止转载。
FPGA USB2.0 CY7C68013A
Baidu
map