当前位置:首页 期刊杂志

PowperPC 架构下USB3.0 的IP 核软硬件协作验证

时间:2024-05-22

邓佳伟,张梅娟,王 琪,杨楚玮,应凌楷

(中国电子科技集团第五十八研究所CPU 研究室,江苏 无锡 214062)

0 引言

传统USB2.0 协议最大带宽480 Mb/s,USB2.0 已经不能满足用户的需求,USB3.0 作为新一代高速接口,不但兼容USB2.0 协议,而且在低速、全速、高速的三种传输模式基础上增加了一种超高速模式。USB3.0 工作单元拥有两个数据传输通道,一对通道用于传输速率可高达5 Gb/s 的超高速数据传输,同时还有一对通道用于支持USB2.0 的数据通信。

PowerPC 架构是一种精简指令集(RISC)架构,其原始的设计源自IBM 的POWER RISC 架构。PowerPC 架构处理器有着广泛的应用,主要集中在服务器CPU 和嵌入式CPU 市场。PowerPC 在嵌入式处理器上表现非常优异,不仅具备高性能,低功耗以及较低散热量等特点,而且资源丰富,能够满足各类需求。

芯片验证主要为了验证研制芯片的功能性,验证其各功能设计正确。验证的方法有很多,主要有基于事件的验证、基于周期的模拟验证、基于事务的验证、软硬件协同验证、验证仿真器验证和形式验证等。基于软硬件系统验证[1-2]是将软硬件同时集成并加以验证,验证人员直接在芯片设计过程中参与,在硬件设计平台上运行软件。协同验证中验证平台设计采用真实的输入激励来模拟,减少了验证平台和芯片差异性[3],但由于验证平台一般的模拟速度不够快等问题,系统验证提供不了足够高的性能,特别在实时操作系统上运行各种应用。

本方案主要使用的是软硬件协同验证,通过Xilinx的VCU118 的验证硬件平台,Linux4.1.8 操作系统系统软件平台,协同配合高效能地完成了方案设计,证实了方案的可行性。

1 系统架构

本方案中验证平台FPGA 包含一个PowperPC 处理器IP 逻辑,一个USB3.0 IP 逻辑。各逻辑单元的功能如下。

PowerPC 处理器IP 逻辑单元:基于PowerPC 指令集的一款处理器内核。其主频支持最高达1.2 GHz。

USB 控制器IP 逻辑单元:USB 控制器逻辑内部包含USB3.0 和USB2.0 两部分。其中USB3.0 控制器逻辑支持最高可达5 Gb/s 的传输速率,USB2.0 控制器逻辑支持最高到480 Mb/s 的传输速率。IP 核内包括了AHB(Advanced High Performance Bus)总线接口、USB 控制器、发送接收缓存和USB3.0 和USB2.0 的物理层PHY(Port Physical Layer)。

图1 为整体IP 逻辑方案设计图。

图1 整体IP 逻辑方案设计图

1.1 逻辑单元接口设计

本方案的接口主要有处理器和USB 控制器之间的接口、USB 控制器和物理层PHY 的接口。

(1)USB3.0 控制器和PowerPC 接口

PowerPC 处理器IP 逻辑和USB 控制器逻辑通过AXI(Advanced Extensible Interface)/AHB 总线协议连接。

PowerPC 处理器IP 逻辑通过AXI 总线连接到AXIAHB 转换桥,桥和USB3.0 控制器的AHB 接口连接。AHB总线通过Master 和Slave 两路数据通道连接到USB3.0的控制器上,Master 总线用作DMA 通道,提供给CPU 和USB 设备的数据通信,Slave 总线用作读写USB 控制和状态寄存器和通过SRAM 进行调试[4]。

(2)USB 控制器逻辑和PHY 的标准接口

USB3.0 控制器逻辑和物理层PHY 通过PIPE3(Physical Interface for PCI Expressc)。USB2.0 控制器逻辑通过UTMI+(USB2.0 Transceiver Macrocell Interface)/ULPI (UTMI+Low Pin Interface)标准接口连接。

1.2 USB IP 设计

USB3.0 设备控制器IP 设计如图2 所示,主要分为六部分:USB 通信功能单元、时钟单元、复位单元、同步单元、应用接口单元和PHY 单元。各单元功能如表1 所示。USB 设备控制器时钟单元模块负责内部时钟、复位单位负责复位的管理。应用接口单元负责控制器功能模块和系统之间的通信。USB 通信功能单元主要负责完成USB 的高速和超高速协议分析[5]。同步单元的作用是应用接口单元与USB 通信功能模块的工作时钟在不同的时钟域,通过同步单元进行时钟同步,PHY 单元负责和硬件通信。

图2 USB3.0 设备控制器IP 核设计

表1 USB IP 内部单元

同步单元中包含了多路数据选择器,其根据USB 工作的速度模式来决定数据流走向[6-8]。

数据可以分流到USB2.0 或者USB3.0 的数据链路上。USB3.0协议向下兼容USB2.0协议。因此USB3.0 设备控制器应实现高速和超高速两部分。USB3.0 实现了超高速部分的协议层和链路层[9]。通过标准的PIPE3 接口与第三方物理层相连完成超高速功能。USB2.0 实现了全速及以下的传输层协议。通过标准的UTMI 或者ULPI 连接到内置PHY 上。最后通过PHY 直接和对端设备连接[10-11]。

2 软件架构

Linux 下USB 驱动分为HOST(主机)端和DEVICE(设备)端,图3 为USB 的Linux 驱动框架。

图3 Linux USB 程序框架图

2.1 主机端驱动

Linux 的USB 设备驱动分为两部分:主机端驱动和设备端驱动。

主机端驱动包括USB devcie driver 驱动、USB Core驱动、USB HCD 驱动。

(1)USB device driver 驱动:管理USB 设备和主机通信。

(2)USB Core 驱动:设备驱动程序,提供一个USB device driver 驱动访问和控制USB 硬件的接口,不用考虑系统当前使用哪种处理器架构。USB Core 将应用的请求反馈到相关的HCD 驱动,应用不能直接访问HCD。

(3)USB HCD 驱动:主机控制器之上运行的是HCD,是对主机控制器硬件的一个抽象,USB HCD 有多种USB 接口协议规范。

①UHCI:Intel 提供,通用主机控制接口,支持协议USB1.0/1.1;

②OHCI:微软提供,开放主机控制接口,支持协议USB1.0/1.1;

③EHCI:增强主机控制接口,支持协议USB2.0;

④XHCI:支持协议USB3.0,同时兼容USB2.0 以下版本。

2.2 设备端驱动

设备端驱动包括:Gadget Function API 驱动、Gadget Funtion 驱 动、UDC 驱 动。

(1)Gadget Function API:USB 从设备驱动调用USB Core 的API。

(2)Gadget Function 驱动:Function 驱动调用通用的Gadget Function API。

(3)USB 设备端 UDC 驱动:作为其他USB 主机控制器外设的USB 硬件设备上底层硬件控制器的驱动。

3 具体验证方案实现

3.1 验证整体方案

本方案使用的验证平台为Xilinx 的VCU118 开发板卡。验证整体方案如图4 所示。VCU118 板卡上拓展了JTAG 子板、自研USB/DDR 子板。VCU118 开发板上拥有多个接口,JTAG 接口用来从上位机下载FPGA 逻辑文件文件固化到FPGA 上。UART 接口用来和上位机电脑进行数据通信,显示系统输出打印。SD 接口用来对接SD卡,UBOOT 程序和Linux 内核程序固化放在SD 卡中。USB 接口用来拓展USB 子板,该子板上有U 盘插槽用来插入U 盘。DDR 接口用来对接扩展DDR 内存,系统上电后从SD 卡中读取Linux 系统到DDR 上运行。

图4 验证整体方案图

3.2 验证过程

具体的验证过程如下:

(1)Xilinx 开发工具系统综合生成SOC 的逻辑文件;

(2)通过Xilinx 下载器将逻辑文件通过JTAG 下载到FPGA 验证平台;

(3)热复位验证平台;

(4)验证平台热复位后,SD 接口将存在SD 卡中Linux的BOOT 程序和Linux 内核程序下载到DDR 存储上;

(5)程序从DDR 开始运行;

(6)等待Linux 系统完全启动;

(7)上位机通过UART 接口和连接验证平台,上位机通过控制台操作Linux 系统的交互界面;

(8)控制台通过测试工具,测试USB2.0 和USB3.0 的大型存储设备;

(9)查看能否启动USB 设备,能否正常读写设备。

3.3 Linux 驱动适配

本方案的Linux 内核版本为4.1.5,主要修改的是HCD驱动程序,由于验证的是USB3.0 及其以下版本,因此用的是XHCI 标准,通过修改XHCI 对接的HOST 控制器代码来实现适配PowerPC 处理器主控制器[12]。

xhci_plat_init 函数完成了xhci 驱动的初始化,在其调用的xhci_init_driver 函数中xhci_plat_hc_driver 的参数是需要修改的主要结构体。在该结构体下,主要完成的是对USB 主控制器的抽象。程序主要工作就是适配主控制器到该结构体中[13-15]。

4 验证平台具体设计与验证结果

4.1 验证平台

实验验证平台使用Xlinux 公司的VCU 118 开发套件平台和自研设计的USB3.0 拓展子卡验证USB3.0 的IP 设计。

图5 为整个开发平台和拓展子卡的连接方式,图中位置1 为JTAG 的位置;位置2 为自研USB 插槽;位置3的背面是SD 卡外部存储插槽;位置4 为UART 接口位置;位置5 为下载器调试接口;位置6 的背板上有DDR颗粒。

图5 实验场景图

当设计调试完成后,将PowerPC 架构下的USB3.0的IP 逻辑文件烧录到验证平台卡中。将VCU118 平台通过拨码切换到SD 卡启动方式。Linux 相关程序下载到DDR 中。当系统启动后,通过上位机控制台和UART串口访问平台,USB2.0 和USB3.03.0 的U 盘插入USB子卡,在控制台输入各种命令查看USB 在位情况。通过格式化U 盘,写入文件来验证USB3.0 传输单元设计成功。

4.2 验证结果分析

USB2.0 U 盘插入显示:图6 中框内就是USB2.0的U 盘。

图6 USB2.0 枚举

USB3.0U 盘插入显示:图7 中框内就是USB3.0 的U 盘。

图7 USB3.0 枚举

当U 盘插入到插槽后,内核打印如图8 所示。

图8 USB 设备枚举内核打印

通过Linux 系统给U 盘制作文件系统,如图9 所示。

图9 USB 设备操作

通过测试可以看到,U 盘插入到插槽后,可以在内核的输出打印上看到U 盘的相关信息,说明U 盘已经被系统识别。U 盘可以正常地格式化,在U 盘格式化过程中,会在内核中操作USB 主控制器,可以成功地在验证平台上运行和格式化U 盘,说明在PowerPC 架构下的USB3.0 已经可以正常工作。

5 结论

随着USB3.0 设备的广泛应用,大量的高传输、大容量传输场景涌现,为了适应更高传输速率的USB 设备,各类处理器的USB 控制器也将升级到USB3.0 标准。

本方案集合PowerPC 处理器和USB3.0 的IP 核,通过Xilinx 的VCU118 开发验证平台,验证了PowerPC 架构下USB3.0 的可行性,有效弥补了原USB2.0 控制器速率低、容量小、抗干扰能力弱等缺点,验证方式采用了先进的软硬件协作验证方式,为下一步芯片设计和验证提供了有效技术支撑。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!