According to one embodiment of the present invention, a method for creating bit planes from frame data for a digital mirror device is disclosed including forming data elements comprising bits of equal significance from a plurality of pixel data in the frame data, the forming including using dual index direct memory address operations.
|
1. A method for converting image pixel color data organized in a frame data format into image pixel color data organized in a bit plane format, comprising:
a) loading the image pixel color data in frame data format into memory at a first memory address, the loaded data at a first location comprising a sequence of n bits of data for each of three different colors for each of p different pixels having pixel numbers;
b) using a direct memory access controller for each group of 8 pixels forming color separated pixel data by
for a first of the three colors, for pixels i=1 to i=8 recalling n bits of data stored at the first memory address of the group of 8 pixels plus 3n(i−1), storing said n bits of data at a second memory address for the group of 8 pixels plus n(i−1), thereby forming first color separated data,
for a second of the three colors, for pixels i=1 to i=8 recalling n bits of data stored at the first memory address of the group of 8 pixels plus 3n(i−1)+n, storing said n bits of data at a second memory address for the group of 8 pixels plus 8p+n(i−1), thereby forming second color separated data,
for a third of the three colors, for pixels i=1 to i=8 recalling n bits of data stored at the first memory address of the group of 8 pixels plus 3n(i−1)+2n, storing said n bits of data at a second memory address for the group of 8 pixels plus 16p+n(i−1), thereby forming third color separated data;
c) using a digital signal processing operation for each group of 8 pixels of each color of said color separated pixel data forming even/odd pixel number separated pixel data by
selecting data for even pixels by repeated performing a PACKH4 instruction on a current one of said first, second and third color separated pixel data, each PACKH4 instruction forming an output having a most significant n bits corresponding to a most significant n bits of a first 4 pixels of said current color separated pixel data, a second most significant n bits corresponding to a third most significant n bits of said first 4 pixels of said current color separated pixel data, a third most significant n bits corresponding to a most significant n bits of a second 4 pixels of said color separated pixel data, a fourth most significant n bits corresponding to a third most significant n bits of said second 4 pixels of said current color separated pixel data,
selecting data for odd pixels by repeated performing a PACKL4 instruction on said current one of said first, second and third color separated pixel data, each PACKL4 instruction forming an output having a most significant n bits corresponding to a second most significant n bits of a said first 4 pixels of said current color separated pixel data, a second most significant n bits corresponding to a fourth most significant n bits of said first 4 pixels of said current color separated pixel data, a third most significant n bits corresponding to a second significant n bits of said second 4 pixels of said current color separated pixel data, a fourth most significant n bits corresponding to a fourth most significant n bits of said second 4 pixels of said current color separated pixel data;
d) using a digital signal processing operation for each group of 8 pixels of each color of said color separated pixel data forming first shuffled pixel data by a shuffle instruction on 4n bit portions of the color separated pixel data, each shuffle instruction forming an output interleaving a bit from a most significant half of a portion of an input with a bit from a least significant half of a portion of said input;
e) using a digital signal processing operation for each group of 8 pixels of each color of said first shuffled pixel data forming second shuffled pixel data by a shuffle instruction on 4n bit portions of the first shuffled pixel data;
f) using a digital signal processing operation for each group of 8 pixels on each color of said second shuffled pixel data forming packed data by a DPACK2 instruction, each DPACK2 instruction forming a first 4n bit data word having a most significant 2n bits corresponding to a most significant 2n bits of a first 4n bit operand data word of said second shuffled pixel data and a least significant 2n bits corresponding to 2n most significant bits of a second 4n bit operand data word of said second shuffled pixel data and forming a second 4n bit data word having a most significant 2n bits corresponding to a least significant 2n bits of said first 4n bit data word of said second shuffled pixel data and a least significant 2n bits corresponding to 2n least significant bits of a second 4n bit data word of said second shuffled pixel data;
g) using a digital signal processing operation for each group of 8 pixels of each color of said packed pixel data forming third shuffled pixel data by a shuffle instruction on 4n bit portions of the packed pixel data; and
h) following execution of steps a) to g) on all groups of 8 pixels of a video frame, using a direct memory access controller for each group of 8 pixels of each color packed pixel data pixels to
i) recall n bits of data for most significant bits of the first color and store said most significant bits consecutively,
ii) recall n bits of data for next most significant bits of the first color and store said next most significant bits consecutively,
iii) repeat step ii) for each of said n bits of the first color,
iv) recall n bits of data for most significant bits of the second color and store said most significant bits consecutively,
v) recall n bits of data for next most significant bits of the second color and store said next most significant bits consecutively,
vi) repeat step ii) for each of said n bits of the second color,
vii) recall n bits of data for most significant bits of the third color and store said most significant bits consecutively,
viii) recall n bits of data for next most significant bits of the third color and store said next most significant bits consecutively, and
ix) repeat step ii) for each of said n bits of the third color.
|
This disclosure relates in general to image display systems, and more particularly to a method for creating bit planes using a digital signal processor and direct memory access operations.
A digital micromirror device (DMD), such as a Texas Instruments DLP™ micromirror device, can be used as part of an image projection system to create visual images using microscopically small mirrors laid out in a matrix on a semiconductor chip. Each mirror represents one or more pixels in a projected image. The number of mirrors corresponds to the resolution of the projected image. These mirrors can be repositioned rapidly to reflect light either through a lens or on to a heatsink. The data that is received by the DMD and that indicates the position of each of the mirrors at points in time is called a “bit plane.” For example, consider an array filled with 1000 elements of 8-bit data. Each element can represent the position of a mirror or group of mirrors at a point in time. This array can be divided into eight 1000-bit arrays, the first of which would have all of bits for bit-position 0, the next would have all of the bits for bit-position 1, etc. Each of these eight 1000-bit arrays is a bit plane.
Image data from a video source often is not in bit-plane format. Image data from a video source may be in a frame by frame format, for instance. In order for a DMD to display frame data, the frame data must be converted into a bit-plane format. This conversion is called “corner turning.” The term corner turning refers to the fact that the transformation from frame data to bit plane data resembles turning the frame data on a corner. The corner turn function can be accomplished by executing a code sequence in a DSP that converts a sequence of N bit numbers and produces a set of N bitmaps. The N bits of each number are generally stored together in a single storage unit such as a single memory location. Each bitmap contains one bit plane from the original data set.
The corner turning function can be a feature of a digital signal processor (DSP), a chip that can perform digital signal processing. In this context, the DSP formats data for the DMD by performing the “corner turn” function, which creates bit planes from frame data. A feature of some DSPs includes DSP operation codes (op-codes) that can be used to perform the corner turn function for DMD image projection systems.
Bit-plane oriented schemes usually make poor use of memory bandwidth. To read a given bit position across an entire data set, prior art schemes read the entire data set, extract the bit of interest and discard the other bits. This process must be repeated for each bit plane. These prior art schemes read about N times as much data as actually used for N-bit data elements.
Traditional solutions to planarization can only effectively process one bit-plane at a time. The straightforward implementation reads the data N times. Even if all N bit planes are extracted the first time the data is read, the extraction process usually operates only one bit at a time.
According to one embodiment of the present disclosure, a method for creating bit planes from frame data for a digital mirror device is disclosed. The method includes forming data elements comprising bits of equal significance from a plurality of pixel data in the frame data, the forming including using dual index direct memory address operations, the data elements giving the position of a mirror on a digital micromirror device.
In another embodiment, an integrated circuit comprising logic circuits operable to create bit planes from frame data, the frame data including a plurality of pixels, for a digital mirror device is disclosed. Bit planes are created from frame data by forming data elements comprising bits from the same position within each pixel, the forming including using dual index direct memory address operations.
Certain embodiments may provide a number of technical advantages. For example, a technical advantage of one embodiment may include the ability to corner turn specific frame data into an individual bit plane. This enables downstream algorithms to read only the data for the bit plane of interest. This greatly reduces the memory bandwidth bottleneck and opens many new optimization pathways. Another technical advantage of another embodiment is a reduction in the number of instructions required to perform corner turning. This would allow more memory or logic on a DSP to be dedicated to other uses.
Although specific advantages have been enumerated above, various embodiments may include all, some, or none of the enumerated advantages. Additionally, other technical advantages may become readily apparent to one of ordinary skill in the art after review of the following figures, description, and claims.
To provide a more complete understanding of the present invention and features and advantages thereof, reference is made to the following description, taken in conjunction with the accompanying figures, wherein like reference numerals represent like parts, in which:
In one embodiment, the disclosure illustrates a sequence of one or more direct memory access (DMA), shift, pack, bitwise-shuffle, and dpack operations available on a Texas Instruments TMS320C64x/C64x digital signal processor (DSP) to facilitate a corner turn operation.
This disclosure describes embodiments that convert pixels in normal format or frame data format into data in bit plane format for a DMD system. The reason frame data must be converted to bit plane data in order to be displayed by a DMD system is because the pixel data in frame format contains all of the color data for each pixel in a contiguous piece for a moment in time. Thus, with frame data, red, blue, and green color data for a pixel for a moment in time is kept together in a single word of data. However, a DMD system must display each individual color for every pixel in the display at the same time. For example, a DMD system requires the red component for each pixel in the display at the same time, the blue component for each pixel at the same time, and the green component for each pixel at the same time Therefore, a bit plane comprising the individual color for each pixel at a particular moment in time must be created from the frame data, which has all colors for each pixel gathered together. This operation is the corner turn function discussed above.
transfer block size =number of frames * number of elements per frame * element size.
The number of frames, numbers of elements per frame, and size of elements are common for both the source and destination. However, the way in which the data is represented (addressing profile/mode) is independently programmable for the source and destination devices. With double index addressing, the address increases by the element size, plus the element index value less one within a frame. Once a full frame is transferred, the address increases by the element size plus the frame index value minus 1. DMA transfers using double index addressing are described in additional detail in the TMS320C645x DSP Enhanced DMA (EDMA3) Controller User's Guide, which is incorporated herein by reference.
Addressing Mode: double index
Start Address: 1
Element Size: 1 (8-bit)
Number of elements per frame: 153,600
Element Index: 3
Number of frames: 1
Frame Index: 0
In some embodiments, DMA, pack, bitwise-shuffle, and dpack operations implemented by the DSP 20 and DMA 22 of
Altogether, the DMA, pack, bitwise-shuffle, and dpack operations described above can be combined to perform the “corner turn” function shown in
Additional detail of the corner turning algorithm of the present disclosure is described with reference to
After color separation is performed using by DMA 22, the next step in performing the corner turn function is the execution of the PACKH4 and PACKL4 operation by DSP 20 on data 1001. This step 901 is shown in
Sequence 900 through 905 can be repeated for any number of 8 pixel groups in a DMD device. If multiple numbers of 8 pixel groups are processed, the DMA operation shown at 907 can be used to aggregate each byte for each color in the order of their significance. For instance, the DMA operation will gather and aggregate the most significant bytes for red for each group of 8 pixels. Once the most significant red bytes are gathered from each 8 pixel group, the second most significant bytes for red are gathered, and so on. In the event 64 pixels are used, resulting in 8 different groups of 8 pixels, the ultimate result of the DMA operation 907 is shown in data structure 1006. The most significant bits for the color red, signified by A, are arranged in a data structure in pixel order from P63 to P0. The DMA operation will create additional data structures for bits B through X, assuming 24-bit pixel data.
With respect to performance, an embodiment of the present disclosure can have the following properties. In some embodiments, such as when the present application is implemented in the Texas Instruments TMS320C64x/C64x DSPs using the DSP operations discussed above, the effective bandwidth for the DMA can be 320 megabytes per second using 133 megahertz double data rate (DDR) memory and number of DSP cycles per pixel can be 2.56. For corner turning at HVGA resolution, or 480 by 320 pixels, the total performance can be calculated as follows. Color separation using the DMA (shown as step 900 in
Numerous other changes, substitutions, variations, alterations, and modifications may be ascertained to one skilled in the art and it is intended that the present disclosure encompass all such changes, substitutions, variations, alterations, and modifications as falling within the scope of the appended claims. For example, it will be understood that although a particular embodiment may apply the present disclosure to 24-bit pixel data, the present disclosure may be used with other sizes of pixel data.
Malina, James N., Estevez, Leonardo W., Schmer, Gunter
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
6173388, | Apr 09 1998 | ROADMAP GEO LP III, AS ADMINISTRATIVE AGENT | Directly accessing local memories of array processors for improved real-time corner turning processing |
20050038910, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Dec 10 2007 | MALINA, JAMES N | Texas Instruments Incorporated | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 020315 | /0958 | |
Dec 11 2007 | ESTEVEZ, LEONARDO W | Texas Instruments Incorporated | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 020315 | /0958 | |
Dec 13 2007 | SCHMER, GUNTER | Texas Instruments Incorporated | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 020315 | /0958 | |
Dec 20 2007 | Texas Instruments Incorporated | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
Mar 13 2019 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Mar 22 2023 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Date | Maintenance Schedule |
Oct 13 2018 | 4 years fee payment window open |
Apr 13 2019 | 6 months grace period start (w surcharge) |
Oct 13 2019 | patent expiry (for year 4) |
Oct 13 2021 | 2 years to revive unintentionally abandoned end. (for year 4) |
Oct 13 2022 | 8 years fee payment window open |
Apr 13 2023 | 6 months grace period start (w surcharge) |
Oct 13 2023 | patent expiry (for year 8) |
Oct 13 2025 | 2 years to revive unintentionally abandoned end. (for year 8) |
Oct 13 2026 | 12 years fee payment window open |
Apr 13 2027 | 6 months grace period start (w surcharge) |
Oct 13 2027 | patent expiry (for year 12) |
Oct 13 2029 | 2 years to revive unintentionally abandoned end. (for year 12) |