news 2026/3/8 4:22:03

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
图像算法优化常用方式-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
这两条优化语句是经常用到的。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/3 14:41:14

基于Simulink的A*算法自动驾驶路径规划仿真建模示例

目录 手把手教你学Simulink--基于Simulink的A*算法自动驾驶路径规划仿真建模示例 一、引言&#xff1a;为什么需要A*算法路径规划&#xff1f;——“最优性”与“效率”的平衡术 挑战&#xff1a; 二、核心原理&#xff1a;A*算法的“评估-搜索-生成”逻辑 1. A*算法基本框…

作者头像 李华
网站建设 2026/3/5 1:55:09

深度解析Android系统开发工程师岗位:技术体系与实战指南(含面试题库)

上海大帜信息技术有限公司 MTK/展锐 平台Android系统 软件开发工程师 职位信息 1、负责Android手机及行业设备的客户需求对接、上层基本功能配置开发、客户软件编译输出等工作; 2、负责协同测试部或其他相关部门解决研发、生产、测试中出现的framework、app等软件问题; 3,有A…

作者头像 李华
网站建设 2026/2/25 15:01:26

基于javaweb的网上购物系统 开题报告

目录 项目背景与意义技术选型系统功能模块创新点与特色预期成果参考文献 项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作 项目背景与意义 随着电子商务的快速发展&#xff0c;网上购物系统已成为现代商业…

作者头像 李华
网站建设 2026/3/7 0:52:04

codeblocks+wxWidgets Projects中引用第三方库(sqlite3)

1. 下载sqlite3合并版本 https://www.sqlite.org/2024/sqlite-amalgamation-3450100.zip 解压后的内容如下&#xff1a; 2. sqlitee3.c和sqlite3.h放在 3. 在Project build options的Search directories中添加".\sqlite3" 最后在项目中通过如下方式引用&#xf…

作者头像 李华