前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HLS Lesson7-复合数据类型

HLS Lesson7-复合数据类型

作者头像
瓜大三哥
发布2018-02-26 15:16:29
5640
发布2018-02-26 15:16:29
举报
文章被收录于专栏:瓜大三哥瓜大三哥

1. 结构体

优化方式有两种:field_level和struct_level

代码语言:js
复制
#define W 4
#define N 4
typedef ap_int<W> A_t;
typedef ap_uint<N> B_t;
typedef struct{
A_t A;
B_t B[N];
}data_t;
data_t structport(data_t i_val);
data_t structport(data_t i_val)
{
data_t o_val;
int i;
o_val.A = i_val.A + 2;
for (i = 0; i < N; i++)
{
o_val.B[i] = i_val.B[i] + 2;
}
return o_val;
}

field_level必须是以8的整数倍为边界,整个struct占用40bit

struct_level对数据的原有位宽依然保留,但是封装后的数据位宽还是要以8的整数倍作为边界,整个struct占据20bit,最接近24,所以为24bit

并且两者所占用的latency,interval以及相应的资源利用率都是差不多的

2. 枚举:把一个数值定义为一个符号常量

代码语言:js
复制
#include<ap_int.h>
#define W 4
typedef ap_int<W> a_t;
typedef enum
{
M_INIT,
M_ADD,
M_SUB,
M_HOLD,
}mymode_t;
a_t enumapp(a_t A,mymode_t mode);
#include"enum_type.h"
a_t enumapp(a_t A,mymode_t mode)
{
static a_t res;
switch(mode)
{
case M_INIT:res = A;break;
case M_ADD:res = res + A;break;
case M_SUB:res = res - A;break;
case M_HOLD:break;
}
return res;
}

自动推断mode类型的宽度为2

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-11-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 瓜大三哥 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 结构体
  • 2. 枚举:把一个数值定义为一个符号常量
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档