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

来源:互联网 发布:全友家具靠谱吗 知乎 编辑:程序博客网 时间:2024/05/22 00:26

// 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掉,综合成寄存器。

原创粉丝点击