同步窗口访问 - 2022.1 简体中文

Versal ACAP AI 引擎编程环境 用户指南 (UG1076)

Document ID
UG1076
Release Date
2022-05-25
Version
2022.1 简体中文

内核会读取其输入窗口,并写入其输出窗口。默认情况下,在进入内核之前会执行同步,此同步是等待数据的输入窗口或者提供空的输出窗口所必需的。内核启动后,读取或写入其中个别元素则无需同步。

在生产者和使用者端口之间发出连接声明的同时,还会声明窗口大小(以字节为单位),如下图所示(欲知详情,请参阅 连接)。这样即可在端口 in 与内核的第一个输入端口之间确立 128 字节的窗口连接。

connect< window<128> > net0 (in, first.in[0]);

第二个可选模板参数可识别从某个数据块到下一个数据块之间的重叠(以字节为单位),此重叠有时也被称为 margin(裕度),如下图所示。如果指定裕度参数,那么分配的存储器总量即窗口大小 + 裕度大小。

connect< window<128, 32> net1 (in, first.in[0]);

这些窗口设计为按顺序访问。内核编程会读取窗口类型并从首个位置开始。因此,当前位置的模型即为在读取或写入时可进可退的实用模型。在启动内核时,当前位置始终处于正确位置。例如,滤波器的输入窗口的当前位置位于用于复原至延迟线的第一个样本处。如果滤波器需传入数据样本的重叠部分,那么此样本可能是旧样本,在此情况下,需使用如上所述重叠或裕度来声明此连接。同样,输出窗口的当前位置即发送至下一个块的第一个样本处,与此块是否需要复制旧样本无关。内核可以自由操纵此当前位置,当内核完成时,不要求此样本位于块末尾。窗口数据类型是作为圆形缓冲器来实现的。

注释: 窗口分配的最小大小为 16 字节。窗口大小分配舍入到 16 字节。裕度重叠的最小大小为 32 字节,且必须为 32 字节的倍数。