LOGIN   :::   RECOVER PASS   :::   GET ACCOUNT    
Browse
  • Projects
  • Code (CVS)
  • Forums
  • News
  • Articles
  • Polls
  •  
    OpenCores
  • FAQ
  • CVS HowTo
  • Mission
  • Media
  • Tools
  • Sponsors
  • Mirrors
  • Logos
  • Contact us
  •  
    Tools
  • Search
      
  • Download Cores (CVSGet)
  •  
    More
  • Wishbone
  • Perlilog
  • EDA tools
  • OpenTech CD
  •  
    Overview :: News :: Downloads :: Tracker :: Discussions (cores)    

    Discrete Cosine Transform core: Overview

    Details

    Name: mdct
    Created: 14-Apr-2006 14:30:50
    Updated: 01-Jun-2008 20:12:19
    CVS: browse

    Other project properties

    Category :: Arithmetic core
    Language :: VHDL
    Phaze :: FPGA proven
    Development status :: Production/Stable

    Project maintainers

  • Michal Krepa
  • Statistics

  • view
  • Description

    Parallel synthesizable implementation of 2D DCT in VHDL. Currently works on 8 bit input data using 12 bit DCT coefficients (11-bit DCT output). Multiplier-less design, parallel distributed arithmetic with butterfly computation used instead. Implementation done as row-column decomposition, two 1D DCT units and transpose matrix between them (double buffered as ping-pong buffer for performance). Latency (time between first 8 bit input data is sampled and first dct data present on output) is 85 clock cycles.

    Self-veryfing testbench included which takes matlab-converted image as input. Core transforms it to DCT coefficients and behavioral IDCT testbench code reconstructs from it original image. PSNR is computed between original and reconstructed image to find out error introduced by fixed point arithmetic, for sample Lena images PSNR is 48 dB.

    Matlab scripts are included for computing floating point DCT/IDCT as reference. Scripts for converting 8 bit bitmap to txt format readable by testbench and vice versa are also available.

    Core was tested on Digilent S3 board with Spartan Xc3S1000 FPGA.

    Performance/Area

    Current Release tag: MDCT_REL_B1_7

    1. 8 bit input, 11 bit output
    2. Throughput 10 MSamples/s with 10 MHz input clock
    3. Latency 85 clock cycles
    4. 51 MHz maximum frequency on Spartan 3 1000
    5. Transforms 8x8 block of 64 samples in 64 cycles when pipeline is full
    6. 1584 slices + 2 RAMB16s on Spartan 3 1000
    7. FPGA proven


    MDCT block diagram

    Untested blocks / use with caution ;)

    * DCT Quantizer (+restoring and non-restoring unsigned/signed dividers)
    * Zig-Zag Scan
    * RLE (Run Length Encoder)

    1. RTL + automated testbench
    2. not yet tested on H/W
    3. pipelined designs

    Link: http://www.geocities.com/mikael262/files/quantizer.zip


     

     
    Copyright (c) 1999 OPENCORES.ORG. All rights reserved.