vsipl软件中间件说明
文章目录
1、软件概述
1.1标识
- 标识号:xxx
- 名称:基于DSP算法库的vsipl软件中间件设计方案
注:蓝色字体为DSP库函数用不到的参数或者对象成员。
2、软件模块概要设计
2.1 基本数据类型
a) 布尔类型
typedef signed int vsip_scalar_bl;
b) 整型
typedef signed long int vsip_scalar_li;
typedef unsigned long int vsip_scalar_ul;
typedef signed int vsip_scalar_i;
typedef unsigned int vsip_scalar_u;
typedef signed short int vsip_scalar_si;
typedef unsigned short int vsip_scalar_us;
typedef signed char vsip_scalar_c;
typedef unsigned char vsip_scalar_uc;
typedef unsigned int vsip_scalar_ue32;
c) 浮点型实数
typedef long double vsip_scalar_l;
typedef double vsip_scalar_d;
typedef float vsip_scalar_f;
d) 复数
typedef struct {
vsip_scalar_d r, i;
} vsip_cscalar_d;
typedef struct {
vsip_scalar_f r, i;
} vsip_cscalar_f;
2.2 结构体设计
……在VSIPL中,有两种基本的数据类型:block和view。一个block中包含了数据数组和block对象属性,数据数组用于存储 数据,可以被看作是实向量、复向量、矩阵或者三维张量,block对象属性用于提供访问数据数组的必要信息。 “View”由“Block”组成,一个view中包含了block和view对象属性。“View”和“Block”只能通过库函数来创建、访问和销毁,也就是说数据在VSIPL中存在于两种数据空间,一种是用户空间,一种是VSIPL空间,VSIPL函数只能操作VSIPL空间中的数据。用户提供的函数只能操作用户空间的数据,如果用户想要访问VSIPL空间的数据,只能使用VSIPL函数。
在结构体方面,依据存储的数据类型不同,block对象分为三类:float型实数、int型实数和float型复数。而view对象依据处理的数据类型也分为同样的三类,每一类再依据数据维度不同,又分为向量View对象和矩阵View对象,如下表所示。
分类 | 名称 | 说明 |
---|---|---|
block对象 | vsip_block_f | 包含float类型实数向量的数据数组和属性信息 |
block对象 | vsip_block_i | 包含int类型实数向量的数据数组和属性信息 |
block对象 | vsip_cblock_f | 包含float类型复数向量的数据数组和属性信息 |
向量view对象 | vsip_vview_f | 包含float类型实数向量的block对象和属性信息 |
向量view对象 | vsip_vview_i | 包含int类型实数向量的block对象和属性信息 |
向量view对象 | vsip_cvview_f | 包含float类型复数向量的block对象和属性信息 |
矩阵view对象 | vsip_mview_f | 包含float类型实数矩阵的block对象和属性信息 |
矩阵view对象 | vsip_mview_i | 包含int类型实数矩阵的block对象和属性信息 |
矩阵view对象 | vsip_cmview_f | 包含float类型复数矩阵的block对象和属性信息 |
3、软件模块详细设计
3.1 结构体及说明
3.1.1 block对象
vsip_block_f结构:
- float类型block结构体
typedef struct