当前位置: 首页 > news >正文

图像算法优化常用方式-vivado hls设计

一、图像算法优化常用方式
1.双层for循环结构
对于灰度图像或者二值图像,一般使用双层循环
for(ap_uint<32> i=0;i<height;i++){
for(ap_uint<32> j=0;j<height;j++){
#pragma HLS pipeline II=1
}
}

然后对内存循环进行pipeline优化,
当然依据不同的场景可能使用#pragma HLS LOOP_FLATTEN off
for(ap_uint<32> i=0;i<height;i++){
for(ap_uint<32> j=0;j<height;j++){
#pragma HLS pipeline II=1
#pragma HLS LOOP_FLATTEN off
}
}

当然依据不同的场景可能使用#pragma HLS LOOP_FLATTEN
for(ap_uint<32> i=0;i<height;i++){
for(ap_uint<32> j=0;j<width;j++){
#pragma HLS pipeline II=1
#pragma HLS LOOP_FLATTEN
}
}

2.经常会用到将height高度加1的操作,比如乒乓操作
ap_uint<32> ping_buff[COLS];
#pragma HLS RESOURCE variable=ping_buff core=RAM_2P_LUTRAM

ap_uint<32> pang_buff[COLS];
#pragma HLS RESOURCE variable=pang_buff core=RAM_2P_LUTRAM

for(ap_uint<32> i=0;i<height+1;i++){
for(ap_uint<32> j=0;j<width;j++){
#pragma HLS pipeline II=1
if(i[0]){

}
else{

}
}
}
由于使用乒乓buffer,就会造成写入和读出之间晚一行数据,那么这个时候height+1作为行结束索引


3.经常会用到将height高度加2的操作,比如图像要在第一行前加入包头信息,在最后一行要加入包尾信息
for(ap_uint<32> i=0;i<height+2;i++){
for(ap_uint<32> j=0;j<width;j++){
#pragma HLS pipeline II=1
if(i==0){//包头

}
else if(i==height+1)
else{

}
}
}

4.pingpang_buffer经常使用
经常会使用两个line_buffer来组合成乒乓buffer来设计。
ap_uint<32> ping_buff[COLS];
#pragma HLS RESOURCE variable=ping_buff core=RAM_2P_LUTRAM

ap_uint<32> pang_buff[COLS];
#pragma HLS RESOURCE variable=pang_buff core=RAM_2P_LUTRAM

#pragma HLS DEPENDENCE variable=ping_buff intra RAW false
#pragma HLS DEPENDENCE variable=pang_buff intra RAW false

由于乒乓buffer既需要读,又需要写,所以工具容易形成伪依赖关系,这个时候需要使用去依赖关系来提高设计性能。

#pragma HLS DEPENDENCE variable=ping_buff intra RAW false
#pragma HLS DEPENDENCE variable=pang_buff intra RAW false
这两条优化语句是经常用到的。

http://www.jsqmd.com/news/330370/

相关文章:

  • 深入解析:RIB表与FIB表的区别
  • 实用指南:让 ETL 更懂语义:DataWorks 支持数据集成 AI 辅助处理能力
  • 电子学会青少年软件编程(C语言)等级考试试卷(一级)2025年12月
  • [运营实战] 节日大促图片来不及做?浅析如何用 AI 批量汉化与修改“季节性”卖点图,灵活承接旺季流量
  • vue 插槽详解
  • 语法:一文搞懂“双宾语”与“宾语补足语”
  • Lazarus的lazlogger单元使用
  • ANTLR4:解析器生成工具的强大力量
  • metahuman 购买安装记录
  • 数据搬运工-DMA(上)
  • AI技术点总结(2)
  • 深度解析Android系统开发工程师岗位:技术体系与实战指南(含面试题库)
  • VisionPro视觉检测软件之打包成安装包
  • 基于Simulink的A*算法自动驾驶路径规划仿真建模示例
  • 开发跨部门沟通话术生成器,按场景(需求对接/问题协调/资源申请),生成礼貌高效话术,兼顾立场和沟通效率,减少跨部门沟通矛盾。
  • 基于Simulink的超声波传感器障碍物检测仿真建模示例
  • 【游戏推荐】ServiceIT:你可以做IT (ServiceIT You can do IT)免安装中文版
  • 2002-2025年各省、地级市农业新质生产力数据
  • 【AI大模型舆情分析】微博舆情分析可视化系统(pytorch2+基于BERT大模型训练微调+flask+pandas+echarts) 实战(上)
  • 工作量证明机制的未来发展方向是什么?
  • 2月1号
  • 2026/2/1总结
  • 腾讯轻量云 Nacos 公网访问排查指南(适用于其他平台的ecs)
  • USB存储设备管理工具 启用或者禁用+usb修复
  • 基于javaweb的网上购物系统 开题报告
  • 【读书笔记】《演讲的本质》
  • 基于JavaWeb的实验室助教系统的设计与实现
  • 【读书笔记】《遇见莫扎特》
  • 如何搜集图片?超实用功能必看!
  • 基于JavaWeb的网上书城网站的设计与实现 开题报告(2)