




已阅读5页,还剩63页未读, 继续免费阅读
(信号与信息处理专业论文)嵌入式高速usb主机系统的设计与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 摘要 u s b ( u n i v e r s a ! s e r i a lb u s ) 通用串行总线,作为一种总线技术,如今已经非常流 行。比如平时我们身边的一些计算机外部设备:鼠标、键盘、u 盘、移动硬盘、 打印机、数码相机、手机、扫描仪、仿真器、移动光驱、u s b 话筒和摄像头等, 都是通过u s b 接口与计算机连接的,由此可见u s b 的普遍性和广泛性。u s b 协 议历经u s b l 0 、u s b l 1 和u s b 2 0 三种版本,目前u s b 3 0 协议已经发布,而且 支持u s b 3 0 的外设也正在研发中。现在的u s b 支持3 种传输速率:低速( 1 5 m b s ) 、 全速( 1 2 m b s ) 和高速( 4 8 0m b s ) 。u s b 3 0 的传输速度为4 8 g b i t s s 。当u s b 3 0 发展 成熟时,它的应用将更加广泛。 本文介绍了一种基于d s p 的高速u s b 主机系统的设计,该系统支持低速、全 速和高速三种速率的传输。主控制器为b f 5 3 l ,u s b 主机芯片是i s p l 7 6 0 ,它是一 款支持u s b 2 0 的高速主机芯片。b f 5 3 1 通过地址映射的方式来控制i s p l 7 6 0 。整 个软件用汇编语言编写以提高代码的执行效率。完成了底层驱动程序的编写、u s b m a s ss t o r a g e 类协议和s c s i 指令协议的实现,最后加入了f a t 3 2 文件系统。最终 实现了对u 盘、移动硬盘上文件的建立、删除和读写等操作。读u 盘数据速率最 高达到2 2 5 m b y t e s s ,写u 盘数据速率最高达到l5 m b y t e s s 。 关键词:u s b 主机高速 i s p l 7 6 0 f a t 3 2 文件系统 a b s t r a c t ab s t r a c t u s b ( u n i v e r s a ls e r i a lb u s ) i sav e r yi m p o r t a n tk i n do fc o m m u n i c a t i o nb u s a n dh a s b e e nw i d e l yu s e d f o re x a m p l e ,t h ee x t e r n a ld e v i c e so fc o m p u t e r , s u c ha sm o u s e , k e y b o a r d ,f l a s hd i s k ,p o r t a b l eh a r dd i s k ,p r i n t e r , d i g i t a lc a m e r a , m o b i l ep h o n e ,s c a n n e r , e m u l a t o r , m o b i l ec d - r o m ,u s bm i k ea n dp cc a m e r aa lec o n n e c t e dt ot h ec o m p u t e r v i at h eu s bi n t e r f a c e i te x p e r i e n c e sr e v l 0 ,r e v l 1a n dr e v 2 0s p e c i f i c a t i o n s ,a n d n o wr e v 3 0h a sa l s ob e e nr e l e a s e d d e v i c e sw h i c hc o m p l yt ou s b 3 0a r eb e i n g d e v e l o p e d n o wt h eu s bs u p p o r tt h r e ek i n d so ft r a n s f e r sw h i c ha r el o ws p e e d ( 1 5 m b s ) ,f u l ls p e e d ( 12 m b s ) a n dh i g hs p e e d ( 4 8 0m b s ) ,r e s p e c t i v e l y t h et r a n s f e r s p e e do fu s b 3 0i s4 8 g b s ,s oi tw i l lb eu s e dm o r ew i d e l yw h e ni ti sd e v e l o p e d i nt h i sd i s s e r t a t i o n ,w ei n t r o d u c eak i n do f d s p b a s e dh i g hs p e e du s bh o s ts y s t e m t h eu s bh o s ts y s t e ms u p p o r t sl o ws p e e d ,f u l ls p e e da n dh i 曲s p e e dt r a n s f e r s t h em a i n c o n t r o l l e ro ft h eh o s ts y s t e mi sa d s pb f 5 31a n dt h eu s bh o s tc h i pi si s pi7 6 0w h i c h s u p p o i r t sh i g hs p e e da n dc o m p l y st ou s b 2 0 b f 5 31c o n t r o l st h ei s p i7 6 0a si t se x t e r n a l a s y n c h r o n o u sm e m o r y i no r d e rt oi m p r o v et h ee f f i c i e n c yo f t h ec o d ee x e c u t i o n ,w eu s e a s s e m b l yl a n g u a g et op r o g r a mt h el o w - l e v e ld r i v e r , u s bm a s ss t o r a g ec l a s sp r o t o c o l , s c s ic o m m a n d sa n df a t 3 2f i l es y s t e m a l s o ,w ec a nc r e a t e ,d e l e t e ,r e a da n dw r i t ef i l e s w h i c ha r eo nt h ef l a s hd i s ko rp o r t a b l eh a r dd i s k t h eh i g h e s ts p e e do fr e a d i n gd a t ai s 2 2 5 m b y t e s sa n dh i g h e s ts p e e do ft h ew r i t i n gd a t ai s15 m b y t e s s k e y w o r d :u s bh o s th i g h - s p e e d i s p l7 6 0f a t 3 2f i l es y s t e m 西安电子科技大学 独创性( 或创新性) 声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究 成果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中不 包含其他人已经发表或撰写过的研究成果;也不包含为获得西安电子科技大学或 其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做 的任何贡献均已在论文中做了明确的说明并表示了谢意。 申请学位论文与资料若有不实之处,本人承担一切相关责任。 本人签名:痊j 窿之日期j 醴:f = 埠 西安电子科技大学 关于论文使用授权的说明 本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究 生在校攻读学位期间论文工作的知识产权单位属西安电子科技大学。本人保证毕 业离校后,发表论文或使用论文工作成果时署名单位仍然为西安电子科技大学。 学校有权保留送交论文的复印件,允许查阅和借阅论文:学校可以公布论文的全 部或部分内容,可以允许采用影印、缩印或其它复制手段保存论文。( 保密的论文 在解密后遵守此规定) 本学位论文属于保密在- 年解密后适用本授权书。 本人签名:签盈日期垫垃:2 :生 导师签名: 日期雹垒厶雄 , 第章绪论 第一章绪论 1 1 研究背景及其意义 早在u s b 产生以前,计算机与外部设备的通讯主要是通过计算机主板上所提 供的p c i 、i d e 、i s a 、串口、v g a 、并口和p s 2 等接口来实现的。这些接口大部 分是由i b m 公司在2 0 世纪8 0 年代初设计的。这些接口已经使用了许多年,协议 也已经很成熟。但是,随着计算机技术的飞速发展,这些早期的计算机接口体现 出一定的局限性和缺陷: 1 这些接口大多数都是非共享式接口,即在同一个时刻一个接口上只能连接 一个外部设备。比如我们以前所使用的并口打印机和扫描仪就不能同时工作,因 为计算机的并口只支持一个外设的连接。随着计算机外部设备的增多,目前有限 的计算机接口根本无法满足大量外部设备连接的需要。所以计算机的接口数就显 得比较紧张了。 2 这些接口很多不支持热插拔,使用起来很不方便。我们如果要接入或者拔 出一块硬盘,那么首先要关闭计算机,在不带电的情况下才能进行插拔。 3 这些接口大部分采用传统的i o 模式,即c p u 把外设映射成自己的地址空 间,并分配一定的地址,指定一个中断向量,或指定一个d m a 通道。这样可能会 出现诸如指定的中断向量已经被其他外设所占用、i o 地址的冲突等问题i l 】。比如 我们需要在一个i d e 接口上连接两个i d e 设备,那么我们需要在计算机断电的情 况下,打开机箱,手动设置i d e 设备的跳线,把两个i d e 设备设置成一个是p r i m a r y 另一个是s l a v e ,这样设置后两个i d e 设备才可以同时使用。所以这个过程对使用 者来说是相当繁琐的,而且不易操作。 4 这些接口的外设之间存在不兼容的问题。因为这些传统的接口协议只定义 和约束了物理层,而基本没有设计外部设备和计算机之间具体的通信行为和自身 的拓扑结构。这样虽然简化了开发人员设计时的软件工作量,增加开发的灵活性, 但是这肯定会有其负面影响。 正是为了克服这些传统计算机接口的缺陷,才激励计算机行业的专家们探索 新的接口标准,这种标准将能彻底解决i 且体系的缺陷。在这种情况下,u s b 接口 技术应运而生。这种接口是一种快速的、稳定的、廉价的、可扩展的,并支持热 插拔的串行接口。支持热插拔的功能可以使用户在带电的情况下,直接对计算机 外设进行连接或断开。一个主控制器可以控制多达1 2 7 个外设,而且所有外设的 上行接口规格都是一样的。这样用户就可以简单、方便的使用了。所以u s b 接口 的出现,为计算机外部设备的连接提供了一个很好的解决方案。 嵌入式高速u s b 上机系统的设计与实现 1 2 研究历史和现状 第一个u s b 协议规范,是在1 9 9 4 年1 1 月,由七家公司( 美国的i n t e l 、i b m 、 m i c r o s o f t 、c o m p a q 、n o r t h e r nt e l e c o m 、d e c 以及日本的n e c ) 共同提出的。于 是u s b 总线规范0 7 版问世了,这也标志着u s b 的正式诞生。但是这时它还不够 完善,缺陷很多,所以用户也很少。美国电气及电子工程师协会( i e e e ) 也推出了一 个i e e e l 3 9 4 总线协议。这个总线协议的特点是速度快,但是它的成本比较高,只 适合应用于一些对数据传输要求比较高的设备,比如打印机、扫描仪等。不适合 应用于鼠标、键盘等廉价的,对速度要求不高的设备。所以i e e e l 3 9 4 更适合应用 到一些专业领域。直到1 9 9 6 年1 月1 5 日,u s b l 0 版本发布后,u s b 技术才相对 成熟一些。但是直到w i n d o w s 9 5 的o s r 2 1 版本发布后,u s b 才首次在p c 机上使 用,这时u s b 接口的外部设备很少。1 9 9 8 年6 月,w i n d o w s 9 8 版本的公布和同年 9 月u s b l 1 版本的推出才使u s b 接口技术开始流行。这时研究u s b 的人慢慢变 多,于是市场上开始出现了大量的u s b 外设。自从2 0 0 0 年4 月2 7 日,u s b 2 0 版本发布以后,u s b 接口技术才真正流行开来。 u s b 自从1 9 9 4 年提出到现在,已经历了1 5 年的发展。在早期,u s b 很不受 重视,主要因为: 1 计算机主板上的支持不够。因为u s b 接口对于早期的计算机主板来说, 是一种选配的功能,所以很多制造商为了节省成本,就在主板上省去了u s b 接口。 而且提供u s b 接口的主板上,其b i o s 也并不真正支持u s b 。 2 u s b 协议太过复杂。u s b 接口比起以前传统的计算机接口更复杂,更抽象。 而且在早期,u s b 总线技术还不成熟,u s b 的硬件,软件开发资料不多,可以应 用的开发软件也不完善,这样给u s b 的开发者带来很大的困难。 3 操作系统对u s b 的支持不够。早期的w i n d o w s 9 5o s r2 1 版本才开始支 持u s b 接口,而且也仅仅支持少数的几种。w i n d o w s 9 8 操作系统虽然支持u s b , 但是还需要安装相应的驱动程序。在随后的操作系统版本w i n d o w sm e 和w i n d o w s 2 0 0 0 中增加了对u s b 的支持,也集成了很多u s b 设备的驱动程序。这些操作系 统所支持的版本是u s b l 1 。当插入u s b 2 0 的设备时,可能也可以使用,但是传 输速度和性能不能完全发挥出来。微软后来推出的w i n d o w sx p 系统,才完全支持 u s b 2 0 。从w i n d o w sx p 以后的操作系统( v i s t a ,w i n d o w s7 ) 都完全支持u s b 2 0 , 其中v i s t a 和w i n d o w s7 支持u s b 3 0 。 4 u s b 外设与传统接口的外设在性能上相比,没有明显的优势。例如我们常 用的鼠标和键盘,u s b 接口的和p s 2 接口的在性能上基本没有什么差异,只是 u s b 接口支持热插拔,使用起来方便一点罢了。 5 u s b 成本太高。在早期,u s b 的接口芯片不是很多,而且价格也十分昂贵。 第一章绪沦 这使u s b 接口的设备普遍比传统接口的设备开发成本要高。 如今的u s b 接口技术已经发展的很成熟,也很普及。几乎所有的计算机主板 都会集成u s b 接口,而且集成u s b 主控制器的个数也越来越多,这样便可以给 u s b 外设提供更大的带宽。现在的工控主板也集成多个u s b 接口,因为现在很多 工控产品,比如工控鼠标、触摸屏、摄像头等设备都有u s b 接口。由于u s b 是主 从机结构,主机和主机之间、从机和从机之间不能互连。为了解决这个问题,u s b o t g ( o nt h eg o ) 协议应运而生。支持u s bo t g 的设备可以在主机和从机之间进 行切换,这样就使u s b 的连接方式更加灵活。目前支持u s b 驱动的嵌入式系统也 很多,例如l i n u x ,w i n d o w sc e ,w i n d o w sx p e 等等。这些系统都带有很多u s b 主机控制器的驱动程序,这样为嵌入式系统的开发带来了很大的方便。所以现在 有很多人研究u s b 主机系统,而且市面上也已经出现很多支持u s b 主机的产品。 比如数码伴侣、数码相机、手机和一些m p 3 等等。这些支持u s b 主机的设备,都 可以对一些存储设备( u 盘,t f 卡,s d 卡) 进行读写操作。其中部分m p 3 是支持 o t g 的,它可以播放所连接的u s b 外设上的音频文件,而且这些m p 3 也可以作 为从机连接在计算机上。 现在生产u s b 接口芯片的厂商有很多,而且都提供成熟的开发文档和技术资 料。支持u s b 2 0 的芯片处理速度也越来越快,应用领域也更广泛。目前u s b 3 0 已经发布,它的速度、稳定性和兼容性比u s b 2 0 又有大幅的提高。u s b 3 0 理论 上的传输速度达到4 8 g b i t s s ,是u s b 2 0 的1o 倍。 1 3u s b 技术的应用 u s b 接口技术广泛的应用于我们工作和生活的各个领域。 在工业应用上: 1 现在的工控主板基本都集成多个u s b 接口,而且可以扩展。工控产品, 比如工控鼠标、触摸屏、监控设备都带u s b 接口。这样不仅连接方便,而且在一 块主板上可以同时连接多个外设,系统集成度很高。当外设多于主板所提供的接 口时,我们可以连接一个u s b 集线器,又可以扩展出许多u s b 接口。 2 在监控系统中,比如监控设备“录像机”,它把监控录像直接存储在硬盘 里,以前的接口都是i d e 接口,当硬盘存满或者需要导出视频数据时,需要打开 机箱,在断电时才能取出硬盘。现在集成u s b 接口,则可以方便的置换各种u s b 存储设备。而且现在监控用的摄像头也都是u s b 接口的。 3 在数据采集的存储系统中,比如视频数据或雷达信号数据的采集,数据量 是非常庞大的,以前都是用f l a s h 阵列或者磁盘阵列来存储。当u s b 的传输速 度可以达到实时存储时,通过u s b 接口存储数据是非常方便的。存储在u s b 设备 上的数据便可以直接连接到计算机上进行数据处理或者备份,而且更换u s b 存储 4 嵌入式高速u s bt - 机系统的设计j 实现 设备也比较方便。 在平时的应用中: 1 我们用的手机就是通过u s b 接口与计算机连接的,这样可以很方便的进 行数据的传输、软件的管理和电话号码的管理。而且很多手机可以通过u s b 接口 进行充电,这样在我们手机需要充电而且没有电源的情况下,就可以使用u s b 接 口,这样提供了一个很方便的功能。u s b 3 0 可以提供1 a 的电流,这样可以为许 多更大功率的设备供电。 2 在计算机的维护中,也常常用到u s b 接口。我们以前维护计算机或安装 系统时,一般都需要用光盘来启动。但是一些小型的笔记本电脑本身不配备光驱, 还有些计算机也没有安装光驱。而且光驱本身也是一种耗材,用的时间长了或者 光盘划伤,很容易导致无法读取光盘数据的情况。如果我们使用u s b 接口,就不 会出现这些问题。现在的计算机b i o s 都支持从u s b 设备启动【2 】,所以我们只要 把d o s 或w i n w o sp e 系统安装在u s b 设备上,那么就可以直接对计算机进行系 统的安装或维护了。而且以前的计算机故障检测卡是p c i 接口的,每次应用时, 都需要打开机箱,断电后才能插上使用。如果换成u s b 接口的,那么检测计算机 故障时就可以直接插在u s b 接口上,这样就方便多了。 3 在拷贝文件或数据时,常常需要用到u s b 设备。当我们需要在其它地方 打印资料或者拷贝数据时,最方便的是使用网络直接进行传输。如果没有网络, 或者传输的是秘密资料( 秘密资料是不允许使用网络来传输的) ,那么比较方便的 方法就是使用u 盘、u s b 移动硬盘等设备。当我们的计算机都支持u s bo t g 时, 便可以用一根u s b 连接线将两台计算机连在一起,这样传输速度应该比现在的网 线更快。现在u s b 2 0 高速的传输速度是4 8 0 m b s ,u s b 3 0 的传输速度理论上是 4 8 g b s 。计算机现在所使用的网卡是1 0 m b s ,1 0 0 m b s 自适应的,还有1 0 0 0 m b s 的网卡。如果我们以后的网络都使用u s b 接口,那么网络的传输速度将是十分可 观的。 4 现在有很多u s b 接口的计算机部件,例如u s b 接口的网卡和光驱。如果 声卡、显卡和硬盘等都换成u s b 接口的设备,那么我们便可以根据实际的需要来 选配计算机部件,这样计算机的体积将会更小。 u s b 接口目前有着非常良好的性能,而且随着u s b 3 0 和后续版本的推出, u s b 的速度和性能会达到更高的档次。那时,u s b 技术会比现在更加流行,应用 也将更加广泛。当所有计算机外部接口全部被u s b 接口所替代时,不仅方便连接, 而且也有助于节省资源。因为所有外设的连接线都是通用的,我们就可以重复使 用这些线,以免造成不必要的浪费。所以u s b 总线技术是非常有发展前景的。 第:章u s b 协议基础 第二章u s b 协议基础 本章主要介绍u s b 协议基础,主要以u s b 2 0 协议为主。其中包括u s b 的事 务处理、传输类型和协议构架等概念。而最基本的u s b 的机械特性和电气特性这 里就不介绍了,有兴趣的可以请参考 3 】。 2 1u s b 的事务处理 u s b 协议中最为复杂和难理解的就是底层数据通讯的结构,其中包括了最基 本的数据传输单元、传输类型、传输机制和数据通讯流程等。而事务处理是u s b 主机和设备之间进行数据传输最基本的单位。u s b 的事务由信息包组成,而信息 包又由域组成。下面介绍事务处理用到的一些基本概念。 2 1 1 域 域( f i e l d ) ,是u s b 中对一系列具有统一意义的二进制数的称呼【4 】。由域组成 了包。u s b 将域分为7 种类型,以下分别介绍这7 种域。 2 1 1 1 同步域 u s b 接口没有专用的时钟线,所以u s b 主机和设备不是共享一个时钟的,这 样可能会导致本地时钟与输入信号不同步,接收方也无法知道发送方何时发送数 据。为了使发送方和接收方在传输信息包的过程中保持同步,所有的信息包都必 须以一个同步域开始。低速全速传输同步域的数据长度为8 位,其值为连续的7 个“0 和1 个“1 ”,如图2 1 所示。高速传输的同步域会有所不同,其具体的状 态实现请参考【1 】。 l s bm s b ooo00 00 1 2 1 1 2 包标识域 图2 1 同步域( 低速全速) 在信息包中,包标识域,p i d ( p a c k e ti d e n t i f i e rf i e l d ) 紧跟在同步域之后,指明 了该信息包的类型、格式和和采用的差错控制机制。包标识域长度为8 位,由标 识符和校验位组成。如图2 2 所示,4 位校验字段是前4 位标识符的反码,用来保 6 嵌入式高速u s b 上机系统的没汁与实现 证p i d 的可靠性。无论是u s b 主机还是设备,都要对收到的p i d 进行校验。如果 校验错误或者得到一个未定义的4 位标识符,则认为p i d 域已经被破坏,信息包 中其他的部分也应该被抛弃了。如果u s b 设备接收到一个不支持的p i d ,那么它 将不予以应答。 l s bm s b p i d op i d ip i 耽p l d 3p i d q p l d l p i d 2 p i d 3 图2 2 包标识域p 1 d 包标识域中的4 位标识符可以分为4 种类型,都是由标识域的前2 位( p i d ) 来指明的,这4 种类型分别是令牌( 1 0 b ) 、数据( 1 l b ) 、握手( 0 1 b ) 和特殊( 0 0 b ) 。在 u s b l 1 协议中,这4 种类型只定义了1 0 种不同的标识域。而在u s b2 0 协议中, 这4 种类型定义了全部1 6 种不同的标识域。如表2 1 所示,列出了所有p i d 的类 型、名称及说明。 表2 1p i d 种类 p i d 类型p i d 名称p i d 说明 o u t0 0 0 l b 表示主机向设备发送数据 令牌i n1 0 0 1 b 表示设备向主机发送数据 ( t o k e n ) s o f0 1 0 1 b 表示帧的开始 s e t u p1 1 0 1 b 表示控制传输开始的令牌包 d a l a 0 0 0 1 1 b表示偶数据包 数据d a t a l1 0 1 1 b 表示奇数据包 ( d a t a )d a l a 20 l l l b高速同步事务专用数据包 m d a t a1 1 1 l b高速同步事务和s p l i t 事务专用数据包 a c k0 0 1 0 b 表示接收方成功的接收到数据 握手n a k1 0 1 0 b接收方不能接收数据或发送方不能发送数据 ( h a n d s h a k e ) s t a l l1 1 1 0 b 表示端点被挂起或不支持的控制管道请求 n y e t0 1 1 0 b 表示接收方没响应 p l 迮1 1 0 0 b 主机发出的前导包,使能下行低速设备 专用e r r1 1 0 0 b 用于s p l i t 传输错误握手 ( s p e c i a l ) s p l i t1 0 0 0 b 用作高速s p l i t 传输令牌 p i n g0 1 0 0 b 用于块端点的高速数据流量传输控制检测 r e s e r v e d0 0 0 0 b 保留值 备注:是以高位在前的格式给出的 第:章u s b 协议基础 7 2 1 1 3 地址域 地址域的长度为7 位,其格式如图2 3 所示。地址域内存放的是主机给设备分 配的唯一地址,在设备与主机断开连接或主机重新给设备分配地址前,这个地址 和设备是一一对应的。这样由7 位的二进制数可以表示1 2 8 个地址,地址o 是缺 省地址。所以一个主机控制器最多可以控制1 2 7 个设备。 l s bm s b 2 1 1 4 端点域 图2 3 地址域 端点域也称为端点号,用于指定u s b 设备中的一个端点,其格式如图2 4 所 示。所有的u s b 设备都必须包含控制端点0 ,它用来和u s b 主机完成控制传输。 在i n 、o u t 、s e t u p 和p i n g 令牌包中都包含该域,用来指明传输数据所使用的 设备端点号。端点号的长度为4 位,除了端点0 之外,低速设备最多支持2 个端 点,而全速和高速设备最多支持1 6 个i n 端点和1 6 个o u t 端点。 i ,s bm s b 2 1 1 5 帧号域 图2 4 端点域 在u s b 的总线上,1 帧是一个独立的单元,包含了一系列的总线动作。u s b 将这一帧分为多份,每一份都是一个u s b 的传输动作。帧号域中的数值,代表着 当前帧的帧号。帧号域的长度为1 1 位,每l 帧都有自己的帧号,其格式如图2 5 所示。11 位的帧号域最大表示到0 x 8 0 0 。u s b 每传输一帧,主机便将帧号加l ,当 达到0 x 7 f f 时归零。 l s b m s b f 删lf r a m l l f r a m 2 l f r a m 3 i f r a m 。i f r a m 5 l f 删饩i f r a m 7 i f 兄4 m , i f r a m 9 f r a m l 图2 5 帧号域 嵌入式高速u s b 上机系统的设计与实现 2 1 1 6 数据域 数据域主要包含u s b 主机和设备之间需要传输的数据,其长度是以字节为单 位。数据长度会随着传输类型的变化而不同,其长度最大为1 0 2 4 个字节,最小为 0 字节。其结构如图2 6 所示。在传输中,每个字节都是最低有效位先被传输。 m s bl s bm s bl s b 字节n 1 d oq皿q d 4 d 5d 6 d 2 1 1 7 校验域 图2 6 数据域 因 字节n + i 校验域c r c ,全称为循环冗余校验域( c y c l i cr e d u n d a n c yc h e c k s ) ,用来校验 令牌包和数据包内非p i d 的数据( p i d 自己带效验位) ,以保证传输的可靠性。发 送方通过一定的算法计算所要校验的数据,得到校验域的值,然后发送给接收方。 接收方收到数据后,会计算出校验值,然后和所收到的校验域做比较。如果两个 值不同,则说明至少有一个被保护的域出错,这时接收器会忽略该域。但一般会 忽略整个信息包。一般效验域是由硬件产生的,其具体的计算方法请参考【1 】。 2 1 2 信息包 信息包是u s b 数据最基本的组成单元,这里主要介绍3 种类型的信息包,令 牌包、数据包和握手包。信息包都是以s o p 信号开始,e o p 信号结束,其中s o p 信号包含在同步域中,其格式如图2 7 所示。后面我们所讲的信息包会忽略同步域、 和e o p 信号,因为所有信息包都是一样的,这样也便于理解。 2 1 2 1 令牌包 同步域特定格式的域 e o p 图2 7 信息包的格式 令牌包是由u s b 主机发出的。在u s b 中定义了7 种令牌包:i n 、o u t 、s e t u p 、 s o f 、p r e 、s p l i t 和p i n g 令牌包。其中i n 、o u t 、s e t u p 和p i n g 令牌包具有 相同的格式,如图2 8 所示。它们都是由p i d 、地址域、端点域和校验域组成。而 且从图中可以看到,校验域只对地址域和端点域进行循环冗余校验。 第一:章u s b 协议荩础 9 l s bm s b f i e l dp i da d d re n d pc r c 5 b i t s8745 下 图2 8i n 、o u t 、s e t u p 和p i n g 令牌包的数据格式 o u t 和s e t u p 令牌包的p i d 定义了从u s b 主机到设备的数据传输,其地址 域和端点域指明了接收数据的设备和其端点。i n 令牌包的p i d 定义了u s b 设备到 主机的数据传输。p i n g 令牌包的p i d 定义了从u s b 设备到主机握手信号的传输。 s o f 令牌包由p i d 域、帧号域和5 位的校验域组成,如图2 9 所示。s o f 令 牌包是对总线动作的一个时间上的划分。主机每隔1 0 0 0 0 0 5 m s ( 全速) 和 1 2 5 0 0 6 2 5 u s ( 高速) 发出s o f 令牌包,以表示帧d , 帧的开始。 l s bm s b f i e l dp i df r a m ec r c 5 b i t s8115 r 图2 9s o f 令牌包的数据格式 u s b 为s p l i t 传输定义了一种特殊的令牌包:s p l i t 令牌包。这种令牌包应 用于u s b 主机和处于高速状态的集线器( 其下行端口连接有低速全速u s b 设备) 之间的通讯。它定义了两个令牌包,分别是开始令牌包( s s p l i t ) 和结束包( c s p l i t ) 。 s s p l i t 令牌包用于主机启动一个s p l i t 事务处理,其格式如图2 1 0 所示。 l s bm s b s p l i th u b f i e l ds cp o ns ee tc r c 5 p i da d d r b i t s87171l25 l 下 图2 1 0s s p l i t 令牌包格式 它同样是以8 位的p i d 开始,5 位的c r c 结束,其各字段的含义请参考【3 】。 c s p l i t 令牌包用于主机结束一个s p l i t 事务处理,其格式如图2 1 l 所示。 其中的s c 字段值应为“1 ,表示它是结束s p l i t 令牌包,u 字段为保留字段,其 值必须设为“0 ”,其它字段含义与s s p l i t 令牌包相同。 l o 嵌入式高速u s bt 机系统的设计! j 实现 l s bm s b s p l i th u b f i e l ds cp o nsue tc r c 5 p i da d d r 一 b i t s87l71 125 l 下l 图2 11c s p l i t 令牌包数据格式 p r e 令牌包格式很简单,如图2 1 2 所示,它只包含8 位的p i d 。通过s p l i t 事务,集线器能把低速全速传输从高速传输中分离出来。主机在开始低速事务前 先发送一个p r e 令牌包,用来表示后面的传输是低速传输,这时集线器会激活其 下行的低速端口,并准备低速传输。而其它的设备会忽略该令牌包【1 1 。 l s bm s b 2 1 2 2 数据包 f i e l dp i d b i t s8 图2 1 2 p r e 令牌包格式 数据包是由p i d 、数据域和1 6 位的c r c 组成,其结构如图2 1 3 所示。其中 低速设备支持最大的数据长度为8 个字节;对于全速设备则为1 0 2 3 个字节;而高 速设备为1 0 2 4 个字节。根据p i d 的不同,数据包可以分为4 种:d a t a 0 、d a t a l 、 d a t a 2 和m d a t a 。其中d a t a 0 和d a t a l 支持数据触发( t o g g l e ) 同步机制。 l s bm s b 2 1 2 3 握手包 f i e l dp i dd a t a c r c l 6 b i t s8o 8 1 9 21 6 图2 1 3 数据包的格式 握手包,其格式如图2 1 4 所示,仅由8 位的p i d 组成。握手包用来报告事务 传输的状态,可以通过返回值表明数据是否接收成功、指令是否接受、端点是否 被禁止等情况。握手包一般在握手阶段被返回,但也有可能在数据阶段代替数据 被返回。在握手包中的p i d 之后,应该是e o p 信号。如果收到的握手包在p i d 之 后没有以e o p 信号终止,那么接收方会认为该包无效,并忽略该包。 第一二章u s b 协议堆础 l s bm s b f i e l dp l d b i t s8 图2 1 4 握手包的格式 u s b 定义了5 种类型的握手包:a c k 、n a k 、s t a l l 、n y e t 握手包和一种 特殊的e r r 握手包。这5 种握手包具体的功能含义请参考【3 】。 2 1 3 事务处理 在u s b 中,事务处理是数据传输的基本单位,它由一系列具有特定格式的信 息包组成。根据信息包种类的不同,可以将一个事务处理分为三个阶段:令牌阶 段、数据阶段和握手阶段,如图2 1 5 所示。 御h 同步域 数据包 咖h 同步域 握手包 e o p l 同步域令牌包 令牌阶段数据阶段握手阶段 图2 1 5 一个典型的事务处理 其中,令牌阶段表示事务处理的开始,并且定义了数据传输的类型;数据阶 段负责传输相关数据;握手阶段负责报告事务处理的状态。其中数据阶段是可选 的。u s b 中的事务处理可分为七类:i n 事务、o u t 事务、s e t u p 事务、p i n g 事 务、s o f 事务、s p l i t 事务和p r e 事务。下面将分别介绍。 2 1 3 1i n 事务处理 i n 事务处理用于u s b 主机接收来自u s b 设备的数据传输。它包括三个阶段: 令牌阶段、数据阶段和握手阶段,如图2 1 6 所示。 主机设备 主机 i n 令牌包d a t a x 数据包a c k 握手包 令牌阶段数据阶段握手阶段 图2 1 6 i n 事务处理格式 在令牌阶段,u s b 主机已经准备好接收数据并向设备发出i n 令牌包:在数据 阶段,u s b 设备收到主机发送的i n 令牌包后,向主机返回数据包;在握手阶段, 主机收到来自设备的数据后,向该设备返回a c k 握手包。在i n 事务处理的过程 中,主机和设备的状态响应请参考【1 】。 1 2 嵌入式高速u s b 上机系统的设计与实现 2 1 3 2o u t 事务处理 o u t 事务处理用于u s b 主机到设备的数据传输。它和i n 事务处理一样包含 三个阶段:令牌阶段、数据阶段和握手阶段,如图2 1 7 所示。其各个阶段的实现 过程与i n 事务处理类似,这里就不再赘述了。 令牌阶段数据阶段握手阶段 图2 1 7o u t 事务处理格式 2 1 3 3p i n g 事务处理 p i n g 事务处理用于高速o u t 事务处理中,u s b 设备向主机报告其是否有足 够的空间来响应下一个o u t 事务,其格式如图2 1 8 所示。在低速全速o u t 事务 处理中,当u s b 设备暂时不能接收来自主机的数据时,则返回n a k 握手包,主 机随后会重试该事务。当要发送的数据量很大时,这样就会占用大量的总线时间, 使总线利用率很低。使用p i n g 协议,可以通过禁止主机发送无用的o u t 数据包 来提高总线的利用率。 主机设备 p i n g 令牌包 a c k n a k s t a l l 樨手何 令牌阶段握手阶段 2 1 3 4s e t u p 事务处理 图2 1 8p i n g 事务处理格式 s e t u p 事务处理定义了一种从主机到设备的数据传输,它仅应用于u s b 控制 传输的建立阶段,其格式如图2 1 9 所示。s e t u p 事务处理包含三个阶段:令牌阶 段、数据阶段和握手阶段。在令牌阶段,u s b 主机向设备发出令牌包;在数据阶 段,u s b 主机向设备发送具有u s b 定义格式的数据包;在握手阶段,u s b 设备收 到令牌包和数据包后,向主机返回a c k 握手包。 当u s b 设备接收到s e t u p 令牌包后,则必须接收其后的数据包,而且不能 以s t a l l 和n a k 握手包来响应。如果一个非控制端点接收到s e t u p 令牌包,则 应该忽略该令牌包,并不做任何响应。 第一:章u s b 协议荩础 主机主机设备 s e t u p 令牌包d a t a 0 数据包a c k 握手包 令牌阶段数据阶段握手阶段 2 1 3 5s o f 事务处理 图2 1 9s e t u p 事务处理格式 s o f 事务处理表示u s b 帧d , 帧的开始,它仅包含s o f 令牌包,而且不需要 设备返回握手包,如图2 2 0 所示。 对于低速全速传输,s o f 令牌包每隔l m s 产生一次。对于高速传输,u s b 定 义了1 2 5 u s 长的小帧,s o f 令牌包每隔7 个小帧产生一次。当u s b 设备检测到s o f 令牌包时,表明其将要进行s o f 事务处理。 主机 2 1 3 6s p l i t 事务处理 令牌阶段 图2 2 0s o f 事务处理格式 s p l i t 事务处理用于主机和高速集线器之间传输数据,它可以把低速全速事 务从高速事务中分离出来,而使主机在高速的事务中开始一个低速事务。s p l i t 事务处理可以分为两种类型:s s p l i t 和c s p l i t 。 s s p l i t 用于开始一个s p l i t 事务处理,其格式如图2 2 l 所示。它包含令牌、 数据和握手阶段。s s p l i t 的令牌阶段包含两个令牌包信息:s s p l i t 令牌包和低 可选的。 d a t a x 数据包l 握手包 ji 令牌阶段 图2 2 1s s p l i t 事务处理格式 c s p l i t 用于结束一个s p l i t 事务处理,并返回s p l i t 事务处理的结果,其格 式如图2 2 2 所示。它的令牌阶段同样包含两个令牌包信息:c s p l i t 令牌包和低速 全速令牌包,而数据阶段或握手包是可选的。 1 4 嵌入式高速u s b 卡机系统的没计实现 c s p l i t 令牌包低速全速令牌包 j , 2 1 3 7p r e 事务处理 d a t a x 数据包 或 u s b 支持三种类型的传输速率:低速、全速和高速。其中,高速传输和低速 全速传输的分离是由高速集线器通过s p l i t 事务处理来实现的;而在低速和全速 传输环境下,集线器通过禁止其低速端口的方法来阻止全速事务在低速设备上运 行。所以,主机在开始低速信息包之前,必须启动一个p r e 事务处理。p r e 事务 处理用来激活集线器的低速端口,这样u s b 主机才能开始执行低速事务。p r e 事 务处理仅包含p r e 令牌包,而且它不需要返回任何握手包【l j ,如图2 2 3 所示。p r e 事务处理只有集线器才能识别。 令牌阶段 图2 2 3p r e 事务处理格式 2 2u s b 的数据传输类型 u s b 定义了4 种传输类型,分别是:批量传输、控制传输、中断传输和同步 传输。u s b 所进行的数据传输都是由这4 种类型完成。它们都有各自的特点和应 用领域。批量传输、同步传输和中断传输每次传输都是一个事务,而控制传输包 含三个阶段,每个阶段都由特定的事务组成。下面将介绍这4 种传输类型。 2 2 1 批量传输 批量传输( b u l kt r a n s a c t i o n s ) 用于传输大量的、且对传输时间和速度没有要求的 数据。我们平时所用的u 盘、硬盘、光盘、打印机和扫描仪等,都使用的是批量 传输。当u s b 总线紧张时,它会让出自己占用的帧d , 帧时间,这时传输速率会很 低。当u s b 总线空闲时,它便会以很快的速度进行传输。批量传输只能应用于全 速或高速设备,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论