一、将scalar标量约束为ap_nonevoid array_FIFO (dout_t d_o[4], volatile din_t d_i, didx_t idx[4]) {#pragma HLS INTERFACE ap_none register portd_iint i;// Breaks FIFO interface d_o[3] d_i[2];For_Loop: for (i0;i4;i) {d_o[i] d_i;}}约束为ap_none是常规做法没有什么特别的地方。二、将scalar标量约束为ap_stable这里可以忽略不说和ap_none一样三、将scalar标量约束为ap_ackvoid array_FIFO (dout_t d_o[4], volatile din_t d_i, didx_t idx[4]) {//#pragma HLS INTERFACE axis register both portd_i#pragma HLS INTERFACE ap_ack register portd_i//#pragma HLS INTERFACE s_axilite register depth4 portd_iint i;// Breaks FIFO interface d_o[3] d_i[2];For_Loop: for (i0;i4;i) {//d_o[i] d_i[idx[i]];//d_o[i] d_i[i];d_o[i] d_i;}}综合为input_data output_ack四、将scalar标量约束为ap_vldvoid array_FIFO (dout_t d_o[4], volatile din_t d_i, didx_t idx[4]) {//#pragma HLS INTERFACE axis register both portd_i#pragma HLS INTERFACE ap_vld register portd_i//#pragma HLS INTERFACE s_axilite register depth4 portd_iint i;// Breaks FIFO interface d_o[3] d_i[2];For_Loop: for (i0;i4;i) {//d_o[i] d_i[idx[i]];//d_o[i] d_i[i];d_o[i] d_i;}}综合为input_data input_vld五、将scalar标量约束为ap_hsvoid array_FIFO (dout_t d_o[4], volatile din_t d_i, didx_t idx[4]) {//#pragma HLS INTERFACE axis register both portd_i#pragma HLS INTERFACE ap_hs register portd_i//#pragma HLS INTERFACE s_axilite register depth4 portd_iint i;// Breaks FIFO interface d_o[3] d_i[2];For_Loop: for (i0;i4;i) {//d_o[i] d_i[idx[i]];//d_o[i] d_i[i];d_o[i] d_i;}}综合为input_data input_vld output_ack六、将scalar标量约束为axis这个非常不建议这个可以看我其他博客有对这块的讨论和说明帮你避坑七、将scalar标量约束为axilite将标量综合为寄存器这个比较简单没有什么特别说明的。八、总结将scalar标量约束为axis这个不要用不要用不要用违法了 常识