本文转自公众号,欢迎关注
基于dwc2的usb驱动开发-0x08 ulpi接口协议概览 (qq.com)
一. ulpi(协议概览)1.1 前言前面我们介绍了glpi接口,ulpi即基于glpi接口的utmi协议的实现。ulpi用于usb中link和phy的通讯,主要应用于外置phy的场景。了解ulpi接口对整个usb驱动开发也有一些帮助,掌握usb也需要掌握usb整个链路的数据流,phy到link这一层的数据流至关重要,虽然对于编程来说这一层对软件可见度几乎为0,但是了解其有利于解决分析问题,尤其是一些疑难杂症.
1.2 概述ulpi是lpi接口规范应用于utmi+协议的一个具体实现, 相对于utmi,使用ulpi减少了引脚数量,适合于外接usb收发器(phy)的场景,支持otg,主机,设备的应用。
一般外接usb收发器比如原型验证阶段时采用ulpi接口,因为asic或者soc的引脚数是比较受限的;而如果usb收发器集成封装在asic,soc内,则使用utmi接口,因为在芯片内部,不占用芯片的引脚。
utmi才是link-phy之间的标准接口,ulpi只是为了外置phy等场景有低引脚需求才增加的实现。所以即使使用ulpi接口, link内部实际也是有一个utmi-ulpi的桥转换为utmi接口的,而phy封装在芯片内部直接使用utmi就不需要umti-ulpi的桥了,避免了桥接性能等方面的损失,这也是为什么phy集成在芯片内部都是直接使用utmi接口的一个原因。
ulpi规范详细说明了对utmi+level 3的支持,但phy实现者可以选择支持utmi+中定义的任何级别。
ulpi定义了link到phy之间的信号8个或者12个,即4个data或者8个data+nxt,stp,dir,clock。ulpi对utmi+的引脚缩减,是通过对相对静态的信号通过寄存器配置,数据线改为双向,提供了一种访问ulpi收发器上寄存器数据的方法来实现的。
如下图所示:ulpi规格建议使用ulpi link wrapper和ulpi phy wrapper在原来的utmi+ ip上封装,这样可以保持原来的utmi+部分不变, 但是根据实现而定,也可以不要这个桥直接就使用ulpi接口。
wdc2控制器同时支持utmi和ulpi的,可以配置为同时支持,软件动态选择,其phy interface unit (piu)框图如下:
1.3 结构首先要从整体上了解下ulpi接口所处的层次以及其作用,这样有利于后面的理解。
ulpi是link和phy之间的接口,结构图下
所以有必要先了解下link和phy分别是做什么的:
phy:
即物理层设备physical layer ,也就是收发器transceiver,比如usb334x就是用的比较多的microchip的phy芯片。在phy芯片的手册中一般用收发器transceiver的称呼。而在描述ubs协议的规格书等中一般称为phy(physical layer),两者说的是同一个东西,只是不同场景侧重点不一样,前者侧重一个具体的东西所以叫做收发器,后者侧重一个抽象的概念所以叫做phy。
phy即数字部分和模拟部分的桥梁, phy的一边通过ulpi接口和link通讯,这边都是数字部分。phy另一边就是直接的总线信号比如usb的d+,d-这边是模拟部分。
phy的技术含量是比较高的,涉及到模拟的或者是模数的技术都有一定门槛,所以你可以看到国产很多企业能做控制器link,mac这部分(虽然很可能大概也是买的ip),但是基本没有能做phy的,前者是数字部分,设计验证相对来说更简单,后者则更复杂设计验证更加困难(所以后者都是购买集成)。
phy部分主要实现,总线信号的收发,bit-stuff等,和link通过ulpi/utmi接口通讯,则是以包为单位了,当然包括phy的状态返回控制等。
link:
link即soc这边的控制器部分,实现数据链路层的处理,由于是纯数字部分,这部分也比较好仿真验证。有些文献也叫serial interface engine (sie)
ulpi phy必须要实现以下utmi+的特征
linestate:必须在2-3个时钟内精确反映d+/d-的状态。由link使用linestate去计时总线事件。滤波以防止由于d+和d-之间的偏斜而在linestate上出现虚假的se0/se1状态。低速滤波14个时钟,全速和高速滤波2个时钟。phy在发送时内部需要阻塞接收路径,接收路径在squelch(hs)和se0-to-j(fs/ls)时退出阻塞。txready必须用于包括chirp的所有数据发送。由于usb上的噪声,有可能rxactice有效到无效而没有接收到任何有效数据,即rxvalid不会有效。link必须能处理这种rxactive有效而rxvalid无效的场景。1.4 信号ulpi的phy接口信号基于plpi定义,还增加了usb接口,其他杂项接口。
phy接口是固定的,其他接口可能可变,以下只是一个通常的指导设计。
且规定了phy必须是主机。这里需要注意和utmi相比这里总线权颠倒了,utmi是link掌握,这里是phy掌握了,这是因为data是双向数据了,为了保证接收数据时不被link打断。
信号方向(phy的角度)描述
phy interface
clock i/o 接口时钟.phy必须支持输出60mhz时钟,即必须支持时钟输出模式.可选支持输入60mhz时钟,即输入时钟模式是可选的.如果phy支持这两种时钟模式,则必须由phy自行配置,不能依赖ulpi的控制和数据信号去设置.
data i/o 数据总线,在ulpi总线空闲时即phy和link都没有数据要发送时,phy拉低dir监听总线,此时由link发送数据,而link又没有数据要发送,所以就发送特殊值0,表示无效数据。必须支持8位数据宽,单边沿,上升沿传输数据可选支持4位数据宽,双边沿,上下边沿都传输数据
dir out 由phy驱动控制数据总线的方向.phy如果不能接收link发送过来的数据时拉高dir.比如phy的pll没有稳定时这适用于phy的两种时钟模式.
stp in link拉高stp表示usb包传输或者寄存器写的结束,也可结束任何接收。stp必须是在最后一个有效数据之后的clk拉高。
nxt out phy拉低nxt以掐断除了寄存器读和rx_cmd外的所有传输。与usb接收期间的rxvalid和usb传输期间的txready相同。如果dir先前为低,则phy还可同时设置nxt和dir以指示usb接收激活(rxactive)。phy不容许在link发送tx_cmd时的第一个时钟拉低nxt
usb****接口
d+ i/o usb的****d+引脚必须有
d- i/o usb的****d-****引脚必须有
id in usb的id引脚 只有支持otg的phy才需要
vbus i/o usb的vbus引脚。支持otg的phy才需要。用于驱动vbus和vbus比较器。
其他杂项
xi in 晶体输入或者时钟输入引脚,由厂家实现决定支持的晶体频率
xo out 晶体输出引脚如果是只支持时钟输入的则没有该引脚
c+ i/o 电荷泵电容器正极端子
c- i/o 电荷泵电容器负极端子
spkr_l in 可选的carkit left/mono speaker输入
spkr_mic i/o 可选的carkit right speaker输入或者麦克风输出
rbias i/o 偏置电流电阻器
如下是一个典型的信号连接示例
使用的是phy的时钟输出模式,即clock由phy提供
1.5框图
utmi+ level 3 phy core
ulpi phy可以包含符合任何utmi+级别的核心,ulpi中不支持16位数据总线的信号。上述显示了3级utmi+核心的典型框图,phy供应商必须指定预期的utmi+级别,并提供符合该级别所需的功能。
ulpi phy wrapper
ulpi phy桥将utmi+接口简化为ulpi中描述的低引脚接口。utmi+level 3 phy核心上显示的所有信号都减少为ulpi接口信号
clock**, data , dir , stp , 和 nxt . **寄存器映射存储utmi+接口的相对静态信号。
crystal oscillator and pll
当晶体连接到phy时,内部时钟和外部60mhz接口时钟由内部pll产生即phy的时钟输出模式。
当没有连接晶体时,phy可以可选地从link提供的输入60mhz时钟生成内部时钟,即时钟输入模式。
general biasing
内部模拟电路需要精确的偏置电流。这通常是使用外部精确的参考电阻器产生的。
drvvbusexternal and externalvbusindicator
phy可以可选地经由可选引脚drvvbusexternal来控制外部vbus电源。
例如,外部电源可以是使用电源开关控制的电荷泵或5v电源。
外部电源由drvvbus和otg控制寄存器中的可选drvvbusexternal位控制。
drvvbusexternal输出引脚的极性取决于实现方式。
如果提供对外部vbus源的控制,则phy可以可选地在可选引脚externalvbusindicator上提供vbus电源反馈信号。
如果提供该引脚,则该引脚的使用由otg控制和接口控制寄存器中的可选控制位定义。
power-on-reset
必须在phy中提供上电复位电路。当电源首次施加到phy时,通电复位将重置所有电路,并使ulpi接口处于可用状态。
carkit option
phy可以可选地支持车载套件模式carkit mode。在该模式下,link和usb接口之间的麦克风和喇叭信号由phy路由。在carkit单声道模式下,spkr_l输入单声道扬声器信号,spkr_mic输出麦克风信号mic。在carkit立体声模式中,spkr_l输入左扬声器信号,spkr_mic输入右扬声器信号spkr_r。
1.6 模式ulpi接口可以在下表中列出的五种独立模式中的一种模式下运行。默认情况下,接口处于同步模式。其他模式由功能控制和接口控制寄存器中的位启用。在同步模式下,数据总线传输命令和数据。在其他模式中,数据引脚会使用不同的功能重新定义。同步模式和低功率模式是强制性的。
模式名模式描述
synchronous mode同步模式 这是一般的操作模式.ulpi接口发送数据和命令和 clock同步.
low power mode低功耗模式 phy掉电时钟停止.phy保持拉高 dir,data总线重定义为 linestate和中断信号。
6-pin fs/ls serial mode(optional) data总线重定义为6-pin串行模式,包括6个引脚发送和接收usb的串行数据和1个引脚用于中断信号事件.时钟可使能或者不使能.该模式只有在支持8位data模式时才可能有。
3-pin fs/ls serial mode(optional) data总线重定义为3-pin串行模式,包括3个引脚发送和接收usb的串行数据和1个引脚用于中断信号事件.时钟可使能或者不使能.
carkit mode(optional) data总线重定义为carkit模式,包括2个引脚用于串行uart数据传输和1个引脚用于中断信号事件,时钟可选停止
1.7上电和复位ulpi phy提供内部通电复位电路,该电路在通电时复位所有逻辑,包括utmi+核心、ulpi接口和寄存器。
通电后,当时钟开始翻转时,link必须通过写入功能控制寄存器function control 中的reset 位来重置phy。当该位被置位时,phy将拉高dir并复位数字核心。
复位完成后phy拉低dir,自动清除function control****寄存器的reset位。
在拉低dir之后,phy必须立即重新拉高dir,并向link发送rx cmd更新状态。
复位期间,数据总线由phy驱动,但数据未定义,link需要丢弃该数据。
在复位完成且dir被重新拉低之前,link不得尝试访问phy。ulpi接口和寄存器不受复位的影响,除非寄存器定义中另有说明。
如下是一个典型的上电复位过程
t0表示电源稳定
t2表示por上电复位完成
对于时钟输出模式,当phy正在复位时,dir引脚将被驱动为高电平,直到60 mhz输出时钟稳定为止。
在时钟输入模式的情况下,dir将保持高电平,直到内部pll锁定并稳定。
一旦phy和link都完成复位,phy就会向link发送rxcmd
phy有可选的引脚复位resetb,拉低resetb将导致60 mhz输出时钟停止,dir被驱动为高电平。phy内部将以与por相同的方式进行复位,pll将重新锁定,ulpi寄存器将返回到其默认状态。
1.8中断事件通知在任何模式下,phy都能够检测中断事件,并通知link中断事件已经发生。
。中断事件通知由usb interrupt enable rising 、usb interruptenable falling 和carkit interrupt enable 这几个寄存器配置。
如果启用了中断,则无论phy处于哪种模式,phy都必须为所需的电路供电,唯一的例外是仅在同步模式下有效的hostdisconnect中断,以及由idpullup控制的idgnd中断。
为了确保时钟停止时能够检测到中断,link应同时启用上升沿和下降沿触发。
如果处于同步模式,则中断事件会导致phy向link发送rx cmd命令字节。
如果不处于同步模式,则中断事件导致phy控制int引脚来通知中断,当link检测到int有效时,它会唤醒时钟(如果是停止的),然后读取usb中断锁存usb interrupt
latch和carkit中断锁存寄存器 carkit interrupt latch,以确定中断源。
1.9 时序1.9.1 时钟下表总结了时钟时序。8位接口的时序来自utmi。可选的4位接口添加了新的时序。ulpi还引入了几个必须由phy供应商填写的新参数。如果phy支持可选输入时钟,则link时钟必须满足表中的要求和任何供应商特定的要求。
4位接口时钟频率和占空比容差减少一半到5%,因为双边沿传输,上下边沿都需要传输数据。
clock startup time after de-assertion of suspendm: peripheral 该事件计算了以满足chirp 时序,来源于utmi规格书
clock startup time after de-assertion of suspendm: host,厂商填写,建议启动时间小于1ms以满足恢复时间resume要求。如果phy用作主机,并且接口时钟不能设计为在1ms内可用,则必须在内部自动发送恢复resume 信号。
如果phy支持可选的输入时钟功能,则phy供应商必须说明准备时间phy preparation time after first transition of input clock。phy必须同步其pll,并准备在指定时间前接受来自link的传输命令。link时钟启动时间加上phy准备时间,必须满足外围设备5.6ms的启动时间(utmi规格书中的说明),建议主机的总启动时间为1ms。
输出时钟模式
phy必须能够提供输出时钟,并满足上表中列出的要求。
8位外设的输出时钟时序遵循utmi规范,稳态频率(fsteady)提供usb高速数据所需的±500ppm精度。启动时间(tstart_dev)允许外围设备唤醒其时钟,并在7ms的最大允许时间内完成chirp-k的传输(tstart_dev+tsteady)。
对于具有8位数据总线的主机,ulpi定义了一个新的输出时钟启动时间(tstart_host)。
当usb主机检测到远程唤醒信号时,它必须唤醒时钟,并在1ms的最大允许时间内开始发送resume-k,phy供应商必须指定此值。
对于可选的4位数据接口,上升沿和下降沿都用于时钟数据。为了提供可用的下降沿,ulpi将频率(fstart_4bit)和占空比(dstart_4bit)容差降低了5%。
在所有情况下,当phy挂起suspended 或时钟不“可用”时,必须停止输出时钟。
如下是一个phy时钟输出模式的示意,时钟输出模式是phy必须要支持的,
refclk输入晶体或者时钟源通过内部pll产生时钟clkout。
输入时钟模式(可选)
phy可以可选地支持来自link的60mhz输入时钟,从而不需要晶体。phy必须从60mhz输入时钟驱动其内部pll。
phy供应商负责指定所需的输入时钟时序。phy供应商必须说明所需的频率、占空比、抖动、上升和下降时间偏差,如上表所示。还必须指定内部phy时钟准备时间tprep。如有必要,需求应包括输入电容以及吸电流和源电流能力
link可以选择在低功率模式期间禁用或关闭其pll,并且在其pll稳定之前不应激活其时钟输出。不稳定的link时钟可能导致phy pll需要更长的时间来稳定。
该模式是可选的,如下是一个示意
比如对于usb334x则clkout接vddio表示使用该模式,不同芯片可能会不一样,要看手册决定。
输入时钟的抖动
如下的时序测试平面中
usb规格强制要求,在连接器a(tp2)处测得的高速传输眼图的抖动不大于7.5%
在phy引脚(tp1)处测得的抖动建议不大于5%.
ulpi规范没有指定link输出时钟引脚(tp0)处的时钟抖动要求,
然而link和phy设计者应当最小化他们的时钟抖动,使得link加phy抖动的总和满足推荐的5%抖动预算。
1.9.2 控制和数据控制和数据时序要求如下,这些时序仅适用于同步模式。所有时序都是相对于在phy时钟引脚处看到的时钟来测量的。控制信号和8位数据总是在时钟的上升沿上计时,而可选的双沿4位数据信号在上升沿和下降沿上计时。
主要关注建立时间和保持时间。
4位数据时钟(可选)
phy可以可选地支持4位数据总线而不是8位数据总线。原始的8位数据或命令被分成两个4位的“半字节”。最低有效半字节,数据(3:0),首先在时钟的上升沿传输。最高有效的半字节,数据(7:4),在时钟的下降沿被第二次传输。不允许传输奇数个4位半字节,这确保了完整字节的数据到达与8位设计的上升沿相同。
link和phy必须满足关于上升沿和下降沿规定的更严格的定时。允许输出和输入时钟模式。
控制信号dir、stp和nxt仅在60mhz接口时钟的上升沿上同步,因为数据传输总是字节对齐的。
时序如图所示
1.10总结本篇概述了ulpi相关的内容,内容比较多后面还有工作模式和寄存器相关内容会分开讲。
1.11参考《utmi+ low pin interface (ulpi) specification revision 1.1 october 20, 2004》
《microchip an 19.17 ulpi design guide》
Lantiq将HAN FUN集成到其宽带网关设计中支持物联网
比特币矿池正在向中心化发展
动力电池和储能电池有什么区别
德国电信正在计划构建一张独立的5G核心网
TD-SCDMA网络模拟仪核心网模拟功能分析
基于DWC2的USB驱动开发-0x08 ULPI接口协议概览
国科微获“十大半导体杰出品牌”
CQC认证多少钱?
覆盖你的需求空间:热门高性能智慧分布式路由pk
魅族Pro6 Plus、小米MIX、华为Mate9,这三部手机该怎么选择?
宏电H9380P AI智能工业计算机实现远程智能体温监测
5G和4K视频传输的结合是很好的契机
Flash激光雷达首发上车!补盲应用或开启行业第二增长点
贸泽电子备货Qorvo QPF4800双频Wi-Fi 6前端模块
赫联电子新增美国领先供应商Smiths Connectors
iQOO44W快充技术解读 是怎样15分钟充进50%电量的
三星Galaxy M30s在印度市场发售,搭载Exynos 9611处理器
PLC编程中模拟调试和在线调试
磷酸锰铁锂电池迎首发量产车型
高通量农药残留检测仪的详细介绍