kaiyun官方注册
您所在的位置: 首页> 可编程逻辑> 设计应用> 基于CY7C68013A的USB2.0高速接口设计
基于CY7C68013A的USB2.0高速接口设计
来源:电子技术应用2014年第1期
赵 林, 孟令军, 于 磊, 张 园
中北大学 仪器科学与动态测试教育部重点实验室 电子测试技术重点实验室, 山西 太原030051
摘要:为了充分利用USB2.0的带宽,解决数据传输时存在的速度瓶颈问题,提出了一种基于CY7C68013A的USB2.0高速接口设计方法。采用CY7C68013A的SLAVE FIFO工作模式,芯片内部CPU不参与数据传输,FPGA设计的外部控制电路直接读写芯片内部FIFO,有效避免了内部CPU参与数据传输时带来的时间开销,从而提高了传输速度。
关键词: FPGA USB2.0 CY7C68013A
中图分类号:TP303
文献标识码:A
文章编号: 0258-7998(2014)01-0131-03
USB2.0 high speed interface design based on CY7C68013A
Zhao Lin, Meng Lingjun, Yu Lei, Zhang Yuan
National Key Laboratory For Electronic Measurement Technology, Key Laboratory of Instrumentation Science & Dynamic Measurement, North University of China, Taiyuan 030051, China
Abstract:In order to fully utilize the bandwidth of USB2.0 and solve the transmission bottleneck problem, a high-speed USB2.0 interface based on CY7C68013A is proposed in this paper. CY7C68013A runs at SLAVE FIFO mode,the chip’s CPU is not involved in the data transmission. The external control circuit is designed by FPGA which read and write the chip FIFO directly. The design effectively avoids wasting of time if the internal CPU participate in the data transmission, and increases the transmission speed.
Key words :USB 2.0; CY7C68013A; FPGA

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网站原创,未经授权禁止转载。
Baidu
map