构建一个裸机应用程序,并自定义FPGA逻辑,用于接收4K、30Hz的视频帧
AMD Kria KV260 于2021年4月20日发布,最初配备的是橙色风扇外壳。与此同时,AMD及其合作伙伴推出了相关教程,指导用户利用该芯片打造各种有趣的项目,从基于其内置自定义AI逻辑模块的面部识别应用,到同年及2022年的裸机应用。如今已是2026年,软件已更新至最新版本2025.2,甚至KV260的风扇颜色也已从原来的橙色升级为黑色。本教程旨在对之前的教程内容进行更新和补充,整合其中常见的注意事项、常见问题及解答。
我们正在建设什么?
在本教程中,我们将构建一个裸机应用程序,并自定义FPGA逻辑,用于从TPG(Xilinx IP核)接收4K、30Hz的视频帧,并将其传输至KV260上的DP端口。该应用程序以C语言实现,将直接运行在Quadcore ARM® Cortex™-A53 MPCore核心(PS层)上,并协调TPG及其他IP模块,输出一段流畅的4K视频:画面中有8个垂直条纹,以及一个小黑方框在其中来回跳跃。您需要:
硬件
•一块AMD Kria KV260主板(该主板本身不包含任何外设或电源适配器)
•12V,3A,60Hz,2.5mm交流电源适配器
•USB-A转Micro USB数据线
•DP线缆
•运行 Windows 的电脑
•用于测试的4K显示器
•防静电工作站(垫子和腕带)
软件
•Vitis 和 Vivado 2025.2
我们该如何建造它?
在开始开发之前,我们需要完成一些初步的准备工作。请按照以下步骤进行!
物理设置
防静电:建议您在使用KV260时,将电路板放置在防静电垫(即接地垫)上,并使用防静电腕带进行接地。防静电套装配有连接至墙上的插座的电缆,适用于美国地区。
•使用Micro USB数据线将KV260板连接到电脑
•使用交流适配器为KV260板供电
•使用DP线将KV260板连接到显示器
开发环境
•请确保已正确设置驱动程序,以便从KV260获取串行输出;如果你使用的是USB串口,应该可以正常工作。
•当你通过USB将KV260连接到电脑时,会在Windows的设备管理器中看到4个COM端口。
•我得到了 COM 8、10、11、12。有些教程说应该得到连续的编号,并且用不同的标签,但我的结果是这样的
•您的串行输出将通过KV260显示的最低串行端口传输,我的情况下是COM8。
•串行端口正是你在Vitis中希望看到串行输出的那种端口,但我们会稍后再设置。我尝试过一些其他Xilinx或Digikey的驱动程序,但在Windows 11 24H2上它们对我不起作用。
Vivado 和 Vitis
•请确保将所有项目和工作区文件夹安装并保存在没有空格的文件夹中。
•例如,如果你在 Windows 中有一个用户文件夹,比如:C:\Users\Aldredo Valasco,那么路径将被损坏,Vivado 和 Vitis 将无法运行该文件夹内的任何文件。
•我建议:C:\,这将在 Windows 中创建以下文件夹:C:\AMDDesignTools
•使用此设置的应用程序路径为:C:\AMDDesignTools\2025.2\Vitis
运行应用程序
•安装程序没有为我创建应用程序快捷方式,所以我用命令提示符来访问它们。
•它也没有为我全局安装终端命令,但我找到了一个不错的解决办法,如果你遇到同样的问题。
•设置 Vitis:打开命令提示符,然后运行以下命令来配置 vitis 应用终端:call C:\[AMDDESIGNTOOLS_FOLDER]\2025.2\Vitis\settings64.bat
•对于我们的示例安装,应执行:call C:\AMDDesignTools\2025.2\Vitis\settings64.bat
•要打开应用程序,请运行:vitis
•设置 Vivado:打开命令提示符,然后运行以下命令来配置 Vivado 应用程序终端命令:call C:\[PATH_TO_AMDDESIGNTOOLS_FOLDER]\2025.2\Vivado\settings64.bat
•对于我们的示例安装,应执行:call C:\AMDDesignTools\2025.2\Vivado\settings64.bat
•要打开应用程序,请运行:vivado
•Vivado 是一款基于 Java 的优秀应用程序,在 Windows 系统上运行良好。
•Vitis 基于 VSCode,运行起来相当不稳定。当我的电脑进入睡眠状态时,Vitis 应用会变黑,无法关闭,我只能通过任务管理器来结束 Vitis 任务才能将其关闭。
开发流程
我们将把开发工作分为两个主要部分:1)设计和实现自定义硬件/逻辑,2)编写驱动该硬件的软件。
硬件设计(第二部分)
我们将使用 Vivado 2025.2 来创建设计、进行综合,并导出为 .xsa 和 .bit 文件。主要的硬件组件包括:
•Zynq™ UltraScale+™ MPSoC处理系统IP——将KV26的PS/PL部分集成在一起的核心组件,可将DP连接暴露给其他IP核心。
•视频定时控制器(VTC)——为视频传输提供定时信号(垂直同步、水平同步和消隐信号)
•视频测试模式生成器(TPG)——生成我们即将显示的实际比特
附加组件
•AXI4-Stream 到视频输出 - 将来自 TPG 的视频信号与 VTC 的时序信号进行整合,向核心提供清晰的信号
•AXI-SmartConnect(替代了旧教程中可见的AXI互连)——将Zynq IP输出的软件控制信号(来自我们的C代码)转换为VTC和TPG可理解的控制信号,而这些设备本身运行在不同的协议和时钟上。
•时钟向导——可提供不同的时钟,使Zynq IP运行在一种时钟频率下,VTC在另一种时钟频率下,TPG在另一种时钟频率下。
•处理器系统复位模块——我们将配备三个此类模块,每个时钟频率对应一个。它们的作用是确保各时钟频率下的组件在正确的时间被复位,并在其他所有组件就绪后启动。这些模块相互连接,并与Zynq IP相连以实现主复位功能,随后根据各自的时钟分别复位不同的逻辑电路。
•System ILA - 允许我们探测不同的信号,以便在 Vivado 的硬件管理器中查看其运行状态
定制固件(第三部分)
•我们将使用 Vivado 的输出文件,并将其导入 Vitis 2025.2 中以构建一个平台。
•该平台将包含我们调用在Vivado中合成的硬件所需的全部库,并且我们将从main()函数中调用它们。
•我们将导入 psu_dpma 的示例代码,以获取大部分样板代码,并从函数中设置调用主函数 main()。
我们为什么要建造它?
该测试应用将指导您完成搭建裸机应用程序所需的所有步骤,无需安装Linux或操作系统,仅需具备微秒级计算能力的原始硬件。通过这种更简单的配置,您可以构建各种闭环自动化系统,集成其他IP模块、GPIO接口、数据传输、触发器以及与其他设备和操作系统的同步功能。
完成以上所有步骤后,你应该会在屏幕上看到以下测试模式生成器的输出!
本文编译自hackster.io





