ZHCUAU3J January 2018 – March 2024
一旦配置了流引擎,就可以打开和使用相应的流。提供以下 API 方便此操作,它采用参数模板以及硬件应该从中获取流数据的起始内存地址:
__SE0_OPEN(void *addr, __SE_TEMPLATE_v1 param);
__SE1_OPEN(void *addr, __SE_TEMPLATE_v1 param);
使用以下 API 访问流引擎,该 API 将根据给定类型返回数据向量,用于转换流获取的数据类型:
__SE0(type), __SE0ADV(type)
__SE1(type), __SE1ADV(type)
使用相应的关闭 API 来关闭流引擎:
__SE0_CLOSE();
__SE1_CLOSE();
具有四个维度的流的示例:
// OPEN STREAMING ENGINE 1 AT startaddr WITH PARAMETER TEMPLATE params
__SE1_OPEN((void*)startaddr, params);
// READ THE STREAM AND ADVANCE THE COUNTERS
for (I0 = 0; I0 < 8; I0++)
{
uint8 Vout;
Vout.lo = __SE1ADV(uint4);
Vout.hi = __SE1ADV(uint4);
Vresult += Vout;
}
// CLOSE THE STREAM
__SE1_CLOSE();
从提供的存储器地址进行流式传输意味着一种契约:程序承诺始终不会修改流引擎在其生命周期内可以访问的任何存储器区域中的数据。