重點聚焦!UTMI接口規范介紹

2023-07-02 10:11:34 來源:漫談嵌入式

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

XcvrSelect:傳輸模式選擇

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 底層深入學習人員。

審核編輯:湯梓紅

標簽:

上一篇:PCB翹曲原因及解決辦法 PCB翹曲度的計算公式|今日關注
下一篇:最后一頁