USB2.0 信 号 分 析 技 巧 前 言 USB 是 很 常 见 的 串 行 协 议 USB 有 热 插 拔 的 特 性, 当 USB 装 置 插 入 主 机 时, 主 机 会 侦 测 到, 并 且 软 件 会 对 其 作 规 划, 即 插 即 用 USB 的 连 接 线 供 应 装 置 电 源, 可 提 供 DC +5V 的 电 压, 电 流 供 应 约 100mA~500mA USB 的 连 接 线 共 有 四 条, 其 中 两 条 是 电 源 与 地 线, 另 两 条 是 讯 号 线, 分 别 是 D+ 与 D- 一 般 情 况 两 条 线 的 讯 号 是 相 反 的, 若 其 中 一 条 的 讯 号 为 High, 则 另 一 条 的 讯 号 就 为 Low 如 此 的 差 动 讯 号 能 提 升 讯 号 抗 噪 声 抗 干 扰 的 能 力, USB 就 是 利 用 D+ D- 两 条 讯 号 线 的 差 动 讯 号, 来 达 成 高 速 传 输 的 目 的 USB 主 机 端 在 没 有 装 置 连 接 时,D+ D- 上 会 有 一 个 1.5K 奥 姆 的 电 阻 接 地, 确 保 这 两 条 线 是 在 接 地 状 态 可 支 持 至 127 个 地 址, 也 就 是 说, 一 个 USB 系 统 最 多 支 持 127 个 装 置, 主 机 会 周 期 性 的 探 询 每 个 集 线 器 以 便 得 知 装 置 的 连 接 状 态 以 USB2.0 而 言, 分 为 低 速 全 速 及 高 速 三 个 模 式 低 速 传 输 率 为 1.5M/s, 全 速 为 12M/s, 高 速 为 480M/s 高 速 模 式 时,1 秒 / 480M, 每 个 bit 的 宽 度 约 2.08ns USB 封 包 简 介 封 包 是 组 成 USB 传 输 的 最 小 单 位 一 个 Transaction 通 常 由 三 个 封 包 组 成, 但 依 传 输 型 态 而 定, 一 个 Transaction 可 能 包 含 一 个 两 个 三 个 封 包 : 图 一 USB 封 包 架 构 概 述 Token 封 包 : 每 个 Transaction 以 Token 封 包 做 起 始 Token 封 包 定 义 装 置 Endpoint 数 量, 传 输 的 方 向 其 中 SOF (Start Of Frame) Token 包 含 目 前 的 frame 数, 而 且 会 广 播 (broad cast) 给 所 有 的 full-speed 装 置 知 道 SOF 也 是 唯 一 一 个 不 指 定 目 标 的 Token Token Packet 长 度 固 定 为 4 个 Byte Data 封 包 : Data 封 包 包 含 处 理 此 动 作 的 数 据 一 个 Transaction 中,Data 封 包 最 大 的 资 料 量 为 1023 个 Bytes, 高 速 模 式 时 可 达 1024 个 Bytes 以 上, 其 中 Data0 及 Data1 是 两 个 基 本 的 数 据 封 包, 这 些 数 据 封 包 都 是 接 续 在 Address 之 后, 且 Data0 及 Data1 采 取 交 互 出 现 方 式 以 达 到 同 步 与 除 错 的 效 果 另 外 在 USB2.0 当 中 更 增 加 了 Data2 及 MData 数 据 封 包, 用 于 执 行 高 速 的 实 时 传 输 (Isochronous Transfers) 1 /10
Handshake 封 包 : 除 了 实 时 型 传 输 (Isochronous) 之 外, 所 有 的 传 输 都 保 证 数 据 的 传 递 正 确 Hand shake 封 包 响 应 资 料 是 否 正 确 的 被 收 到 若 执 行 处 理 动 作 中 发 生 错 误, 此 处 理 动 作 将 重 新 执 行 封 包 格 式 : 封 包 是 执 行 所 有 处 理 动 作 的 机 制 图 八 是 USB 封 包 的 基 本 格 式 封 包 紧 跟 在 Synchro nization sequence (SYNC, 同 步 列 ) 之 后,Synchronization sequence 使 USB 装 置 能 跟 封 包 中 的 位 速 率 同 步 封 包 的 Type 由 一 个 Packet ID 来 定 义 Packet ID 之 后 是 随 着 封 包 Type 而 定 义 的 信 息, 如 Address 或 Data 最 后, 每 个 封 包 以 一 个 CRC (Cyclic Redundancy Check) 做 结 尾 CRC 是 用 来 确 认 数 据 是 否 正 确 的 传 输 每 个 封 包 始 使 用 EOP (End Of Paekct) 状 态 来 做 辨 识 图 二 USB 封 包 的 基 本 格 式 Synchronization sequence( 同 步 序 列 ): 图 九 是 Synchronization sequence 的 波 形 Synchronization sequence 由 八 个 bit 组 成, 数 值 是 二 进 制 的 00000001, 依 照 NRZI 编 码 原 理, 数 据 0 代 表 讯 号 要 转 换, 所 以 前 七 个 0 之 中 的 每 个 Bit 都 会 在 相 对 应 的 Bit 时 间 中 转 换, 作 用 就 好 像 提 供 了 一 组 可 用 来 同 步 的 Clock 图 三 Synchronization sequence Packet ID: Packet ID 定 义 封 包 的 目 的 与 内 容 封 包 主 要 有 四 种 型 态 : 标 志 (Token) 数 据 (Data) 交 握 (Hand shake) 及 特 殊 其 中 Token 封 包 定 义 传 输 的 型 态 ;Data 封 包 接 在 Token 之 后, 将 传 输 的 数 据 输 出 或 输 入 USB 装 置 中,Handshake 则 是 提 供 传 输 成 功 或 失 败 的 讯 息, 特 殊 PID 是 针 对 USB2.0 特 有 的 PID, 包 含 了 PING( 检 查 端 点 装 置 是 否 能 接 受 数 据 ) SPLIT( 高 频 宽 的 USB 分 割 传 输 ) PRE( 低 频 宽 的 USB 前 导 封 包 ) ERR ( 分 割 传 输 任 务 错 误 ) Packet ID 的 讯 号 格 式 如 图 四 Packet ID 总 共 有 8 个 Bit, 前 四 个 Bit 代 表 ID(Type Field), 后 4 个 Bit 是 检 查 字 段 (Check Field), 其 值 固 定 是 ID 的 反 向 如 ID 为 二 进 制 的 1001, 则 检 查 字 段 就 是 0110, 合 起 来 就 是 10010110 2 /10
图 四 Packet ID 讯 号 格 式 封 包 种 类 : 所 有 处 理 动 作 都 是 由 一 个 Token 封 包 开 始 USB 定 义 四 种 Token 封 包 :SOF,IN, OUT,SETUP 图 十 一 是 四 个 封 包 的 PID 与 功 能 描 述 图 五 四 种 Token 封 包 状 态 SOF 封 包 : USB 装 置 用 SOF 封 包 来 判 断 讯 框 的 起 点 当 每 个 frame 开 始 的 时 候,SOF 封 包 被 送 至 每 个 全 速 的 装 置 实 时 型 传 输 装 置 可 经 由 SOF 封 包 来 达 到 同 步 传 输 的 作 用 低 速 装 置 不 支 持 实 时 型 传 输, 所 以 SOF 封 包 不 会 送 至 低 速 装 置 如 图 六 所 示,SOF 封 包 包 含 一 个 长 度 为 11 bit 的 frame number( 讯 框 号 码 ), 接 收 器 使 用 5 bit 的 CRC 位 来 确 认 frame number SOF 封 包 不 含 任 何 数 据, 其 传 输 也 不 保 证 一 定 成 功 当 USB 装 置 对 此 SOF 封 包 PID 检 查 码 错 误 时, 装 置 忽 略 此 封 包 ; 当 CRC 检 查 错 误 时, 忽 略 此 frame number 注 意 PID 与 Frame Number 都 是 LSB 在 前 面 MSB 在 后 面 3 /10
图 六 Start of Frame (SOF) 图 七 是 一 个 SOF 封 包 的 实 际 波 形 PID 前 四 个 bit 0101" 就 是 SOF 封 包 PID 之 后 的 是 11 bit 的 Frame Number, 这 个 例 子 的 Frame Number 是 10101100010, 换 算 为 十 进 制 就 是 1378, 也 就 是 第 1378 个 Frame 图 七 SOF 封 包 实 际 波 形 IN 封 包 : Token 还 有 两 种 封 包,IN 封 包 与 OUT 封 包 所 谓 IN 与 OUT 是 指 对 于 PC 而 言 IN 封 包 是 PC 需 要 由 装 置 读 进 来 数 据 时 使 用 的 ;OUT 则 是 PC 需 要 送 出 数 据 给 装 置 时 使 用 的 IN 封 包 可 以 使 用 在 中 断 型 传 输 巨 量 型 传 输 控 制 型 传 输 的 数 据 时 期 实 时 型 传 输 等 传 输 图 八 是 IN 封 包 格 式 示 意 图 与 实 际 量 测 图 如 图 所 示, 除 了 基 本 的 Type 字 段 与 Check 字 段 之 外,IN 封 包 包 含 7 bit 的 Device Address 与 4 bit 的 End Point Num ber 执 行 IN 封 包 动 作 时, 首 先 PC 送 出 一 个 IN 封 包, 接 着 装 置 回 传 一 个 数 据 封 包, 最 后 PC 送 出 一 个 交 握 封 包 给 Device, 表 示 已 收 到 资 料 但 在 实 时 型 传 输 中,IN 处 理 动 作 不 使 用 交 握 封 包 IN 传 输 所 能 传 输 的 数 据 量 取 决 于 传 输 型 态 图 八 IN 封 包 格 式 示 意 图 与 实 际 量 测 图 图 九 是 一 个 实 际 的 IN 封 包 PID 的 前 4 bit 为 1001" 就 是 IN 封 包 的 ID 再 来 是 7 bit 的 Address, 这 个 例 子 的 Address 4 /10
是 1" 再 来 是 4 bit 的 Endpoint, 这 个 例 子 的 Endpoint 是 "0" 最 后 是 5 bit 的 CRC 图 九 IN 封 包 实 际 波 形 OUT 封 包 : 当 数 据 将 被 送 出 给 某 个 Device 时, 系 统 会 进 行 一 个 OUT 传 输 有 三 种 传 输 型 态 用 到 OUT 传 输 : 巨 量 型 传 输 控 制 型 传 输 的 数 据 时 期 实 时 型 传 输 OUT 封 包 除 了 PID 之 外, 其 余 数 据 格 式 都 与 IN 封 包 相 同, 一 样 有 7 bit 的 Address,4 bit 的 End point ( 如 图 十 所 示 ) 图 十 OUT 封 包 格 式 示 意 图 与 实 际 量 测 图 图 十 一 是 一 个 实 际 的 OUT 封 包 PID 为 0001" 就 是 OUT 封 包 这 个 例 子 的 Address 是 1" 再 来 是 4 bit 的 Endpoint, 这 个 例 子 的 Endpoint 是 "0" 最 后 是 5 bit 的 CRC 图 十 一 OUT 封 包 实 际 波 形 SETUP 封 包 : SETUP 封 包 只 有 在 控 制 型 传 输 的 设 定 阶 段 使 用 SETUP 处 理 动 作 启 动 一 个 控 制 型 传 输, 并 且 定 义 为 设 定 阶 段 SETUP 处 理 动 作 在 形 式 上 类 似 一 个 OUT 动 作 : SETUP 封 包 后 跟 着 一 个 Data0 封 包 与 一 个 回 复 封 包 SETUP 封 包 的 目 的 是 传 送 一 个 要 求 给 Device 执 行 下 图 是 SETUP 封 包 的 格 式 SETUP 封 包 除 了 PID 之 外, 其 余 数 据 格 式 都 与 IN/OUT 封 包 相 同, 一 样 有 7 bit 的 Address,4 bit 的 Endpoint( 如 图 十 二 所 示 ) 5 /10
图 十 二 SETUP 封 包 格 式 示 意 图 与 实 际 量 测 图 图 十 三 是 一 个 实 际 的 SETUP 封 包 PID 为 1101" 就 是 SETUP 封 包 这 个 例 子 的 Address 是 1" 再 来 是 4 bit 的 Endpoint, 这 个 例 子 的 Endpoint 是 "0" 最 后 是 5 bit 的 CRC 图 十 三 SETUP 封 包 实 际 波 形 Data0 与 Data1 封 包 : Data 封 包 跟 在 IN OUT SETUP 三 种 封 包 之 后 IN 封 包 之 后 的 Data 封 包 是 将 数 据 传 入 PC;OUT 与 SETUP 之 后 的 封 包 是 将 数 据 传 出 给 Device 传 输 数 据 时,Data0 封 包 与 Data1 封 包 是 交 互 的 使 用, 如 果 此 次 传 输 数 据 是 用 Data0 封 包, 则 下 次 传 输 数 据 就 是 使 用 Data1 封 包, 反 之 亦 然 这 是 为 了 用 来 当 作 一 个 同 步 机 制 使 用 一 个 很 大 量 的 数 据, 会 被 切 成 多 个 小 封 包 来 传 输, 此 时 Data0 与 Data1 封 包 交 互 的 使 用 就 可 以 当 作 一 个 同 步 的 机 制 在 高 速 模 式 底 下 还 有 Data2 及 MData 两 种 实 时 传 输 数 据 封 包 图 十 四 是 Data0 与 Data1 的 封 包 格 式 PID 为 1100" 就 是 Data0 封 包,PID 为 1011" 就 是 Data1 封 包 6 /10
图 十 四 Data0 与 Data1 的 封 包 格 式 Data2 及 MData 两 种 实 时 传 输 数 据 封 包 的 PID 分 别 为 0111 及 1111 交 握 封 包 (Handshake Packets): 交 握 封 包 用 来 回 报 处 理 动 作 的 完 成 状 况 交 握 封 包 有 三 种 ACK 封 包 : 确 认 数 据 正 确 无 误 的 被 接 收 NAK 封 包 : 告 知 主 机 现 在 目 标 装 置 暂 时 无 法 接 收 或 传 回 数 据 STALL 封 包 : 无 法 完 成 传 输, 且 需 要 软 件 介 入 以 便 使 得 装 置 能 从 STALL 状 态 复 原 在 USB2.0 中 还 有 一 种 NYET 封 包, 表 示 数 据 尚 未 备 妥 无 法 传 输 NYET 的 PID 为 0110 图 十 五 是 三 种 交 握 封 包 的 格 式 图 交 握 封 包 没 有 资 料, 也 没 有 CRC, 只 有 SYNC 与 PID ACK 的 PID 是 0010,NAK 的 PID 是 1010,STALL 的 PID 是 1110 图 十 五 三 种 交 握 封 包 格 式 图 前 导 封 包 (Preamble Packet): 前 导 封 包 用 在 低 速 传 输 时 在 传 送 一 个 低 速 封 包 前, 一 个 前 导 封 包 必 须 被 送 出, 主 机 保 证 前 导 封 包 之 后 的 封 包 是 低 速 传 送 图 十 六 是 前 导 封 包 示 意 图 前 导 封 包 由 一 个 SYNC 与 一 个 PID 组 成,PID 是 1100 有 一 点 必 须 注 意 的 是, 前 导 封 包 不 以 EOP 结 尾 7 /10
图 十 六 前 导 封 包 示 意 图 USB2.0 总 线 协 议 模 块 设 定 图 十 七 孕 龙 科 技 USB2.0 分 析 模 块 总 线 协 议 模 块 设 定 方 便 又 快 速, 如 图 十 八 所 示 使 用 者 只 需 要 依 照 连 接 说 明 将 USB2.0 硬 件 模 块 连 接 至 逻 辑 分 析 仪, 在 USB2.0 总 线 协 议 模 块 中 设 定 高 速 模 式, 点 下 OK 后 就 可 以 将 USB2.0 讯 号 译 码 8 /10
图 十 八 USB2.0 总 线 协 议 模 块 串 行 协 定 封 包 列 表 为 更 加 方 便 分 析 以 及 提 高 效 率, 孕 龙 逻 辑 分 析 仪 更 加 在 新 版 软 件 中 加 入 串 行 协 议 封 包 列 表 功 能, 能 够 将 串 行 讯 号 采 取 封 包 段 落 显 示 以 直 列 方 式 把 数 据 内 容 显 示 出 来, 让 使 用 者 清 楚 了 解 各 封 包 先 后 出 现 的 时 序 关 系 图 十 九 为 USB2.0 讯 号 使 用 串 行 协 议 封 包 列 表 显 示 的 结 果 9 /10
图 十 九 USB2.0 讯 号 使 用 串 行 协 议 封 包 列 表 显 示 的 结 果 在 图 十 九 中 的 封 包 列 表, 除 了 将 各 种 USB2.0 封 包 使 用 直 列 方 式 显 示 外, 在 封 包 列 表 窗 口 上 方 更 设 置 了 过 滤 条 件, 依 照 USB PID 规 范 可 对 已 撷 取 封 包 进 行 筛 选, 更 可 在 庞 大 的 数 据 封 包 中 快 速 进 行 分 析 总 结 总 线 协 议 常 常 被 应 用 在 嵌 入 式 系 统 的 设 计 中, 但 是 若 仅 使 用 示 波 器 分 析 这 些 讯 号 是 非 常 花 费 时 间 的, 孕 龙 的 PC-BASE 逻 辑 分 析 仪 可 以 提 供 工 程 师 们 更 强 大 的 触 发 功 能 近 百 种 的 总 线 协 议 译 码 模 块 及 便 利 的 数 据 搜 寻, 让 工 程 师 在 开 发 产 品 时 更 能 够 得 心 应 手, 近 期 更 推 出 了 可 与 各 大 厂 牌 示 波 器 进 行 堆 栈, 藉 以 同 时 测 量 数 字 及 模 拟 信 号, 快 速 解 决 电 路 开 发 中 各 种 难 题 编 者 孕 龙 科 技 资 深 工 程 师 Gary Hsu_2011/11/15 关 于 孕 龙 孕 龙 科 技 股 份 有 限 公 司 Zeroplus Technology Co., Ltd., 于 1997 年 创 立 孕 龙 科 技 专 精 于 电 玩 游 戏 外 围 产 品 设 计 在 2004 年 扩 展 事 业 版 图 于 电 子 量 测 仪 器 市 场, 研 发 团 队 拥 有 新 进 微 处 理 控 制 技 术, 开 发 出 最 新 专 利 技 术 之 量 测 仪 器 - PC-Based 逻 辑 分 析 仪 ; 独 家 创 新 技 术 获 得 多 项 专 利 技 术, 申 请 国 家 遍 及 全 球 各 地, 目 前 仍 持 续 增 加 专 利 数 量 与 国 家 2005 年 甫 上 市 即 获 得 产 业 界 IC 上 市 公 司 等 数 百 家 科 技 大 厂, 及 各 大 高 等 教 育 学 府 采 用, 缔 造 优 异 销 售 成 绩, 成 为 台 湾 市 场 占 有 率 最 高 的 逻 辑 分 析 仪 10 /10