Multi-media integrated circuits (ICs) generally need to transpose a large amount of 2D data. High definition (HD) JPEG pictures taken from a camera need to be rotated before being displayed by a DVD recorder/player. Optical discs, such as Blue-Ray or HD-DVD, have 2D error correction for a data stream. Data is stored in memory in an order defined by the bitstream. However, the data needs to be accessed in column order.
Conventional approaches tend to either use embedded processors to move the data around or to implement complicated dedicated hardware to rotate the data in a matrix. The software approach implemented in an embedded processor is slow. The amount of dedicated hardware tends to grow exponentially with the size of the data in the matrix.
There are several applications which need to transpose a 2D data matrix at a high speed. One such application includes image rotation. With image rotation, millions of pixels of a still image are captured by a camera. If an image is taken with the camera rotated 90 degrees, then the image needs to be rotated before being shown on a display monitor. The rotation of an image is normally done by a DVD player/recorder. Such a rotation has to be completed within a reasonable time, often less than 1 second. As the resolution of cameras increases, additional dedicated hardware is needed to meet predetermined performance goals.
Another conventional approach involves optical data error correction. Such an approach receives data from the optical disc, such as blue ray or an HD DVD system. The received data needs error correction (ECC) to be performed. Part of the ECC process involves mathematical operations based on data columns, as opposed to an operation which is based on data stream order. Graphic data manipulation includes graphic data which needs a rotation operation.
In previous generations of DVD systems, the rotation operation was performed by an embedded processor where data is rotated by software. In next generation DVD systems, a hardware rotation engine is needed to support a high speed rotation for a large amount of data on the fly. However, rotation data needs to read data from the same column position. In older generation chips, multi-port random access memories (RAMs) or registers with hardwired multiplexers were used. The use of multi-port RAMs or registers with hardwired multiplexers is not practical as the size of a data matrix continues to increase, often exponentially.
It would be desirable to provide a method and/or apparatus for an efficient and/or high speed two dimensional data transpose engine for a SOC in a manner that may be implemented in a low cost and/or reduced size integrated circuit.