要创建 RTL 内核,首先需在 Vivado Design Suite 内创建 IP。存储库中可能存在现有 RTL IP,或者您可能想创建新的 RTL 设计以封装成 IP。以上任何一种方法对于创建新的 RTL 内核而言,都是行之有效的起点。
执行协议
RTL 内核采用用户管理的执行方案,在此方案中,主机应用通常使用寄存器读取和写入来管理 RTL 内核函数的执行与完成。此用户管理的执行协议使您只需执行少量设计更改或者无需任何更改,即可直接使用 Vitis 环境内现有 IP 的控制方案,如 创建用户管理的 RTL 内核 中所述。通常这包括使用 s_axilite
接口,以及使用 XRT 本机 API 对象类和方法来对内核上的寄存器地址执行读取和写入。
端口接口协议
-
AXI4-Lite (
S_AXILITE
) 适用于控制寄存器、缓冲器指针、标量值以及内核与主机之间的交互。通过寄存器读取和写入来访问数据 -
AXI4 存储器映射 (
M_AXI
) 用于从内核访问全局存储器或主机存储器。内核通过存储器(如 DDR、HBM、PLRAM/BRAM/URAM)来访问数据 - AXI4-Stream 端口到内核或其它串流源(例如,视频处理器或相机)之间的串流数据
- 同时,还支持定制(非 AXI)接口在
v++
链接进程期间使用--connectivity.connect
命令建立与这些端口的连接。例如,此进程可用于将内核连接至平台上的 GT 端口。
此外,内核必须具有至少一个时钟,但可支持多个时钟、复位信号和中断,如 内核接口要求 中所述。如果原始 IP 不使用 AXI4 接口,或者不提供所需时钟信号,则需要修改并重新封装当前 IP 才能提供这些信号。
平台可包含可缩放时钟和固定时钟。Vitis 流程可生成任意数量的衍生固定时钟,平台无法提供此类 RTL 内核流程常用的固定时钟。使用固定时钟时,Vitis 流程将向系统设计插入 MMCM 以生成所需的频率。如需了解更多信息,请参阅管理时钟频率。
AXI 主端口和串流端口的数据总线是可配置的。通常这取决于数据传输带宽和 FPGA 资源考量。
RTL 内核设计具有高度灵活性。您可决定内核与主机应用之间的交互方法、内部时钟生成方案、时钟门控策略以及中断的处理方式。
IP 封装
要生成 RTL 内核,必须在 Vivado 工具内运行“Package IP”(封装 IP)进程,如 将 RTL 代码封装为 Vitis XO 中所述。如 Vivado Design Suite 用户指南:创建和封装定制 IP(UG1118) 所述,这是标准 IP 封装流程,其中包含附加步骤,用于指定要在 Vitis 设计流程中使用的内核。