如何使用Vitis Model Composer从建模到部署生成FPGA IP核
扫描二维码
随时随地手机看文章
在当今快节奏的世界中,技术正以前所未有的速度发展,FPGA设计也不例外。高级工具正在迅速出现,以前所未有的速度加速开发。传统上,FPGA设计包括用硬件描述语言(hdl)编写代码,并使用合成工具来映射设计。虽然这些传统方法仍然是必不可少的,但像Vitis Model Composer和HDL Coder这样的工具已经大大简化了开发过程,特别是对于基于sdr和fpga的系统。BAE系统公司的一位高级官员表示:“一位拥有多年VHDL编程经验的工程师用我们的传统设计流程手工编写了一个功能齐全的SDR波形,耗时645小时。另一位经验有限的工程师使用Simulink和Xilinx System Generator在不到46小时内完成了相同的项目。”
“一位拥有多年VHDL编程经验的工程师使用我们的传统设计流程手工编写了一个功能齐全的SDR波形,耗时645小时。另一位经验有限的工程师使用Simulink和Xilinx System Generator在不到46小时内完成了相同的项目。”
今天的教程提供了创建自定义IP的分步指南,从算法开发到为IP生成准备模型,包括资源和时序分析,最后将其添加到Vivado IP目录。
介绍
在所有的信号处理应用中,检测噪声中的信号是至关重要的,因为噪声是几乎所有数字系统的固有部分。准确的检测是确保可靠通信和数据处理的关键。在今天的教程中,我们将开发一种算法,用于确定频率未知的信号中是否存在脉冲。在处理噪声信号时,这种类型的检测尤其重要,因为将脉冲与背景噪声区分开来可能具有挑战性。我们将通过所需的步骤来创建一个强大的算法,可以有效地识别脉冲的存在,无论信号的频率,在一个嘈杂的环境。
环境设置
Vitis Model Composer是Vitis套件的一部分,它为基于fpga的加速提供了一个高级设计环境。要学习本教程,请确保在您的系统上安装了Vitis套件,并且在您的终端中有正确的源代码。执行如下命令:
一旦获得了Vitis,您就可以通过在终端中执行以下命令来启动Vitis Model Composer:
这将打开MATLAB与AMD工具箱启用。在MATLAB中,打开Simulink,您现在就可以开始使用Vitis Model Composer设计和模拟您的模型。
信号一代
在Simulink中,我们尝试模拟啁啾脉冲信号进行分析。为了实现这一点,我们使用Chirp块生成调频信号,然后将其与脉冲发生器块相乘,将其塑造成不同的脉冲。为了使模拟更真实,更接近现实世界的场景,我们在信号中引入了高斯白噪声。该附加功能模拟了实际系统中不可避免的噪声,使我们能够分析在噪声条件下检测和处理信号的效果。
包络检波
在信号生成后,为了实现脉冲检测,我们首先对信号进行平方,以去除负值,然后进行FIR抽取,然后进行低通滤波器。simulink模块设计如图5所示。
包络提取后的信号如图8所示。
如图8所示,应用包络检测算法后,信号幅度明显增大,有效地将其与噪声区分开来。在噪声区域内,不存在不必要的过渡,使其更容易从背景中区分脉冲。这种增强提高了我们准确确定信号中是否存在脉冲的能力,从而导致更可靠的检测。
基于信号的这种后处理,选择一个恒定的阈值来确定脉冲的存在变得更加容易。该模块输出‘1’或‘0 ’,表示是否检测到脉冲。然而,不使用固定的阈值,可以通过使用基于标准差的分析等方法使阈值自适应来进一步改进检测。该方法允许系统根据噪声变化动态调整阈值,提高在不同信号条件下的检测精度。最终的simulink模型如图9所示。
最终结果
检测结果如下所示
在针对多个测试用例成功验证算法之后,下一步是使用Vitis Model Composer复制类似的结果。要生成IP并执行其他相关功能,首先需要从Simulink库中插入Vitis Model Composer Hub块。这可以在下面找到:
Simulink库浏览器→AMD工具箱→实用工具→代码生成→Vitis模型编写器中心
Vitis Model Composer Hub作为中心流程顾问,指导从设计到代码生成的整个过程,确保与Vitis工具链的无缝集成。
板的选择
对于本教程,我使用Zynq UltraScale+ MPSoC ZCU102板。但是,您可以选择任何可用的主板,只要它来自AMD(以前的Xilinx)。
要选择一个板,打开Vitis Model Composer Hub并按照下图所示的步骤操作。单板选择过程确保生成的IP和设计配置与您的特定硬件平台兼容。
模型创建
对于IP核的生成,AMD给出了一些具体的指导方针。要学习本教程,请记住以下几点。
网关输入/输出块作为输入/输出进行测试
这些端口之间的任何内容都将被vitis模型编写器中心自动识别,并可以转换为ip。
为了使vitis模型编写器中心能够识别执行功能的所需模块转换为子系统,AMD为IP核生成提供了具体的指导方针-因为,当然,设计硬件还不够复杂!要成功地遵循本教程,请记住以下几点:
网关In/Out块被视为输入和输出。可以把它们看作是数据的VIP入口和出口。
这些端口之间的任何内容都将被Vitis Model Composer Hub自动检测,并可以转换为类似ip的魔法,但需要更多的调试。
为了正确识别,任何执行功能的块都必须转换为子系统。如果您不这样做,Vitis可能会假装从未见过它们。
网关在/
现在是时候在您的模块设计中插入两个Gateway In和Gateway Out模块了,因为很明显,Simulink还不能读取您的思想。
将信号产生分系统的输出连接到网关In的输入端。这确保了你精心制作的信号有一个合适的切入点。
如果您还没有从信号生成过程中创建一个子系统,那么现在是时候这样做了——因为手工劳动仍然是自动化世界中的一件事。
类似地,为信封检测算法创建一个子系统,确保它只由通用的Simulink块组成。这里没有捷径!
根据下图所示的设置修改Gateway In块参数——因为默认设置从来都不是我们所需要的,不是吗?同时,保持Gateway Out块不变,因为这一次,这个过程中的某些东西不需要额外的调整。
IP生成的算法复制
在Gateway In块的输出处,连接一个乘法块来计算样本的平方—因为很明显,Vitis Model Composer不相信内置的平方函数。
由于没有直接的平方运算,下面是解决方法:
将相同的输入输入到第一个乘法块的两个端口。瞧!你用老办法平方了这个值。
现在,为了进行额外的数学练习,取另一个乘法块,并将其输出与前一个乘法块的结果相加——因为没有什么比为一个函数使用多个块更“工程”的了。
最后,将第二个输入连接到一个值为4的常量块,有效地提高幅度水平。
这些块的块参数如下图所示
此时,您的图形模型应该如图16所示。
对于抽取,虽然预先构建的抽取块在Simulink的通用库中可用,但它不包括在AMD工具箱中。然而,我们可以使用低通滤波器和下采样器来实现相同的功能,两者都可以在AMD工具箱中获得。
要实现这一点:
在第二个乘法器的输出端,在下采样之前添加一个数字FIR滤波器来平滑信号。
然后使用AMD工具箱中的Downsample块来降低采样率。
为了设计过滤器,我们将使用FDA工具,它提供了一个用户友好的界面来指定过滤器参数。
注意:将FDA工具放在设计的根级别(在更高的级别,而不是在任何子系统中)。它可以在下面找到:
Simulink库浏览器→AMD工具箱→实用程序→工具→FDATool
FDAToolPulse检测输出模型作曲家流
双击FDA工具块打开其配置窗口。修改如下图所示的参数,以确保结果的精确复制。这些设置将定义适当的信号处理所需的滤波器特性。
要在模型中使用设计好的滤波器,请打开我们之前插入的FIR滤波器的块参数。在“系数向量”字段下,输入如下一行:
这将FIR滤波器连接到FDA工具生成的系数,确保正确应用设计的滤波器。此块的确切配置如图18所示。
应用更改后,在继续下一步之前,请验证过滤器是否按预期运行。类似地,打开Downsample块的块参数,并根据图19修改其设置,以确保正确的功能。这些调整将配置下采样过程以匹配设计要求。
过滤
在抽取步骤之后,添加另一个低通滤波器以进一步细化信号。在过滤器块参数的系数向量字段中,输入以下一行:
它使用Parks-McClellan算法定义滤波器,指定所需的频率响应。根据图20配置其余参数,以确保正确实现。
最终框图
最终的Simulink框图如图21所示。在滤波器的输出端,使用一个关系运算符块将过滤后的信号与一个常数阈值2.5进行比较。该块输出1或0,表示信号是否超过阈值,有效地对脉冲检测做出判断。
如图21所示,已经创建了多个子系统来组织设计。您可以类似地构建模型,也可以通过将从Gateway In到Gateway Out的所有内容封装到单个子系统中来简化模型。
块设计现在已经完成,我们准备继续进行代码生成。在进入下一步之前,请确保所有配置都设置正确。
最终结果(模型编辑器流程)
在这一点上模拟设计,如果两个输出正常的simulink流和模型编写器流是相似的意味着你已经成功地复制了算法。我的结果完全匹配如下所示。
代码/ IP代
再次打开Vitis Model Composer Hub。如果正确地遵循了所有步骤,那么您的系统现在应该在Code Generation选项卡下列出,并带有绿色的复选标记,表明它已准备好进行进一步处理。
此外,在同一选项卡下,您将看到四个不同的部分:
设置:包含与时钟配置和目标语言选择相关的一般设置。
分析:用于时间和资源分析,确保设计满足硬件约束。
在硬件上验证:此选项允许您在实际硬件上测试设计,验证其实际性能。(我们不讨论这个)
导出:允许导出生成的IP,使其可以集成到Vivado或其他工具中。
根据图22所示的步骤配置所有这些设置。
分析
Analysis部分是一个非常有用的实用程序,它允许您在合成和实现之后执行计时和资源分析。这有助于做出明智的设计决策、优化资源利用和微调算法以获得更好的性能。
要执行分析,请遵循下图所示的步骤。这将提供对时间限制、资源消耗和整体系统效率的洞察,允许您在最终部署之前根据需要改进设计
在单击Analyze之后,Vitis Model Composer将花费一些时间来处理设计,并根据您的选择生成时序和资源分析报告。
时序分析报告提供了有关时钟频率、延迟和设置/保持违规的详细信息,有助于确保您的设计满足时序限制。
资源分析报告分解了lut、dsp、bram和ff的使用情况,提供了对硬件利用率和优化机会的见解。
我们设计的时序和资源分析报告分别如图24和25所示。检查这些报告,以确认您的设计满足所需的性能和资源限制,然后再继续。
出口
导出部分是我们为Vivado完成和导出IP的地方。为了确保顺利集成,请按照图26所示的方式配置设置,然后单击Export。这将花费一些时间,并将出现与图27类似的消息。
这个过程将生成必要的IP文件,使它们准备好在Vivado的IP Catalog中使用。导出后,您可以轻松地将自定义IP集成到Vivado设计流中,以便进一步处理和实现。
添加自定义到Vivado
打开Vivado并创建一个新项目。项目设置完成后,导航到顶部栏,单击Tools,然后选择Settings。
按照图28所示的步骤配置所需的设置。此步骤确保正确设置Vivado以识别导出的自定义IP并将其集成到您的项目中。
成功完成所有步骤后,您的自定义IP现在就可以集成到Vivado中了。该IP可以无缝地用于IP集成商和块设计,使其成为FPGA开发工作流程的多功能补充。
将IP添加到您的模块设计中:
•在Vivado中打开框图。
•按CTRL + I调出IP搜索栏。
•键入自定义IP的名称,选择它,并将其添加到设计中。
•瞧!您的IP现在已经完全集成,可以进行进一步的执行和测试。
结论
随着自定义IP的成功创建和集成,您已经完成了FPGA开发的关键步骤。这种工作流程不仅简化了IP设计过程,还提高了未来项目的效率、模块化和可扩展性。通过利用Vitis Model Composer和Vivado,您可以确保从算法开发到硬件实现的无缝过渡。
随着您的发展,进一步的优化、硬件验证和性能调优将使您的设计更适合实际应用程序。这标志着更先进的基于fpga的解决方案的基础,为高性能,硬件加速系统铺平了道路。
本文编译自hackster.io