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 two memory devices, each memory device having a plurality of memory locations, where data is stored in parallel to the memory devices and retrieved in parallel from the memory devices, and where data is stored according to the first order using sequential memory locations in the 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 where pixel data for respective halves of each row of pixels is stored in 960 memory locations in each of two memory devices.
- 4. The checkerboard buffer of claim 2, where each memory device has a number of memory locations allocated for pixel data for half of each row of pixels, and the number of memory locations allocated is half of the number of pixels in one row in the frame.
- 5. The checkerboard buffer of claim 4, where the number of memory locations allocated is 960.
- 6. The checkerboard buffer of claim 5, where the first data switch switches based on a counter reaching a multiple of 960.
- 7. The checkerboard buffer of claim 2, where a counter is used to generate addresses and the counter increments by 1 for each pair of pixels stored.
- 8. The checkerboard buffer of claim 2, where the same address is provided to each of two memory devices for storing pixel data.
- 9. The checkerboard buffer of claim 2, where a first destination address is provided to a first memory device for retrieving pixel data and a second destination address is provided to a second memory device for retrieving pixel data, and the first destination address is different from the second destination address.
- 10. The checkerboard buffer of claim 9, where the first destination address is different from the second destination address by half of the number of pixels in one row of pixels in the frame.
- 11. The checkerboard buffer of claim 10, where the first destination address is different from the second destination address by 960.
- 12. The checkerboard buffer of claim 9, where the first destination address is always provided to the first memory device.
- 13. The checkerboard buffer of claim 12, where the second destination address is alternately greater or less than the first destination address, alternating with retrieving pixel data for each column of pixels.
- 14. The checkerboard buffer of claim 13, where the first destination address is different from the second destination address by half of the number of pixels in one row of pixels in the frame.
- 15. The checkerboard buffer of claim 14, where the first destination address is different from the second destination address by 960.
- 16. The checkerboard buffer of claim 12, where a counter is used to generate the first destination address, and the counter is reset at the beginning of retrieving pixel data for each column of pixels to half of the columns processed plus alternately 0 or half of the number of pixels in one row of pixels in the frame.
- 17. The checkerboard buffer of claim 16, where half of the number of pixels in one row in the frame is 960.
- 18. The checkerboard buffer of claim 16, where the counter is reset at the beginning of retrieving pixel data for each column to the sum of: (a) the quotient of dividing the number of columns processed by two, and (b) the 960 times the remainder of dividing the number of columns processed by two.
- 19. The checkerboard buffer of claim 16, where which of 0 or half the number of pixels in one row in the frame is selected by using whichever was not used in the previous column, and where the first column uses 0.
- 20. The checkerboard buffer of claim 9, where the first destination address and second destination address are provided alternately to the first memory device and the second memory device, alternating with retrieving pixel data for each column of pixels.
- 21. The checkerboard buffer of claim 20, where the first destination address is reset to 0 at the beginning of retrieving pixel data for each column of pixels.
- 22. The checkerboard buffer of claim 20, where the second destination address is greater than the first destination address by half of the number of pixels in one row of pixels in the frame.
- 23. The checkerboard buffer of claim 22, where the second destination address is greater than the first destination address by 960.
- 24. The checkerboard buffer of claim 1, further comprising a memory controller that generates addresses for storing and retrieving pixel data.
- 25. 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.
- 26. The checkerboard buffer of claim 1, where each memory device is divided into two memory sections, a first memory section for storing data and a second memory section for retrieving data.
- 27. The checkerboard buffer of claim 26, where the data is pixel data for pixels in a frame having horizontal rows and vertical columns of pixels, and where each memory device has a number of memory locations allocated for pixel data for half of each row of pixels, and the number of memory locations allocated is half of the number of pixels in one row in the frame.
- 28. The checkerboard buffer of claim 27, where the number of memory locations allocated is 960.
- 29. The checkerboard buffer of claim 26, where a block of data is stored to the first memory sections of the memory devices and a block of data is retrieved from the second memory sections in alternation, and the memory sections switch roles between storing and retrieving.
- 30. The checkerboard buffer of claim 29, where a block of data is pixel data for a block of 32 pixels.
- 31. 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 first data bus connected to the first memory; a second data bus connected to the second memory; a first address multiplexor connected to the first memory; a second address multiplexor connected to the second memory; a source address bus connected to the video source, the first address multiplexor, and the second address multiplexor; a first destination address bus connected to the video destination and the first address multiplexor; a second destination address bus connected to the video destination and the second address multiplexor; a first data switch connected to the first data bus, the second data bus, and the video source, where the first data switch is between the video source and the first memory and between the video source and the second memory, and where the first data switch switches which memory to store pixel data for two pixels with each horizontal row of pixels; and a second data switch connected to the first data bus, the second data bus, and the video destination, where the second data switch is between the video destination and the first memory and between the video destination and the second memory, and where the second data switch switches the order pixel data from each of the first memory and the second memory is provided to the video destination with each vertical column of pixels; where pixel data is stored in the first memory and the second memory according to horizontal rows of pixels in the frame, and pixel data is stored in sequential memory locations in the memory devices.
- 32. The checkerboard buffer of claim 31, where each memory has a number of memory locations allocated for pixel data for half of each row of pixels, and the number of memory locations allocated is half of the number of pixels in one row in the frame.
- 33. The checkerboard buffer of claim 32, where the number of memory locations allocated is 960.
- 34. The checkerboard buffer of claim 33, where a counter is used to generate addresses.
- 35. The checkerboard buffer of claim 34, where the counter increments by 1920 after storing pixel data for a vertical pixel pair.
- 36. The checkerboard buffer of claim 34, where the first data switch switches based on the counter reaching a multiple of 960.
- 37. The checkerboard buffer of claim 34, where the second data switch switches based on the counter exceeding 1,036,800.
- 38. The checkerboard buffer of claim 31, where the video source generates source addresses for storing pixel data and the video destination generates destination addresses for retrieving pixel data.
- 39. The checkerboard buffer of claim 31, where:
each memory is divided into two memory sections, a first memory section for storing data and a second memory section for retrieving data; a block of data is stored to the first memory sections of the memory devices and a block of data is retrieved from the second memory sections in alternation; and the memory sections switch roles between storing and retrieving with each frame of pixel data.
- 40. The checkerboard buffer of claim 31, further comprising a memory controller that generates addresses for storing and retrieving pixel data, where the memory controller includes the first address multiplexor and the second address multiplexor.
- 41. A method of storing pixel data in a checkerboard buffer, comprising:
storing pixel data for a first pair of pixels at a first memory address in a first memory device and a second memory device respectively, where the first pair of pixels are the first two pixels in a first horizontal row of pixels in a frame; and storing pixel data for a second pair of pixels at a second memory address in the second memory device and the first memory device respectively, where the second pair of pixels are the first two pixels in a second horizontal row of pixels in a frame and are vertically adjacent to the first pair of pixels; where pixel data is stored in sequential memory locations in the memory devices.
- 42. The method of claim 41, further comprising:
storing pixel data for half of the pixels in a first row in a first block of memory locations; storing pixel data for half of the pixels in a second row in a second block of memory locations; where each block of memory locations has a number of memory locations equal to half of the number of pixels in one row in the frame, and the last memory location in the first block and the first memory location in the second block are sequential memory locations.
- 43. The method of claim 42, where each block of memory locations has 960 memory locations.
- 44. The method of claim 43, further comprising:
generating addresses using a counter; and incrementing the counter by 1 after storing pixel data for a pixel pair.
- 45. The method of claim 41, further comprising:
providing pixel data for a first pixel and a second pixel from 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 for the first pixel to the first memory device and pixel data for the second pixel to the second memory device, and in a second state the data switch provides pixel data for the first pixel to the second memory device and pixel data for the second pixel 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.
- 46. A method of retrieving pixel data in a checkerboard buffer, comprising:
retrieving pixel data for a first pair of pixels from a first memory address in a first memory device and from a second memory address in a second memory device respectively, where the first pair of pixels are the first two pixels in a first vertical column of pixels in a frame; and retrieving pixel data for a second pair of pixels from the first memory address in the second memory device and from the second memory address in the first memory device respectively, where the second pair of pixels are the first two pixels in a second vertical column of pixels in a frame and are horizontally adjacent to the first pair of pixels; where pixel data is stored in sequential memory locations in the memory devices.
- 47. The method of claim 46, where each memory device has a number of memory locations allocated for pixel data for half of each row of pixels, and the number of memory locations allocated is half of the number of pixels in one row in the frame.
- 48. The method of claim 47, where the number of memory locations allocated is 960.
- 49. The method of claim 48, further comprising:
generating addresses using a counter; and incrementing the counter by 1920 after retrieving pixel data for a pixel pair.
- 50. The method of claim 46, further comprising:
generating a first destination address and a second destination address, where each 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.
- 51. 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 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 a 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 the first pixel and the third pixel from the first memory address in the first memory device and from the second memory address in the second memory device respectively, where the first pixel and the third pixel are the first two pixels in a first vertical column of pixels in a frame; and retrieving pixel data for the second pixel and the fourth pixel from the first memory address in the second memory device and from the second memory address in the first memory device respectively, where the second pixel and the fourth pixel are the first two pixels in a second vertical column of pixels in a frame and the second pixel and the fourth pixel are horizontally adjacent to the first pixel and the third pixel, respectively; where pixel data is stored in sequential memory locations in the memory devices.
- 52. The method of claim 51, further comprising:
storing pixel data for half of the pixels in a first row in a first block of memory locations; storing pixel data for half of the pixels in a second row in a second block of memory locations; where each block of memory locations has a number of memory locations equal to half of the number of pixels in one row in the frame, and the last memory location in the first block and the first memory location in the second block are sequential memory locations.
- 53. The method of claim 52, where each block of memory locations has 960 memory locations.
- 54. The method of claim 53, further comprising:
generating addresses using a source counter; and incrementing the source counter by 1 after storing pixel data for a pixel pair.
- 55. The method of claim 53, further comprising:
generating addresses using a destination counter; and incrementing the destination counter by 1920 after retrieving pixel data for a pixel pair.
- 56. The method of claim 51, 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.
- 57. The method of claim 51, 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.
- 58. The method of claim 51, where:
each memory device is divided into two memory sections, a first memory section for storing data and a second memory section for retrieving data; a block of data is stored to the first memory sections of the memory devices and a block of data is retrieved from the second memory sections in alternation; and the memory sections switch roles between storing and retrieving with each frame of pixel data.
- 59. 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 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 a 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 the first pixel and the third pixel from the first memory address in the first memory device and from the second memory address in the second memory device respectively, where the first pixel and the third pixel are the first two pixels in a first vertical column of pixels in a frame; and means for retrieving pixel data for the second pixel and the fourth pixel from the first memory address in the second memory device and from the second memory address in the first memory device respectively, where the second pixel and the fourth pixel are the first two pixels in a second vertical column of pixels in a frame and the second pixel and the fourth pixel are horizontally adjacent to the first pixel and the third pixel, respectively; where pixel data is stored in sequential memory locations in the memory devices.
- 60. 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; 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; retrieving the first data element and the third data element from the first memory address in the first memory device and from the second memory address in the second memory device respectively; and retrieving the second data element and the fourth data element from the first memory address in the second memory device and from the second memory address in the first memory device respectively; where data is stored in sequential memory locations in the memory devices.
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 70673, 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 |