MUSBMHDRC USB 2.0 MULTI-POINT DUAL-ROLE CONTROLLER编程指南解读

特性简介

它既可作为高速/全速 USB 外设的功能控制器,也可作为与其他 USB 功能进行点对点或多点通信的主机/外设
♦ 符合高速 (480 Mbps) 功能的 USB 2.0 标准以及 USB 2.0 规范的 OTG
♦ 支持与一个或多个高速、全速或低速设备的 OTG 通信
♦ 支持会话请求协议(SRP)和主机协商协议(HNP)
♦ 支持暂停和恢复信号
♦ 具有可选 ULPI 链路封装器的 UTMI+ 3 级收发器接口
♦ 可选的 USB 1.1 PHY 接口(仅用于全速/低速操作),带有可选的 I2C 接口,允许与 I2C 控制的 PHY 一起使用
♦ 软连接/断开
♦ 可配置多达 15 个额外的发送端点和多达 15 个额外的接收端点
♦ 提供端点的动态分配,以最大化支持的设备数量
♦ 可配置的 FIFO,包括动态 FIFO 大小的选项
♦ FIFO 的同步 RAM 接口
♦ 支持对 FIFO 的 DMA 访问
♦ 高级 AMBA™ AHB 兼容 CPU 接口(适用于各种 AHB 总线速度)
♦ 支持 AHB 总线上的多层操作
♦ 在硬件中执行所有事务调度
♦ 为核心配置提供图形用户界面
♦ 支持链路电源管理

MUSBMHDRC 是一种通用设计,在单核中提供:
• 高速/全速USB外设的功能控制器;
一个“双角色”USB 控制器,用于与另一个 USB 功能(可以是高速、全速或低速)进行点对点“On-The-Go”(OTG)通信;
• (连接到集线器时)多点USB 系统的主机控制器。
– 反过来,允许使用 MUSBMHDRC 内核的设备根据需要在这些不同角色之间切换。
该内核既符合高速和全速功能的 USB 2.0 标准,也符合 USB 2.0 规范的 On-The-Go 补充标准,适用于移动电话、PDA、数码相机和MP3 播放器。仅作为外围设备的设备可以通过会话请求协议 (SRP) 发起 USB 流量,而双角色设备同时支持 SRP 和主机协商协议 (HNP),并且可以根据需要充当主机或外围设备的角色。 MUSBMHDRC 还支持拆分事务,这反过来又允许它支持使用带有 USB 2.0 集线器的全速或低速设备。支持在不使用时关闭便携式设备。

除了端点 0 之外,用户可配置 MUSBMHDRC 最多 15 个“发送”端点和/或最多 15 个“接收”端点。(这些端点用于 IN 事务和 OUT 事务取决于是否使用 MUSBMHDRC当用作外设时,IN 事务通过 TX 端点处理,OUT 事务通过 Rx 端点处理。端点。)这些附加端点可以在软件中单独配置以处理批量传输(这也允许它们处理中断传输),同步传输或控制传输。
此外,端点还可以动态分配给不同的目标设备功能——最大化可以同时支持的设备数量。

每个端点都需要与之关联的FIFO。MUSBMHDRC具有RAM接口,用于连接到用于所有端点FIFO的单块同步单端口RAM。(RAM块本身需要由用户添加。)
端点 0 的 FIFO 要求为 64 字节深,将缓冲 1 个数据包。RAM 接口可针对其他端点 FIFO 进行配置,大小为 8 到 8192 字节,可以缓冲 1 或 2 个数据包。单独的 FIFO 可以与每个端点相关联:或者,具有相同端点编号的 TX 端点和 Rx 端点可以配置为使用相同的 FIFO,例如,以减少所需 RAM 块的大小,前提是它们永远不会在同时。
MUSBMHDRC 提供了一个 32 位同步 CPU 接口,设计用于连接到 AMBA AHB 总线 1 。通过添加合适的封装器/桥接器,MUSBMHDRC 也可以很容易地连接到一系列其他标准总线。
还支持对端点 FIFO 的 DMA 访问。
MUSBMHDRC 提供了一个与 UTMI+ Level 3 兼容的接口,用于连接到合适的 USB 高速/全速收发器。
一个可选的 ULPI Link Wrapper(在 musbmhdrc/docs 目录中的musbhdrc_ulpi_an.pdf 文档中描述)用于连接到 ULPI 兼容的 PHY。还提供了一个替代接口,允许使用 USB 1.1 全速 PHY 和核心,但仅适用于全速和低速事务。
MUSBMHDRC 提供发送和接收 USB 数据包所需的所有编码、解码、检查和重新请求——仅在端点数据成功传输时才中断 CPU。
当作为主机时,MUSBMHDRC 额外维护一个帧计数器并自动调度 SOF、同步、中断和批量传输。它还包括对会话请求和点对点通信中使用的主机协商协议的支持,其详细信息USB 2.0 规范的 USB On-The-Go 补充中给出。
MUSBMHDRC 提供了一系列测试模式——主要是 USB 2.0 规范中描述的高速操作的四种测试模式。其中最后一种可能有助于调试硬件中的 PHY 问题。
提供图形用户界面脚本,用于根据用户要求配置内核。
本规范应与 USB On-The-Go 规范一起阅读,该规范还提供了电源要求、电压水平、连接器等的详细信息。

功能描述

操作模式

MUSBMHDRC 有两种主要的操作模式——外设模式和主机模式。
在外围模式下,MUSBMHDRC 编码、解码、检查和引导所有发送和接收的 USB 数据包。 IN 事务通过设备的 TX FIFO 处理,OUT 事务通过其 Rx FIFO 处理。 支持控制、批量、同步和中断事务。
在主机模式下,MUSBMHDRC 的行为方式取决于它是链接到另一个 USB 功能进行点对点通信还是连接到集线器。当连接到另一个 USB 功能时,MUSBMHDRC 提供了在与该 USB 功能进行点对点通信时充当主机所需的一系列功能。当连接到集线器时,它提供了充当同时支持的多个设备的主机所需的设施。
当在主机模式下运行并用于与单个其他 USB 设备(可以是高速、全速或低速)进行点对点通信时,MUSBMHDRC 可以支持控制、批量、同步或中断事务。 IN 事务通过 Rx FIFO 处理,OUT 事务通过 TX FIFO 处理。除了对发送和接收的 USB 数据包进行编码、解码和检查外,MUSBMHDRC 还将自动安排同步端点和中断端点每 n 帧/微帧执行一次事务(如果选择了高带宽选项,则最多执行三个事务) ,其中 n 表示已为端点编程的轮询间隔。剩余的总线带宽在控制和批量端点之间平均共享。
当连接到集线器时,MUSBMHDRC 继续提供上述功能,但还需要对其进行编程,详细信息如下:
• 目标设备的功能地址。
• 目标设备的运行速度(以便进行适当的速度转换)。
• 如果目标设备是通过高速集线器访问的全速或低速设备,端点还需要
用集线器的功能地址和端口号编程。
设备可能需要将 VBus 供电至 5V,作为连接的“A”设备(电源和默认主机),或者作为“B”设备(默认外设),以便能够唤醒“A” 通过将 VBus 充电至 2V 来进行设备。 MUSBMHDRC 的输出指示何时需要这些充电选项。
MUSBMHDRC 最初是在主机模式还是在外设模式下运行取决于它是在“A”设备还是“B”设备中使用,而这又取决于 IDDIG 输入是低电平还是高电平。 当 MUSBMHDRC 作为“A”设备运行时,它最初配置为在主机模式下运行。 当作为“B”设备运行时,MUSBMHDRC 最初配置为在外设模式下运行。 但是,在 DevCtl 寄存器中提供了一个“Host Req”位,CPU 可以通过该位请求“B”设备在下次 USB 总线上没有活动时成为主机。
IDDIG 输入反映了设备的 mini-AB 插座的 ID 引脚的状态,IDDIG 为低电平表示“A”插头,即作为“A”设备运行,IDDIG 为高电平表示“B”插头和作为 一个“B”设备。
有关 MUSBMHDRC 是充当“A”设备还是“B”设备以及它所连接的设备是高速、全速还是低速的信息也记录在 DevCtl 寄存器中,以及信息 关于 VBus 的电平相对于用于发出会话开始和会话结束信号的高电压和低电压阈值。
第 14 节和第 15 节分别描述了会话请求和在连接任一端的设备之间传输主机/外设角色的过程。 进行的传输均受标准 USB 数据传输协议的约束。

U T M 同步

UTM 同步模块的作用是在收发器宏单元 60MHz 时钟域和双重角色控制器的系统时钟 CLK 之间重新同步,从而驱动内核的其余部分直至并包括 CPU 接口。 这允许 MUSBMHDRC 的其余部分以 CPU 总线速度运行,而无需任何进一步的同步。 该模块还执行高速检测握手,并在与另一个 USB OTG 设备的点对点通信中处理 HNP 和 SRP。
该模块使用 8 位接口,首先将数据转换为 16 位 - 要求内核由运行频率至少超过 30MHz 的系统时钟驱动。 系统时钟在跨域正确传输数据所需的实际最小频率是技术实现的函数。 这个实际的最小频率在第 4 节中有详细定义。

数据包编码/解码

数据包编码/解码块为要传输的数据包生成标头,并对接收到的数据包的标头进行解码。
它还为要传输的数据包生成 CRC,并检查接收数据包的 CRC。

端点控制器

使用了两个控制器状态机:一个用于端点 0 上的控制传输,另一个用于端点 1 到 15 上的批量/中断/同步事务。

CPU接口

CPU 接口允许访问控制/状态寄存器和每个端点的 FIFO。 当数据包成功发送或接收,以及内核进入挂起模式或从挂起模式恢复时,它也会向 CPU 产生中断。
MUSBMHDRC 提供的接口是一个 32 位同步接口,它遵循为 AMBA AHB 总线接口指定的设计。 可以通过向内核添加适当的包装器来实现与其他总线标准的接口。

RAM控制器

RAM 控制器为单个同步单端口 RAM 块提供接口,用于缓冲数据包
CPU和USB之间。 它从端点控制器获取 FIFO 指针,将它们转换为 RAM 块内的地址指针,并生成 RAM 访问控制信号。

DMA控制器支持

如果需要,MUSBMHDRC 可以包括一个多通道 DMA 控制器,用于有效加载/卸载端点 FIFO。 该 DMA 控制器最多可配置为 8 个通道。
DMA 控制器有自己的控制寄存器块和自己的中断控制器。 它支持两种操作模式,每个通道可以独立编程为操作模式
或者,MUSBMHDRC 可以与外部 DMA 控制器集成,以有效加载/卸载端点 FIFO。 MUSBMHDRC 为每个端点输出 DMA 请求信号。

主机、从机操作

MUSBMHDRC 期望充当主机还是充当外设取决于设备连接在一起的方式。
每条 USB 电缆都有一个“A”端和一个“B”端。如果将电缆的“A”端插入包含 MUSBMHDRC 的设备,则 MUSBMHDRC 将充当主机设备并进入“主机”模式。 (主机模式位 (DevCtl.D2) 将设置为“1”。)如果插入电缆的“B”端,MUSBMHDRC 将进入“外设”模式,主机模式位将被设置为“0”。

当主机模式位 (DevCtl.D2) 被清零时,MUSBMHDRC 在外设模式下运行。当 MUSBMHDRC 在外设模式下运行时,IN 事务的数据通过 MUSBMHDRC 的 Tx FIFO 处理。
点 1 到 15 的 Tx FIFO 的大小由 MUSBMHDRC 配置文件中的配置常量确定,或者在选择动态 FIFO 大小的情况下,通过 TxFIFO2 寄存器确定。可放置在 Tx 端点的 FIFO 中用于传输的数据包的最大大小是可编程的,由写入该端点的 TxMaxP 寄存器的值决定(最大有效负载 × 事务/微帧数(如果适用))。
除非使用动态 FIFO 大小,当最大数据包大小设置为小于或等于 FIFO 大小的一半时,为 IN 事务启用双数据包缓冲,并且当最大数据包大小大于 FIFO 大小的一半时,启用单数据包缓冲。 当双包缓冲启用时,两个数据包可以在 FIFO 中缓冲:当单包启用缓冲,即使数据包不到一半也只能缓冲一个数据包
FIFO 大小。
注意:为任何端点设置的最大数据包大小不得超过 FIFO 大小。 您还应该注意,当 FIFO 中有数据时,不应写入 TxMaxP 寄存器,因为可能会出现意外结果。
MUSBMHDRC 可以配置为:

  1. TX 端点的数量,除了端点 0。即 1、3、5、7、11 或 15 个额外的 TX 端点
  2. Rx 端点的数量,除了端点 0。即 1、3、5、7、11 或 15 个额外的 Rx 端点
  3. 这些端点是否支持高带宽同步传输。
  4. 与每个端点相关联的 FIFO 的大小(不包括端点 0),或者动态分配给不同端点的总 RAM 大小(见第 19 节)。
  5. 哪些 FIFO(如果有)在 TX 端点和相应编号的 Rx 端点之间共享(除非动态调整大小)。
  6. 批量传输是否需要自动拆分/组合数据包选项(参见第 8.4.1.4 和 8.4.2.4 节)。
  7. 使用 UTMI+ 接口的内核版本是否包括 UTMI+ VControl 和 VStatus 寄存器,以及这些寄存器的大小(如果包括)(参见第 3.6.1 和 3.6.2 节)。

8.是否利用了MUSBHDRC对多点(hub-support)的支持。如果使用了额外的逻辑,则允许 MUSBHDRC 管理通过 USB 集线器的连接。
8. 使用内置 DMA 控制器时支持的 DMA 通道数(如果使用外部 DMA 控制器,则为 0)。

除了端点 0 之外,最多可以有 15 个 TX 端点和/或多达 15 个 Rx 端点。当 MUSBMHDRC 在外设模式下使用时,每个 TX 端点都用作 IN 端点,而当 MUSBMHDRC 使用时,每个 TX 端点都用作 OUT 端点 在主机模式下使用。 同样,当 MUSBMHDRC 用于外设模式时,每个 Rx 端点都用作 OUT 端点,而当 MUSBMHDRC 用于主机模式时,每个 Rx 端点都用作 IN 端点。
端点 0 的 FIFO 要求为 64 字节大小,并将缓冲一个数据包。 其他端点的 FIFO 可指定为 8、16、32、64、128、256、512、1024、2048、4096 或 8192 字节,除 8 字节 FIFO 外,可用于缓冲任一 一两个包。
但是,大于 2048 字节的 FIFO 大小只能与高带宽同步端点一起使用。
在需要时,MUSBMHDRC 会自动将最多 3072 字节 (3k) 的数据包拆分/重组为 2 或 3 个更小的数据包,以便通过总线传输/接收。
(注意:双缓冲对于批量或中断传输是可选的,但对于同步传输通常是必需的。您还应该注意 USB 规范对全速操作中批量、中断和同步传输的数据包大小的限制。)
单独的 FIFO 可以与每个端点相关联:或者,具有相同端点编号的 TX 端点和 Rx 端点可以配置为使用相同的 FIFO,例如以减小所需 RAM 块的大小。

单包缓冲

如果 Tx 端点 FIFO 的大小小于该端点最大数据包大小的两倍(在 TxMaxP 寄存器中设置,或者在使用动态 FIFO 大小的情况下,在 TxFIFO2 寄存器中设置),则只能在 FIFO 中缓冲一个数据包 并启用单个数据包缓冲。
由于要发送的每个数据包都加载到 Tx FIFO 中,因此需要设置 TxCSR 中的 TxPktRdy 位。 如果设置了 TxCSR 中的 AutoSet 位,则在将最大大小的数据包加载到 FIFO 时,TxPktRdy 位将自动设置。 对于小于最大值且可能不使用 AutoSet 的数据包大小(高带宽同步/中断事务),必须始终手动设置TxPktRdy(即由 CPU)。
当手动或自动设置 TxPktRdy 位时,数据包被视为准备好发送。 TxCSR 中的 FIFONotEmpty 位也被设置。
成功发送数据包后,TxPktRdy 和 FIFONotEmpty 都将被清除,并生成相应的 Tx 端点中断(如果启用)。 然后可以将下一个数据包加载到 FIFO 中。

双包缓冲

注意:如果端点的相应 DPktBufDis 位在 Tx DPktBufDis 寄存器中被断言(等于 1’b1),则双数据包缓冲被禁用(有关详细信息,请参见 3.8.2)。该位的默认设置为启用(等于 1’b0)。

如果 Tx 端点 FIFO 的大小至少是该端点最大数据包大小的两倍(在 TxMaxP 寄存器中设置,或者在使用动态 FIFO 大小的情况下,在 TxFIFO2 寄存器中设置),则可以在 FIFO 中缓冲两个数据包,并且双数据包缓冲已启用。

由于要发送的每个数据包都加载到 Tx FIFO 中,因此需要设置 TxCSR 中的 TxPktRdy 位。如果设置了 TxCSR 中的 AutoSet 位,则在将最大大小的数据包加载到 FIFO 时,TxPktRdy 位将自动设置。对于小于最大值且可能不使用 AutoSet 的数据包大小(高带宽同步/中断事务),必须始终手动设置 TxPktRdy(通过CPU)。
如果 RxPktRdy 清零时 FIFOFull 位设置为 1,则 MUSBMHDRC 将首先清除 FIFOFull 位。然后它将再次设置 RxPktRdy 以指示在 FIFO 中有另一个数据包等待卸载。

高带宽等时/中断端点

在高速模式下,为高带宽同步事务设置的 Rx 端点可以在任何微帧中接收多达三个“USB”数据包,每个数据包中的有效负载高达 1024 字节,对应的数据传输速率高达 每微帧 3072 字节。 在主机模式下也可以类似地接收高带宽中断事务,但请注意,在外设模式下不支持高带宽中断事务。
MUSBMHDRC 通过自动将一个微帧期间接收到的所有 USB 数据包组合成 Rx FIFO 内最多 3072 字节(即 3 × 1024 字节)的单个数据包来支持这一点。 从 CPU 中的软件的角度来看,操作与上述单数据包缓冲或双数据包缓冲(视情况而定)完全相同,除了 RxPktRdy 始终需要手动清除(即由 CPU)作为 AutoClear 不适用于高带宽同步传输。
在任何微帧中可以接收的 USB 数据包的最大数量和这些数据包的最大有效负载通过 RxMaxP 寄存器定义。 RxMaxP 寄存器的位 10–0 确定任何 USB 数据包中的最大有效负载,而位 12,11 确定在一个微帧(2 或 3)中可以接收的这些数据包的最大数量。
在任何微帧中发送的 USB 数据包的数量将取决于要传输的数据量,并通过用于各个数据包的 PID 来指示。 如果在微帧结束时还没有接收到指定数量的数据包,则 RxCSR 寄存器中的 IncompRx 位将被设置以指示 FIFO 中的数据不完整。 同样,如果接收到错误数据类型的数据包,则 RxCSR 寄存器的 PID 错误位将被设置。 但是,在每种情况下,仍会产生中断以允许从 FIFO 中读取已接收的数据。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
musb 中文翻译和英文文档.可以通过会话请求协议(SRP)发起USB流量,而双角色设备同时支持SRP和主机协商协议(HNP),并且可以根据需要担任主机或外设的角色。MUSBMHDRC还支持拆分事务,这反过来允许它支持使用带有USB 2.0集线器的全速度或低速设备。核心还包括支持在不使用时关闭便携式设备。 除了端点0之外,MUSBMHDRC是用户可配置的,可支持最多15个‘传输’端点和/或最多15个‘接收’端点。(对于IN事务和OUT事务使用这些端点取决于MUSBMHDRC是用作外设还是用作主机。当用作外设时,IN事务通过TX端点处理,OUT事务通过Rx端点处理。当用作主机时,IN事务通过Rx端点处理,OUT事务通过TX端点处理。)这些附加端点可以在软件中单独配置,以处理批量传输(这也允许它们处理中断传输)、同步传输或控制传输。此外,还可以动态地将端点分配给不同的目标设备函数——最大限度地同时支持设备的数量。 每个端点都需要一个FIFO与之关联。MUSBMHDRC有一个RAM接口,用于连接到用于所有端点FIFOs的同步单端口RAM的单个块。(RAM块本身需要由用户添加。) 端点0的FIFO需要为64字节深,并缓冲1个数据包。RAM接口可以根据其他端点FIFOs进行配置,它的大小可以从8到8192字节,可以缓冲1个或2个数据包。单独的FIFOs可以与每个端点相关联:或者,具有相同端点编号的TX端点和Rx端点可以配置为使用相同的FIFO,例如,如果它们永远不能同时活动,可以减少所需RAM块的大小。 MUSBMHDRC提供了一个32位同步CPU接口,设计用于连接AMBA AHB bus1。接口支持使用AHB总线运行在一个大范围的总线速度。AHB总线上的多层操作也被支持。通过添加合适的包装器/桥接器,MUSBMHDRC还可以很容易地连接到一系列其他标准总线。 还支持对端点FIFOs的DMA访问。 MUSBMHDRC提供了一个UTMI+ 3级兼容接口,用于连接到一个合适的USB高/全速收发器。包含了一个可选的ULPI链接包装器(在musbhdrc /docs目录中包含的musbhdrc_ulpi_an.pdf文档中描述),用于连接到与ULPI兼容的物理。另一种接口也提供,允许使用USB 1.1与核心全速PHY,但仅为全速和低速事务。(此接口见8.1节)。 MUSBMHDRC提供发送和接收USB数据包所需的所有编码、解码、检查和重新请求——仅当端点数据已被成功传输时才中断CPU。 当充当主机时,MUSBMHDRC另外维护一个帧计数器,并自动调度SOF、同步、中断和批量传输。它还包括对在点对点通信中使用的会话请求和主机协商协议的支持,其细节在USB 2.0规范的USB on - go补充中给出。MUSBMHDRC提供了一系列的测试模式——主要是USB 2.0规范中描述的高速运行的四种测试模式。它还包括选项,允许它被迫进入全速模式,高速模式或主机模式。最后一个可能在帮助调试硬件PHY问题时有用。 提供了图形用户界面脚本,用于根据用户的需求配置核心。要使用的脚本取决于所选的CPU接口。请注意:在撰写本文时,内核仅在Verilog中可用。 本规范应与USB运行规范一起阅读,该规范还提供了电源要求、电压水平、连接器等细节。.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值