• Xilinx AXI USB2.0 Device IP 手册阅读笔记


    1. 前言

    手册链接:
    AXI Universal Serial Bus (USB) 2.0 Device v5.0 LogiCORE IP Product Guide
    (官网搜pg137也行)

    The AXI USB 2.0 Device 在Block Design中的样子:
    ip图
    IP默认配置:
    IP配置页
    很明显FPGA逻辑做主,USB设备做从


    2. 概要

    2.1 USB2.0协议特点:

    1. 半双工
    2. 串行
    3. 支持480MHz(High Speed)和12MHz (Full Speed)
    4. 即插即用
    5. 主从模式
    6. 每个设备在USB 2.0总线上都有一个地址,并且有一个或多个作为数据源或接收器的Endpoint。所有设备都具有系统控制端点(Endpoint0)。

    这些都是USB2.0协议内规定的,可以参考博客。USB2.0协议原文阅读笔记


    2.2 The AXI USB 2.0 Device介绍

    拥有:1个Endpoint0,7个用户Endpoint

    2.2.1 Endpoint0:

    Endpoint0只处理控制事务,这些事务从一个8字节的Setup包开始,后面跟着0个或多个数据包。数据包最多可为64个字节,IP专门开辟了一个DRAM进行存储。Setup在0x80,数据包在0x00。如果收到Setup包,SetupPkt 会被置位,如果Data包成功发送或接收,FIFOBufFree和FIFOBufRdy会被置位

    Setup packetData packet
    8byte0~64byte
    0x800x00
    SetupPktFIFOBufFree / FIFOBufRdy

    2.2.2 Endpoint1~7:

    1. 7个用户端点可以配置为 bulk、interrupt、isochronous三种传输模式。
    2. 端点可以被设置为INPUT(to the host)或者OUTPUT(form the host)
    3. 拥有一片乒乓的存储空间用于存储数据
    4. 用户端点数据缓冲区是单向的,并由各自端点的端点配置和状态寄存器进行配置
    5. 缓冲区的大小可以配置为0到512字节用于bulk,64字节用于interrupt,多达1024字节用于isochronous

    3. 详细说明

    3.1 总体框图

    The AXI USB 2.0 Device的总体结构如下图:

    框架图


    3.2 The AXI USB 2.0 Device工作流程

    发送数据FPGA Logic to USB Device

    1. Host发送一个令牌token,包含以下内容
    • OUT PID
    • 设备的地址(Device address)
    • 端点编号(Endpoint number)
    • 数据(Data )
    1. Device当且仅当数据不存在 Bit Stuff, PID, and CRC 错误的时候回复handshake包

    接收数据:USB Device to FPGA Logic

    1. Host发送一个令牌token,包含
    • IN PID
    • 设备的地址(Device address)
    • 端点编号(Endpoint number)
    1. Host等待来自Device的数据
    2. Device检查令牌,没错误的话,Device回复Data
    3. Device等待来自Host的handshake
    4. Host回复handshake

    3.3 分模块介绍


    3.3.1 Register and Control Logic

    包括32位寄存器,它为核心提供控制和状态信息,可以通过AXI Slave Interface访问。


    3.3.2 USB 2.0 Serial Interface Engine (SIE)

    USB 2.0串行接口引擎(SIE)充当如下作用:

    1. 在字节级处理USB流量的序列化和反序列化
    2. USB数据的复用和解复用
    3. 处理USB 2.0的状态转换,如挂起、恢复、USB重置和远程唤醒信号(以从挂起模式中唤醒主机)。
    4. 12个引脚的ULPI接口连接到PHY。
    5. 从USB到FPGA的数据从PHY接收,进行错误检查,并加载到DPRAM的适当区域。
    6. 从FPGA到USB数据从DPRAM加载,协议包装,然后当协议允许时,呈现给PHY,每次1Byte

    3.3.3 Dual Port Block RAM (DPRAM)

    功能:DPRAM是SIE和AXI接口之间的数据存储区域

    特点:

    1. DPRAM的端口A由SIE使用,端口B由处理器/DMA控制器使用。这两个端口都是32位宽的
    2. 有两块DPRAM
    DPRAM1DPRAM2
    Endpoint 端点0 FIFO和控制寄存器区域Endpoint1-7的FIFO
    64×8位2K×8位

    注:控制寄存器区域定义了内存是如何安排的,并报告每个FIFO缓冲区的状态(准备就绪、未准备就绪或计数)。

    1. 每个FIFO都是双缓冲的(乒乓),以帮助支持USB 2.0可能的高吞吐量。
    2. SIE将DPRAM视为FIFO
    3. 固件或硬件将DPRAM视为普通RAM,可以通过AXI Slave Interface访问

    3.3.4 AXI Slave Interface
    1. 可以读写Register and Control Logic和DPRAM
    2. 支持DPRAM的字节、半字和字传输,但寄存器只支持字传输。

    3.3.5 AXI Master Interface
    1. 在DMA模式下作为AXI主模式执行读取和写事务
    2. 在DMA模式下,根据DMA完成情况和DMA错误条件生成中断

    3.3.6 Direct Memory Access (DMA) Controller
    1. 可选
    2. DMA控制器在DPRAM2和AXI接口上的外部存储器设备或外设之间提供简单的DMA服务。
    3. 核心中的DMA控制器只执行在DPRAM2和外部存储器之间的数据传输

    注:DMA控制器将数据从源地址传输到目标地址,而无需处理器干预


    3.3.7 ULPI PHY

    USB PHY可以是任何与ULPI兼容的PHY,与USB直接相连,负责将字节数据转换为比特数据。


    3.4 端口说明

    说明

    1. Debug端口只有在勾选了 Include Debug Ports后才会显示出来,调试的时候可以加进去
    2. AXI Slave Interface和 AXI Master Interface都是标准的,省略了。
    3. m_axi_*z只有在使能了DMA才会出现

    在这里插入图片描述
    在这里插入图片描述

    3.5 寄存器表

    说明

    普通模式

    • 小端模式
    • 第一列是寄存器名
    • 第二列是Base Address + Offset 基地址是USB IP在整个系统中被分配的基地址。
    • 第三列是复位后的默认值,所有的寄存器默认值都是0x0000_0000
    • 第四列是读写权限,R表示有读权限,W表示有写权限
    • endpoint 0 buffer 至少 64 bytes,偏移地址不能超过0xFF(0x88-0xFF)
    • RAM 中 endpoint 1–7 buffers 范围是 (C_BASEADDR + 0x4000) + 0x1FFF

    表格
    寄存器表1
    寄存器表2

    DMA相关

    • DMA相关的寄存器只有在使能了DMA功能后才有效
    • 启用DMA逻辑后,endpoint 1-7 RAM不能通过AXI Slave Interface 访问;它只能通过DMA控制器访问

    蓝字标号的说明

    在这里插入图片描述

    (内容在手册P15)

    常用几个偏移地址

    1. Endpoint configuration space (offset 0x0000)
    2. Setup packet storage space (offset 0x0080)
    3. RAM for Endpoint 0 buffer (offset 0x0088)
    4. register space for the USB registers (offset 0x0100)
    5. RAM for Endpoint 1 to 7 buffers (offset 0x4000)

    手册后面还有每个寄存器位和功能的介绍,这里就不贴了,自己看手册理解的更加到位!


    4. 后言

    大家觉得有帮助的话,在收藏的同时麻烦点个赞!

    后续我会写 IP的Example Design 解读和IP的上板测试,链接也会贴在文字的末尾。

    欢迎大家的批评指正!

  • 相关阅读:
    rabbitMQ生产者的异步的异步批量发布确认demo
    Canal1.1.6安装部署
    图像的SIFT特征点提取
    Intel E810 DDP在VPP offload加速框架中的应用
    基于Linux的无界面网盘 项目
    【计算机毕业设计】41.航空订票系统
    软件开发模型与软件测试模型
    Docker 入门篇(一)-- 简介与安装教程(Windows和Linux)
    前端CodeReivew实践 | 京东云技术团队
    疫情下就业形势怎样?存在抗衰行业吗?
  • 原文地址:https://blog.csdn.net/liuhandd/article/details/126933696