一、gcd(a,b)算法使用rtl和hls实现有何种区别

ap_uint<32> gcd(ap_uint<32> opA,ap_uint<32> opB){

#pragma HLS INLINE

while(opA != opB){
#pragma HLS PIPELINE
    if(opA > opB)
        opA = opA - opB;
    else
        opB = opB - opA;
}
    return opA;
}

二、如何写hls代码
1.top function和Testbench分开,放在不同files中
2.如果top function中有多个kernel function,你需要将其组合在top-function中,
并且可综合
3.testbench可以多次调用top-level fucntion,进行多次执行
4.testbench要测试top function多次传输执行,要测试完整
5.一定要进行C/RTL co-simulation联合仿真验证
6.main函数反馈zero才是代表验证通过

三、可综合设计
1.interface接口一般要么用ap_ctrl_chain和ap_ctrl_hs,一般不用ap_ctrl_none
2.ap_ctrl_none作为接口,多实用纯stream接口
 

四、c to rtl转换

五、关于指针在接口生成port情况说明

关于顶层接口的指针,可能是input,可能是output,也可以是input/output,
这个取决于你代码设计中,指针是左值还是右值,还是你都用了,如果你既
读取了指针,然后又给指针赋值了,那就生成output和input两个端口。

六、vivado hls生成的rtl代码

vivado hls设计的代码最后产生两部分代码:
一部分是datapath部分;一部分是control path,也就是FSM状态机。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐