新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > USB2.0接口IP核的开发与设计

USB2.0接口IP核的开发与设计

作者:时间:2012-02-08来源:网络收藏
随着PC机和外围设备的发展,传统的并行接口和串行接口RS-232在易用性(即插即用) 和端口扩展等方面存在着一定的缺陷,这就使之越来越成为通信的瓶颈,因此通用串行总线(universal serial bus,USB)接口也就应运而生。1994年Compaq,IBM,Intel,Microsoft ,NEC 等公司共同提出了USB 协议规范,1996 年制定出了比较成熟的USB 1.1协议标准,最高传输速度为12Mbps。随着通信的发展,其速度明显不能满足需求,因此2000年提出了USB 2.0标准,增加了高速模式,使传输速度提高了40倍,达到了480 Mbps.凭借价格低廉、使用简单、协议灵活,接口标准化和易于端口扩展等优点,USB 接口被越来越多的外围设备所应用。

系统结构设计

  本文所设计的USB 2. 0 接口完全依据于USB 2. 0的协议,可以完成协议的处理和数据的交换。整个系统采用了MCU 固件和硬件电路相结合的设计方法,根据不同的功能以及软硬件实现的难易程度,进行了相应的模块划分。从图1 中可以看出,硬件电路分成4 个模块:收发器,USB 协议控制器,工作模式控制器和缓存控制器。这些模块将在下面具体介绍。

  根据协议可知,USB 定义了四种传输类型:控制传输、批量传输、中断传输和同步传输。 其中控制传输是用于支持在设备和主机之间关于设置信息、命令信息和状态信息的传送,是必不可少的,而其他三种传输方式是真正有用的数据传输,是可选的。MCU 作为固件,其功能是协助完成USB 的控制传输,这可使设计简单,因为如果这部分功能使用硬件电路来实现将会变得非常复杂。虽然单片机的速度很慢,远远低于硬件电路,但是对于整个系统来说,控制传输只发生在主机和设备连接的开始阶段和其他传输之前,因此速度稍慢一些对整个系统的在传输速度方面的性能影响不大;但是对于其他传输方式,尤其是同步传输和批量传输来说,这样会降低USB 2. 0 高速传输的性能,是不能容忍的,所以这就决定了其不能参与USB 其他方式的数据传输。

模块设计

收发器( Transceiver)

  根据UTMI(USB Transceiver Macrocell Interface) ①可知,USB 2. 0 接口的收发器主要负责时钟和数据的恢复、位填充和位剥离、NRZI(非归零反转) 的编码和解码、串并和并串的转换、同步字段和包结束码的检测和生成等功能,同时支持高速和全速传输,提供30 MHz(16 位并行数据) 时钟和60 MHz(8位并行数据) 时钟。

  因为这部分是USB 2. 0 接口的模拟前端,并且是高速(480 MHz) 的串行信号处理,为了降低设计难度和减小开发周期,本文直接采用了CYPRESS 公司的CY7C 68000 芯片。  

工作模式控制器( Work Mode Controller)

  根据协议可知,从USB 设备连接到主机的USB 接口的过程中,USB 设备有多种可能的状态。不同的状态实现不同的功能。特别注意的是,如果USB 设备在一段特定的时间内探测不到总线活动时,必须进入挂起态,此时USB 设备保持当前的状态、地址及配置,这样可以有效地降低功耗。当检测到总线上任何非空闲信号时,设备必须被唤醒,回到原来的工作状态。

  该模块主要负责USB 设备的状态转换,包括设备与主机的高速握手信号检测、主机复位信号检测、挂起和唤醒状态检测等功能。具体的状态转化过程如图2 所示。

  当USB 设备刚刚和主机建立连接时,工作在全速状态,主机发送复位信号,在复位过程中,设备发送Chirp K 信号给主机,支持USB 2. 0 的主机接收到此信号后发送3 组交替的Chirp K和Chirp J信号。设备探测到此信号后,在复位信号结束后就工作在高速(480Mbps) 工作状态,否则USB 设备工作在全速(12 Mbps) 状态.当设备工作在高速模式下时,直接使用收发器提供的30MHz 的时钟;当设备工作在全速模式下时,此模块要对收发器提供的时钟进行40分频,然后再供给USB 的其他模块单元。这是因为在全速工作模式时,数据传输的串行速率是12Mbps ,仅为高速传输的1/ 40。检测总线状态,当接收到来自主机的软复位信号时,此模块负责产生复位信号给整个USB 接口电路。处在任何一种状态的设备都必须接收主机的复位信号。

  检测总线状态,当USB设备发现总线上的连续空闲(高速时总线状态为SE0 ,全速时总线状态为J ) 时间超过3 ms 时,该模块产生挂起(suspend) 信号给整个USB 2. 0 接口电路,使之进入挂起状态,所有模块都不工作,此时整个电路的功耗会变得很低;处在挂起状态的设备,探测到总线上的非空闲(总线状态一般为K态) 信号时则产生唤醒信号,使整个电路在一定时间内回到全速或高速工作状态。

USB协议控制器( USB Protocol Controller)

  这部分是USB 2. 0 接口电路的核心单元,处理大部分USB2. 0 的协议请求,完成数据的通信。USB总线是一种轮讯方式的总线,主机控制端口初始化所有的数据传输。每一次传输可以由多个事务构成,每一个事务最多可以传送3个数据包,分别为标记包(Token Packet) 、数据包(Data Packet) 和握手包(Handshake Packet)。传输开始时,由标志包来标志数据的传输方向,然后发送端开始发送包含有用信息的数据包或者零数据的数据包(根据传输的不同阶段而有所不同) ,接收端则要相应地发送一个握手包表明传送。

  该模块的具体工作流程如图3 所示,在接收数据时,首先对包标识符( PID) 进行解析,如果是标记包(Token Packet) ,则用5 位CRC 进行校验; 如果校验错误,则忽略该信息包,校验正确后将数据送入USB 逻辑控制器,针对不同的PID 进行相应的处理。如果是数据包(Data Packet) ,则用16 位CRC 校验,然后将有效数据送入缓存控制器进行缓存,再根据传输类型,分别送入不同的模块; 在控制传输方式下, 则将数据传送给MCU ,利用MCU 完成主机对设备相应的配置工作以及完成和主机配置方面的数据交换,在其他传输方式下,则直接通过DMA 总线将数据传送到SDRAM 中存储。

  如果是握手包(handshake Packet) ,则不需要CRC 校验,因为其已经包含自身反码的校验字段,直接将解析后的PID 送入USB 逻辑控制器。在发送数据时,如果是数据包,首先从缓存控制器模块得到所需数据,然后生成16 位CRC 校验码和相应数据包的PID ,传送到收发器中进行发送;如果是握手包,则直接生成相应握手包(ACK,NAK,STALL) 的PID ,然后送到收发器中发送.同时,USB 协议是通过切换从属于数据发送器和接收器的时序位来实现高速数据传输同步的。仅在接收器接受到带有正确的数据PID的无错数据包时,接收器时序位才切换;而仅在数据发送器收到合法的ACK握手PID 时,发送器时序位才切换。如果同步失败,则根据具体情况重传或丢弃该数据包,这样可以保证数据传输的正确性。

  USB 逻辑控制器负责将设备的地址和端点号放入状态寄存器,只有标记包中的地址(先使用缺省地址,然后更改为主机配置的地址) 正确时才接受相应的数据包,然后根据标记包中的端点号来区分不同的传输模式:控制传输是双向端口,只有一个端点号,一般将编号为0 的端点作为控制端点以响应控制事务的输入输出;其他传输模式是单向端口,输入和输出方向都定义为不同的端点号。

pid控制相关文章:pid控制原理


pid控制器相关文章:pid控制器原理



上一页 1 2 下一页

评论


相关推荐

技术专区

关闭