ZHCUAU3J January 2018 – March 2024
参数模板是 __SE_TEMPLATE_v1
或 __SA_TEMPLATE_v1
类型的变量,用于指定计数器、大小和标志来控制流引擎 (SE) 和流地址生成器 (SA) 的行为。最多六层嵌套的迭代计数器 (ICNT) 和维度大小 (DIM) 适用于 SE 和 SA。功能标志专用于 SE 或 SA。参数模板实际上是 64 位值的矢量。
请注意,__SE_TEMPLATE_v1
和 __SA_TEMPLATE_v1
被定义为单独的类型。
要初始化 __SE_TEMPLATE_v1
类型的参数,请调用 __gen_SE_TEMPLATE_v1()
。
__SE_TEMPLATE_v1 se_params = __gen_SE_TEMPLATE_v1();
要初始化 __SA_TEMPLATE_v1
类型的参数,请调用 __gen_SA_TEMPLATE_v1()
。
__SA_TEMPLATE_v1 sa_params = __gen_SA_TEMPLATE_v1();
初始化后,使用赋值配置参数模板,如下所示:
p.ICNT0 = <value>;
p.ICNT<n> = <value>;
p.DIM<n> = <value>;
p.DECDIM<n>.WIDTH = <value>;
p.LEZR_CN = <value>;
例如,为具有四个维度的 SE 配置参数矢量:
// Setup Template Vector Based on Settings and Open the Stream
// Based on Iteration Counters and Dimensions (in Terms of # of Elems)
__SE_TEMPLATE_v1 params = __gen_SE_TEMPLATE_v1();
params.ICNT0 = 4;
params.ICNT1 = 2;
params.DIM1 = 4;
params.ICNT2 = 2;
params.DIM2 = 8;
params.ICNT3 = 4;
params.DIM3 = -16;
只要将 DIMFMT
标志设置为正确的格式标志,就不需要为未使用的维度配置计数器和维度大小。该标志通知硬件忽略这些未使用的字段中未初始化的数据。
对于流引擎,可以在使用 __SE_TEMPLATE_v1
类型定义的变量中配置以下附加标志。c7x_strm.h
文件中记录了这些标志。
ELETYPE
TRANSPOSE
PROMOTE
GRPDUP
VECLEN
ELDUP
DECIM
DIR
DIMFMT
DECDIM1
DECDIM2
LEZR
例如,以下语句使用 c7x_strm.h
中提供的常量来配置 SE 参数。
se_params.DIMFMT = __SE_DIMFMT_4D;
se_params.DIR = __SE_DIR_INC;
se_params.TRANSPOSE = __SE_TRANSPOSE_OFF;
se_params.DECIM = __SE_DECIM_OFF;
se_params.VECLEN = __SE_VECLEN_4ELEMS; // 4 ELEMENTS
se_params.ELETYPE = __SE_ELETYPE_32BIT;
se_params.PROMOTE = __SE_PROMOTE_OFF;
se_params.GRPDUP = __SE_GRPDUP_OFF;
se_params.ELDUP = __SE_ELEDUP_OFF;
se_params.DECDIM1 = __SE_DECDIM0;
se_params.DECDIM2 = __SE_DECDIM0;
se_params.LEZR = __SE_LEZR_OFF;
对于流地址生成器,可以在使用 __SA_TEMPLATE_v1
类型定义的变量中配置以下附加标志。
VECLEN
DIMFMT
DECDIM1
DECDIM1SD
DECDIM2
DECDIM2SD
例如,以下语句使用 c7x_strm.h
中提供的常量来配置 SA 参数。
sa_params.VECLEN = __SA_VECLEN_4ELEMS; // 4 ELEMENTS
sa_params.DIMFMT = __SA_DIMFMT_4D;
sa_params.DECDIM1 = __SA_DECDIM0;
sa_params.DECDIM2 = __SA_DECDIM0;