Skip to content

Commit f9b496d

Browse files
committed
Add some implementation details
1 parent 1ad7344 commit f9b496d

File tree

3 files changed

+22
-1
lines changed

3 files changed

+22
-1
lines changed

README.md

+22-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,12 @@ This project is a JPEG decoder core for FPGA written in Verilog.
2424
3. Be well tested (with verification against a reference C-model).
2525
4. Map to FPGA resources such as BlockRAM, DSP macros wherever possible.
2626

27+
## FPGA Mapping
28+
The current version of the JPEG decoder uses the following resources on a Xilinx 7 series FPGA (post-implementation);
29+
![Resource Usage](docs/resources.png)
30+
31+
The design is also able to meet timing >= 75MHz.
32+
2733
## Performance
2834
Peak JPEG decode performance is as follows;
2935
* Monochrome = 66 cycles per 8x8 pixels (1.0 cycles per pixel)
@@ -37,4 +43,19 @@ Motion JPEG has worse compression performance than MPEG based video, but the com
3743
Video playback usually requires at least 25 frames per second, hence there is a budget of less than 40ms per JPEG frame.
3844
This fact drives the design choices taken for this implementation.
3945

40-
Clearly, the higher the resolution, the more pixels that must be produced from the JPEG decoder within that 40ms budget, so this core is designed to have high throughput in the output stages - with additional resources dedicated to the IDCT transform, and output re-ordering stages to facilitate this.
46+
Clearly, the higher the resolution, the more pixels that must be produced from the JPEG decoder within that 40ms budget, so this core is designed to have high throughput in the output stages - with additional resources dedicated to the IDCT transform, and output re-ordering stages to facilitate this.
47+
48+
## Limitations
49+
The current release does not support;
50+
* Optimised Huffman tables (that is to say that the 'std' Huffman tables are hardcoded in the design and ignored in the JPEG file).
51+
* Restart markers
52+
* 4:2:2 H/V chroma subsampling (only 4:4:4 and 4:2:0 are supported).
53+
54+
Under the GNU Image Manipulation Program, the following 'X' options are **not** supported currently;
55+
![Unsupported Opts](docs/supported_opts.png)
56+
57+
## Future Work / TODO
58+
* Add support for dynamic Huffman tables.
59+
* Add support for the first layer of progressive JPEG images.
60+
* Add option to reduce arithmetic precision to reduce design size.
61+
* Add lightweight variant of the core with reduced performance (for smaller FPGAs).

docs/resources.png

2.23 KB
Loading

docs/supported_opts.png

41.5 KB
Loading

0 commit comments

Comments
 (0)