As the project grows there are some concerns about the data flow in the encoder. I will try to describe my part of the encoder (frontend) and how the data are handled in the color space conversion and 2D-DCT module.
Firstly, the pixels are inserted serially one by one for each row in 8x8 blocks of the image into the color space conversion module. The color space conversion module outputs the signals Y, Cb, Cr serially into the 2d-dct module. There are three separate 2d-dct modules one for each signal (Y, Cb, Cr) which work in parallel. These modules take serially the inputs from the previous module and output after some cycles the 8x8 block in parallel. Thus, after the conversion is done there are 3 8x8 blocks ready to be processed from the back-end part of the encoder.
There is no need yet for complex FSMs and data storage, as the data flow can be continuous in each of the modules without any conflict in the 2 modules (Color Space Conversion, 2D-DCT).
Moreover, the zig-zag module could be integrated in the 2d-dct module. The order of the 2d-dct outputs should be changed in order to have a zig-zag form.
@cfelton @josyb @Vikram9866 @vikram @hgomersall