一、算法设计思考的重点1.定点化的陷阱整数部分数据位宽不足造成的溢出舍入导致图像的视觉差异小数部分位宽不足导致精度不够或者效果不佳2.pipelin流水线的设计普通变量造成的数据依赖问题导致II达不到缓冲区的端口访问撞车导致的II问题累加器的依赖关系造成II问题3.算法实现本身的bug边界处理不合适除法器问题查找表访问4.HLS优化指令的使用指令使用不当造成功能出错C仿真和RTL仿真的结果不一样二、BRAM的使用问题1.针对BRAM使用不足问题BRAM的总容量虽然满足要求但是BRAM的个数不满足要求。这种情况vivado hls设计需要从HLS优化指令和源代码重构这两个方面来进行优化设计。2.数组不是只有array_partition好用ARRAY_RESHAPE数组重组是ARRAY_PARTITION数组分割和纵向ARRAY_MAP纵向映射的结合体它在保留并行访问能力增加端口位宽的同时将分割后的数组重新合并到一个BRAM中。这种方式不会增加BRAM的实例个数而是增加单个BRAM的位宽从而在不消耗过多块数的前提下提升数据吞吐量。3.BRAM不够可以使用LUT你的多通道缓冲区深度非常小例如深度≤64使用BRAM是低效的强制HLS使用LUT RAM分布式RAM来实现这些存储4.上述方式还不行可尝试修改代码看看