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 blocks of memory locations, each block having a number of memory locations equal to a power of 2; 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 1024 memory locations in each of two memory devices.
- 4. The checkerboard buffer of claim 2, where each block of memory locations stores pixel data for half of one row of pixels, and each block of memory locations has a number of memory locations that is a power of 2 greater than half of the number of pixels in one row in the frame.
- 5. The checkerboard buffer of claim 2, where each block of memory locations stores pixel data for half of one row of pixels, and each block of memory locations has 1024 memory locations.
- 6. The checkerboard buffer of claim 5, where the first data switch switches with storing pixel data for each row, based on an address bit.
- 7. The checkerboard buffer of claim 5, where the first data switch switches based on a counter reaching a multiple of 1024.
- 8. The checkerboard buffer of claim 5, where the second data switch switches with retrieving pixel data for each column, based on an address bit.
- 9. The checkerboard buffer of claim 5, where a row counter and a column counter are used to generate addresses.
- 10. The checkerboard buffer of claim 9, where each address has 21 bits.
- 11. The checkerboard buffer of claim 9, where the row counter and the column counter count pixel pairs.
- 12. The checkerboard buffer of claim 9, where values of the row counter and the column counter are merged to form a first destination address and a second destination address.
- 13. The checkerboard buffer of claim 12, where the second destination address uses the complement of the lowest order bit of the row counter.
- 14. The checkerboard buffer of claim 12, where the lowest order bit of the column counter changes with retrieving pixel data for each column.
- 15. The checkerboard buffer of claim 14, where the lowest order bit of the column counter controls the order in which video destination receives pixel data from the memory devices.
- 16. The checkerboard buffer of claim 15, where the second data switch switches based on the lowest order bit of the column counter.
- 17. The checkerboard buffer of claim 14, where the lowest order bit of the column counter controls which destination address to provide to which memory device.
- 18. The checkerboard buffer of claim 14, where the row counter is reset to the value of the lowest order bit of the column counter at the beginning of retrieving pixel data for a column of pixels.
- 19. The checkerboard buffer of claim 5, where the same address is provided to each of two memory devices for storing pixel data.
- 20. The checkerboard buffer of claim 5, 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 by 1024.
- 21. The checkerboard buffer of claim 20, where the first destination address is always provided to the first memory device.
- 22. The checkerboard buffer of claim 21, 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.
- 23. The checkerboard buffer of claim 20, 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.
- 24. The checkerboard buffer of claim 23, where the first destination address is reset to 0 at the beginning of retrieving pixel data for each column of pixels.
- 25. The checkerboard buffer of claim 23, where the second destination address is greater than the first destination address.
- 26. The checkerboard buffer of claim 1, further comprising a memory controller that generates addresses for storing and retrieving pixel data.
- 27. 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.
- 28. 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.
- 29. The checkerboard buffer of claim 28, 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 1024 memory locations allocated for pixel data for half of each row of pixels.
- 30. The checkerboard buffer of claim 29, where the number of memory locations in a memory section is at least 1,105,856.
- 31. The checkerboard buffer of claim 28, 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.
- 32. The checkerboard buffer of claim 31, where a block of data is pixel data for a block of 32 pixels.
- 33. 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 blocks of memory locations, each block having a number of memory locations equal to a power of 2.
- 34. The checkerboard buffer of claim 33, where each block of memory locations stores pixel data for half of one row of pixels, and each block of memory locations has 1024 memory locations.
- 35. The checkerboard buffer of claim 34, where addresses for storing pixel data are generated using a 21-bit counter.
- 36. The checkerboard buffer of claim 35, where the first data switch switches based on the eleventh bit of the 21-bit counter.
- 37. The checkerboard buffer of claim 34, where addresses for retrieving pixel data are generated using an 11-bit row counter and an 11-bit column counter.
- 38. The checkerboard buffer of claim 37, where the second data switch switches based on the lowest order bit of the 11-bit column counter.
- 39. The checkerboard buffer of claim 33, where the video source generates source addresses for storing pixel data and the video destination generates destination addresses for retrieving pixel data.
- 40. The checkerboard buffer of claim 33, 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.
- 41. The checkerboard buffer of claim 33, 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.
- 42. 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 the first memory and the second memory according to horizontal rows of pixels in the frame, and pixel data is stored in blocks of memory locations, each block having a number of memory locations equal to a power of 2.
- 43. The method of claim 42, where each block of memory locations stores pixel data for half of one row of pixels, and each block of memory locations has 1024 memory locations.
- 44. The method of claim 43, further comprising generating addresses for storing pixel data using a 21-bit counter.
- 45. The method of claim 44, further comprising:
providing a counter value to an address bus, where the address bus is connected to the first memory device and the second memory device; incrementing the counter by 1; comparing the counter to a maximum frame value to check for the end of the frame; if the counter has not reached the end of the frame, comparing the counter to a maximum row value to check for the end of a row in the frame; and if the counter has reached the end of the row, incrementing the counter by 64.
- 46. The method of claim 42, 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.
- 47. 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 the first memory and the second memory according to horizontal rows of pixels in the frame, and pixel data is stored in blocks of memory locations, each block having a number of memory locations equal to a power of 2.
- 48. The method of claim 47, where each block of memory locations stores pixel data for half of one row of pixels, and each block of memory locations has 1024 memory locations.
- 49. The method of claim 48, further comprising generating addresses for retrieving pixel data using an 11-bit row counter and an 11-bit column counter.
- 50. The method of claim 49, where values of the row counter and the column counter are merged to form a first destination address and a second destination address.
- 51. The method of claim 49, further comprising:
providing the first memory address and the second memory address to a first address bus and a second address bus, respectively, where the first address bus and the second address bus are connected to the first memory device and the second memory device, respectively; incrementing the row counter by 2; comparing the row counter to a maximum row value to check for the end of a column in the frame; if the row counter has not reached the end of the column, incrementing the column counter by 1 and comparing the column counter to a maximum column value to check for the end of the frame; and if the column counter has not reached the end of the frame, resetting the row counter.
- 52. The method of claim 51, where the row counter is reset to the value of the lowest order bit of the column counter.
- 53. The method of claim 47, 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.
- 54. 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 the first memory and the second memory according to horizontal rows of pixels in the frame, and pixel data is stored in blocks of memory locations, each block having a number of memory locations equal to a power of 2.
- 55. The method of claim 54, where each block of memory locations stores pixel data for half of one row of pixels, and each block of memory locations has 1024 memory locations.
- 56. The method of claim 55, further comprising generating addresses for storing pixel data using a 21-bit counter.
- 57. The method of claim 55, further comprising:
providing a counter value to an address bus, where the address bus is connected to the first memory device and the second memory device; incrementing the counter by 1; comparing the counter to a maximum frame value to check for the end of the frame; if the counter has not reached the end of the frame, comparing the counter to a maximum row value to check for the end of a row in the frame; and if the counter has reached the end of the row, incrementing the counter by 64.
- 58. The method of claim 55, further comprising generating addresses for retrieving pixel data using an 11-bit row counter and an 11-bit column counter.
- 59. The method of claim 58, where values of the row counter and the column counter are merged to form a first destination address and a second destination address.
- 60. The method of claim 58, further comprising:
providing the first memory address and the second memory address to a first address bus and a second address bus, respectively, where the first address bus and the second address bus are connected to the first memory device and the second memory device, respectively; incrementing the row counter by 2; comparing the row counter to a maximum row value to check for the end of a column in the frame; if the row counter has not reached the end of the column, incrementing the column counter by 1 and comparing the column counter to a maximum column value to check for the end of the frame; and if the column counter has not reached the end of the frame, resetting the row counter.
- 61. The method of claim 60, where the row counter is reset to the value of the lowest order bit of the column counter.
- 62. The method of claim 54, 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.
- 63. The method of claim 54, 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.
- 64. The method of claim 54, 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.
- 65. 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 the first memory and the second memory according to horizontal rows of pixels in the frame, and pixel data is stored in blocks of memory locations, each block having a number of memory locations equal to a power of 2.
- 66. 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 the first memory and the second memory in blocks of memory locations, each block having a number of memory locations equal to a power of 2.
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 application Nos.: Attorney Docket 70673, Application No. ______ (filed on Jul. 17, 2001), Attorney Docket 70674, 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 |