📄 基于usb2_0的高速数据通信接口设计 - 21ic中国电子网.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!-- saved from url=(0039)http://www.21ic.com/news/n26565c70.aspx -->
<HTML lang=gb2312 xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>基于USB2.0的高速数据通信接口设计 - 21IC中国电子网</TITLE>
<META http-equiv=content-type content=text/html;charset=gb2312>
<META content=noindex,nofollow name=robots><LINK href="favicon.ico"
type=image/x-icon rel=icon><LINK href="favicon.ico" type=image/x-icon
rel="shortcut icon">
<META content=基于USB2.0的高速数据通信接口设计 name=description>
<META content=21IC.com name=keywords><LINK
href="基于USB2_0的高速数据通信接口设计 - 21IC中国电子网.files/style.css" type=text/css
rel=stylesheet>
<SCRIPT src="基于USB2_0的高速数据通信接口设计 - 21IC中国电子网.files/flash.js"
type=text/javascript></SCRIPT>
<SCRIPT type=text/javascript>
var thumbWidth=120;var thumbHeight=0;
var thumbHWidth=thumbWidth;var thumbHHeight=thumbHeight;
</SCRIPT>
<SCRIPT src="基于USB2_0的高速数据通信接口设计 - 21IC中国电子网.files/thumbnail.js"
type=text/javascript></SCRIPT>
<SCRIPT language=javaScript
src="基于USB2_0的高速数据通信接口设计 - 21IC中国电子网.files/scroll.js"
type=text/javascript></SCRIPT>
<SCRIPT language=javaScript
src="基于USB2_0的高速数据通信接口设计 - 21IC中国电子网.files/imgResize.js"
type=text/javascript></SCRIPT>
<META content="MSHTML 6.00.2900.3429" name=GENERATOR></HEAD>
<BODY topMargin=0><SPAN id=printScript>
<SCRIPT language=javascript type=text/javascript>
<!--
function ContentSize(size)
{
var obj=document.all.BodyLabel;
obj.style.fontSize=size+"px";
}
-->
</SCRIPT>
</SPAN>
<SCRIPT language=javascript src="基于USB2_0的高速数据通信接口设计 - 21IC中国电子网.files/print.js"
type=text/javascript></SCRIPT>
<DIV class=twidth>
<TABLE id=sitehead cellSpacing=0 cellPadding=0 align=center border=0>
<TBODY>
<TR>
<TD class=l></TD>
<TD class=m>
<TABLE width="100%" align=center>
<TBODY>
<TR>
<TD width=200><A href="http://www.21ic.com/"><IMG
style="FILTER: chroma(color=#FFFFFF)"
src="基于USB2_0的高速数据通信接口设计 - 21IC中国电子网.files/logo.gif" border=0></A>
</TD>
<TD align=middle><!--Adforward Begin:--><IFRAME marginWidth=0
marginHeight=0
src="基于USB2_0的高速数据通信接口设计 - 21IC中国电子网.files/adfshow.htm"
frameBorder=0 width=468 scrolling=no
height=60>
<SCRIPT LANGUAGE="JavaScript1.1" SRC="http://afp21ic.allyes.com/main/adfshow?user=Afp21ic|news|top468x60&db=afp21ic&local=yes&js=on"></SCRIPT>
<NOSCRIPT><A HREF="http://afp21ic.allyes.com/main/adfclick?user=Afp21ic|news|top468x60&db=afp21ic"><IMG SRC="http://afp21ic.allyes.com/main/adfshow?user=Afp21ic|news|top468x60&db=afp21ic" WIDTH=468 HEIGHT=60 BORDER=0></a></NOSCRIPT></IFRAME><!--Adforward End--></TD>
<TD style="LINE-HEIGHT: 120%" align=middle width=100><A
onclick="javascript:window.external.addFavorite('http://www.21ic.com','21IC中国电子网')"
href="http://www.21ic.com/news/n26565c70.aspx#">加入收藏</A><BR><A
href="http://www.21ic.com/news/sitemap.aspx">网站地图</A><BR><A
href="mailto:info@21ic.com">联系我们</A><BR><A
href="http://www.21ic.com/news/search.aspx">网站搜索</A>
</TD></TR></TBODY></TABLE></TD>
<TD class=r></TD></TR></TBODY></TABLE>
<TABLE id=navsub cellSpacing=0 cellPadding=0>
<TBODY>
<TR>
<TD class=l></TD>
<TD class=m> <A
href="http://www.21ic.com/news/default.aspx">21IC中国电子网</A> → <A
href="http://www.21ic.com/news/c29.aspx">应用</A> → <A
href="http://www.21ic.com/news/c70.aspx">接口电路</A> </TD>
<TD class=r></TD></TR></TBODY></TABLE>
<TABLE id=middle cellSpacing=0 cellPadding=0 align=center>
<TBODY>
<TR>
<TD>
<DIV class=mframe>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD class=tl></TD>
<TD class=tm>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD width="10%"><SPAN class=tt>详文</SPAN></TD>
<TD width="90%">
<FORM name=email
action=http://www.21icsearch.com/buzi/mail2/chkemail.asp
method=post target=_blank><B>电子工程周刊:</B> <INPUT class=main
style="BORDER-RIGHT: #0097cf 1px solid; BORDER-TOP: #0097cf 1px solid; BORDER-LEFT: #0097cf 1px solid; BORDER-BOTTOM: #0097cf 1px solid; BACKGROUND-COLOR: #ffffff"
maxLength=55 size=10 value=Email name=email> <INPUT class=jbutton type=submit value=订阅>
←自动接收新闻,资料,设计应用 </FORM></TD></TR></TBODY></TABLE></TD>
<TD class=tr></TD></TR></TBODY></TABLE>
<DIV id=printBody>
<TABLE
style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all; TEXT-ALIGN: left"
cellSpacing=0 cellPadding=0 width="100%" align=center>
<TBODY>
<TR>
<TD class=ml></TD>
<TD class=mm vAlign=top><BR>
<DIV align=center>
<H1 class=aTitle>基于USB2.0的高速数据通信接口设计</H1></DIV>
<TABLE width="97%" align=center>
<TBODY>
<TR>
<TD width=120>[日期:<SPAN id=TimeLabel>2008-5-5</SPAN>]</TD>
<TD align=middle>来源:<SPAN id=SourceLabel>微计算机信息 </SPAN>
作者:<SPAN id=AuthorLabel>肖燕娟 杨俊峰</SPAN></TD>
<TD align=right width=100>[字体:<A
href="javascript:ContentSize(16)">大</A> <A
href="javascript:ContentSize(14)">中</A> <A
href="javascript:ContentSize(12)">小</A>] </TD></TR></TBODY></TABLE>
<DIV class=content id=BodyLabel
style="PADDING-RIGHT: 10px; DISPLAY: block; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px"><!--DVNEWS_AD_BEGIN--><!--Adforward Begin:-->
<SCRIPT language=JavaScript1.1
src="C:\Documents and Settings\admin\My Documents\基于USB2_0的高速数据通信接口设计 - 21IC中国电子网.files\adfshow(1).htm"></SCRIPT>
<!--Adforward End--><!--DVNEWS_AD_END--><STRONG>摘要:</STRONG>利用USB2.0接口芯片CY7C68013实现了语音信号处理系统中DSP与PC机的高速通信,简要介绍了CY7C68013的功能结构以及与TMS320C6203B的接口设计,深入研究了该芯片的固件、设备驱动和应用程序开发。
<BR><STRONG>关键词</STRONG>:EZ-USB FX2; CY7C68013; TMS320C6203B; 数据传输
<BR>
<P><B>ABSTRACT:</B> Using CY7C6801 as the control chip, the
communication between DSP and PC in the voice signals processing
system is realized. A brief introduction of the basic features of
EZ2USB CY7C68013 and the designing of interface to TMS320C6203B is
provided. The development of Programming Firmware、device driver and
application are thoroughly researched.<B></B></P>
<P><B>Key words: </B>EZ-USB FX2; CY7C68013; TMS320C6203B; data
transmission</P>
<P align=left><B>0 </B><B>引言</B></P>
<P>由于DSP的工作频率较高,如TMS320C6203B时钟频率高达250MHZ,故其数据读写周期很短,然而PC机串口读写速度较低,最大数据吞吐量约为115kbps,尽管DSP在与这些慢速外设进行数据交换时可以加入额外的等待周期,但是在实时性要求苛刻,算法复杂的场合,将DSP从这些冗长的等待周期中解放出来,将其时间重点放在处理关键的实时任务中去,有着重要的实际意义<SUP>[1]</SUP>。为了提高系统的实时性,
高速接口电路设计显得尤为重要。目前流行的EZ-USB
FX2芯片的传输速率为480Mbps,较好地解决了DSP与PC机间高速数据传输时的带宽瓶劲问题。本文设计并实现了TMS320C6000
系列DSP上, 利用EZ-USB FX2系列芯片CY7C68013 的接口技术, 实现了DSP 与计算机之间的高速数据传输。</P>
<P><B>1 CY7C68013</B><B>结构特点</B></P>
<P>CY7C68013是Cypress公司研制开发的EZ-USB
FX2系列芯片,该芯片符合USB2.0规范,同时兼容USB1.0的全速工作模式<SUP>[2]</SUP>,它的功能框图主要包括5个部分(图1):</P>
<P>(1)收发器。USB和PC机通过D+和D-两根信号线进行数据传输,数据以480Mbit/s的全速信号或者以240Mbit/s的半速信号在D+和D-信号线上差分传输。</P>
<P>(2)智能接口引擎(SIE)。SIE通过包排序、信号产生、信号检测、CRC产生、CRC校验、NRZI数据编码、位填充、包标识产生和解码等功能来处理USB通信协议,并保证传送到USB电缆上的数据字节以LSB开头。</P>
<P>(3)通用微控制器以及片上RAM。USB控制器采用通用的8051微控制器,即编程语言为51系列单片机的通用语言,可使实际操作更加灵活方便。</P>
<P>(4)I<SUP>2</SUP>C总线控制器。主要为完成将USB控制器作为主设备时必须的配置。</P>
<P>(5)片内FIFO。其容量为4KB,可以快速实现与不同速度的外设通信。</P>
<P><B>2 CY7C68013</B><B>与TMS320C6203B的接口电路设计</B></P>
<P>CY7C68013是一个非常方便的USB2.0实现方案,它提供与DSP连接的接口,连接方式有两种:Slave
FIFOs和Master可编程接口GPIF<SUP>[3]</SUP>。本文采用Slave FIFOs异步读写方式。Slave
FIFOs方式是从机方式,DSP可以象读写普通FIFO一样对CY7C68013内部的多层缓冲进行读写。具体的电路连接如图2所示:</P>
<P align=center></P>
<P align=center><IMG onmousewheel="return bbimg(this)"
onclick=ImgClick(this)
src="基于USB2_0的高速数据通信接口设计 - 21IC中国电子网.files/080505094720371.jpg"
border=0 resized="0"></P>
<P align=center>图1 CY7C68013功能框图</P>
<P align=center><IMG onmousewheel="return bbimg(this)"
onclick=ImgClick(this)
src="基于USB2_0的高速数据通信接口设计 - 21IC中国电子网.files/080505094720372.jpg"
border=0 resized="0"></P>
<P align=center></P>
<P align=center>图2 CY7C68013与TMS320C6203B电路连接图</P>
<P>FLAGA、FLAGB和FLAGC是CY7C68013内部FIFO的状态标志,TMS320C6203B通过通用I/O口获得CY7C68013内部FIFO的空、半满(由用户设定半满阈值)和满这3个状态信号,EMIF接口的CE2空间对CY7C68013进行读写操作。其工作过程为:DSP通过USB向PC发送数据时,首先查看空、半满和满这3个状态信号,然后向USB写入适当大小的数据,以保证数据不会溢出;PC机通过USB向DSP发送命令字时,USB通过中断方式通知DSP读取命令字。</P>
<P><B>3 </B><B>软件设计</B></P>
<P>系统的软件设计包括3部分:C8051固件设计、设备驱动程序没计和应用软件设计。CY7C68013的功能具体实现过程如下:</P>
<P>(1)当设备连接时,Windows的设备管理器自动检测到该设备,并读取由CY7C68013核心(并非C805l固件)传回的设备描述符,根据它提供的厂商和产品ID号VID/PID(存放在FX2外接E<SUP>2</SUP>PROM中)与.inf文件进行比较,找到固件下载驱动程序(ezloader.sys),从主机将C8051固件下载到CY7C68013的RAM中。</P>
<P>(2)C8051固件下载到RAM后,CY7C68013仿真一个脱离再连接至USB总线的过程,执行重新枚举过程,让C805l固件控制USB传输。Windows的设备管理器会检测到新的USB设备的连接,并根据C8051固件提供的厂商ID(VID)/产品ID(PID)(不同于CY7C68013核心提供的VID/PID)来加载该USB设备的设备驱动程序。</P>
<P>(3)应用软件调用CreateFile()API函数,使用识别该设备的符号链接来取得该设备的代号。取得设备的句柄后,应用软件通过DeviceIoControl()向I/O系统服务发出要求传入数据的I/O请求,I/O管理器将此请求构造成一个合适的IRP传递给CY7C68013设备驱动程序。CY7C68013设备驱动程序根据该IRP中包含的具体操作来构造相应的USB请求块,并据此形成新的IRP传递给USB总线驱动程序。USB总线驱动程序根据该USB请求块从CY7C68013设备读取数据。操作的结果再用IRP一层一层地返回给应用程序,应用程序再对数据进行分析和处理<SUP>[4]</SUP>。</P>
<P>3.1 C8051固件设计</P>
<P> Cypress公司为了简化固件开发,缩短时间,加速USB外围的开发,在EZ-USB
FX2软件开发包里提供了固件架构。该固件架构利用C8051的程序代码来实现CY7C68013芯片起始设置、USB标准设备请求的处理以及USB闲置模式的电源管理服务。用户仅需提供其USB描述符表(即dscr.a51)及实现外围功能的程序代码(periph.c),即可完成完全兼容的USB设备。</P>
<P>
固件的编译在Kei的集成开发环境中进行,在建立的项目中包含5个文件ez_usb.lib、</P>
<P>usbjmptb.obj、dscr.a51和periph.c,其中:</P>
<P>
固件架构程序流程如图3所示。该程序首先初始化所有的内部状态变量,然后调用TD_Init函数进行初始化,初始化主要包括:</P>
<P>(1)使CY7C68013工作于异步从FIFO模式。相应的寄存器操作为IFCONFIG=0xCB。</P>
<P>(2)将4KB的FIFO对应到两个端点(EndPoint),即EndPoint2和EndPoint6。相应的寄存器操作为:EP2(:FG=0xA0,EP6(:FG=0xE2。EndPoint2与EndPoint6分别对应21kB的内部FIFO(下面分别称作FIF02,FIF06),存放LJSB需要上传与接收的数据。其中EndPoint2为OUT型,负责从主机接收数据;EndPoint6为IN型,负责向主机发送数据。另外EndPoint2</P>
<P>与EndPoint6均采用批量(BULK)传输方式,这种方式相对于其他LJSB2.0定义的传输方式</P>
<P>具有数据可靠、传输速率高等特点,是最常用的传输方式。<FONT
color=#ffffff>www.51kaifa.com/</FONT></P>
<P>(3)对FIF0进行配置。相应的寄存器操作为E192FIFO(:FG=0xl
1,EP6FIFOCFG=0x0D。本案例将FIF02,FIF06设置成自动方式。</P>
<P></P>
<P align=center><IMG onmousewheel="return bbimg(this)"
onclick=ImgClick(this)
src="基于USB2_0的高速数据通信接口设计 - 21IC中国电子网.files/080505094720373.jpg"
border=0 resized="0"></P>
<P align=center>图3 固件架构程序流程</P>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -