USB2.0开源项目学习(UTMI)

本文详细介绍了开源USB2.0协议项目,其依赖外部UTMI PHY芯片进行通信。项目核心提供外围设备接口,与计算机通过USB连接。文章深入探讨了时钟域、内存接口与仲裁器、协议层实现及UTMI模块,包括速度协商、接口状态管理、数据传输与握手。此外,还展示了代码结构和UTMI模块的RTL图,为理解工程实现提供了清晰的视觉辅助。
摘要由CSDN通过智能技术生成

1. 前言

这是一个开源的USB2.0协议项目,工程需要外部的UTMI接口PHY芯片才能实现正常通信。

1.1 工程链接

2. 工程分析

一个项目的说明文档,在第一章就会将项目的具体工程介绍清楚,第二章介绍整体架构。

2.1 工程介绍

该核心提供了一个功能(外围设备)接口。它可以通过USB将几乎任何外设接口到计算机上。
计算机作为主设备,核心在通信上作为从设备的

下图为该项目核的整体架构:主要有几点

  • SSRAM和PHY都是外部的(External)
  • 核通过UTIM模块与外部PHY相连。
  • 主机接口提供了内部数据存储器和控制寄存器之间的桥梁。数据存储器和控制寄存器接口连接到协议层(PL)

整体架构

下图可以看到Core在一个通信网络中所处的地位和Core所包含的内容。

在这里插入图片描述

2.1.1 时钟域( Clocks)
  1. 以UTIM及其周边为主题的时钟由PHY输入,最大可以达到60MHz,具体多少与FS/HS模式有关系。
  2. 第二是是以主机接口为主题的时钟域,时钟速率必须大于60MHz,这里我们选择100MHz
2.1.2 存储接口和仲裁器( Memory Interface and Arbiter)

内存接口和仲裁器在USB核心和主机接口之间进行仲裁,以进行内存访问。此块允许使用标准的单端口同步SRAM。除了仲裁之外,它还执行数据转向和流量控制。

SSRAM是一个单端口的同步SRAM块,用于缓冲输入和输出数据。

2.1.3 协议层实现(Protocol Layer (PL))

协议层负责所有的USB数据IO和控制通信
PL逻辑架构

2.1.4 UTMI

UTMI模块架构

  1. Speed Negotiation Engine 用于协商USB接口的速度,并处理暂停和重置检测。
  2. Interface State Engine将处理接口状态。它控制暂停/恢复模式和全速/高速切换。
  3. Tx/Rx FIFO用于临时存放接收和发送的数据。
  4. Rx & Tx Bus Interface 确保与PHY的接收和传输接口正确地握手

协议层

流程图

下图为USB core在执行是判断的流程图,只有在条件满足是才能完成基本的功能。
流程图

代码分析

整体架构

下图为工程代码层级关系。

代码层级
下图为RTL图,红色高亮是UTMI接口的控制线和数据线。
RTL图

UTMI模块

下图为UTMI模块的顶层RTL图,红色高亮代表与PHY直接相连的信号线。
UTMI

工程测试

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bigbeea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值