核心内容摘要
MV背后的故事:解析欧美与日韩流行音乐视频的独特魅力
图像算法优化常用方式
双层for循环结构对于灰度图像或者二值图像一般使用双层循环for(ap_uint32 i0;iheight;i){for(ap_uint32 j0;jheight;j){#pragma HLS pipeline II1}}然后对内存循环进行pipeline优化当然依据不同的场景可能使用#pragma HLS LOOP_FLATTEN offfor(ap_uint32 i0;iheight;i){for(ap_uint32 j0;jheight;j){#pragma HLS pipeline II1#pragma HLS LOOP_FLATTEN off}}当然依据不同的场景可能使用#pragma HLS LOOP_FLATTENfor(ap_uint32 i0;iheight;i){for(ap_uint32 j0;jwidth;j){#pragma HLS pipeline II1#pragma HLS LOOP_FLATTEN}}
经常会用到将height高度加1的操作比如乒乓操作ap_uint32 ping_buff[COLS];#pragma HLS RESOURCE variableping_buff coreRAM_2P_LUTRAMap_uint32 pang_buff[COLS];#pragma HLS RESOURCE variablepang_buff coreRAM_2P_LUTRAMfor(ap_uint32 i0;iheight1;i){for(ap_uint32 j0;jwidth;j){#pragma HLS pipeline II1if(i[0]){}else{}}}由于使用乒乓buffer,就会造成写入和读出之间晚一行数据那么这个时候height1作为行结束索引
经常会用到将height高度加2的操作比如图像要在第一行前加入包头信息在最后一行要加入包尾信息for(ap_uint32 i0;iheight2;i){for(ap_uint32 j0;jwidth;j){#pragma HLS pipeline II1if(i
{//包头}else if(iheight
else{}}}
pingpang_buffer经常使用经常会使用两个line_buffer来组合成乒乓buffer来设计。
ap_uint32 ping_buff[COLS];#pragma HLS RESOURCE variableping_buff coreRAM_2P_LUTRAMap_uint32 pang_buff[COLS];#pragma HLS RESOURCE variablepang_buff coreRAM_2P_LUTRAM#pragma HLS DEPENDENCE variableping_buff intra RAW false#pragma HLS DEPENDENCE variablepang_buff intra RAW false由于乒乓buffer既需要读又需要写所以工具容易形成伪依赖关系这个时候需要使用去依赖关系来提高设计性能。
#pragma HLS DEPENDENCE variableping_buff intra RAW false#pragma HLS DEPENDENCE variablepang_buff intra RAW false这两条优化语句是经常用到的。