diff --git a/pixel_original.c b/pixel_original.c
new file mode 100644
index 0000000000000000000000000000000000000000..2733742297fe7d3e0fe9279b887769dcbcea5cd3
--- /dev/null
+++ b/pixel_original.c
@@ -0,0 +1,131 @@
+#include <stdio.h>
+#include <hls_stream.h>
+#include <ap_axi_sdata.h>
+#include<math.h>
+#include <string.h>
+
+using namespace std;
+
+typedef ap_axis<32,0,0,0> pkt_t;
+static int count_streams = 0;
+static long long charIn=0;
+static long long final_char=0;
+int addNum=0;
+
+long long convert(int n);
+int convertBinInt(long long n);
+void decrypt(int data);
+
+
+void pixel(ap_int<32> selector,
+		ap_int<32> position1,
+		ap_int<32> position2,
+		ap_int<32> stream_count,
+		ap_int<32> &ascii,
+		hls::stream< pkt_t > &din,
+		hls::stream< pkt_t > &dout
+) {
+	#pragma HLS INTERFACE ap_ctrl_none port=return
+    #pragma HLS INTERFACE s_axilite port=selector
+	#pragma HLS INTERFACE s_axilite port=position1
+	#pragma HLS INTERFACE s_axilite port=position2
+	#pragma HLS INTERFACE s_axilite port=stream_count
+	#pragma HLS INTERFACE s_axilite port=ascii 
+	#pragma HLS INTERFACE axis port=din
+	#pragma HLS INTERFACE axis port=dout
+
+    pkt_t pkt=din.read();
+
+    switch(selector)
+    {
+        case 0:
+            
+            if (count_streams == 0){
+                charIn=convert(ascii);
+                final_char=0;
+            }
+
+            if((count_streams >= 3 * (position1 - 1)) && (count_streams < 3 * (position2) - 1)){
+                addNum=0;
+                if(charIn!=0){
+                    addNum=charIn%10;
+		            charIn=(int)charIn/10;
+                }
+
+                if(pkt.data % 2 == 0 && addNum == 1){
+                    pkt.data += 1;
+                }else if(pkt.data % 2 != 0 && addNum == 0){
+                    pkt.data -= 1;
+                }
+
+            }
+
+            break;
+
+        case 1:
+
+            if((count_streams >= 3 * (position1 - 1)) && (count_streams < 3 * (position2)-1)){
+                
+                
+                decrypt(pkt.data);
+            
+            }
+            break;
+
+        default:
+            break;
+    }
+	
+	count_streams++;
+
+	if (count_streams == stream_count){
+		count_streams = 0;
+        charIn=0;
+        addNum=0;
+        ascii=0;
+        if(selector == 1){
+            ascii= convertBinInt(final_char);
+            final_char=0;
+        }
+
+	}
+
+    dout.write(pkt);
+}
+
+
+long long convert(int n) {
+    long long bin = 0;
+    int rem, i = 1, step = 1;
+    while (n != 0) {
+        rem = n % 2;
+        n /= 2;
+        bin += rem * i;
+        i *= 10;
+    }
+    return bin;
+}
+
+void decrypt(int data) {
+int bit;
+if(data % 2 == 0){
+   bit = 0;
+}else if(data % 2 != 0){
+    bit=1;
+}
+final_char= final_char*10+bit;
+
+}
+
+int convertBinInt(long long n) {
+int dec = 0, i = 7, b=0,rem=0;
+    while (n != 0) {
+        b=pow(10,i);
+        rem = n / b;
+        n =n % b;
+        dec += rem * pow(2, 7-i);
+        --i;
+    }
+    return dec;
+}
+