|
This core works very well, I've tested it thoroughly to implement it as part of a JPEG compressor. But there are some things which I consider very important but are missing in the documentation: 1. The core does internally a level_shift (substract 128 from input). I don't think a DCT core should do level shift (i.e. MatLab's dct2 function doesn't). The code in DCT1D.vhd can be modified to avoid it by changing every "SIGNED('0' & dcti) - LEVEL_SHIFT" to "SIGNED(dcti(dcti'High) & dcti)" 2. If you want output to be row-wise, input must be column-wise, that is, output is the transposed 2D-DCT of the input. 3. I am going to try to see if the DCT is compliant with the JPEG standard in terms of calculation precision. To this moment, it looks fine (I've seen rounding errors of around abs(err)<3 in the 12 bit coefficients, not bad). 4. This is said in the docs, but if you were wondering: yes, you can continuously feed data in to the core and get continuous output. Great job and very readable code. Many thanks to the author!
|