JPEG Encoder Data Flow

@mkatsimpris. I need to update you with couple more things regarding backend.

Point-1: The read-valid interface is necessary because in backend depending upon the inputs the number of clocks each block require may change.

Example :

RunLength Encoder may compress a 8x8 block (64 pixels) to variable number of pixels. So, when the huffman block (block next to RLE) is ready to take more inputs, RLE should halt sending inputs. Similarly all the modules must halt till huffman finishes its job.

Point 2:

I use Double FIFO's in my design because when the previous block writes data into one FIFO, I can read data from the other FIFO. So, at the input interface I have placed a Dual Port RAM of size 2*64. So, that when you write into top 64 levels, I will read from other lower 64 levels. If you want some place to store your data from frontend, you can use them(suggestion). This way I can make my backend modules(all) run paralelly.