项目软件结构
本教程中构建的每个固件都是相同基本应用的变体。该应用程序在 xcore Explorer 开发板上运行,从主机机器读取一个 wav 文件,通过数字 FIR 滤波器处理 wav 文件的音频,并将处理后的音频写入主机机器上的新 wav 文件。
代码库
本教程有三个与之关联的 Git 代码库。
xmath_walkthrough 代码库包含教程的内容(包括文档和应用逻辑),并通过 west.yml 定义了工作空间的布局。
lib_xcore_math 代码库是一个用于在 xcore XS3 上进行快速算术运算的优化函数库。本教程的很大一部分是为了演示如何使用该库的各个部分。
xmos_cmake_toolchain 代码库包含了告诉 CMake 如何使用 xcore 工具链的样板.cmake文件。
xmath_walkthrough 和 xmos_cmake_toolchain 代码库被克隆到教程工作空间的根目录。lib_xcore_math 代码库被克隆到 xmath_walkthrough 目录中(这简化了 CMake 项目的结构)。
库
本教程只使用了一个外部库,即 lib_xcore_math。
lib_xcore_math 库包含了许多用于加速 xcore.ai 上的算术运算的函数。xcore.ai 设备使用 XMOS XS3 架构,引入了 XMOS 专有的向量处理单元(VPU)。VPU 是 xcore 上的专用硬件,提供了类似 SIMD 的数据并行处理能力。
该库包含许多低级函数,用于以各种方式(主要是 16 位和 32 位)快速处理数据向量,具体见向量 API。VPU 速度非常快,但它仅实现整数运算。为此,该库还提供了一个块浮点数(BFP)API,允许使用 VPU 进行定点精度(而不是定点范围)运算。
lib_xcore_math 还提供了用于快速傅里叶变换、线性数字滤波器和一个小型标量算术 API的接口。
本教程的目的不是演示 lib_xcore_math 中的所有功能。相反,它旨在演示如何在 xcore.ai 上实现和优化浮点算法,并帮助用户理解所涉及的算术逻辑。因此,本教程只会介绍 lib_xcore_math 提供的一小部分 API,重点是数字 FIR 滤波器的特定情况。
CMake 项目
本教程使用 CMake 项目构建 xcore.ai 设备固件。