欢迎光临
我们一直在努力

HLS高层次综合设计---SRL移位寄存器

一、SRL移位寄存器说明
1.SRL移位寄存器的称谓
Shift Register Look-Up-Table (LUT)

二、HLS实现移位寄存器常用方式
1.在HLS中的算法,使用数组按照顺序移动来实现SRL移位寄存器

for(i=1;i<N;i++){
    array[i] = arrray[i-1];
}

array[0] = in_data;

这个代码是HLS常用的实现移位寄存器的模型设计代码架构。

2.这个算法在数组的开始处添加新值,也就是in_data;
3.在数组中移动现有的数据;
4.删除最早的数据值;

以上的操作过程在硬件中是使用移位寄存器来实现的。

如果要将上述的方式实现硬件的移位寄存器,需要将array数组完全展开,也就是array_partition。
for (int i = 3; i > 0; i–) {
    arr[i] = arr[i-1]; // 前一个元素赋值给后一个
}
arr[0] = new_data;
这个代码,前后两个元素组成链式关系,也就是所谓的支持RTL中元素之间的数据依赖关系。
综合工具发现这种链式关系之后,就暗示工具这个使用移位寄存器来综合。

上述代码是否综合为SRL的资源,并不是完全确定的,工具并不是能够完全推断。

三、ap_shift_reg类
1.HLS高层次综合工具使用ap_shift_reg
确保 C 语言代码中定义的移位寄存器始终使用 SRL 资源来实现。ap_shift_reg 类采用 2 种方法来执行 SRL 组件支持的各种读写访问

static ap_shift_reg<int, 4> Sreg;
int var1;
// Read location 2 of Sreg into var1
var1 = Sreg.read(2);

注意:static qualifier使用static限定符是必须的
 

赞(0)
未经允许不得转载:171主机测评 » HLS高层次综合设计---SRL移位寄存器
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址