1. 前言
这是一个开源的USB2.0协议项目,工程需要外部的UTMI接口PHY芯片才能实现正常通信。
1.1 工程链接
2. 工程分析
一个项目的说明文档,在第一章就会将项目的具体工程介绍清楚,第二章介绍整体架构。
2.1 工程介绍
该核心提供了一个功能(外围设备)接口。它可以通过USB将几乎任何外设接口到计算机上。
计算机作为主设备,核心在通信上作为从设备的
下图为该项目核的整体架构:主要有几点
- SSRAM和PHY都是外部的(External)
- 核通过UTIM模块与外部PHY相连。
- 主机接口提供了内部数据存储器和控制寄存器之间的桥梁。数据存储器和控制寄存器接口连接到协议层(PL)
下图可以看到Core在一个通信网络中所处的地位和Core所包含的内容。
2.1.1 时钟域( Clocks)
- 以UTIM及其周边为主题的时钟由PHY输入,最大可以达到60MHz,具体多少与FS/HS模式有关系。
- 第二是是以主机接口为主题的时钟域,时钟速率必须大于60MHz,这里我们选择100MHz
2.1.2 存储接口和仲裁器( Memory Interface and Arbiter)
内存接口和仲裁器在USB核心和主机接口之间进行仲裁,以进行内存访问。此块允许使用标准的单端口同步SRAM。除了仲裁之外,它还执行数据转向和流量控制。
SSRAM是一个单端口的同步SRAM块,用于缓冲输入和输出数据。
2.1.3 协议层实现(Protocol Layer (PL))
协议层负责所有的USB数据IO和控制通信
2.1.4 UTMI
- Speed Negotiation Engine 用于协商USB接口的速度,并处理暂停和重置检测。
- Interface State Engine将处理接口状态。它控制暂停/恢复模式和全速/高速切换。
- Tx/Rx FIFO用于临时存放接收和发送的数据。
- Rx & Tx Bus Interface 确保与PHY的接收和传输接口正确地握手
协议层
流程图
下图为USB core在执行是判断的流程图,只有在条件满足是才能完成基本的功能。
代码分析
整体架构
下图为工程代码层级关系。
下图为RTL图,红色高亮是UTMI接口的控制线和数据线。
UTMI模块
下图为UTMI模块的顶层RTL图,红色高亮代表与PHY直接相连的信号线。