开篇:润墨网以专业的文秘视角,为您筛选了一篇基于Verilog的FPGA与USB 2.0高速接口设计范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
摘 要:USB 2.0接口芯片FX2 CY7C68013工作在Slave FIFO模式下,讨论了一种以FPGA为控制核心,对其内部的FIFO进行控制,以实现数据的高速传输。该系统模块主要由USB固件程序和FPGA控制软件组成,可应用到需要通过USB 2.0接口进行高速数据传输或采集系统中。实验结果表明:系统具有数据传输准确、速度快等特点。
关键词:USB 2.0;Slave FIFO模式;FPGA;高速接口
中图分类号:TP334.7 文献标识码:B
文章编号:1004-373X(2009)01-161-03
Design of High Speed Interface FPGA and USB 2.0 Based on Verilog
YUAN Wei 1,2,ZHANG Dongyang 1
(1.College of Technical Physics,Xidian University,Xi′an,710071,China;
2.Weinan Teachers Univerisity,Weinan,714000,China)
Abstract:In this paper,high speed data transmission technology which used Slave FIFO pattern of USB 2.0 FX2 CY7C68013 under the control of FPGA is introduced.The system mainly consists of two parts of firmware design program and software of control of FPGA.It can be applied to those systems which need to transmit or acquire mass data quickly by USB 2.0 interface.The result of examination indicates that the system is exact in transmission and high in speed.
Keywords:USB 2.0;pattern of Slave FIFO;FPGA;high speed interface
0 引 言
USB (通用串行总线)是英特尔、微软、IBM、康柏等公司1994年联合制定的一种通用串行总线规范,它具有数据传输速度快,成本低,可靠性高,支持即插即用和热插拔等优点,迅速得到广泛应用[1]。
在高速的数据采集或传输中,目前使用较多的都是采用USB 2.0接口控制器和FPGA或DSP实现的[2],本设计在USB 2.0接口芯片CY7C68013的Slave FIFO模式下,利用FPGA作为外部主控制器实现对FX2 USB内部的FIFO进行控制,以实现数据的高速传输。该模块可普遍适用于基于USB 2.0接口的高速数据传输或采集中。
1 系统硬件模块设计
1.1 系统硬件框图
图1中展示了Slave FIFO方式下FX2 USB和FPGA的典型连接。其中,FD[7..0]为8位双向数据总线;FLAGA~FLAGC为FX2内FIFO的标志管脚,映射FIFO的当前状态;SLCS为Slave FIFO的片选信号;SLOE用于使能数据总线FD的输出;FIFOADR[1..0]用于选择和FD连接的端点缓冲区(00代表端点2,01代表端点4,10代表端点6,11代表端点8);SLRD和SLWR可分别作为FIFO的读写选通信号。
1.2 USB 2.0接口芯片CY7C68013
1.2.1 CY7C68013的结构特点
Cypress公司的USB FX2是第一个包含USB 2.0的集成微控制器,它内部集成了1个增强型的8051, 1个智能USB串行接口引擎,1个USB数据收发器, 3个8位I/O口,16位地址线,8.5 KB RAM和4 KB FIFO等。增强性8051内核完全与标准8051兼容,而性能可达到标准8051的3倍以上[3]。其框图如图2所示。
1.2.2 CY7C68013的工作模式
CY7C68013有Ports模式、Slave FIFO和GPIF三种接口方式[4]。
Ports模式是一种最基本的数据传输方式,其数据传输主要由固件程序完成,需要CPU 的参与,因此数据传输速率比较低,适用于传输速率要求不高的场合。
Slave FIFO方式是从机方式,外部控制器,如 FPGA,可像对普通FIFO一样对FX2的多层缓冲FIFO进行读写。FX2内部的FIFO提供所需的时序信号、握手信号(满、空等)和输出使能等。这里就是在Slave FIFO模式下实现USB 2.0接口和FPGA的数据通信。
可编程接口GPIF是主机方式,GPIF作为内部主机控制端点FIFO,可以软件编程读写控制波形,几乎可以对任何8/16 b接口的控制器、存储器和总线进行数据的主动读写,非常灵活[5]。
2 系统软件模块设计
2.1 USB固件程序设计
应用中采用异步FIFO方式,使用内部 48 MHz时钟,自动方式,固件程序采用Cypress公司提供的固件程序框架,在其初始化函数中添加了用户配置代码。该设计中异步自动从属FIFO数据传输的初始化代码如下:
void TD_Init(void)//初始化函数
{
BREAKPT&=~bmBPEN;
Rwuen=TRUE;
CPUCS=((CPUCS&~bmCLKPSD)|bmCLKPSD1);//设定40 MHz主频
IFCONFIG=0xE3; //设定IFCLK时钟为48 MHz,提供对外输出
EP1OUTCFG=0xA0;//配置端点1,OUT,批量传输
EP1INCFG=0xA0;
EP2CFG=0xA2;//配置端点2,OUT,批量传输,2倍缓冲
EP4CFG=0xA0;//配置端点4,OUT,批量传输,2倍缓冲
EP6CFG=0xE2;//配置端点6,IN,批量传输,2倍缓冲
EP8CFG=0xE0;//配置端点8,IN,批量传输,2倍缓冲
PINFLAGSAB=0x00;
//定义FLAGA为可编程级标志,FLAGB为满标志,由FIFOADR[1:0]指定
PINFLAGSCD=0x00; //定义FLAGC为空标志
WAKEUP=0xF4;
AUTOPTRSETUP|=0x01;
}
2.2 FPGA控制程序设计
CY7C68013A提供的端口FIFO的读写操作,与普通FIFO读写操作方式一样[6]。CY7C68013A为每个端口提供了“空”标志、“满”标志和“可编程级”标志。FPGA检测这些信号,用于控制读写的过程。FPGA在完成这些端口FIFO的操作时,采用verilog HDL硬件描述语言实现了FIFO的读写时序,并在ALTERA公司提供的Quartus Ⅱ 8.0开发工具中综合编译并映射到fpga中运行。
2.2.1 从属FIFO异步“读”操作
实现异步从属FIFO“读”的状态机如图3所示。其状态转移进程如下:
IDLE:当“写”事件发生时,转到状态1。
状态1:指向OUT FIFO,激活FIFOADR[1:0],转向状态2。
状态2:激活SLOE,如果FIFO空标志为“假”(FIFO不空),则转向状态3;否则停留在状态2。
状态3:激活SLOE,SLRD,传送总线采样数据;撤销激活SLRD(指针加1)和SLOE,转向状态4。
状态4:如果有更多的数据要求,则转向状态2;否则转向IDLE。
实现以上状态机的仿真波形如图4所示。
2.2.2 从属FIFO异步“写”操作
实现异步从属FIFO“写”的状态机如图5所示。其状态转移进程如下:
IDLE:当写事件发生时,转到状态1。
状态1:指向IN FIFO,激活FIFOADR[1:0],转向状态2。
状态2:如果FIFO满标志为“假”(FIFO不满),则转向状态3;否则停留在状态2。
状态3:传送总线驱动数据。为一个IFCLK激活SLWR,转向状态4。
状态4:如果有更多的数据要写,则转向状态2;否则转向IDLE。
用Quartus Ⅱ进行仿真验证,其仿真波形如图6所示,在此过程中usb_SLWR信号很重要,经分析可知,本状态机实现的FIFO写控制信号完全正确。
x
3 实验结果
对传输的数据进行验证,可通过FPGA编程生成 0~255的数据传送至CY7C68013的EP6端点,连续传送两次,然后利用EZ-USB Control Panel软件测试所接收到的数据,测试结果如图7所示,可以看出,数据传输准确无误。
4 结 语
USB 2.0控制器CY7C68013已经被广泛应用到许多数据传输领域,由于USB具有灵活的接口和可编程特性,大大简化了外部硬件的设计,提高了系统可靠性[7]。
该设计可扩展性好,已经被应用于数据传输与采集的板卡上,经实际测试,没有出现数据的误码等错误,数据传送正确,传输速率可达30 MHz/s以上,满足设计要求。
参考文献
[1]黄大勇,李鉴,张建正.基于USB 2.0接口的高速数据采集系统设计[J].现代电子技术,2007,30(24):69-72.
[2]谭安菊,龚彬.USB 2.0控制器CY7C68013与FPGA接口的VerilogHDL实现[J].电子工程师,2007,33(7):52-55.
[3] 钱锋.EZUSB FX2单片机原理、编程及应用[M].北京:北京航空航天大学出版社,2006.
[4]边海龙.USB 2.0设备的设计与开发[M].北京:人民邮电出版社,2004.
[5]萧世文.USB 2.0硬件设计[M].北京:清华大学出版社,2002.
[6]王祥,阮利华,周荣政.USB 2.0接口系统的设计与应用[J].计算机工程与应用研究,2005,41(6):98-100.
[7]蒋金涛,杨鸣.USB 2.0控制器EZ-USB FX2的性能特点及其数据传输实现[J].计算机工程与应用研究,2005,41(11):94-96.
[8]夏宇闻.复杂数字电路与系统的Verilog HDL设计技术[M].北京:北京航空航天大学出版社,1998.
[9]朱正平,宁百齐,袁洪,等.基于USB 2.0接口芯片FX2的高速数据采集板的设计实现[J].微计算机信息,2006,22(5):328-331.
[10][美]Michael D Ciletti.Verilog高级数字设计[M].张雅绮,李锵,译.北京:电子工业出版社,2006.
作者简介袁 卫 男,1973年出生,陕西渭南人,西安电子科技大学博士研究生,渭南师范学院物理系讲师。研究方向为光电成像系统仿真与评估。
张冬阳 男,1985年出生,江苏淮安人,西安电子科技大学硕士研究生。研究方向为嵌入式系统应用。