目录
1. 系统概述
1.1 AHB总线接口
1.2 Data RAM接口
1.3 PHY 接口
1.4 外部DMA控制器接口
1.5 其他可选接口
1.6 发送和接收FIFO
2. 功能列表
2.1 一般功能
2.2 可配置功能
2.3 应用接口功能
2.4 MAC-PHY接口特征
2.5 系统Memory体系结构
2.6 Non-DWORD对齐支持
2.7 内部Memory特征
2.8 软件功能
2.9 功耗优化
本章开始学习记录DWC_otg控制器(新思USB2.0)的特点、功能和应用。
新思USB 2.0 IP主要有两个文档需要参考:
《DesignWare Cores USB 2.0 Hi-Speed On-TheGo (OTG) Data book》
《DesignWare Cores USB 2.0 Hi-Speed On-TheGo (OTG) Programming Guide》
前者是描述IP的架构、信号、配置、寄存器等,后者是编程指导,驱动编写主要参考这一部分进行。
1. 系统概述
首先是系统概述,站在系统层面来分析DWC_otg控制器,对DWC_otg控制器的功能做简单概述,典型的系统框架结构图如下图1-1所示,其中浅蓝色部分是根据配置决定,黑色部分是所有配置都有的。
1.1 AHB总线接口
上图1-1左边部分是AHB总线接口,这一部分主要是实现CPU和DWC_otg控制器信息交互功能。
AHB Slave I/F:AHB slave接口,此时DWC_otg控制器是从设备,CPU通过该接口对DWC_otg的控制和状态寄存器(CSR)、数据FIFO和队列进行读写访问。
AHB Master I/F(可选的):AHB master接口,对应DMA部分描述,使能DMA时,DMA是主设备,负责在系统的memory和内部的RAM之间搬运数据。
1.2 Data RAM接口
Data FIFO RAM/IF:上图1-1下面部分是Data RAM接口,连接一个外部单端口FIFO RAM(SPRAM),用于数据存储。
1.3 PHY 接口
DWC_otg控制器支持3种PHY接口,如上图1-1右边部分所示:
(1)UTMI+ Level 3 PHY 接口(Revision 1.0 or HSIC)
UTMI+PHY可以是单向或双向的,可以配置为8、16或8/16位数据总线(软件可配置)。UTMI+接口可以配置为与符合修订版1.0的PHY或符合HSIC的PHY一起工作。
(2)ULPI PHY 接口 (Revision 1.1)
ULPI PHY可以是单向或双向的,具有8位SDR或4位DDR总线(软件可配置)。
(3)USB 1.1全速串行收发器接口
USB 1.1全速串行收发器可以作为专用接口,也可以在芯片外部PHY的UTMI+或ULPI接口上共享引脚(软件可配)。
1.4 外部DMA控制器接口
当前DWC_otg控制器已经不支持外部DMA接口,不展开。
1.5 其他可选接口
- AHB Master 接口(使能内部DMA时,DMA是主设备,负责发送和接收数据到AHB总线上)。
- 供应商控制接口可以访问ULPI和UTMI+ PHY寄存器
- I2C接口,用于USB 1.1 FS模式下的OTG控制
- 通用I/O (GPIO)接口
- SOF更新翻转接口(不用于DWC otg)
- SOF输入计数接口(不用于DWC otg)
- 设备和主机模式下支持Scatter/Gather DMA
- 设备模式下支持多处理器中断
1.6 发送和接收FIFO
DWC_otg控制器上的发送和接收FIFO接口用于将数据移入和移出数据FIFO RAM。这些分为周期性(用于同步和中断传输)或非周期性(用于批量传输和控制传输),总结如下:
- 非周期性主机OUT传输公用一个Tx FIFO。
- 周期性主机OUT传输,可以选择一个独立周期传输FIFO。
- 设备模式下IN端点可选公用非周期性Tx FIFO,和多个周期性TxFIFO
- 用于周期性/非周期性设备IN传输的每个IN端点可选专用Tx FIFO
- 主机模式中断OUT和设备模式中断IN(仅在Shared FIFO 操作模式)传输可以编程为通过非周期传输FIFO或周期传输FIFO。
2. 功能列表
2.1 一般功能
- 支持OTG2.0和OTG1.3,软件可配.OTG2.0支持ADP (Attach detection Protocol)。
- 支持3种速率:
- High-Speed (HS, 480-Mbps)
- Full-Speed (FS, 12-Mbps)
- Low-Speed (LS, 1.5-Mbps)。
- 支持多种低功耗相关配置选项。
- 支持DMA和非DMA操作方式。
- MAC-Phy支持多种接口。
- AHB和PHY接口支持使用不同的时钟,以简化集成。
- 包括控制端0在内,一共最多支持16个双向端点。
- DWC_otg作为设备使用时,UTMI+ PHY时不支持低速模式。
- 最多支持16个主机通道。在主机模式下,当需要支持的设备的端点数量大于支持的主机通道数,软件可以重新编程通道来支持多达127个设备,每个设备有32个端点(IN + OUT),最多4064个端点。
- Host Buffer DMA模式, Slave模式支持外部HUB连接。
- 包括自动ping功能。
- 支持低速模式下的Keep-Alive和高速/全速模式下的SOFs。
2.2 可配置功能
- 可根据用户需求,使用coreConsultant utility配置控制器。
- 能够为低功耗模式选择多个电源轨
- 可选择多种DMA操作模式
- 可根据需求,选择Mac-Phy接口类型
2.3 应用接口功能
- AHB的应用程序接口:
- AHB从接口,用于访问控制和状态寄存器(CSRs)、数据FIFO和队列。
- 可选的AHB主接口,内部DMA使能时给Data FIFO访问使用。
- 特定配置下AHB时钟最高可达270MHz。
- AHB总线上只支持32位数据。
- 支持通过pin配置小端或者大端模式。
- AHB从接口支持INCR4,INCR8,INCR16,INCR和SINGLE传输。
- AHB主接口支持拆分、重试和错误AHB响应。AHB从机接口上不产生拆分和重试响应。
- DMA模式AHB主接口支持软件配置AHB Burst类型。
- 只能处理固定的burst address对齐,比如INCR16则地址的位[5:0]都要是0。
- 在AHB主接口上可生成AHB忙周期。
- 可处理1KB的边界。
2.4 MAC-PHY接口特征
- 支持以下MAC-PHY接口
- UTMI 8/16
- ULPI
- HSIC
- IC_USB (Low/Full速)
- FS 和UTMI共享
- 支持UTMI+ Level 3 接口(Revision 1.0, February 25th, 2004). 8, 16, 和 8/16位数据总线。
- 支持ULPI接口 (Revision 1.1rc, September 1st, 2004), 8-位 SDR, 4-bit DDR, 6-pin Serial, 3-pin Serial 和 Carkit。
- UTMI+ L3 和 ULPI可同时存在,由软件选择,或者直接配置只使用一种。
- 只有在选择了UTMI+的情况下,才能选择HSIC接口。否则无法选择HSIC接口
- I2C接口。
- 支持UTMI-to-UTMI Bridge。
2.5 系统Memory体系结构
- 支持Slave,内部DMA 模式。
- 使用内部DMA模式时还支持Descriptor-Based Scatter/Gather DMA。
2.6 Non-DWORD对齐支持
- 主机模式:
Scatter Gather DMA模式,IN和OUT传输,支持缓冲区的Non-DWORD对齐。
Buffer DMA和Slave模式,IN和OUT传输,不支持缓冲区的Non-DWORD对齐。
- 设备模式:
Scatter Gather DMA模式,IN和OUT传输,支持缓冲区的Non-DWORD对齐。
Buffer DMA和Slave模式,IN和OUT传输,不支持缓冲区的Non-DWORD对齐。
2.7 内部Memory特征
- 在Slave和DMA模式,可以给设备的每个IN端点都配置一个专用的传输FIFO。每个FIFO可以保存多个包。
- 包括可选的Remote Memory Support接口,用于向控制器发出DMA写入完成事件的信号。
- 利用单端口RAM替代双端口RAM以减少面积和功耗。
- 支持传输时动态修改端点FIFO的大小。
- 支持端点FIFO可不是2的指数倍对齐,以利用连续的存储位置。
- 在主机和设备模式下共享硬件寄存器,以减少门控数量。
- 设备模式时如果启用DMA并选择专用的Tx FIFO,DMA收发阈值可配,阈值可以通过全局寄存器配置,为了支持配置阈值AHB时钟必须60MHz以上。
2.8 软件功能
为了减少门数和提供灵活性,一些功能由软件去实现:
- 设备模式,软件协助硬件实现非周期IN时序(仅适用Shared FIFO操作)。
- 软件处理USB命令(检测SETUP事务,并将其命令有效载荷转发给应用程序进行解析)。
- 软件处理USB错误。
2.9 功耗优化
- 有源时钟门控功能:允许控制器在USB和AHB通信的IDLE时段内关闭AHB和PHY时钟,来降低动态功耗。同样也可以在SPRAM未使用时关闭RAM的时钟输出。
- 支持Link Power Management (LPM)。
- 几个节能功能,包括两个用于高级电源管理的电源轨。可以根据自己的要求选择以下节能选项:
- 关闭时钟门控
- 部分断电
- 休眠
- USB Suspend,LPM和Session-Off模式支持PHY时钟门控。
- USB Suspend和Session-Off模式支持AHB时钟门控。
- USB Suspend和 Session-Off模式支持部分掉电。
- 层次结构支持多个电源轨,以便在挂起期间启用休眠功能。
- 输入信号需要powered-off的块驱动到safe 0 。
- Data FIFO RAM不使用时关闭片选。
- Data FIFO RAM支持时钟门控。
- 设备和主机模式都支持在USB Suspend,LPM和Session-Off 模式时切换到32-KHz低频时钟。