diff --git a/pixel2.cpp b/pixel2.cpp new file mode 100644 index 0000000000000000000000000000000000000000..91715dfebb25ddfc99f0e21a0edad72988024fb8 --- /dev/null +++ b/pixel2.cpp @@ -0,0 +1,56 @@ +#include <iostream> +#include <hls_stream.h> +#include <ap_axi_sdata.h> + +using namespace std; + +typedef ap_axis<32,0,0,0> pkt_t; +static int count = 0; +static int count_streams = 0; +static bool flag = false; +static int p_count = 3; + +void pixel( + ap_int<32> position, + ap_int<32> stream_count, + hls::stream< pkt_t > &din, + hls::stream< pkt_t > &dout +) { + #pragma HLS INTERFACE ap_ctrl_none port=return + #pragma HLS INTERFACE s_axilite port=position + #pragma HLS INTERFACE s_axilite port=stream_count + #pragma HLS INTERFACE axis port=din + #pragma HLS INTERFACE axis port=dout + + pkt_t pkt=din.read(); + count_streams++; + + + if(count == position || count == position+1 || count == position+2){ + pkt.data -= 1; + p_count--; + if(p_count==0){ + count = -1; + flag=true; + } + + } + + if(!flag){ + count++; + } + + if (count_streams == stream_count){ + count_streams = 0; + flag = false; + p_count=3; + count = 0; + } + + // pending: have to make count=0 when TLAST signal is active - for w not in the range of 0 to n(size of the array) + + + dout.write(pkt); + +} +