您的位置:首页 > 运维架构

AutoPilot高层次综合C算法设计技巧-移位寄存器

2010-06-22 17:43 288 查看
// Register-based shift register implementation using C

// for High-Level Synthesis with AutoESL : AutoPilot

#define SIZE 10

typedef int dType;

void shiftReg(dType din, dType *dout)

{

#pragma AUTOPILOT pipeline II=1

static dType regs[SIZE];

int i;

for (i = SIZE-1; i > 0; i--)

regs[i] = regs[i-1];

regs[0] = din;

*dout = regs[SIZE-1];

}

熟悉RTL设计的话,对这种C描述应该比较习惯,如果是纯软件开发人员刚开始接触这样的C代码估计够呛。
会觉得很别扭。

上面的C代码就是一个比较高效的移位寄存器的C语言实现,用高层次综合工具AutoPilot综合可以得到和手写
RTL(verilog和vhdl)效果一样的移位寄存器。

在这里:
1.
#pragma AUTOPILOT pipeline II=1
告诉综合工具让这个模块流水起来,并且达到每一个时钟周期进一个数据的吞吐率。

2.
Regs数组会被partition掉,综合成寄存器。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: