PNG-D
PNG Lossless Compression Decoder

The PNG-D core implements a lossless image decompression engine compliant with the Portable Network Graphics (PNG) file format specified in the ISO/IEC 15948 and RFC 2083 standards.

The decoder core can decompress greyscale, truecolor, and palette-based PNG images with 8 and 16 bits per color. The core supports alpha channel transparency¬ and all the filters and DEFLATE compression options specified by the PNG standard. The core does not currently support interlaced mode and images with under 8 bits per color, but these can be added on request.

The easy-to-use PNG-D core operates on a standalone basis, parsing the image header and decompressing image data without a host processor's assistance. PNG-D accepts compressed data and outputs pixel data via AXI4-Stream interfaces. A separate dedicated interface provides the system with the image header and any ancillary chunks to prepare the decoded images for further processing and/or display. Moreover, the core detects, reports, and automatically recovers from various errors in the input files.

The core is designed with industry best practices, and its reliability has been proven through rigorous verification. The deliverables include a complete verification environment and a bit-accurate software model.

A wide range of SoC designs using PNG files can benefit from this custom-hardware decompression engine's high performance and lower power. End applications range from wearables to data-center acceleration and aerospace imaging.

The PNG-D is a digital core and can be mapped to any ASIC technology. The following are sample implementation results. These sample results do not represent the minimum area or the fastest clock speed for the PNG-D core. Please contact CAST to get accurate characterization for your target technology and throughput requirements.

ASIC Technology Logic Memory*
(kbits)
Freq. (MHz)
Area (um^2) Eq. NAND2 Gates
TSMC 7nm
tsmc7-sch240mc-c11-svt-675v-125c
1,339 24,470 264 800
TSMC 16nm
tsmc16-sc7-svt-c16-ssgnp-125c
4,049 23,432 264 700

*Memory requirements exclude the image-line buffer. Memory size can be significantly reduced by limiting the maximum size of the LZ77 History window and FIFO sizes.

The PNG-D is a digital core and can be mapped to any Intel® FPGA device (provided sufficient resources are available). The following are sample implementation results. These sample results do not represent the minimum area or the fastest clock speed for the PNG-D core. Please contact CAST to get accurate characterization for your target device and throughput requirements. 

Target Family/Device Logic
Resources
Memory
Resources *
Freq. (MHz)
AGILEX™
Speed grade -2
2,661 ALMs 35 RAMB 150
Arria® 10 GX
Speed grade -1
2,327 ALMs 35 RAMB 100

* Memory requirements include an 8kB pixels image-line buffer. Memory size can be significantly reduced by limiting the maximum size of the LZ77 History window and the image line,  and the FIFO sizes.

The PNG-D is a digital core and can be mapped to any Lattice FPGA device (provided sufficient resources are available). The following are sample implementation results. These sample results do not represent the minimum area or the fastest clock speed for the PNG-D core. Please contact CAST to get accurate characterization for your target device and throughput requirements. 

Target Family/Device Logic
Resources
Memory
Resources *
Freq. (MHz)
ECP5
lfd2nx-40cabga256
2,691 Slices
1 Mult18
27 EBR 34
Certus-NX
lfe5u-45fcabga381
3,165 Slices
1 Mult18, 2 Mult9
11 EBR
2 LRAM
44

* Memory requirements include an 8kB pixels image-line buffer. Memory size can be significantly reduced by limiting the maximum size of the LZ77 History window and the image line, and the FIFO sizes.

The PNG-D is a digital core and can be mapped to any Xilinx® FPGA device (provided sufficient resources are available). The following are sample implementation results. These sample results do not represent the minimum area or the fastest clock speed for the PNG-D core. Please contact CAST to get accurate characterization for your target device and throughput requirements. 

Target Family/Device Logic
Resources
Memory
Resources *
Freq. (MHz)
Kintex® UltraScale+™
xcku15pffve1760-3
4,095 LUTs 16 BRAM 200
Kintex® UltraScale™
xcku085flvb1760-1
4,078 LUTs 16 BRAM 110

* Memory requirements include an 8kB pixels image-line buffer. Memory size can be significantly reduced by limiting the maximum size of the LZ77 History window and image line, and the FIFO sizes.

Related Content

Features List

PNG Image Format Support

  • Compliant with the ISO/IEC 15948 and RFC 2083 standards 
  • All chunk types
    • Ancillary chunks are extracted and broadcasted to the system
  • All color types
    • Greyscale with or without alpha
    • Truecolor with or without alpha
    • Indexed (Palette-Based) 
  • 8-bit & 16-bit per color channel 
    • Support for under 8 bits per color channel available on request
  • All five filters: Paeth, Average, Up, Sub and None
  • Both Dynamic and Static Huffman Tables
  • Interlacing and less than 8-bit per color can be added on request

Easy to Use and Integrate 

  • Requires no programming or control from the host
  • AXI4-Stream Interfaces for image and compressed data 
  • Dedicated AXI4-Stream interface for passing image format information and ancillary chunks to the system
  • Detects, reports, and automatically recovers from the following error types: CRC or Adler mismatch, image or zlib header syntax error, and unsupported image format 
  • Optional wrappers bridge the AXI4-Stream to AXI4 memory-mapped interfaces

High-Throughput

  • Over 100 Mpixels/s in mid-range FPGAs, and several hundreds of Mpixels/s on modern ASIC technologies
  • Nominal throughput:
    • 1 pixel/cycle for 8-bit greyscale
    • 0.33 pixels/cycle for 24-bit RGB
    • 0.25 pixels/cycle for 32-bit RGBA
    • Half the number of pixels per cycle for 16 bits per channel 
  • Worst case throughput is 89% of nominal.

Deliverables

  • Verilog RTL source code or targeted FPGA netlist
  • Verilog can be made available on request 
  • Integration Test-Bench 
  • Simulation & synthesis scripts

 

Resources

- PNG homepage

- PNG Reference Library (libpng) homepage and git

- RFC 2083

PNG page in Wikipedia

Let's talk about your project and our IP solutions

Request Info