首页|嵌入式系统|显示技术|模拟IC/电源|元件与制造|其他IC/制程|消费类电子|无线/通信|汽车电子|工业控制|医疗电子|测试测量
首页 > 分享下载 > 嵌入式系统 > Vivado HLS中指针作为top函数参数的处理

Vivado HLS中指针作为top函数参数的处理

资料介绍
Vivado HLS中指针作为top函数参数的处理。
本文采用浅显易懂的描述方式,结合具体的c代码例子,详细描述了常用三种指针的设计类型,以及其作为顶层函数参数时,采用不同的编码风格和HLS约束策略,满足设计者对指针作为RTL接口的需求。

Vivado HLS中指针作为top函数参数的处理

            Harvest Guo : xilinx

 

    指针作为C语言精华,对于软件设计者比较好理解,但是在xilinx vivado
HLS高级语言综合的设计中,由于其综合后对应的硬件元素难以用软件的概念解释,常常
令程序设计者和VHLS工具使用者头痛。本文采用浅显易懂的描述方式,结合具体的c代码
例子,详细描述了常用三种指针的设计类型,以及其作为顶层函数参数时,采用不同的
编码风格和HLS约束策略,满足设计者对指针作为RTL接口的需求。

 

1. 1.       基本指针类型
基本指针类型指的是指针没有运算或者没有多次的存取(读写)。指针作为top函数的参
数时,指针综合为wire型或者握手协议类型接口。如下例子1-1:

 

void pointer_basic (dio_t *d) {

static dio_t acc = 0;

acc += *d;

*d = acc;

}

 例子1-1 基本类型指针作为顶层函数参数

 

在这个例子中,只是简单的读写指针指向的变量值,并没有对指针做偏移或者指针(地
址)运算,其接口综合为线​型的RTL接口。

 

1. 2.       指针运算类型。
指针作为top层函数参数,并且函数中有对指针运算时,我们称之为指针运算类型。指针
运算常常限制指针可能综合的接口类型​。如下例中,指针做了偏移运算用于累加数据,
从第二个值开始读出累加,并将每次累加结果写入上一个地址中。

 

void pointer_arith (dio_t *d) {

static int acc = 0;

int i;

for (i=0;i<4;i++) {

acc += *(d+i+1);

*(d+i) = acc;

}

}

  例子1
标签:VivadoHLS
Vivado HLS中指针作为top函数参数的处理
本地下载

评论