(信号与信息处理专业论文)usb主机控制器ip核的研究与设计.pdf_第1页
(信号与信息处理专业论文)usb主机控制器ip核的研究与设计.pdf_第2页
(信号与信息处理专业论文)usb主机控制器ip核的研究与设计.pdf_第3页
(信号与信息处理专业论文)usb主机控制器ip核的研究与设计.pdf_第4页
(信号与信息处理专业论文)usb主机控制器ip核的研究与设计.pdf_第5页
已阅读5页,还剩65页未读 继续免费阅读

(信号与信息处理专业论文)usb主机控制器ip核的研究与设计.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中文摘要 i 摘 要 通用串行总线(usb)是一种具有即插即用、高扩展性、高速稳定等优点的通信 接口标准。目前基于 pc 机的 usb 应用已趋于成熟,但一些便携式 usb 设备要求 脱离 pc 机实现数据通信。因此将 usb 主机控制器应用于嵌入式系统,实现 usb 的点对点通信显得日益重要,本文旨在设计一款可在嵌入式 sopc 系统中使用的 usb 主机控制器 ip 核。 本文在对 usb 协议规范和 ohci 主机控制器设计规范深入研究的基础上,采 用自顶向下的设计思想, 对 usb 主机控制器 ip 核进行顶层设计和模块划分。 完成 usb 主机控制器 ip 核的 rtl 级描述、仿真及验证,并分析其仿真和综合结果。论 文主要包括以下几方面的内容: 首先, 对 usb 协议规范进行深入详细的研究。 在透彻理解 usb 协议的基础上 对 usb 主机控制器 ip 核按照自顶向下的设计思想进行顶层设计和模块划分。 其次,采用 verilog hdl 硬件描述语言对所划分的主机控制模块、串行接口引 擎、avalon 总线接口模块、接收和发送缓冲等子模块进行 rtl 级设计。其中主机 控制模块完成usb数据传输的核心控制功能,串行接口引擎实现usb协议层功能, avalon 总线接口层和接收发送缓冲模块完成系统总线与 usb 总线的时钟域切换和 数据的异步时域传输功能。在设计中采用一种新型的 crc 校验并行算法,提高了 校验效率、优化了逻辑电路的时序特性;设计存储深度可配置的 fifo 作数据收发 缓冲,在保证传输速度的基础上方便用户裁减以节省逻辑资源开销。 最后,针对所设计的主机控制器 ip 核制定详细的仿真测试方案,搭建仿真测 试平台,编写结构化的 testbench,采用 modelsim 仿真工具对各子模块进行功能 仿真,保证模块逻辑功能满足设计要求,采用 altera 公司的 fpga 验证平台进行 逻辑综合与验证。 所设计的 usb 主机控制器 ip 核仿真和测试结果表明,主机控制器 ip 核各模 块逻辑功能均达到设计要求, 整个主机控制器可在 usb1.1 协议规定的低速和全速 两种传输模式下完成指定类型的数据包的发送。本设计为 sopc 系统中嵌入 usb 主机控制器提供了有效可行的实现方案,拓展了 sopc 系统的外设接口,具有较 高的应用价值。 关键词关键词:通用串行总线,主机控制器,ip 核,fpga 英文摘要 iii abstract universal serial bus is a kind of communication interface standard with plug and play, high scalability, high-speed stability, etc. current pc-based usb applications tend to be mature, but some portable usb devices require being away from the pc for data communication. therefore, it is increasingly important to apply usb host controller in embedded systems and achieve point to point usb communications. this study aims to develop a usb host controller ip core support that can be used in embedded sopc system. this article employs the idea of top-down design to conduct the top-level design of usb host controller ip core and module division on the basis of in-depth studies about the usb protocol specification and the ohci host controller specification. finally this study aims to complete the rtl-level description, simulation and verification of usb host controller ip core, and finally carry out the analysis of the simulation and synthesis results. this article includes the following aspects: first of all, this article carries out in-depth studies about the usb protocol, and then conducts the top-level design of usb host controller ip core and module division on the basis of in-depth understanding of usb protocol. secondly, this study employs integrated rtl verilog hdl hardware description language to design functional sub-modules, host control module, serial interface engine, avalon bus interface module, receive and send buffer, etc. usb host takes the core function of controlling module to complete the data transmission, and serial interface engine takes the function of the usb protocol layer. these two modules are the most critical parts of the host controller ip core. avalon bus interface layer with the send and receive buffer modules achieves the function of clock domain switching and asynchronous data transmission in time domain of the system bus and usb bus. this design adopts a new parallel algorithm for crc check and finally its proved that it improves the efficiency of verification, optimizes the timing characteristics of logic circuits. and it incorporates the design of fifo memory whose depth can be configured as data sending and receiving buffer. it is finally conducive to users clip for the sake of saving logic resources on the basis of guaranteeing the rate of data transmission. finally, it draws up detailed simulation test program for the usb host controller ip core, composes structured testbench files, and carries out functional simulation towards 重庆大学硕士学位论文 iv sub-modules through professional simulation tool-modelsim in order to ensure that logic functions of the module meet the requirements of the design. then, it executes the logic synthesis and downloading verification for the host controller ip core through the altera fpga platform in order to understand the logic consumption and its timing characteristics. through the thorough analysis of the simulation and test results of usb host controller ip core, its indicated that each module of ip core logic functions meets requirements of the design, and the host controller can successfully accomplish the task of sending the assigned data package in the patterns of both low speed and full speed specified in the usb1.1 protocol. this design provides feasible and effective implementations for embedding usb host controller in the sopc system, expands the peripheral interfaces of sopc system. it is of higher application value. key words: usb, host controller, ip core, fpga 1 绪 论 1 1 绪 论 1.1 课题研究背景及意义 1.1.1 usb 技术的产生、发展及特点 随着科技的发展,计算机的使用日益广泛。而计算机硬件也有了飞速发展, 计算机外围设备不断增加,鼠标、键盘、调制解调器、打印机、扫描仪等低速外 设早已为人所用,数码影音设备、可移动存储等高速外设的应用也越来越多。原 有的计算机接口数量和带宽已经无法满足大量外设连接的需要,如果给每个设备 都分配一个独立的接口将会大大增加计算机系统的成本和复杂度,而且会给计算 机的使用带来较大的不便。这样极大地限制了计算机应用的发展。 对于像串口、并口等这些旧的计算机接口,计算机制造商和用户都已经意识 到了它们的不足。人们都在寻求一种能克服其缺点的解决方案,希望能有一种通 用的接口可以解决这一问题,新的接口应该在存储速度、可靠性、易用性、可扩 展性等方面有较大的突破。在这样的情况下,usb 技术应运而生了。 当前,通用串行总线(universal serial bus,usb)1已经成为一种很流行的接口, 它的出现成为计算机外设接口技术的重要变革。1994 年,以 intel 为首的七家世界 著名计算机和通信公司(intel, compaq, digtial equipment, microsoft, ibm, nec, northern telecom)共同推出了 usb(universal serial bus,通用串行总线)总线协议。 成立了 usb 实施论坛 usb implementers forum(简称 usb-if)23。此后花了近两 年的时间形成了统一意见, 于1995年11月正式制定了usb 0.9通用串行总线规范。 1996 年 usb-if 又提出了 usb1.0 协议,1997 年,符合 usb1.1 技术标准的外设出 现,usb1.1 支持 1.5mbps 低速模式和 12mbps 高速模式,可以满足不同场合的需 要,支持即插即用和热插拔。与此同时,很多厂商推出了 usb1.1 协议芯片,促进 了 usb 的发展,usb1.1 是目前推出的在支持计算机与外设上普遍采用的标准。 2000 年 4 月 27 日,由 compaq, hp, intel, lucent, microsoft, nec 和 philips 正式对 外发布usb2.0协议规范, usb2.0将速度提高到480mbps, usb2.0兼容所有usb1.1 外部设备,线缆和连接件。此时 usb 接口已经成为接口技术中的主流总线接口, usb2.0 协议的公布不仅使 usb 传输速度大大提高,而且使更多的设备可以经由 usb 直接连接到 pc,例如高清数字电视,彩色扫描仪和彩色打印机,快速存储设 备等等,解决了接口传输速率的瓶颈问题4 5。 在短短的几年间,usb 接口得到了广泛的普及和应用,无论是在计算机系统 还是在嵌入式系统中。相对较前的计算机系统的接口,诸如 ps/2 串行口、rs232 串行口、并行接口等,usb 接口有着其显著的特点,具体表现在以下几个方面6: 重庆大学硕士学位论文 2 即插即用 usb 设备具有热插拔,即插即用的特点。用户可在开机的情况下,对 usb 设备进行拔插操作。当一个 usb 设备连接到系统上时,操作系统会自动检测到该 设备,并且自动加载其相关的设备驱动程序,并且利用其默认的配置参数对设备 进行配置,用户不需要重新启动操作系统就可以完成对它的初始化和配置工作。 总线供电 usb 总线带有+5v 的电源线和地线,usb 设备可以从系统总线上获得 +5v、小于等于500ma的总线供电。在usb设备设计时可以考虑采用总线供电, 当然要根据该设备对电源的要求来确定。比如 usb 接口鼠标、键盘等对电压要求 不高的设备,可采用总线供电,而对于像 usb 接口打印机这类对电压要求高的设 备则需要外接电源。 系统的扩展性 根据 usb 系统规范,usb 总线上最多可以连接 127 个设备。由于 usb 接口不占用系统的 i/o 口、地址总线和中断向量,当总线上的接口不够时,可以 通过 usb 集线器来扩展更多的 usb 接口。 硬件接口模型 在usb系统中,不同种类的usb设备使用相同的接口。因此,用户在设备连 接的时候,无需考虑连接接口的类型以及接口的硬件电气特性。在设备接口设计 过程中,只需考虑统一的 usb 接口,并不必设计另外的连接类型。 1.1.2 课题研究意义 集成电路(ic)的设计水平的增长速度一直低于工艺水平的增长幅度, 近年来随 着集成电路生产工艺的提高,特别是进入深亚微米(deep sub-micron, dsm)、超深 亚微米(vdsm)工艺阶段后,这个问题显得尤为突出78。同时由于在过去的 30 年 里,半导体业遵循着摩尔定律“集成电路上可容纳的晶体管数目,约每隔 18 个月便会增加一倍,性能也将提升一倍”的发展规律。因此,这样的现状向 eda 技术提出了更高更快的要求,以使芯片能有更多的功能、更低的成本和功耗、更 小的几何尺寸、更短的上市时间等。在这种背景下,知识产权(intellectual property, ip)技术应运而生,它被认为是最有前途的解决方案9。 ip 核就是用于 sopc、asic、pld 等当中,具有知识产权的、已经设计好的 并经过验证的、可重复使用的电路模块。根据设计层次的不同,ip 分为软核、硬 核和固核。具体来说,软核为能综合的hdl描述,与工艺无关;硬核为具有特定 电路功能的集成电路版图;固核为软核和硬核的折中。软核用硬件描述语言 (rtl、门级 verilog hdl 或 vhdl)的形式描述功能的行为,并不涉及用什么电路 和电路单元实现。与硬核相比,软核的设计周期短、设计投入少,由于不涉及物 1 绪 论 3 理实现,用户能把寄存器描述级(register transfer lever, rtl)和门级 hdl 表达的 软核修改为自己的设计,综合到选定的厂商工艺上,增大了 ip 的灵活性和适应性 10。硬核的电路布局布线和工艺是确定的,硬核已完成整个前端和后端设计,硬 核提供设计的最终阶段的产品:掩膜,其知识产权保护比较容易,但是具有工艺 相关性,灵活性不高等缺陷。固核是一种介于软核和硬核之间的 ip,通常以 rtl 代码和对应具体工艺网表的混合形式提供给用户。固核是完成了综合的功能块, 有较大的设计深度,以网表的形式提交客户使用。最早的 ip 开发是为了提高设计 效率、减少设计风险,将多次设计成熟、经工艺验证并已优化的设计模块建库, 提供给相同功能电路设计使用。随着集成电路的发展和 sopc 复杂性的提高,给 ip的开发带来巨大商机,ip己成为一种商品,ip技术越来越成为ic业界广泛关注 的焦点11。 由于 usb 接口技术已经非常成熟,其应用也非常广泛。而且在越来越多的应 用场合需要在 pc 机主板以外实现 usb 通信,这样设计 usb 主机控制器芯片将具 有巨大的实用价值和应用前景。总之,无论从市场需求来看,还是从提高我国芯 片设计领域的竞争力来看,设计usb主机控制器ip核对于打破垄断,掌握核心技 术和自主知识产权都具有重要的价值。 1.2 本课题的国内外研究现状 目前,usb接口应用已经非常广泛,而ip技术的发展也很迅速。因此,很多 国外的ip公司都开始提供usb ip核产品,包括usb主机和usb设备。这样使得 在电子产品中使用 usb 接口变得更加简单。usb 集成电路的最大供应商 cypress 开发了多款usb设备控制器,如最流行的ez-usb fx2 usb2.0控制器,它集成了 8051 处理器,串行接口引擎,usb2.0 收发器,内嵌 ram 和 fifo 等。philips 公 司也推出了一个完整的 usb 产品系列,如主机控制器 isp1561,集线控制器 isp1521,收发器isp1501等,组成了完整的usb产品线。另外随着嵌入式技术的 迅速发展,altera 公司的 megacore ip 中提供了完整的 usb 1.1 和 usb 2.0 ip 系 列,包括了主机、集线器和设备12。而 xilinx 公司也提供了 6 款 usb ip 核的范 例。trenz electronic公司在2000年也推出full-speed usb 1.1 function controller。 aldec(the design verification company)在2006年4月推出了usb1.1 ip核和usb 2.0 ip 核,它们能够满足不同的设计需要。 在国内,由于usb ip核的研发才起步,所以在市场上可以看到的产品只有少 数的几款,包括上海华杰芯片的 usb1.1 和 usb 2.0 transceiver,上海众华电子的 usb 1.1/2.0和四川和芯微电子的usb 2.0 transceiver13。在市场上,各个公司推出 的 ip 核以基于 usb1.1 和 usb2.0 的设备控制器 ip 相对较多,而 usb 主机控制器 重庆大学硕士学位论文 4 ip 核非常少,关于 usb 主机控制器 ip 的研究工作也很少。 1.3 论文的结构安排 论文组织结构安排如下: 第一章 绪论, 本章阐述了本论文的研究背景和意义、介绍了 usb 主机控制器 ip 核的国内外研究现状。 第二章 usb 协议概述, 本章介绍了 usb 的体系结构、usb 的机械电气特性, 同时介绍了 usb 数据流模型、usb 协议层和 usb 主机等内容。 第三章 usb 主机控制器 ip 核设计方案,介绍了系统设计平台、usb 主机控 制器 ip 核设计的总体流程以及主机控制器顶层设计和模块划分。 第四章 usb 主机控制器分模块具体设计,本章是全文的关键部分,重点就各 子模块的设计思路和实现进行详细介绍。 第五章 仿真与验证,首先搭建仿真测试平台,然后采用仿真工具 modelsim 对 ip 核进行功能仿真,最后进行 fpga 的综合验证。 第六章 总结与展望,本章对论文所做工作进行了总结,并对当前的不足以及 下一步工作展望进行了阐述。 2 usb 协议介绍 5 2 usb 协议介绍 本章对usb协议规范进行一个概述。详细研究usb体系的组成和数据传输模 型,并着重分析usb主机端的软硬件结构及功能。通过对usb协议的深入研究和 分析,进一步明确 usb 主机控制器的设计要求。 2.1 usb 结构体系简介 usb 是一种电缆总线,它支持在主机与许多可同时访问的外设之间进行数据 交换。所有连接的外设均通过一个主机调度、基于令牌的协议共享 usb 带宽。 usb 总线允许在主机和其他外设工作的时候进行连接、配置、使用和拔出外设。 2.1.1 usb 系统描述 usb 系统可以从以下几个方面进行描述:usb 的互连、usb 的设备和 usb 的主机。如图 2.1 所示,为一个简单的 usb 系统。 usb 主机 usb 设备 usb互连 图 2.1 usb 系统示意图 fig.2.1 system of usb 作为 usb 系统的主控组件,usb 主机控制着总线上所有 usb 设备和集线器 的数据通信过程。在 pci,1394 总线体系结构中,允许存在多个主控端,而 usb 系统中只有主机端能担当主控端,且只能有一个主机。usb 主机控制着整个系统 的数据传输工作,所有的数据传输都是由 usb 主机端发起的。根集线器集成在主 机系统内,它提供了一个或多个连接点。主机的主要功能包括:检测设备的接入 和断开,管理在主机和设备之间的控制流和数据流,收集设备的状态和动作信 息、为设备提供电源等。 通过总线与 usb 主机连接的称为 usb 设备,usb 的设备可分为集线器 (hub)、功能设备(function device)以及复合设备(compound device)。集线器提供 了 usb 设备与主机的连接端口,它使系统分层级联。功能设备根据属性不同完成 不同的功能,如usb键盘、usb摄像头、打印机等。usb主机提供的软件协议通 过和功能设备通信获得设备的信息,并给设备提供驱动。在总线数据传输中,它 们接受主机的控制,按照主机的要求接收或发送数据。复合设备是由 usb 集线器 加上一种或几种 usb 设备而集成的一种物理设备的集合。在物理上它是一个设 重庆大学硕士学位论文 6 备,但是在 usb 主机看来,它就是 usb 集线器和一台或多台设备14。 usb 的互连是一种宏观的抽象,是指 usb 设备与 usb 主机之间的连接及通 信方式。它包含以下几个方面: 总线拓扑:usb 设备与主机之间的连接模型; 层间关系:按照堆栈的容量,在系统各层间执行 usb 任务; 数据流模型:数据在 usb 系统的信息发送方和接收方之间的连接方式; usb 调度:usb 提供了共享的互连机制,通过对互连访问的调度,可以支 持同步数据传输并消除仲裁的开销。 2.1.2 usb 总线拓扑结构 usb 系统通过具有相同接口的串行连线将不同的设备连接起来,usb 的物理 拓扑为分层的星型结构,构成该结构的就是usb主机(host)、usb集线器(hub)和 usb 设备(device)。集线器是每个星形的中心。每段线路都是主机与集线器或者 功能设备之间,或者是集线器与另一个集线器或者功能设备之间的点对点连接。 图 2.2 中所示为 usb 的总线拓扑结构。 图 2.2 usb 总线拓扑结构 fig.2.2 bus topology of usb 由于集线器和电缆之间的传播时间有定时限制,允许的最大层数是 7(包括根 层)。需要注意的是,在这 7 层中,主机和任何设备之间的通信通路最多可支持 5 个非根集线器。一个复合设备占用了两层:因此如果它被连接在第 7 层就不能运 行。第 7 层只允许连接功能设备。通过这样一个分层结构,一个主机最多可以连 接 127 个设备。虽然在物理上,设备通过分层星型结构连接到主机,但是从逻辑 上来看,设备和主机是就像直接连接的一样。 2 usb 协议介绍 7 2.2 usb 的机械电气特性 在 usb 系统中,usb 的物理接口位于 usb 总线接口层,它主要包括电气和 机械两个方面的特性。 2.2.1 机械特性 机械特性主要反映在 usb 电缆和连接器。usb 电缆由四条导线组成:两条电 源线(红色和黑色)和两条数据线(白色和绿色)。usb协议规定:在高速和全速传输 中,和两条信数据线 d+、d-要实行完全屏蔽双绞,低速传输时推荐但不要求双 绞,这是为了遵循电磁干扰(emi)的要求。由于电气原因,usb 电缆长度不能超 过五米。如图 2.3 所示为 usb 电缆示意图。 图 2.3 usb 电缆 fig.2.3 cable of usb 为了减少用户使用终端遇到的问题,usb 采用一种“可识别的连接器”协议, 连接器有四个方向,具有屏蔽层,以避免外界干扰,并有易拆装的特性。协议规 定了2种规格的连接器,分别称为a系列连接器和b系列连接器,如图2.4所示。 a 系列插头面向主机,b 系列面向设备,a 系列插头必须和 a 系列插座配对,b 系列插头必须和 b 系列插座配对,这可以防止产生非法回路15。 图 2.4 usb 连接器 fig.2.4 physical interface of usb 2.2.2 电气规范 总线信号状态 重庆大学硕士学位论文 8 usb 的数据信号线是差分驱动的,它们在数据传输过程中有差分态(1 或 0) , 静止态(1 或 0)和单终端0(se0)等状态。协议根据这些状态判断设备的速率,信号 代表的数据意义等。不论对于高速传输、全速传输还是低速传输来说,当 d+信号 线的电压比 d-信号线的电压高于 200mv 时,表示差分1;当 d+信号线的电压比 d-信号电压低于 200mv 时,表示差分0,它们分别表示变化的过程。静止1和0 表示信号线处于空闲状态时的编码情况,它定义为1和0,独立反映 d+和 d-线 的电平情况,用于设备的插上、拔下、挂起等状态。 表 2.1 总线状态的说明 table2.1 usb bus state and signaling level 信号电平 总线状态 发端驱动器 接收器 差分信号“1” d+voh(最小)并且 d-200 毫伏 并且 d+vih(最小) 差分信号“0” d-voh(最小)并且 d+200 毫伏 并且 d-vih(最小) 单端零(se0) d+和 d-vol(最大) d+和 d-vihz(最小) 并且 d+vihz(最小) 并且 d-vil(最大) 恢复状态 数据 k 状态 包起始符 数据线从空闲状态转为 k 状态 包终止符 单端 0 两个位时间, 后面跟一 个位时间的 j 状态 单端 0 等于大于一个位时间, 后面跟一个位时间的 j 状态 断开 na 单端 0 等于或大于 2.5 微秒 连接 na 单端 0 等于或大于 2.5 微秒 复位 d+和 d-vse 10 毫秒 单端 0 等于或大于 2.5 微秒 当总线进行数据传输时,数据采用 nrzi 编码方式,并将 d+和 d-线所处的不 同数据状态定义为 j 和 k 两种状态。全速传输的 j 和 k 状态表示的意义与低速传 输正好相反。另外,当d+和d-信号线的电平都低于vse时,表示信号处于单端状 态(se0),它是包结尾(eop)的一部分。如表 2.1 是 usb 总线状态说明。 设备检测 usb1.1 支持低速、全速两种传输,速度不同的 usb 设备在其上游端口处的 2 usb 协议介绍 9 不同位置上装有上拉电阻,如图 2.5 和图 2.6。全速设备中的上拉电阻 rpu 是接在 d+线上的。低速设备中的上拉电阻 rpu 电阻是接在 d-线上的。 当全速设备连接到集线器端口时,集线器检测到的 d+的电压已经接近高电 平。而d-接地,主机便知道全速设备已连接。当低速设备连接时,主机检测到d- 接近高电平,而 d+接地,主机知道低速设备已连接。 usb2.0 规范的支持高速传输,在高速设备中,其上拉电阻也是接在 d+线上 的,不同的是,在高速设备连接时最初是以全速设备出现,高速设备和高速端口 传输一个握手信号指示这个设备是高速设备16。 图 2.5 全速设备上游端口和下游端口的电阻连接 fig.2.5 resistance connect between upstream and downstream of full-speed device 图 2.6 低速设备上游端口和下游端口的电阻连接 fig.2.6 resistance connect between upstream and downstream of low-speed device 传输数据的编码和译码 除了 d+和 d-数据线的空闲状态和包结尾(eop)外,在 usb 总线数据传输中 采用的是差模方式,通过 d+和 d-两根线来传输。usb 采用反向不归零 (none-return to zero inverted,nrzi)的编码方案。相应的解码过程就是 nrzi 的 逆过程,数据的发送方是nrzi的编码方,接收方是解码方。使用nrzi编码可以 减少噪声保证数据传输的完整性,且不要求独立的时钟信号。在 nrzi 编码方案 中,遇到1则电平不翻转,遇到0则电平翻转。图 2.5 给出了数据流 “16b0110101000100110”及其 nrzi 编码。 重庆大学硕士学位论文 10 data nrzi idle idle j k 0110101000100110 图 2.7 反相不归零编码(nrzi) fig.2.7 nrzi data encoding 从上图中可以看出,nrzi 上电初始态是一个高电平状态(总线空闲的状态), 在 usb 主机和设备进行数据通信时,出现数据流则为该数据流的 nrzi 编码。在 usb 数据总线上,一连串的0会使得 nrzi 编码后的数据每个周期都出现跳变。 而一连串的1则使得数据长时间的不出现变化。图 2.8 为 nrzi 编码的流程图。 取数据比特取数据比特 数据比特数据比特=0? 分组传输完成分组传输完成 n yn n y 电平不变电平不变电平改变电平改变 有无传输有无传输? y 开始开始 结束结束 图 2.8 nrzi 流程图 fig.2.8 flow diagram for nrzi 为了确保信号有足够的变化,发送方在 usb 上发送包的时候都要使用位填 充。在数据被 nrzi 编码之前,数据流中每 6 个连续的1后都要插入一个0,强 迫连续6个时钟以上的高电平在nrzi编码时有一个跳变,这样,接收器逻辑在每 7 个位时间内至少有一个数据跳变,保证数据和时钟锁定。从而使通信保持同 步。图 2.9 给出了一个位填充的例子。 2 usb 协议介绍 11 同步字段同步字段数据包数据包 原始数据原始数据 位填充位填充 同步字段同步字段数据包数据包 6个个1 位填充后 的数据 位填充后 的数据 nrzi编码 后的数据 编码 后的数据 idle 同步字段同步字段数据包数据包 图 2.9 位填充 fig.2.9 bit stuffing 在接收端必须对从 usb 总线上接收到的数据进行 nrzi 解码,识别填充位, 将它们丢弃。位填充从同步字段开始,贯穿于整个 usb 数据传送过程中。位填充 的流程图如图 2.10 所示。 位值位值=1? rxbitscount =0 取下一位取下一位 rxbitscount +1 rxbitscount =6? rxbitscount 清零清零 传输完成?传输完成? y n y n y n 开始开始 有无传输?有无传输? y n 结束结束 图 2.10 位填充流程图 fig.2.10 flow diagram for bit stuffing 重庆大学硕士学位论文 12 2.3 usb 数据流模型 2.3.1 usb 通信流 usb 在主机的软件和 usb 功能设备之间提供了通信服务。在 usb 系统中, 一个 usb 主机可以通过 usb 总线和多个 usb 设备相连,在物理上,总线设备通 过一条物理连线和主机通信,所有设备共享这条物理链路。在逻辑上,主机给每 一个设备提供了一条逻辑连接, 每个设备都有这么一条点对点连接。 为了细化 usb 通信机制,usb 协议的开发者采用了分层的概念。将系统分为了三层,每一层传 输的数据结构对其他逻辑层是透明的。图 2.11 显示了 usb 设备和 usb 主机通信 的逻辑结构和每层的逻辑通道17。 功能结构功能结构 usb逻辑设备逻辑设备 usb总线接口总线接口usb主机控制器主机控制器 usb系统软件系统软件 客户软件客户软件 功能层 协议层 总线接口层 功能层 协议层 总线接口层 互连主机物理设备互连主机物理设备 物理通信数据流 逻辑通信数据流 物理通信数据流 逻辑通信数据流 集中执行区域集中执行区域 图 2.11 usb 系统层次结构图 fig.2.11 usb implementation areas 如上图所示,usb 通信逻辑上分为:功能层、协议层和总线接口层。usb 总 线接口层提供了主机和设备之间的物理连接,用来实现 usb 设备和主机的物理连 接之间传输的位信息流。 协议层是对 usb 系统软件可见的, 用来实现 usb 设备和 usb 主机端的系统软件之间传输的包字节流的信息传输,它们在总线接口层被编 码成 nrzi 位信息后传送出去。功能层用来传输 usb 客户软件和设备端的功能接 口之间的有一定意义的信息,这些信息在协议层被打包成包格式。当设备被系统 检测到的时候,这些客户软件直接作用于外围硬件。协议层和功能层的通信是逻 辑上的,而实际物理通信是由总线接口层来完成的。 2.3.2 usb 传输的两个重要概念 端点,它是 usb 设备唯一可识别的部分,是主机与设备之间通信流的终 点。每个 usb 逻辑设备都由一个独立的端点集组成,在设备连接时,系统为每个 2 usb 协议介绍 13 逻辑设备分配了唯一的地址,设备的每一个端点在设计时给定一个由设备决定的 标识符就是端点号。每个端点都是由设备决定的数据流方向。设备地址、端点 号,和方向的组合允许惟一指定一个端点。每个端点都单一地连接,支持一个方 向的数据流输入(从设备到主机)或输出(从主机到设备)。端点具有以下几方面的属 性:总线访问频率、带宽要求、端点号、差错处理行为要求、端点能发送或接收 的最大包的大小、端点传输类型、端点与主机之间的传输方向18。 所有设备都要求有一个端点 0,作为输入输出的默认控制方式,它用来接收 主机端发送的控制命令,完成对设备的控制和状态反馈,称为默认端点。usb 系 统软件使用这个默认的控制方式对逻辑设备进行初始化和一般的操作。在配置之 前,除端点 0 以外的其他端点都处于未知的状态,这些端点在配置前不能被主机 访问。 usb 管道,它是设备端点与主机软件之间的联系,数据通过主机客户软件 程序的存储器缓冲区与 usb 设备端点之间的管道进行传输。管道是端点传输的逻 辑通道,而不是物理传输通道。管道有两种类型:流管道(stream)和消息管道 (message),其中流管道是单向的,它传输的数据信息没有特定的格式,而消息管道 是双向的,用来传输协议定义的特定格式的信息19。 由两个端点号是 0 的端点组成的管道被称作默认的控制管道,这个管道在设 备上电后或者接收到一个总线复位信号后就一直有效。其他管道则在 usb 设备被 配置好后才开始存在。usb 系统软件用默认的控制管道决定设备的识别和配置要 求配置设备。 2.3.3 传输类型和传输管理 在usb协议中,通过主机客户软件程序的存储器缓冲区与usb设备端点通过 两者间的管道传输数据。由消息管道传输的数据具有 usb 定义的结构,但 usb 也允许专用设备构造的数据在usb定义的消息数据有效负载中传输。usb也定义 了在总线的任何管道(流或消息)上传输的数据都要进行打包,但最终对在总线处 理的数据有效负载中传输的数据进行格式化和解释,是使用这个观点的客户软件 和功能设备的责任。usb 提供了不同的传输类型,它们被优化,从而更符合使用 管道的客户软件和功能设备的服务要求。 usb 协议规范将在将功能层传输的信息流称为传输(transfer),将在协议层传输 的包信息流称为事务(transaction),在总线接口层传输的信息流称为包(packet)。传 输是由事务组成的,一次传输可由一个或多个事务构成,事务则是由若干包组成 的。usb 协议定义了四种传输方式来满足不同类型设备的数据通信要求:控制传 输 (control transfer) 、 同 步 传 输 (isochronous transfer) 、 中 断 传 输 (interrupt transfer)、批量传输(bulk transfer)。 重庆大学硕士学位论文 14 控制传输 在usb系统中控制传输主要有两方面的作用,首先,因为在usb主机与设备 进行通信之前,主机须先对设备进行配置,分配设备地址,读取设备描述符等。 其次,在usb通信过程中,usb主机可以随时访问该设备的工作状态,这些操作 也是通过控制传输进行的。协议规定,所有的 usb 设备都有一个端点来支持控制 传输。一般把默认端点端点 0 作为控制端点。 在控制传输中进行一次操作为完成一次传输,一次控制传输一般有两个或者 三个传输阶段:设置阶段、数据阶段(可选)和状态阶段。这些传输阶段由以下事 务组成,即设置(setup)事务、输入(in)事务和输出(out)事务。输入事务是由设 备发出数据到主机端,输出事务则正好相反。图 2.12 为控制传输的读写操作时序 图。 setup事务事务out事务事务out事务事务out事务事务in事务事务 setup事务事务in事务事务in事务事务in事务事务out事务事务 setup事务事务in事务事务 设置阶段设置阶段数据阶段数据阶段 状态阶段 写控制传输 三阶段 读控制传输 三阶段 读控制传输 两阶段(无 数据) 状态阶段 写控制传输 三阶段 读控制传输 三阶段 读控制传输 两阶段(无 数据) 设置阶段状态阶段设置阶段状态阶段 图 2.12 控制传输的读写时序 fig.2.12 control reads and writes sequences 同步传输 在一些场合(例如在视频、音频传输)要求进行速率恒定、容错、且数据通信 量大,为了支持这样的设备,usb 协议规定了同步传输。在同步传输中,必须保 证满足带宽要求,保证数据速率恒定;允许存在一定的数据错误率,如果有错误 致使传输失败时,不重新发送数据。 在同步传输时,只存在输入 in 事务和输出 out 事务,而无需握手包。这个 和同步传输要求的连续通信特点有关。在主机接收数据时,主机先发送 in 令牌 包,设备返回数据给主机;当主机发送数据时,主机先发送out令牌包,紧接着 发送数据包出去。图 2.13 为同步传输格式。 2 usb 协议介绍 15 in事务事务 data0 data0 空闲 令牌 数据 空闲 空闲 令牌 数据 空闲 主机设备主机设备 out事务事务 图 2.13 同步传输格式 fig.2.13 isochronous transaction format 中断传输 中断传输用于一些不需要经常发送或接收数据的设备。这类设备发送或接收 的数据量较少,且数据传输的频率不高,但是它们的数据传输周期是确定的,每 隔一定的周期传输一次。使用中断传输方式的设备有鼠标、键盘等。usb 系统中 的中断不同于平常意义上的中断,因为 usb 协议中没有硬件中断,所以中断传输 只是一种轮询的中断方式,主机端周期性的去查询设备是否有数据传输。 中断传输由 in 事务和 out 事务组成。当功能设备收到 in 令牌包后, 可返回 数据包,nak 包或 stall 包。若该设备端没有新的中断(即没有等待事务的中断) 返回,则设备在数据阶段返回 nak。若中断端点被挂起,设备将返回 stall 握 手包。若存在中断事务,设备将以数据包形式返回中断信息,主机接收到且数据 无误则发出 ack,否则将不会返回握手包。图 2.14 说明了中断事务格式。 in 空闲 令牌 数据 空闲 空闲 令牌 数据 空闲 主机设备主机设备 out data0/ data1 data0/ data1 nakstall ackacknakstall 空闲空闲 握手 数据 出错 数据 出错 握手 数据 出错 数据 出错 图 2.14 中断传输格式 fig.2.14 interrupt transaction format 重庆大学硕士学位论文 16 批量传输 批量传输用于时间要求不高,数据量比较大的传输场合。应用批量传输类型 的 usb 设备有打印机、扫描仪、以及移动硬盘等。批量传输虽然数据量大,但是 其传输速率并不确定。系统是将当前空闲的带宽分配给等待使用总线的批量传输 的 usb 设备,因为批量传输对实时性要求不高,所以它是在可用带宽的基础上进 行的,其可以使用任何可获得的总线带宽进

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论