@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.