基于Vitis Model Composer完成全流程AI Engine开发
AI Engine(AIE)是基于Vitis Model Composer开发的。核心优势体现在AIE独家优化、简化开发流程、灵活适配、高效验证和量产适配,具体如下:
专属优化的AI Engine库,降低基础开发成本:提供AIE专用DSPLib库,包括FFT、FIR等预制模块,适配AIE架构并与开源生态同步,无需重复开发基础算法。
灵活的AIE代码导入方式,适配多样开发需求:支持AIE Kernel、Class Kernel、Graph三种导入形式,兼容缓冲区/流数据访问,适应不同的开发场景。
简化的AIE专属开发流程,提升开发效率:在Simulink环境中直观地构建设计,支持中间信号查看和调试,降低开发门槛。
自动化代码生成,简化编程流程:一键生成ADF图、Makefile、Testbench等代码,无需手动适配底层架构。
适配动态场景,配置高度灵活:支持可变大小信号,可以对动态数据处理进行建模,支持自定义约束,并灵活调整性能。
精准的AIE仿真与调试,保障设计正确性:支持功能高精度仿真,快速验证设计的正确性,确保算法与硬件特性匹配。
01环境准备Ubuntu 22.04
Vitis 2025.1(必须选择Vitis完整安装过程,不能是Vivado ML Enterprise安装)
Vitis 模型作曲家
MATLAB R2024b
02获取Vitis_Librariesgitclonehttps://gitee.com/light007/Vitis_Libraries.git
03下载依赖文件gitclonehttps://gitee.com/qinzhusheng/vmc_duc.git
04启动Model Composer#!/bin/bash# 设置Vitis 环境source/tools/Xilinx//2025.1/Vitis/settings64.sh# 设置Model Composer 环境source/tools/Xilinx/2025.1/Model_Composer/settings64.sh# 设置MATLAB 路径exportPATH=$PATH:/tools/MATLAB/R2024b/bin# 启动Model Composermodel_composer
上述路径需要修改为实际运行环境的安装路径。
05在Simulink中创建空白模型5.1 在MATLAB 命令行窗口中输入以下命令,切换到工作目录。 $WORK_PATH 需要替换为实际目录。
cd/$WORK_PATH/vmc_duc/lab
5.2 在MATLAB命令行窗口中输入以下命令,创建并打开空白模型。
new_system('duc_chain')open_system('duc_chain')
按Ctrl+S 保存到/$WORK_PATH/vmc/lab 目录。
06添加模型初始化函数6.1 返回duc_chain.slx,在空白处右键单击,选择Model Properties,单击Callbacks窗口,单击InitFcn,在右侧框中输入以下脚本:
PreprocIn0data=dataPreProc('data/input_sig_i0.txt');PreprocIn1data=dataPreProc('data/input_sig_i1.txt');PreprocOutdata=dataPreProc('data/output_adder.txt');
6.2 单击“确定”完成设置。
当设计更新或运行仿真时,这些模型初始化函数会自动调用dataPreProc.m 滤波器配置脚本。
过滤器配置脚本将设置以下内容:
输入0模块的输入数据变量PreprocIn0data
输入1模块的输入数据变量PreprocIn1data
Golden_Adder模块的输出数据变量PreprocOutdata
07查看AI Engine library按Ctrl+Shift+L 打开Library Browser,展开AMD Toolbox,即可看到AI Engine模型库。
AI引擎库包含:
用于导入Versal AI Engine 使用的内核和图形
与FIR、FFT、混频器和直接数字合成器相关的AI 引擎DSP 模块
08添加FIR Resampler Filter8.1 按顺序展开AMD ToolboxAI EngineDSPBuffer IO 库,找到FIR Resampler Filter。
8.2 按住左键将FIR Resampler Filter拖入duc_chain.slx中,双击进行配置,按照图中红框修改即可。配置为3/2分数采样器,实际采样点数为71个。
Filter coefficients:[-8,-15,2,27,38,-1,-67,-86,1,139,171,-2,-257,-309,2,443,522,-3,-724,-84 2,4,1144,1324,-4,-1789,-2078,5,2866,3402,-5,-5080,-6495,6,13412,27026,32 762,27026,13412,6,-6495,-5080,-5,3402,2866,5,-2078,-1789,-4,1324,1144,4, -842,-724,-3,522,443,2,-309,-257,-2,171,139,1,-86,-67,-1,38,27,2,-15,-8]
8.3 单击“确定”完成配置。
09添加三个FIR Halfband Interpolator blocks9.1 依次展开AMD ToolboxAI EngineDSPBuffer IO 库,找到FIR Halfband Interpolator。
9.2 按住左键并将FIR Halfband Interpolator 拖至duc_chain.slx 中。重复三次以添加三个FIR 半带插值器。按顺序双击配置。配置如下:
10添加Mixer10.1 依次展开AMD ToolboxAI EngineDSPBuffer IO 库,找到Mixer。
10.2 按住左键将Mixer拖入duc_chain.slx中。配置如下:
输入窗口大小(样本数): 3072
舍入模式: 对称舍入至无穷大
饱和模式: 3-对称
相位增量: 715827883
11添加PLIO按顺序展开AMD ToolboxAI EngineInterfaces库,找到PLIO,按住左键将PLIO拖入duc_chain.slx中,双击修改如下配置:
如下图所示连接各个模块。
按住左键选中上方所有模块,复制粘贴另一个信号通道,如下图:
双击粘贴的混音器并将相位增量更改为3042268501。
12从Reference_design_blocks内复制信号输入模块在MATLAB 命令行窗口中输入以下命令以打开此设计参考模块集合。
参考设计块
将以下块复制到duc_chain.slx。
这些模块主要包括预定义的信号输入、使用Simulink 本机模块构建的比较模块、用于自定义AIE 模块的AIE Class Kernel 以及用于减法比较结果的波形查看器。
修改粘贴的PLIO2块配置PLIO width(bits):64
13配置自定义AIE block的AIE Class Kernel双击AIE Class Kernel,打开配置窗口,如下图配置,点击Import,导入C++设计的AIE adder Kernel。
14完成所有模块的连接将未连接的模块分别连接到信号输入和输出,如下所示。
15添加Vitis Model Composer Hub blockVitis Model Composer Hub 块本质上是一个控制面板,用于控制系统和仿真参数、选择AMD 芯片板模型,以及调用代码生成过程。
只要Simulink 模型包含AMD Toolbox 的任何模块,就必须添加Vitis Model Composer Hub 模块以启用自定义代码生成和仿真。
15.1 依次展开AMD ToolboxUtilitiesCode Generation,找到Vitis Model Composer Hub块,按住左键拖入duc_chain.slx。
15.2 双击Vitis Model Composer Hub模块打开配置窗口,点击右侧红框中的按钮打开硬件平台选择窗口。
15.3 选择平台窗口,下拉选择VCK190,点击确定关闭窗口。
15.4 单击OK 关闭Vitis Model Composer Hub 模块配置窗口。
16编译工程并运行仿真16.1 按Ctrl+S保存工程,按Ctrl+D执行编译,等待编译完成。
16.2 设置仿真停止时间为100,点击Run运行仿真。
16.3 模拟结果。中间的窗口波形是AIE仿真结果和Simulink控制组相减的结果。从波形可以看出基本为0,说明AIE仿真结果达到了预期的结果。
17创建子系统并生成graph代码17.1 按住左按钮选择以下区块。
17.2 按Ctrl+G将这些Block创建为子系统,如下图所示。
17.3 双击上图蓝色部分,将子系统重命名为DUCchain,双击Vitis Model Composer Hub模块打开配置窗口,点击Code Generation窗口,选择DUCchain,在右侧窗口切换到Analyze,点击Analyzer按钮。
17.4随后会自动运行仿真、编译并生成图形代码。
17.5 完成后,点击如下图所示。
17.6生成的图源代码在以下目录。
/$WORK_PATH/vmc_duc/lab/code/ip/DUCchain/src
通过以上流程,基于Vitis Model Composer即可完成从模型构建、配置、仿真验证到代码生成的整个AIE开发流程。凭借其可视化设计和自动化工具链,可以显着降低开发复杂度,提高设计效率和可靠性,为AIE应用的快速实施提供有力支持。
关于安富利
安富利是全球领先的技术分销商和解决方案提供商,一个多世纪以来一直致力于满足客户不断变化的需求。安富利通过遍布全球的专业和区域足迹,在产品生命周期的每个阶段为客户和供应商提供支持。安富利帮助各类公司适应不断变化的市场条件,并在产品开发过程中加快设计和供应。安富利在整个技术价值链中心的独特地位和视角使其成为值得信赖的合作伙伴,帮助客户解决复杂的设计和供应链挑战,以更快地实现收入。