当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]在之前的文章中,我们已经了解到如何在 AMD Versal AIE-ML 架构上创建一个 FFT 应用程序,而无需进行任何 AIE-ML 内核编码,只需使用 AMD DSP 库即可实现。然后,我们还看到了如何利用 Vitis 功能仿真在 MATLAB 环境中模拟我们的 AIE-ML 图形。

在之前的文章中,我们已经了解到如何在 AMD Versal AIE-ML 架构上创建一个 FFT 应用程序,而无需进行任何 AIE-ML 内核编码,只需使用 AMD DSP 库即可实现。然后,我们还看到了如何利用 Vitis 功能仿真在 MATLAB 环境中模拟我们的 AIE-ML 图形。

AMD 还提供了一款名为“Vitis™ 模型编排器”(VMC)的工具,它将人工智能引擎的编码需求降低到了零(无需进行图形编码)。

AMD 的 Vitis 模型编译器是一款基于模型的设计工具,它能够在 Simulink® 环境中实现快速的设计探索,并通过自动代码生成加快在 AMD 设备上的产品开发进程。

所有用于人工智能引擎的数字信号处理库模块都包含在 Simulink 软件中的 AMD 工具箱中。

Vitis Model Composer 不仅能避免图形(以及在使用提供的模块时的内核)中的任何编码错误,而且还提供了一种快速配置 DSP 库的有效方法,使其能够以正确的配置进行设置。

VMC 可以通过 Vitis 统一安装程序进行安装。

Vitis Model Composer 需要从 AMD 购买附加许可证,同时还需要获得 MATLAB™ 和 Simulink® 的许可证。在进行数字信号处理设计时,我强烈建议您同时拥有 MATLAB™ 数字信号处理系统工具箱。

如果您只是想对这款工具进行评估,您可以从 AMD 产品授权网站上获取免费的评估许可证。

创建 Vitis 模型编译器设计

在安装了 Vitis 模型编译器(VMC)作为 Vitis 工具的一部分,并且已设置好 VMC、MATLAB™ 和 Simulink® 的许可证之后,要启动 VMC,我们只需设置好 Vitis 工具、MATLAB™,然后调用 model_composer 即可。

这将启动带有 Vitis Model Composer 插件的 MATLAB™ 系统。

由于 VMC 可以作为 Simulink 环境的一部分使用,所以第一步是启动 Simulink 系统。

我们可以从一个空白模型开始。

如果您打开“库浏览器”,您应该能看到“AMD 工具箱”这一选项,其中包含了针对 AI 引擎或可编程逻辑(硬件描述语言或硬件描述语言高级版)的模块。

我总是首先添加的第一个模块是“Vitis Model Composer Hub”模块。每个 Model Composer 模型都需要一个 Model Composer Hub 来配置编译、模拟以及生成输出。在这个模块中,例如,您可以定义您要针对的设备或板卡,因此在使用 AI 引擎时,它会确定您所使用的变体或架构(AIE、AIE-ML 或 AIE-MLv2)。您可以在 AMD 工具箱的“实用工具 > 代码生成”选项下找到“Vitis Model Composer Hub”模块。

我们可以将该模块拖拽至模型中,然后双击它来进行配置。我只选择了目标设备。我正在使用 xcve2302-sfva784-1LP-e-S 这个设备,它位于 Trenz TE0950 上,与我之前的教程中的设备相同。

然后我们可以开始进行设计了。我们想要实现的是一个简单的 1024 点快速傅里叶变换。正如在上一篇文章中所述,我们可以使用 AMD DSP 库来完成这项任务,因为它是集成在 VMC 中的,作为 AMD 工具箱的一部分。在“AI Engine”菜单下,我们可以找到“DSP”子菜单中的“缓冲输入/输出”部分,那里有用于 AI 引擎的 FFT 块。

我们可以将 FFT 块拖放到模型中,并双击它来进行配置。为了与之前的教程中的使用场景类似,我只配置了 FFT 的大小(并且将输入、输出和旋转因子的数据类型保持为 cint16),其余所有参数则保持默认值。

然后为了模拟我们的快速傅里叶变换模块,我们需要一个输入信号。为此,我使用了来自 MATLAB DSP 系统工具箱的正弦波,这样它就能生成离散的输入信号。我将两个这样的信号相加,以便得到与上一个项目中相同的双音信号。

对于第一个设置,我将振幅设为 6,输出频率设为 150MHz,输出设为复数形式,采样频率设为 600MHz,每帧的采样次数设为 1024。我还将计算方法设置为表格查找,因为当输出数据为定点数时(我将进行这样的设置)这是必需的。

在“数据类型”选项卡中,我将输出设置为 16 位定点数。

然后我将这个块复制并粘贴,以创建我们输入信号的另一个音调部分。我只是将振幅调整为 4,将频率调整为 50MHz。

然后,我只需添加一个“添加”模块,以添加音频并将其传送给 AI 引擎的 FFT 模块。

然后,为了验证快速傅里叶变换(FFT)的输出结果,我们需要绘制其输出图。为此,我使用了 MATLAB DSP 系统工具箱中的数组绘图块。我只想绘制绝对值,以便仅查看信号的频率成分,所以我还添加了一个“abs”块。由于 abs 块在处理复数数据时只接受双精度数据类型,所以我还添加了一个将 FFT 块的输出转换为双精度数据类型的块。

这就是我完整的设计方案的样子。

我们可以进行模拟。由于我们已将采样时间设置为 1/600e6,所以可能需要在经过几组包含 1024 个样本的数据窗口后停止模拟。我以 2 为例进行说明(2*1024/600e6)

我们可以看到,正如我们所预期的那样,我们的信号中有两个主要的频率成分。

将快速傅里叶变换(FFT)的结果与 MATLAB 实现进行对比

来自“AI 引擎”块的快速傅里叶变换似乎运行正常,但最好还是验证一下结果,将其与 MATLAB 中快速傅里叶变换的实现进行对比。为此,我只需复制该分支,并将“AI 引擎”的快速傅里叶变换替换为 MATLAB DSP 系统工具箱中的快速傅里叶变换。

我对快速傅里叶变换(FFT)模块所做的唯一修改是将输出数据类型更改为 16 位定点数。

运行该模拟程序后,我们发现 MATLAB 中的快速傅里叶变换(FFT)结果与在 AIE-ML 上实现的 FFT 结果非常相似,因此我们在 AIE-ML 中的实现似乎满足了我们的需求。

总结

在这个项目中,我们看到了如何利用 Vitis Model Composer(这是 MATLAB 内置的一个工具箱)采用基于模型的方法来创建 AIE-ML 设计。

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭