1、搭建一个 AXI DMA 子系统
在 Vivado 的 Block Design 功能中通过拖动 IP 的方式建立一个 DMA传输子系统。DMA 子系统包括一个 AXI-DMA 和一个 AXI-FIFO。本文中的实验因为是把数据从 PS 端传输到 PL 端,所以只会用到接收 FIFO(但为了回环测试,所以又将接收 FIFO 的输出端连接到了 DMA 发送端(S2MM 对应于逻辑部分的发送端))。DMA IP 有多条总线通道,分别用于和 FIFO 以及 PS 连接,下图表示了 DMA 系统各部分的连接情况。
2、软件动态重配置硬件比特流
硬件的配置通过加载比特流 bitstream 完成,即我们通常说的“下比特”,bitstream 有以下几种加载情况:
- 调试阶段,来自上位机软件,比如通过 Vivado 或者 SDK 下载
- 固定启动,比特流被事先固化在芯片外围的存储介质中,比如 FLASH 或者 SD 卡中,上电后比特流被引导加载到 PL
- 动态配置,在当前硬件比特运行期间,有一份新的比特流通过网络,串口等介质传输进来,存储在DDR 或者 FLASH 等外部存储介质中,随后将硬件动态配置为新的比特流
在第一种情况中,PL 由 Jtag 下载器配置,与处理器几无关系。