XCORE.AI平台简介

XMOS 推出的 XCORE.AI 平台是专为 AIoT 设计的高速且经济高效的解决方案。它在不牺牲性能的同时,提供了前所未有的灵活性,让用户能够体验到单个 MCU 集成高效 AI、DSP、I/O 和控制功能的便利。
XCORE.AI 平台的亮点包括:
⚡️ 高达2400MIPS的处理速度,更具备硬件向量加速(VPU)单元,想象在一颗芯片上完成整个AI&DSP系统
🔧 具备完全自定义的GPIO,如同编写C一般简单,却像在使用FPGA一样开发您的产品
⏱️ 内置硬件RTOS,延时超低且精确,模拟时序误差低至纳秒(Nano Second)
命名规则
XMOS的处理器平台的芯片命名规则如下表:
XU316-1024-QF60B-PP24为例的命名规则
| XU | 3 | 16 | 1024 | QF60 | B | PP24 |
|---|---|---|---|---|---|---|
| 集成USB PHY芯片 | XMOS第三代芯片XCORE.AI系列 | 16个核心 | 1024K Byte RAM(512kB/tile) | QFN60 pin封装 | 3v3 IO 电平 | 2400 MIPS速度 |
其中它的芯片丝印为:V16A0PP
XU316芯片框图
XU316是一个多核MCU处理器芯片平台,需要通过类似C语言编程的固件才能处理应用程序。在芯片本体板块,可以看到已集成了XCORE,USB PHY 芯片,PLL,OTP等板块内容,同时也能大体推断出外围的硬件的最小系统仍需要电源芯片,Flash芯片,晶振。
下图中:
- XU316芯片平台分2个tile,其对应Tile 0和Tile 1, 每个Tile 都有8个Logical Cores(可以理解为8个核心,或者线程),2个Tiles则共有16个核心。
- XU316芯片平台叠封了USB 2.0 PHY收发芯片,而USB的协议(类如UAC协议)则是在XU316的核心编程实现,USB PHY仅负责数据打包收发 。
- XU316芯片平台集成了PLL板块,可以通过在利用核心进行配置以产生700MHz以内的方波频率,同样可用于产生音频所需要的24.576MHz/ 22.5792MHz的音频时钟信号
XU316-1024-QF60B-PP24的芯片框图
最小系统
要使XU316芯片能够正常工作,XU316的最小系统需要简单的外围器件。需要3路电源供应(3V3,1V8和0V9),QSPI Flash(存储固件)和晶振便可启动工作。具体的应用和产品,需要额外的外围器件,如音频类的ADC、DAC等等。
电源供应
因XU316芯片中没有集成LDO,需要系统供应3路电源才能启动。在最小系统中,三路电源的基本供应的情况如下表
| Power supply | 功能 | 电流 | 类型 |
|---|---|---|---|
| 0v9(VDD) | Tile的电源供应,包含了核心和PLL | 约300mA | DC-DC |
| 1v8 | USB PHY的模拟电源供应和 时钟和XTAG I/O电源供应 | 约30mA | DC-DC |
| 3V3 | USB PHY的模拟电源供应 I/O口的电源供应 | 约33mA | LDO |
时钟
需要外置晶振24MHz供应XU316的PLL进行升频到600MHz或者700MHz,支持无源晶振或者时钟输入。
flash
需要外置QSPI Flash芯片,存储XU316的程序固件。
- 对于音频应用,选择16Mbit的Flash便可满足要求。
- 对于使用神经网络或大型算法的应用,我们推荐使用64Mbit及以上大小的Flash。
核心特性
XU316芯片的每个处理单元(tile)默认以600MHz的频率运行。对于每个tile,XCORE硬件调度器将主频通过时间分片的方式分配给各个逻辑核心。因此,当应用程序使用不同数量的逻辑核心时,每个核心可用的主频会相应变化。下表展示了逻辑核心数量与各核心主频之间的对应关系。
| 逻辑核心数量 | 1 - 5 | 6 | 7 | 8 |
|---|---|---|---|---|
| 每核心主频 | 120MHz | 100MHz | 86MHz | 75MHz |
| 600/5=120 | 600/6=100 | 600/7=86 | 600/8=75 |
XCORE采用五级流水线设计,每条指令都需要5个时钟周期才能完成。因此,当运行的逻辑核心数不超过5个时,每个核心的最高频率可达120MHz(相当于每个逻辑核心的处理速度与Cortex-M3相似)。当运行的逻辑核心数超过5个时,为了平衡硬件调度器的时间分片影响,每个核心的主频会适当降低,导致单个逻辑核心的处理速度略有下降。然而,由于XCORE架构支持多任务并行运行,并能实现接近实时的性能控制,即使核心频率降低,整体系统的处理能力仍随着逻辑核心数量的增加而提升。
每个逻辑核心都独立运行,互不干扰,可以像独立的MCU那样调用所在tile的RAM、浮点计算单元、I/O等资源。逻辑核心间的数据交换通过通道端(channel end)完成,XU316拥有64个通道端(每个tile 32个)。
此外,每个Tile还可以设置为双发模式(dual issue mode),即在每个时钟周期的上升沿和下降沿分别执行一条指令,使得一个tile在600MHz的主频下,可以达到1200 MIPS(百万指令每秒)的处理速度,两个tile则可达到最高2400 MIPS。
I/O 特性
XU316的所有I/O端口均可编程,每个tile都配备了相应的I/O资源,每个I/O端口可以在代码中配置为输入或输出。初始状态下,XU316的I/O端口是未定义的,没有固定分配给特定接口如UART、I2C或I2S等,而是通过软件代码调用某个I/O端口作为输入或输出,以适配特定接口的时序,这与FPGA的I/O特性相似。例如,可以调用X0D35(1M)作为I2S接口的BCLK时序,而将X0D36配置为I2S接口的LRCLK时序。
XU316的I/O资源包括16个1位端口、2个4位端口和1个8位端口。
参考XU316-1024-QF60B-PP24数据手册:
34个通用I/O引脚,可配置为输入或输出
— 最多16 x 1位端口,2 x 4位端口,1 x 8位端口
1位端口
XU316的1位端口通常用于串行通信,如PWM或时钟信号,或作为串行输入。例如,我们可能会选择下表中的4个1位端口来实现I2S接口的时序,通过编程实现相应的时钟和协议,比如:1L作为MCLK,1M作为LRCLK,1O作为BCLK,1P作为DATA。
| 1bit port | 功能定义 | 代码调用时的名称定义 | 类型 |
|---|---|---|---|
| X0D00 | 1A | XS1_PORT_1A | I/O |
| X0D01 | 1B | XS1_PORT_1B | I/O |
| X0D10 | 1C | XS1_PORT_1C | I/O |
| X0D11 | 1D | XS1_PORT_1D | I/O |
| X0D35 | 1L | XS1_PORT_1L | I/O |
| X0D36 | 1M | XS1_PORT_1M | I/O |
| X0D37 | 1N | XS1_PORT_1N | I/O |
| X0D38 | 1O | XS1_PORT_1O | I/O |
| X0D39 | 1P | XS1_PORT_1P | I/O |
4位/8位端口
XU316的4位端口通常用于需要并行时序接口的场合,如QSPI Flash,需要连接D0、D1、D2和D3脚位进行数据传输。如果不需要实现复杂的并行时序接口,这些端口也可以作为简单的GPIO使用,例如按键、LED、I2C、输入边缘检测等。
在软件层面,需要编写函数来解析并行数据并将其重新组合为串行数据。
8位端口的使用方式与4位端口类似。
| 4 bit port | 功能定义 | 代码调用时的名称定义 | 类型 |
|---|---|---|---|
| X0D04 | 4B-0 | XS1_PORT_4B | I/O |
| X0D05 | 4B-1 | XS1_PORT_4B | I/O |
| X0D06 | 4B-2 | XS1_PORT_4B | I/O |
| X0D07 | 4B-3 | XS1_PORT_4B | I/O |
时钟块
XU316拥有10个时钟块,可用于分频处理PLL产生的时钟,为I/O提供特定的时序输出,或接收外部时钟供程序内部使用。例如,一个时钟块可以接收外部的24.576MHz音频时钟信号,并以此为基准产生LRCLK和BCLK时序。
XU316的时钟块功能与FPGA的时钟特性相似,便于实现灵活的接口时序要求,结合XU316灵活的I/O特性,有助于实现低抖动。
总结
XMOS XU316集成了MCU、FPGA和DSP的特性,执行速度可高达2400 MIPS。其灵活的I/O特性和集成的浮点运算单元使其成为一个高性能处理器。在软件层面,XU316的应用程序主要通过C语言编程实现,同时包含了一小部分非标准C语言的底层硬件描述。