我正在实时实施一个来自
HDMI
输入的视频处理项目。输入的视频将具有绿色背景,该背景将被存储在 FPGA
中的图像替换,以生成具有不同背景的新视频。我正在使用PYNQ-Z2
板。
到目前为止,我已经尝试过以下方法:
无法将整个图像存储在
BRAM
中,因为空间不足
对图像使用第二个流,然后尝试混合这两个流(视频+图像)。无法同步 2 个流。
将图像存储在
RAM
中,并使用双缓冲方案加载BRAM
中的部分图像。第一个缓冲区用于处理图像的1行。第二个用于通过 DDR
从 DMA
内存加载下一行(DMA
由 CPU
控制)。当一行完成后,就会从 FPGA
向 CPU
发送中断,以便可以从 DDR
内存发送下一行。另外,我切换缓冲区以便新数据开始加载。此解决方案在 DMA
传输中的延迟太大,并且视频输出中的图像损坏。
您也可以为 PL 连接 DDR4 内存,它可以在 PL 块设计中用作 FIFO 或像 BRAM 这样的大存储,并且它有几个 GB 的可用空间。不幸的是PYNQ-Z2板无法提供它,如果你开始使用更好的ZCU104开发板至少会更好,它有一个用于PL内存扩展的SODIM DDR4插槽。