尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

HLS高层次综合设计技巧--移位寄存器的使用

HLS高层次综合设计技巧--移位寄存器的使用 一、static修饰的win_buffervoid fuction(){static ap_uint24 win_buff[10];//c/rtl协同仿真异常#pragma HLS ARRAY_PARTITION variablewin_buff complete dim0for(ap_uint16 i0; iheight; i) {for(ap_uint16 j0; j(cols1); j) {#pragma HLS pipeline II1srctemp src.read();// 代码 if(j0){for(ap_uint4 k 0; k 10; k) {#pragma HLS UNROLLwin_buff[k] srctemp;win_buff[k 1] srctemp;win_buff[k 2] srctemp;win_buff[k 3] srctemp;win_buff[k 4] srctemp;}}else{for(ap_uint4 k 0; k 10; k) {#pragma HLS UNROLLwin_buff[k] win_buff[k 1];win_buff[k 1] win_buff[k 2];win_buff[k 2] win_buff[k 3];win_buff[k 3] win_buff[k 4];win_buff[k 4] srctemp;}}// 编程}}}注意1.上述代码static ap_uint24 win_buff[10];这个代码c/rtl协同仿真异常异常的原因是使用了static修饰了win_buffer;2.static修饰的win buffer,这个win_buffer就被综合为shift_register移位寄存器3.但是win_buff[k] srctemp;win_buff[k 1] srctemp;win_buff[k 2] srctemp;win_buff[k 3] srctemp;win_buff[k 4] srctemp;这个结构直接赋值将剖坏了移位寄存器结构所以最后c/rtl仿真失败。如何解决这个问题将static ap_uint24 win_buff[10];修改为ap_uint24 win_buff[10];也就是取消static的修饰那么就不认为winbuffer是移位寄存器了那么上述代码就可以用了二、取消static修饰win_buffervoid fuction(){ap_uint24 win_buff[10];//取消static之后c/rtl协同仿真正确#pragma HLS ARRAY_PARTITION variablewin_buff complete dim0for(ap_uint16 i0; iheight; i) {for(ap_uint16 j0; j(cols1); j) {#pragma HLS pipeline II1srctemp src.read();// 代码 if(j0){for(ap_uint4 k 0; k 10; k) {#pragma HLS UNROLLwin_buff[k] srctemp;win_buff[k 1] srctemp;win_buff[k 2] srctemp;win_buff[k 3] srctemp;win_buff[k 4] srctemp;}}else{for(ap_uint4 k 0; k 10; k) {#pragma HLS UNROLLwin_buff[k] win_buff[k 1];win_buff[k 1] win_buff[k 2];win_buff[k 2] win_buff[k 3];win_buff[k 3] win_buff[k 4];win_buff[k 4] srctemp;}}// 编程}}}
返回列表