Claims
- 1. A checkerboard buffer, comprising:
a data source, providing data in a first order; a data destination, receiving data in a second order; at least four memory devices, each memory device having a plurality of memory locations, where data is stored in parallel to at least two memory devices and retrieved in parallel from at least two memory devices; a first data switch connected to the data source and each of the memory devices, where the first data switch controls which data is stored to which memory device; and a second data switch connected to the data destination and each of the memory devices, where the second data switch controls providing data to the data destination according to the second order.
- 2. The checkerboard buffer of claim 1, where:
the checkerboard buffer is a frame buffer for storing a frame of pixels, the frame having horizontal rows of pixels and vertical columns of pixels; the pixels are numbered from left to right, top to bottom, starting from 0 in the upper left corner; the rows are numbered from top to bottom, starting from 0 at the top; the columns are numbered from left to right, starting from 0 at the left; the data is pixel data; each pixel in the frame has corresponding pixel data; pixel data for each pixel is stored in a respective memory location in a memory device; and pixel data stored in parallel is stored at the same address in each memory device.
- 3. The checkerboard buffer of claim 2, where the pixel data is provided according to a high definition screen resolution of 1920 columns of pixels and 1080 rows of pixels per frame, and 1024 memory locations are allocated in each memory device for each row of pixels in a frame, and each half of the pixel data for a row is stored in a respective memory device.
- 4. The checkerboard buffer of claim 2, where pixel data for two pixels is stored in parallel in one clock cycle, pixel data for one pixel to one memory device and pixel data for the other pixel to another memory device.
- 5. The checkerboard buffer of claim 2, where pixel data for two pixels is retrieved in parallel in one clock cycle, pixel data for one pixel from one memory device and pixel data for the other pixel from another memory device.
- 6. The checkerboard buffer of claim 2, where, in one clock cycle, pixel data for two pixels is retrieved from two memory devices and pixel data for two pixels is stored in two memory devices.
- 7. The checkerboard buffer of claim 6, where four memory devices are divided into a first group of two memory devices and a second group of two memory devices, and the groups alternate between storing and retrieving pixel data after storing pixel data for a frame of pixels.
- 8. The checkerboard buffer of claim 1, where each memory device is an eight megabyte device.
- 9. The checkerboard buffer of claim 8, where each memory device is an SDRAM.
- 10. The checkerboard buffer of claim 8, where each memory device operates at approximately 150 MHZ.
- 11. The checkerboard buffer of claim 1, further comprising a memory controller that generates addresses for storing and retrieving pixel data.
- 12. The checkerboard buffer of claim 1, further comprising a memory controller that includes the first data switch and the second data switch, and controls providing pixel data to the memory devices and receiving pixel data from the memory devices.
- 13. The checkerboard buffer of claim 1, further comprising a four-by-four switch, where four memory devices are divided into a first group and a second group, each group including two memory devices, and further where the four-by-four switch provides data in alternation to the first group and the second group while retrieving data in alternation from the second group and the first group.
- 14. The checkerboard buffer of claim 1, where two of the memory devices are used for storing data and two of the memory devices are used for retrieving data, and the memory devices switch roles between storing and retrieving.
- 15. The checkerboard buffer of claim 14, where the memory devices switch roles based on a vertical synchronization signal.
- 16. The checkerboard buffer of claim 1, where data is retrieved at twice or more than the rate data is stored.
- 17. The checkerboard buffer of claim 16, where the data is pixel data, and pixel data is stored at a rate supporting 60 frames per second, and pixel data is retrieved at a rate supporting 120 frames per second.
- 18. The checkerboard buffer of claim 17, where pixel data is retrieved for 64 pixels for every 32 pixels of pixel data that is stored.
- 19. A checkerboard buffer, comprising:
a video source providing pixel data for pixels in a frame; a video destination; a first memory; a second memory; a third memory; a fourth memory; a first address multiplexor connected to the first memory; a second address multiplexor connected to the second memory; a third address multiplexor connected to the third memory; a fourth address multiplexor connected to the fourth memory; a four-by-four switch connected to the first memory, the second memory, the third memory, and the fourth memory, having a first data input, a second data input, a first data output and a second data output, where the four-by-four switch switches with each frame between providing pixel data to the first memory and the second memory while receiving pixel data from the third memory and the fourth memory, and receiving pixel data from the first memory and the second memory while providing pixel data to the third memory and the fourth memory; a source address bus connected to the video source, the first address multiplexor, the second address multiplexor, the third address multiplexor, and the fourth address multiplexor; a first destination address bus connected to the video destination, the first address multiplexor, and the third address multiplexor; a second destination address bus connected to the video destination, the second address multiplexor, and the fourth address multiplexor; a first data switch connected to the video source and the four-by-four switch, where the first data switch switches which data input of the four-by-four switch to provide which pixel data for two pixels with each horizontal row of pixels; and a second data switch connected to the video destination and the four-by-four switch, where the second data switch switches the order pixel data from the data outputs of the four-by-four switch is provided to the video destination with each vertical column of pixels.
- 20. The checkerboard buffer of claim 19, where the video source generates addresses for storing pixel data.
- 21. The checkerboard buffer of claim 20, where the video source generates address for storing pixel data using a counter.
- 22. The checkerboard buffer of claim 19, where the video destination generates addresses for retrieving pixel data.
- 23. The checkerboard buffer of claim 22, where the video destination generates address for storing pixel data using a row counter and a column counter.
- 24. The checkerboard buffer of claim 19, where the first data switch switches based on a horizontal synchronization signal.
- 25. The checkerboard buffer of claim 19, where the first data switch switches based on a bit in an address used to store pixel data.
- 26. The checkerboard buffer of claim 19, where the second data switch switches based on a bit in an address used to retrieve pixel data.
- 27. A checkerboard buffer, comprising:
a video source providing pixel data for pixels in a frame; a video destination; a first memory; a second memory; a third memory; a fourth memory; a four-by-four switch connected to the first memory, the second memory, the third memory, and the fourth memory, having a first data input, a second data input, a first data output and a second data output, where the four-by-four switch switches with each frame between providing pixel data to the first memory and the second memory while receiving pixel data from the third memory and the fourth memory, and receiving pixel data from the first memory and the second memory while providing pixel data to the third memory and the fourth memory; a source address line connected to the video source and the memory controller; a destination address line connected to the video destination and the memory controller; a first data switch connected to the video source and the four-by-four switch, where the first data switch switches which data input of the four-by-four switch to provide which pixel data for two pixels with each horizontal row of pixels; and a second data switch connected to the video destination and the four-by-four switch, where the second data switch switches the order pixel data from the data outputs of the four-by-four switch is provided to the video destination with each vertical column of pixels.
- 28. The checkerboard buffer of claim 27, where the memory controller generates addresses for storing and retrieving pixel data.
- 29. A checkerboard buffer, comprising:
a video source providing pixel data for pixels in a frame; a video destination; a first memory; a second memory; a third memory; a fourth memory; a four-by-four switch connected to the video source, the video destination, the first memory, the second memory, the third memory, and the fourth memory, where:
the four-by-four switch switches with each frame between providing pixel data to the first memory and the second memory while receiving pixel data from the third memory and the fourth memory, and receiving pixel data from the first memory and the second memory while providing pixel data to the third memory and the fourth memory, the four-by-four switch switches with each horizontal row of pixels which pixel data for two pixels to provide to which memory, and the four-by-four switch switches with each vertical column of pixels the order pixel data from the memories is provided to the video destination; a source address line connected to the video source and the memory controller; and a destination address line connected to the video destination and the memory controller.
- 30. The checkerboard buffer of claim 29, where the memory controller generates addresses for storing and retrieving pixel data.
- 31. A method of storing pixel data and retrieving pixel data in a checkerboard buffer, comprising:
storing pixel data for a first pixel and a second pixel at a first memory address in a first memory device and a second memory device respectively, where the first pixel and the second pixel are the first two pixels in a first horizontal row of pixels in a first frame; storing pixel data for a third pixel and a fourth pixel at a second memory address in the second memory device and the first memory device respectively, where the third pixel and the fourth pixel are the first two pixels in a second horizontal row of pixels in the first frame, and the third pixel and the fourth pixel are vertically adjacent to the first pixel and the second pixel, respectively; retrieving pixel data for a fifth pixel and a sixth pixel from a third memory address in a third memory device and from a fourth memory address in a fourth memory device respectively, where the fifth pixel and the sixth pixel are the first two pixels in a first vertical column of pixels in a second frame; and retrieving pixel data for a seventh pixel and an eighth pixel from the third memory address in the fourth memory device and from the fourth memory address in the third memory device respectively, where the seventh pixel and the eighth pixel are the first two pixels in a second vertical column of pixels in the second frame and the seventh pixel and the eighth pixel are horizontally adjacent to the fifth pixel and the sixth pixel, respectively.
- 32. The method of claim 31, where storing pixel data for the first pixel and the second pixel and retrieving pixel data for the fifth pixel and the sixth pixel occurs in parallel.
- 33. The method of claim 31, further comprising:
providing pixel data from a first output of a video source and a second output of a video source to a data switch; providing a source address to the first memory device and the second memory device, where the source address is a memory address; controlling a state of the data switch, where in a first state the data switch provides pixel data from the first output of the video source to the first memory device and pixel data from the second output of the video source to the second memory device, and in a second state the data switch provides pixel data from the first output of the video source to the second memory device and pixel data from the second output of the video source to the first memory device, and where the state switches after storing pixel data for each horizontal row of pixels; providing the pixel data from the data switch to the first memory device and the second memory device according to the state of the data switch; and storing the pixel data in the first memory device and the second memory device at the source address.
- 34. The method of claim 31, further comprising:
generating a first destination address and a second destination address, where the destination address is a memory address; providing the first destination address to the first memory device; providing the second destination address to the second memory device; controlling a state of a data switch, where in a first state the data switch provides pixel data from the first memory device to a first input of a data destination and pixel data from the second memory device to a second input of the data destination, and in a second state the data switch provides pixel data from the second memory device to the first input of the data destination and pixel data from the first memory device to the second input of the data destination, and where the state switches after retrieving pixel data for each vertical column of pixels; providing pixel data from the first memory device stored at the first destination address to the data switch; providing pixel data from the second memory device stored at the second destination address to the data switch; and providing pixel data from the data switch to the data destination according to the state of the data switch.
- 35. The method of claim 31, where:
each frame of pixels is numbered, starting from 0; for even-numbered frames, the first memory device and the second memory device store pixel data, and the third memory device and the fourth memory device retrieve pixel data; and for odd-numbered frames, the third memory device and the fourth memory device store pixel data, and the first memory device and the second memory device retrieve pixel data.
- 36. A system for storing pixel data and retrieving pixel data in a checkerboard buffer, comprising:
means for storing pixel data for a first pixel and a second pixel at a first memory address in a first memory device and a second memory device respectively, where the first pixel and the second pixel are the first two pixels in a first horizontal row of pixels in a first frame; means for storing pixel data for a third pixel and a fourth pixel at a second memory address in the second memory device and the first memory device respectively, where the third pixel and the fourth pixel are the first two pixels in a second horizontal row of pixels in the first frame, and the third pixel and the fourth pixel are vertically adjacent to the first pixel and the second pixel, respectively; means for retrieving pixel data for a fifth pixel and a sixth pixel from a third memory address in a third memory device and from a fourth memory address in a fourth memory device respectively, where the fifth pixel and the sixth pixel are the first two pixels in a first vertical column of pixels in a second frame; and means for retrieving pixel data for a seventh pixel and an eighth pixel from the third memory address in the fourth memory device and from the fourth memory address in the third memory device respectively, where the seventh pixel and the eighth pixel are the first two pixels in a second vertical column of pixels in the second frame and the seventh pixel and the eighth pixel are horizontally adjacent to the fifth pixel and the sixth pixel, respectively.
- 37. A method of storing data and retrieving data in a checkerboard buffer, comprising:
storing a first data element and a second data element at a first memory address in a first memory device and a second memory device respectively, where the first data element and the second data element are part of a first group of data elements; storing a third data element and a fourth data element at a second memory address in the second memory device and the first memory device respectively, where the third data element and the fourth data element are part of the first group of data elements; retrieving a fifth data element and a sixth data element from a third memory address in a third memory device and from a fourth memory address in a fourth memory device respectively, where the fifth data element and the sixth data element are part of a second group of data elements; and retrieving a seventh data element and an eighth data element from the third memory address in the fourth memory device and from the fourth memory address in the third memory device respectively, where the seventh data element and the eighth data element are part of the second group of data elements.
RELATED APPLICATIONS
[0001] This application claims the benefit of U.S. Provisional Application No. 60/269,784 filed Feb. 15, 2001, and of U.S. Provisional Application No. 60/269,783 filed Feb. 15, 2001, the disclosures of which are incorporated herein by reference.
[0002] This application is related to the following co-pending and commonly assigned patent applications: Attorney Docket No. 70674, Application No. ______ (filed on Jul. 17, 2001), Attorney Docket 70675, Application No. ______ (filed on Jul. 17, 2001), Attorney Docket 70676, Application No. ______ (filed on Jul. 17, 2001), the disclosures of which are incorporated herein by reference.
Provisional Applications (2)
|
Number |
Date |
Country |
|
60269784 |
Feb 2001 |
US |
|
60269783 |
Feb 2001 |
US |