久久综合久久综合久久综合-久久综合久久综合久久-久久综合久久伊人-久久综合久久网-在线免费欧美-在线免费毛片

深圳市凱茉銳電子科技有限公司深圳市凱茉銳電子科技有限公司

新聞中心

News

USB協議簡介

來源:深圳市凱茉銳電子科技有限公司2025-02-17

USB–Universal Serial Bus即通用串行總線,簡化了計算機與外圍設備的連接;

1 USB概念

 

主機host: 主機是 USB 系統的控制中心,通常是一個計算機或其他設備,負責管理和協調所有 USB 設備的通信。

 

 

Hub: 集線器用于擴展 USB 系統,允許多個設備連接到同一個主機。

 

 

設備device:設備是連接到 USB 系統的終端設備,如鍵盤、鼠標、打印機、存儲設備等。

 

 

端點endpoint:端點是設備上的一個邏輯實體,用于與主機進行數據傳輸。每個設備可以有多個端點,每個端點都有唯一的地址。

 

 

管道Pipe: 管道是主機和設備端點之間的通信路徑。每個管道都有特定的傳輸類型和屬性。

 

1.1 USB基本名詞

 

USB協議均是版本向下兼容。

 

 

USB 1.0/1.1(low/full speed),傳輸速率最大為12Mbps

 

 

USB 2.0(high speed), 傳輸速率最大480Mbps

 

 

USB 3.0(super speed), 采用8b/10b編碼,增加一對超高速差分線 傳輸速率最大5Gbps

 

 

USB 3.1 采用 128b/132b 編碼,速度提高 1 倍,供電 20V/5A,同時增加了 A/V 影音傳輸標準 10 Gbps

 

 

USB 3.2 增加一對超高速傳輸通道,速度再次翻倍,只能在 C 型接口上運行 20Gbps

 

2.USB物理接口形式分類:Type A、Type C;這兩種是最常見的物理接口;

3.PIPE(管道):主機和endpoint之間的數據傳輸是PIPE;
4.方向:端點是有方向的,主機到從機成為out端點,從機到主機成為in端點。
5.管道通信方式:pipe中的數據通信方式有兩種,一種是stream一種是message。message要求進出進出方向必須要求同一個管道。
6.傳輸方式:USB endpiont有四種類型,分別對應了不同的數據傳輸方式,分別為control transfers控制傳輸、interrupt transfers中斷傳輸、Bluk Data transfers批量傳輸、Isochronous Data Tranfers等時傳輸。

 

控制傳輸:用于配置和管理設備,包括設備枚舉、設置配置和獲取狀態信息。

 

 

中斷傳輸:用于傳輸小量的定時數據,如鍵盤和鼠標的輸入。中斷傳輸提供定期的輪詢機制,確保數據的及時傳輸。

 

 

批量傳輸:用于傳輸大量數據,如文件傳輸和打印任務。批量傳輸保證數據的完整性和可靠性,但不保證實時性。

 

 

等時傳輸:用于實時數據傳輸,如音頻和視頻流。等時傳輸保證數據的實時性和帶寬,但不保證數據的完整性。

 

1.2 描述符

主設備之所以能區分不同的從設備,靠的就是描述符;USB協議里就規定了各種不同的USB描述符。

+------設備描述符
        +----------配置描述符1
            +----------接口描述符1
                +----------端點描述符1
                +----------端點描述符2
                +....
            +----------接口描述符2
                +----------端點描述符1
                +....
            +....
        +----------配置描述符2
            +----------接口描述符1
                +----------端點描述符1
                +----------端點描述符2
                +....
            +....
        +....

1.2.1 設備描述符

設備描述符:用來描述該設備,一個設備只有一個設備描述符,包含了設備類型、設備遵循的協議、廠商ID、產品id、序列號等。
一個描述符Demo:

DEVICE DESCRIPTOR
    bLength: 18
    bDescriptorType: 0x01 (DEVICE)
    bcdUSB: 0x0200
    bDeviceClass: Vendor Specific (0xff)
    bDeviceSubClass: 255
    bDeviceProtocol: 255
    bMaxPacketSize0: 64
    idVendor: Marvell Semiconductor, Inc. (0x1286)
    idProduct: Unknown (0x812a)
    bcdDevice: 0x0000
    iManufacturer: 3
    iProduct: 2
    iSerialNumber: 0
    bNumConfigurations: 1

1.2.2 配置描述符

用來配置設備,一個設備同一時刻只能有一種配置生效,而且要區分配置和設置的區別。
配置描述符內容:

ONFIGURATION DESCRIPTOR
    bLength: 9
    bDescriptorType: 0x02 (CONFIGURATION)
    wTotalLength: 121
    bNumInterfaces: 4
    bConfigurationValue: 1
    iConfiguration: 0
    Configuration bmAttributes: 0xc0  SELF-POWERED  NO REMOTE-WAKEUP
        1... .... = Must be 1: Must be 1 for USB 1.1 and higher
        .1.. .... = Self-Powered: This device is SELF-POWERED
        ..0. .... = Remote Wakeup: This device does NOT support remote wakeup
    bMaxPower: 250  (500mA)

1.2.3 接口描述符

一個interface就代表一個設備。USB interface用來處理一類 USB 邏輯連接, 例如一個鼠標, 一個鍵盤, 或者一個音頻流.但一些 USB 設備有多個接口。

INTERFACE DESCRIPTOR (2.0): class Vendor Specific
    bLength: 9
    bDescriptorType: 0x04 (INTERFACE)
    bInterfaceNumber: 2
    bAlternateSetting: 0
    bNumEndpoints: 2
    bInterfaceClass: Vendor Specific (0xff)
    bInterfaceSubClass: 0x00
    bInterfaceProtocol: 0x00
    iInterface: 8

1.2.4 端點描述符

USB通信的基本物理單位,一個endpiont只能承載一個方向的數據。endpiont分為如下幾種:

 

CONTROL
控制端點被用來允許對 USB 設備的不同部分存取. 通常用作配置設備, 獲取關于設備的信息, 發送命令到設備, 或者獲取關于設備的狀態報告. 這些端點在尺寸上常常較小.每個 USB 設備有一個控制端點稱為"端點 0", 被 USB CORE用來在插入時配置設備. 這些傳送由 USB 協議保證來總有足夠的帶寬使它到達設備.

 

 

INTERRUPT
中斷端點傳送小量的數據, 以固定的速率在每次 USB 主請求設備數據時. 這些端點對 USB 鍵盤和鼠標來說是主要的傳送方法. 它們還用來傳送數據到 USB 設備來控制設備, 但通常不用來傳送大量數據. 這些傳送由 USB 協議保證來總有足夠的帶寬使它到達設備.

 

 

ISOCHRONOUS
同步端點也傳送大量數據, 但是這個數據常常不被保證它完成. 這些端點用在可以處理數據丟失的設備中, 并且更多依賴于保持持續的數據流. 實時數據收集, 例如音頻和視頻設備, 一直都使用這些端點.

 

BULK端點描述符數據內容如下:

ENDPOINT DESCRIPTOR
    bLength: 7
    bDescriptorType: 0x05 (ENDPOINT)
    bEndpointAddress: 0x86  IN  Endpoint:6
        1... .... = Direction: IN Endpoint
        .... 0110 = Endpoint Number: 0x6
    bmAttributes: 0x02
        .... ..10 = Transfertype: Bulk-Transfer (0x2)
    wMaxPacketSize: 512
        .... ..10 0000 0000 = Maximum Packet Size: 512
    bInterval: 0

1.3 USB的分層

1.3.1 協議層

協議層主要包括:數據包類型、數據包的格式、對主機和設備發送的數據包的預期響應、描述了四種USB 3.0事務類型、支持批量傳輸類型的流式傳輸支持、設備/主機可能接收/發送的各種響應和數據包的定時參數。
整個協議包的類型有:

640.webp.png

1.3.2 鏈路層

Link Layer鏈路層主要包括:數據包幀、鏈路命令、鏈路管理和流量控制、鏈路錯誤規則/恢復、重置、鏈路狀態機描述;

1.3.3 物理層

定義了高速組件之間互操作性所需的電氣層參數。

1.4 USB傳輸

USB總線上傳輸數據是以包(packet)為基本單位的,必須把不同的包組織成事務(transaction)才能傳輸數據。
USB協議定義了四種傳輸(transfer)類型: 批量傳輸 , 同步傳輸 , 中斷傳輸 , 控制傳輸 .其中,批量傳輸、同步傳輸、中斷傳輸每傳輸一次數據都是一個事務。

1.4.1 包packet

一個包被分為不同域,根據不同類型的包,所含的域也是不一樣的。但都要以同步域SYNC開始,緊跟一個包標識符PID,最終以包結束符EOP來結束這個包。

PID域: PID用來標識一個包的類型,它共有8位,只使用低四位,高四位取反,用來校驗PID;
PID規定了四類包: 令牌包 、 數據包 、 握手包 、 特殊包 . 同類的包又各分為具體的四種包:

地址域: 地址共占11位,其中低7位是設備地址,高4位是端點地址;

 

幀號域:幀號占11位,主機每發一幀,幀號都會自動加1,當幀號達到0x7FF時,將歸零重新開始計數。

 

 

數據域:根據傳輸類型的不同,數據域的數據長度從0到1024字節不等。

 

CRC域: 計算地址域和幀號域的CRC,或數據域數據的CRC;

1.4.2 包類型

 

令牌包–四種:
OUT: 通知設備將要輸出一個數據包
IN: 通知設備返回一個數據包
SETUP: 只用在控制傳輸中,也是通知設備將要輸出一個數據包,域OUT令牌的區別是:只使用DATA0數據包,且只能發到device的控制端點
SOF: 在每幀開始時以廣播的形式發送,針對USB全速設備,主機每1ms產生一個幀,USB主機會對當前幀號進行統計,每次幀開始時通過SOF包發送幀號

 

數據包
數據包沒有地址域和幀號域,根據transfer的類型不同,數據包最大長度有所不同。

 

握手包–4種
ACK: 傳輸正確完成
NAK: 設備暫時沒有準備好接收數據,或沒有準備好發送數據
STALL: 設備不能用于傳輸
NYET/ERR: 僅用于高速傳輸,設備沒有準備好或出錯

 

握手包僅有PID域:

1.5 傳輸transfer

事務可以分為三類:

 

setup事務: 主機用來向設備發送控制命令

 

 

數據輸入事務: 主機用來從設備讀取數據

 

 

數據輸出事務: 主機用來向設備發送數據

 

1.5.1 批量傳輸

批量傳輸使用批量傳輸事務(IN傳輸/OUT傳輸),一次批量傳輸事務分為三個階段: 令牌包階段、數據包階段、握手包階段

描述:
1.令牌階段: 主機發送BULK令牌包,令牌包中包含設備地址、端點號、數據方向
2.數據包階段:
從機如果接收令牌包出錯,無響應,讓主機等待超時
從機端點不存在,回送STALL
從機端點數據未準備好,回送NAK
從機數據準備好,回送數據包

3.握手包階段:數據包正確,并有足夠的空間保留數據,設備返回ACK握手包括:NYET握手包(只有高速模式才有NYET握手包,表示本次數據接收成功,但沒有能力接收下一次傳輸)
    數據包正確,但沒有足夠的空間保存數據,設備返回NAK握手包。主機收到NAK后,延時一段時間后,再重新進行批量輸出事務
    數據包正確,但端點處于掛起狀態;設備返回一個STALL握手包
    數據包錯誤,設備不返回任何握手包,讓主機等待超時

    CRC錯誤或位填充錯誤: 設備不返回任何握手包,讓主機等待超時;

1.5.2 中斷傳輸

    中斷傳輸一般用于小批量的和非連續的數據傳輸,但實時性高的場合,主要應用于人機交互設備(HID)的鼠標和鍵盤。

1.5.3 同步傳輸

    同步傳輸是不可靠的傳輸,只關心數據的實時性,不關心數據的正確性,它沒有握手包,也不支持PID翻轉。主機在排定事務傳輸時,同步傳輸有最高優先級.應用在數據量大,對實時性要求較高的場合,如視頻設備,音頻設備;

同步傳輸包含兩個階段: 令牌階段、數據階段:

1.5.4 控制傳輸

    控制傳輸是一種特殊的傳輸方式。當USB設備初次連接主機時,用控制傳輸傳送控制命令等對設備進行配置。同時設備接入主機時,需要通過控制傳輸去獲取USB設備的描述符以及 對設備進行識別,在設備的枚舉過程中都是使用控制傳輸進行數據交換。

控制傳輸分為三個階段:

建立過程:

主機發送令牌包: SETUP

主機發送數據包: DATA0

設備返回握手包: ACK或不應答

2.數據過程(可選): 一個數據過程可以不包含或包含多個數據事務,但所有數據事務必須是同一方向的。若數據方向發生了改變則認為進入了狀態過程. 數據過程中的第一個數據包必須是DATA1,然后 每次正確傳輸一個數據包后就在DATA0和DATA1之間交替;

            3.狀態過程: 狀態過程只使用DATA1包,并且傳輸方向與數據方向相反。

2 USB1.1 示例
    此Demo只展示創建一個簡單的 USB 設備模塊,該模塊能夠響應主機的請求,并發送和接收數據;實現最基本的控制傳輸功能。

module usb_device (
input wire clk, // 時鐘信號
input wire reset_n, // 復位信號,低電平有效
input wire usb_dp, // USB D+ 信號
input wire usb_dm, // USB D- 信號
output reg usb_dp_out, // USB D+ 輸出
output reg usb_dm_out, // USB D- 輸出
output reg [7:0] data_out, // 發送到主機的數據
input wire [7:0] data_in, // 從主機接收的數據
output reg data_valid, // 數據有效信號
output reg data_ready // 數據準備好信號
);

// 內部狀態機狀態
typedef enum logic [2:0] {
IDLE,
SYNC,
TOKEN,
DATA,
HANDSHAKE
} state_t;

state_t state, next_state;

// 內部寄存器
reg [7:0] token_reg;
reg [7:0] data_reg;
reg [7:0] handshake_reg;

// 組合邏輯部分
always_comb begin
next_state = state;
usb_dp_out = 1'bz;
usb_dm_out = 1'bz;
data_valid = 1'b0;
data_ready = 1'b0;

case (state)
IDLE: begin
if (usb_dp && !usb_dm) begin
next_state = SYNC;
end
end
SYNC: begin
if (!usb_dp && usb_dm) begin
next_state = TOKEN;
end
end
TOKEN: begin
token_reg = {usb_dm, token_reg[7:1]};
if (token_reg[0]) begin
next_state = DATA;
end
end
DATA: begin
if (token_reg[0]) begin
// 接收數據
data_reg = {usb_dm, data_reg[7:1]};
if (data_reg[0]) begin
data_out = data_reg;
data_valid = 1'b1;
next_state = HANDSHAKE;
end
end else begin
// 發送數據
usb_dp_out = data_in[7];
usb_dm_out = ~data_in[7];
data_in = {1'b0, data_in[7:1]};
if (data_in[0]) begin
data_ready = 1'b1;
next_state = HANDSHAKE;
end
end
end
HANDSHAKE: begin
// 發送握手包
handshake_reg = 8'b00000011; // ACK
usb_dp_out = handshake_reg[7];
usb_dm_out = ~handshake_reg[7];
handshake_reg = {1'b0, handshake_reg[7:1]};
if (handshake_reg[0]) begin
next_state = IDLE;
end
end
endcase
end

// 時序邏輯部分
always_ff @(posedge clk or negedge reset_n) begin
if (!reset_n) begin
state <= IDLE;
end else begin
state <= next_state;
end
end

endmodule


相關資訊

專業工程師

24小時在線服務提交需求快速為您定制解決方案

13798538021

主站蜘蛛池模板: 美女视频黄的免费视频网页 | 99精品视频在线观看免费 | 一区视频在线 | 亚洲精品综合久久中文字幕 | 男人的天堂在线观看视频不卡 | 成人国内精品久久久久影院 | 久久er视频| 亚洲综合免费视频 | 久久精品女人毛片国产 | 在线观看视频日韩 | 国产精品好好热在线观看 | 四虎永久精品免费网址大全 | 香蕉久久夜色精品国产2020 | 亚洲香蕉在线观看 | 精品欧美一区二区三区免费观看 | 麻豆自创视频在线观看 | 手机看片一区 | 日本人的色道免费网站 | www.麻豆91| 日本精品中文字幕在线播放 | 国产国语一级毛片在线视频 | 丁香婷婷久久大综合 | 狼狼色丁香久久女婷婷综合 | 欧美三级成人观看 | 久久只这里是精品66 | 成人国产日本亚洲精品 | 久久黄色视屏 | 四虎在线网址 | 国产无限资源 | 国产成人福利在线视频下载 | 韩日精品视频 | 97se狠狠狠综合亚洲狠狠 | 国产在线观看第一页 | 欧美很黄视频在线观看 | 日本精品1在线区 | 欧美激情一区二区三区在线 | 狠狠天天 | 国产午夜精品久久久久免费视 | 天天爱天天做色综合 | 麻豆久久婷婷综合五月国产 | 99爱在线精品视频免费观看9 |