UTMI接口规范介绍

1. 什么是UTMI?

UTMI (USB2.0 Transceiver Macrocell Interface):USB2.0 通用传输接口。最初设计是为了减少开发厂商的工作量,旨在提供一种通用标准,来完成USB 2.0 的 底层协议数据处理。UTMI 的出现是为了加速USB2.0 外设的开发。

UTMI 最主要的作用主要是负责USB 协议中最底层的物理电信号的转换。其本质是一个接口规范,与usb phy 相连。

下图总结了在这个规范中表达的一些概念:

USB 2.0 Transceiver Macrocell(UTM):

Serial Interface Engine(SIE):串行接口引擎

Device Specific Logic:设备特殊逻辑

1.1 UTM

UTM 处理低级别的USB协议和信号。这包括诸如;数据序列化和反序列化、位填充和时钟恢复和同步等特性。

UTM的主要焦点是将数据的时钟域从USB 2.0速率转移到与ASIC中的一般逻辑兼容的速率。

UTM 的关键特点:

消除了高速USB 2.0逻辑设计

标准收发器接口为USB 2.0 SIE VHDL提供多个IP源

支持480 Mbit/s“高速”(HS)/ 12 Mbit/s“全速”(FS);仅支持FS和“低速”(LS);仅支持 LS 1.5 Mbit/s串行数据传输速率。

利用8位并行接口传输和接收USB 2.0电缆数据。

SYNC/EOP生成和检查

高速和全速运行,以支持“双模式”设备的发展

bit-stuffing/bit-unstuffing, bit error detect

能够在FS和HS终端/信号之间切换

等等

UTMI被设计用于支持HS/FS、仅FS和仅LS的UTM实现。这三个选项允许一个单一的SIE实现被使用与任何速度的USB收发器。供应商可以选择最满足其需求的收发器性能。

1.2 Serial Interface Engine(SIE)

SIE  可以进一步细分为两种类型的子块:SIE 控制逻辑 和 端点逻辑。

SIE 控制逻辑包含 USB PID 和 地址识别逻辑,以及其他处理USB数据包和事务的排序和状态机逻辑。

端点逻辑:包含特定于端点的逻辑:端点编号识别、FIFO和FIFO控制等。

一般来说,任何USB实现都需要SIE控制逻辑,而端点的数量和类型将随着应用程序和性能要求的不同而变化。

1.3 Device Specific Logic

这是将USB接口与设备的特定应用程序连接起来的逻辑。

1.4 UTM function block

UTM block 如上图。

Device-> HOST:并行 TxData -> bit Stufffer -> NRZI Encoder -> xmit -> D+/D- -> HOSTHOST -> Device:Host -> D+/D- -> NRZI Decoder -> Bit Unstuffer -> 并行Rx Data -> Device

2. UTMI 版本

UTMI 第一个版本,是2001 年 发布的(UTMI spec V1.05)。后续随着UTM 发展,引出了UMTI+ 版本。具体的版本如下:

版本功能备注
UTMI+ level0仅仅支持 USB2.0 设备也是UTMI 第一个版本, V1.05 版本
UTMI+ leve1支持USB2.0 设备、host 和 OTG 功能(HS/FS)。不支持 LS, 2.0 用得最广的接口
UTMI+ level2支持USB2.0 设备、host 和 OTG 功能 (HS/FS/LS with no hub support)支持LS 模式
UTMI+ level3支持 USB2.0 设备、host 和 OTG 功能(HS/FS/LS with hub support)

UTMI+ 不同版本接口协议规范是向下兼容的。对于学习USB2.0 我们可以研究UTMI+ level0 或者level1 就够了,高版本的协议无非是在旧有的协议基础上新增了一些信号处理。

3. UTMI 接口介绍

UMTI+ 不同版本之间信号还是很多的。我们以usb2.0 device 为主先介绍level0/level1。

3.1 UTMI+ level0

UTMI+ level0 规范,来源于UTMI 1.05 接口规范。下图给出了具有16位接口的UTMT+ level0 收发器所需要的所有接口信号:

对于具有8位接口的UTMI+0级收发器,TXValidH、RXValidH、DataBus16_8、DataIn(15:8)和DataOut(15:8)信号,则是不需要的。

对于 USB 2.0 phy 调试我们需要关注的几个信号(注意phy 的调试可能只在芯片fpga 阶段,或者外挂usb phy 才存在。一旦芯片集成完了,无法修改,后续的调试就大概率涉及不到phy 的调试):

CLK:UTMI_CLK 输出时钟

Reset:UTMI_RST

Xcvr Select:传输模式选择

Term Select:终端选择

LineState:D+/D- 状态。高速枚举的时候确认电平状态是否ok

DataBus_16_8:8bit/16bit 选择。

一旦速度枚举成功,说明整个输入输出信号无误,剩下的就到软件层面了。

3.2 UTMI+ level1

UTMI+ level1 规范相对于 level0 多了对OTG 设备的支持。新增了一些OTG /HOST 相关的接口。

信号接口如下:

对于USB2.0, 我们大多数情况下,用得最多的就是level1。同时支持:

device mode

host mode

OTG mode

对于单纯的只需要device 的设备我们在芯片设计阶段可以考虑,选择level0 的接口phy。

当然无论level 几,都可以向前兼容的。关键是usb 控制器的输入信号给的是什么标准。

usb 2.0 设备 默认信号:

3.3 UTMI+ level2

与UTMI+1相比,增加1bit的XcvrSelect信号来控制LS选择。另外需要注意linestate等信号在LS时也要表示不一样状态。

新增接口:

LineStare 状态:

在全速和低速模式下,lineState(0)总是反应DP,而lineState(1)总是反应DM。

下行端口lineState:设备端

上行端口lineState:host 端

修复一个前文错误:

下行端口(downstream):设备到主机行为。

上行端口(upstream):主机到设备行为

3.4 UTMI+ level3

与UTMI+2相比,没有增加新的信号。只增加XcvrSelect=2'b11时的功能,该功能定义在UTMI+2中该位是保留的。

这是对level2的进一步增强。在这个级别中,处理必须通过FS集线器从主机发送到LS设备的LS流量是可行的。

在level2中,如果使用并行接口,USB On-the-Go DRD的主机控制器部分只能与直接连接到主机的LS设备进行通信

如果XcrvSelect是11b,则收发器将在发送LS分组之前在FS处发送 preamble packet。在接收模式下,它将等待在LS收发器启用的情况下接收LS数据包。收发器必须使用FS令牌(快速上升和下降时间以及相反的极性)发送所有数据(FS preamble packet和LS数据)。注意,此时的令牌为特殊令牌PRE(有关PRE,本文不做介绍)。

一句话总结:level2 只能直接和LS 设备通信, level3 可以通过hub 外接LS 设备。

4. 其他

4.1 Chrip Sequence

对于高速设备连接到整个usb host 整个时序如图所示:

FS detect:全速设备检测

Host Driver:主机产生SE0,持续10ms

Device Responds:设备回应chirp K

Host Responds:主机回应 chirpk/j  对,设备切换到高速模式

HS Idle:高速Idle

通常我们关注最多的就是 USB 设备端的这段信号(DP/DM)。对于XcverSelect optmode linestate 等信号,一般对软件层面是隐藏的。一旦这些信号有问题。说明IC 设计有问题,比如信号连接不对,比如控制器输出的信号有问题 。

4.2 不同的信号模式

5. 总结

本文主要介绍了UTMI 及 UTMI+ 接口规范。详细对比了level0/level1/levle2/level3 。对于初学者而言,可以先以level0 为基准学习,后续再逐步深入到其他规范。

本文档适用于哪些人员:IC 设计人员、FPGA 验证人员、USB 底层深入学习人员。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值