1. Field of the Invention
The present invention relates in general to controlling an electronic display, and more specifically to a method and apparatus for processing temporal and spatial overlapping updates for an electronic display.
2. Description of the Related Art
Electronic visual displays have many forms including active displays which generate light and passive displays which modulate light. Passive displays generally consume less power since they rely upon light reflected from the display to convey visual information rather than light generated by the display, such as a back light or the like. Certain passive displays consume even less power since they are bistable in which they remain in a stable state without additional power input. An electrophoretic display, for example, is a low power passive bistable display. An electrophoretic display is a form of electronic paper (e-paper) or electronic ink display technology which appears similar to ink on paper, and which is commonly used for e-book readers (or e-readers) or the like, such as the Amazon Kindle, the Barnes & Noble Nook, and the Sony Librie, among others. An electrophoretic display utilizes less energy than conventional active displays since it does not have a back light but instead relies upon reflective light for viewing. Electrophoretic displays utilize active-matrix thin-film transistors (TFTs) which are scanned to drive display updates. Once updated, the display remains stable (bistable) so that additional scans are not necessary resulting in additional energy savings. During an update, a waveform is output to the display panel to change one or more pixels from one value to another. Each waveform provided to each pixel being updated spans multiple frame scans, so that the waveform is effectively divided into multiple waveform values in which each value is output to the panel during each frame scan. The present disclosure is illustrated using electrophoretic displays but is applicable to other types of electronic displays.
Each update has to be completed once initiated to avoid an invalid display value, or worse, possible damage or improper operation of the display panel. In certain conventional configurations, a new update is delayed until an existing update is completed. In other conventional configurations, a new update may occur simultaneously with an existing update as long as the regions do not overlap. Any overlapping pixel (i.e., same pixel value belonging to both update regions) caused a conflict so that the current update had to be completed before a new update was initiated.
In order to meet the needs of newer user-interfaces, it is desired that applications using electronic displays support concurrent updates that overlap both spatially and temporally.
The benefits, features, and advantages of the present invention will become better understood with regard to the following description, and accompanying drawings where:
The following description is presented to enable one of ordinary skill in the art to make and use the present invention as provided within the context of a particular application and its requirements. Various modifications to the preferred embodiment will, however, be apparent to one skilled in the art, and the general principles defined herein may be applied to other embodiments. Therefore, the present invention is not intended to be limited to the particular embodiments shown and described herein, but is to be accorded the widest scope consistent with the principles and novel features herein disclosed.
The memory 105 incorporates any combination of random access memory (RAM) or read-only memory (ROM) or the like. The RAM portion may include any type of dynamic RAM (DRAM) or synchronous DRAM (SDRAM), such as any type or version of single date rate (SDR) SDRAM or double date rate (DDR) SDRAM and the like. The memory 105 stores an update buffer 127 and a working buffer (WB) 129. The update buffer 127 stores future pixel values to be displayed on the EPD panel 101 and the working buffer 129 stores WB pixel data which includes information representing the pixel values currently being displayed on the EPD panel 101 or currently being updated as further described herein. The memory 105 may also store software and/or application programs and the like for execution by a central processing unit (CPU) 111 as further described herein. The memory interface 104, which is coupled to or otherwise implemented as a bus or bus system or the like, enables data and information to be transferred between the memory 105 an the control system 103.
In the illustrated embodiment, the control system 103 is configured as a system on a chip (SOC) device which includes an EPD controller 109, the CPU 111 and various other system modules or devices 113. The other system 113, for example, may include any one or more of communication (COMM) functions, DISPLAY functions, peripheral (PERIPH) functions, temperature (TEMP) functions, etc. The COMM functions, for example, may include controllers and the like to implement one or more of various communication interfaces, such as universal serial bus (USB) interfaces, Bluetooth interfaces, mobile communication interfaces (e.g., 3G or 3rd Generation, 4G or 4th Generation, CDMA, etc.), among others. The DISPLAY functions may include controllers and the like for different types of electronic display devices that may be used in the system, such as a liquid crystal display (LCD) or the like. The PERIPH functions are used to interface any other type of peripheral or input/output (I/O) devices, such as one or more buttons or button interfaces, a keypad, a touchpad interface, etc. The TEMP function may be used for interfacing one or more temperature sensors or the like. Other functions are contemplated, such as encryption/decryption functions, graphic accelerators, memory card interfaces (flash cards the like), etc. Although the control system 103 is shown as a SOC device including the CPU 111 embedded within a common integrated circuit (IC), alternative configurations are contemplated, such as discrete IC devices or blocks or the like.
The EPD controller 109 includes the control and interface blocks, modules and functions for interfacing and controlling the EPD panel 101 according to instructions and programming by the CPU 111. As shown, EPD controller 109 includes a pixel processor 117, an update frame controller 119, a panel timing controller 121, a working buffer pixel fetch block 123, and a pixel first-in, first out (FIFO) 125. The memory interface 104 enables communication between various function blocks within the control system 103, such as between the CPU 111, the other system devices 113, and modules within the EPD controller 109, such as the pixel processor 117, the update frame controller 119 and the panel timing controller 121. The CPU 111 executes application programs which ultimately control or otherwise determine what is displayed on EPD panel 101. The CPU 111 generates new pixel values and stores them into the update buffer 127. The pixel processor 117 retrieves new pixel values from the update buffer via a data interface 131 and retrieves corresponding pixel value information from the working buffer 129 via another data interface 133. The data interfaces 131 and 133 are shown as separate interfaces for purposes of illustration, where it is understood that the memory interface 104 may be used to transfer information between the memory 105 and the EPD controller 109. The WB pixel data retrieved from the working buffer 129 corresponds with the pixel locations to be updated by the new pixel values in the update buffer 127. In general, the pixel processor 117 updates the WB pixel data in the working buffer 129 based on the new pixel values from the update buffer 127.
As described herein, an update is defined within a rectangular-shaped area or region which encompasses a subset of the pixels up to all of the pixels of the display. Multiple updates may occur simultaneously (temporal overlap) and the update regions may spatially overlap. Although each pixel within an update region may be changed, one or more pixels within the update region may remain unmodified. When any of the new pixel values for a new update region are within a region already being updated by a prior update process, then an overlap condition occurs. An update process of a pixel value should not be interrupted until completed to avoid invalid results, improper operation, or potential malfunction or even damage to the EPD panel 101. The pixel processor 117 determines whether any pixel collisions occur within the overlap region, in which a pixel collision means that a new update might otherwise interfere with or interrupt a current update of the pixel. In the event of a pixel collision, the pixel processor 117 prevents the interruption and requests a collision correction to be sent to the CPU 111 to resolve the conflict with one or more future updates. In one embodiment, the collision correction request is in the form of an interrupt to the CPU 111, which processes the interrupt to identify the collision conflict and to formulate a new update to correct the conflicting pixels.
The panel timing controller 121 includes a lookup table (LUT) memory 1005 (
Since X2>X3 and Y2>Y3 as shown, the regions A and B spatially overlap. An overlap region O is shown defined between coordinates X3, Y3 and X2, Y2. It is assumed that the update for region A is received first and that the update for region B is received after the update for region A. Although the update regions spatially overlap, if the “current” update for region A is completed before the “new” update for region B is received, then the new update for region B does not temporally overlap the current update for region A. Thus, the update for region B may proceed without conflict. If, however, the update for region B begins before the update for region A is completed (while region A is still being updated), then the two update regions A and B overlap both spatially and temporally. In conventional configurations, a new update (e.g., for region B) which both spatially and temporally overlaps a current update (e.g., for region A) was not allowed to be initiated until the current update was completed. As described herein, the working pixel data within the overlap region O are evaluated on a pixel-by-pixel basis to determine whether any of the overlapping pixel values may be updated. The working pixel data in the non-overlapping portion of region B (including those pixels within region B but not included within region A) may start updating concurrently with the update for region A as further described herein.
Each pixel has a predetermined number Y of gray levels, such as represented by pixel values ranging from G0 for a black pixel to Gy-1 for a white pixel. In one embodiment, for example, Y=16 gray levels are defined, or G0, G1, . . . , G15. In one embodiment as illustrated in simplified format at 409, the WB pixel data retrieved by the pixel processor 117 for each pixel to be updated includes a LUT number (LUT#), a beginning value GBEG, and an end value GEND. LUT# identifies a LUT to which the pixel was previously assigned for a prior update which has completed, or to which the pixel is currently assigned if the pixel is involved in an update which is currently processing. GBEG identifies an initial gray level of the pixel and GEND identifies the ending gray level to which the pixel was changed (for a completed update) or to which the pixel is currently being changed (for a currently active update). The LUT assigned to the update is programmed with waveform data with multiple waveform values in which each waveform value is accessed using the pixel values of the WB pixel data. In one embodiment, for example, the pixel values GBEG and GEND are collectively used as an index value to access the corresponding waveform value in the LUT identified by LUT# for the current frame scan. The pixel is changed over multiple frame scans in which the LUT is reprogrammed with new waveform data prior to each frame scan. The same pixel values are used for each access for each frame scan, yet a new and potentially different waveform value is retrieved from the LUT. In this manner, the LUT outputs a series of consecutive waveform values over multiple frame scans to change the gray level of a pixel from GBEG to GEND.
The consecutive set of waveform values over multiple frame scans is converted to the appropriate waveform applied to the pixel cell over time. As previously noted, it is not desired to interrupt the update process so that the process should be completed once started. If GEND=GBEG, then the LUT (or the panel timing controller 121) outputs a “default” value which does not change the pixel. The number of frame scans to update a pixel depends upon the mode or update resolution type. A fast update for low resolution for black and white (B&W, or bi-state) uses a fewer number of frame scans (e.g., 10 frames) for achieving the update. A slow update for a medium resolution with a mid-range number of gray levels (e.g., 4 gray levels) uses a higher number of frame scans (e.g., 30 frames) to complete the update. A very slow update for a high or maximum resolution with a high number of gray levels (e.g., 16 gray levels) uses an even higher number of frame scans (e.g., 50 frames) to complete the update.
In the illustrated embodiment, the collision detection and construction block 405 includes an overlap detector 413 which determines an OVERLAP condition. The OVERLAP condition is true when at least one pixel within a new update region overlaps with a currently active update region thus forming an overlap region with at least one overlap pixel. The collision detection and construction block 405 further includes a collision detector 415 which determines, upon detection of the OVERLAP condition, whether the new update collides with the current update for any pixel within the overlap region. In general, a collision occurs when an overlap pixel (pixel in the overlap region) will not be correctly updated to the new pixel value provided by the new update after completion of the current update and the new update. This may occur, for example, when the pixel is part of a current update that cannot be interrupted by the new update. In the event of a collision, the collision detector 415 issues a correction request so that any overlapping and colliding pixels may be properly corrected by a subsequent update. In one embodiment, the correction request is in the form of an interrupt to the CPU 111, which issues the subsequent update. The collision detection and construction block 405 further includes a construction processor 417 which updates the WB pixel data for non-overlapping and/or non-colliding pixel according to each new update. Each new update includes a new pixel value GNEW for each pixel in the new update region to be updated, and a new LUT number LUTNEW identifies one of the LUTs within the LUT memory 1005 which is assigned to the new update. In particular, the LUT# is updated with LUTNEW indicating the assigned LUT for the new update, the GEND value replaces GBEG (since GEND represents the current value of the pixel from a prior update), and GEND value is replaced with the GNEW value for the pixel. The updated WB pixel data is then written back to the working buffer 129 via a WB pixel writeback block 411.
At next block 505, the overlap detector 413 of the collision detection and construction block 405 determines whether there is a pixel overlap.
Referring back to block 505 of
If instead OVERLAP is true as determined at block 505, then operation proceeds instead to block 511 in which it is queried by the collision detector 415 whether the GNEW value for the pixel from the update buffer 127 is equal to the GEND value from the working buffer 129. If GNEW=GEND, then operation proceeds to block 513 in which it is determined that a new pixel construction is not performed for the pixel and there is no collision. In this case, although the pixel is active and within an overlapping region of at least two updates, there is no collision since the current value of the pixel is the same as the new value so that the pixel value would not be modified by the new update. After block 513 operation proceeds to block 509 to determine whether there are any additional pixels in the new update region. If instead GNEW does not equal GEND as determined at block 511 by the collision detector 415, then operation proceeds instead to block 515 in which the pixel is not further constructed and the COLLISION flag is set to true. In this case, if the pixel is being updated from GBEG to GEND, then modification of GEND to GNEW potentially interrupts the current update process which may cause an invalid result, or worse, may cause failure or even damage to the EPD panel 101. Since it is desired that the pixel value subsequently be changed to GNEW in accordance with the new update, the new update does not totally complete so that the COLLISION flag is set to request a correction. Operation then returns to block 509 to query whether the pixel is the last in the new update region.
When the pixel is the last in the new update region as determined at block 509, operation proceeds to block 517 to query the COLLISION flag. If the COLLISION flag is false, the operation is completed. If the COLLISION flag is true, then at least one pixel collision occurred in which a pixel location within an overlapping area of multiple updates becomes invalid since not set to the latest value GNEW, and operation proceeds instead to block 519. At block 519, a correction request is issued to correct pixel values that were not properly updated to the corresponding GNEW value during the new update, and operation is completed. The correction request is ultimately handled by the CPU 111, which issues a subsequent correction update to correct colliding pixel values that are not updated to the GNEW value. In one embodiment, the correction request is implemented as an interrupt to the CPU 111. The interrupt vector may include an identification of the colliding region or the conflicting LUT. In one embodiment, since the CPU 111 issues each new update for corresponding update regions, it may already have sufficient information to formulate the correction update to correct the colliding pixels. For example, the CPU 111 may already determine that the new update conflicted with one or more prior updates. The CPU 111 may re-issue the same update with the same update values for the same region or just for the overlapping region as the correction update after the one or more underlying updates that were collided with are completed.
With reference to
It is appreciated that updates which temporally overlap but which do not spatially overlap may be processed concurrently without conflict. When updates overlap both temporally and spatially, the updates may proceed concurrently for the non-overlapping region. In the overlap region, if each new value for the new update is equal to the next value of the current update, then there are no pixel collisions and the pixel values are updated to the correct values. If there is at least one pixel collision within the overlap region, then a collision is indicated and a correction request is issued to invoke a subsequent correction update to make the pixel corrections for the colliding pixels.
Operation of the pixel processor 117 according to the flowchart of
Referring back to block 1109, if the WB pixel LUT is active for the pixel, then operation proceeds instead to block 1115 to query whether the current pixel is within the LUT defined region as indicated by the region and LUT comparator 1003. If not, then operation proceeds to block 1111 in which the default value is provided. Otherwise, if the pixel is within the defined region of the active LUT, then operation advances to block 1117 in which the waveform value corresponding to the pixel information is retrieved from the LUT, and then the waveform value is driven to the EPD panel 101 at next block 1119 for updating the corresponding pixel. Operation then loops back to block 1113.
A display controller according to one embodiment includes a pixel processor which processes working pixel data for each pixel of a frame, where the pixel processor includes an overlap detector, a collision detector, and a construction processor. The overlap detector detects an overlap region when any of at least one new pixel value of a new update region is within a current update region of a current update of the frame. The collision detector issues a correction request when at least one pixel within the overlap region has a begin pixel value prior to the current update that is different from an end pixel value provided by the current update, and when a new pixel value provided by the new update for at least one pixel is different from the end pixel value. The construction processor updates the corresponding working pixel data using a corresponding new pixel value for each pixel that is within the new update region and outside of the current update region.
The collision detector may issue the collision correction when the new pixel value is different from the end pixel value for at least one pixel within the overlap region even when the end pixel value is the same as the begin pixel value. Alternatively, when the new pixel value is different from the end pixel value and when the begin pixel value is the same as the end pixel value for at least one overlap pixel within the overlap region, the construction processor may update the working pixel data of each overlap pixel by reassigning it to the new update including replacing the end pixel value of the overlap pixel with the new pixel value. The collision detector may not issue a correction request when, for each overlap pixel within the overlap region, a corresponding new pixel value provided by the new update is the same as a corresponding end pixel value or when the overlap pixel is reassigned to the new update. Alternatively, the collision detector may not issue the correction request when a corresponding new pixel value provided by the new update is the same as a corresponding end pixel value for each overlap pixel within the overlap region.
The display controller may include a display processing system which converts the working pixel data to waveform information during sequential scan updates of the frame. The conversion includes converting working pixel data for the new update region concurrently with converting working pixel data for the current update region for at least one scan update of the frame when the overlap region is detected.
A display system according to one embodiment includes buffers, a processing unit, and a display controller. A working buffer stores working pixel data for each pixel of a frame. The processing unit stores at least one update pixel value in an update buffer for a new update region of the frame. The display controller includes at least one fetch block, an overlap detector, a collision detector, and a construction processor. The fetch block retrieves each new pixel value of the new update region from the update buffer for each new update, and retrieves corresponding working pixel data from the working buffer. The overlap detector detects an overlap region when any pixel of the new update region is within a current update region of a current update of the frame. The collision detector issues an interrupt to the processing unit when the overlap region is detected and when at least one pixel within the overlap region is being updated by the current update to an end pixel value which is different from a corresponding new pixel value provided by the new update for the at least one pixel within the overlap region. The construction processor updates the corresponding working pixel data in the working buffer using a corresponding new pixel value from the update buffer for each pixel that is within the new update region and outside of the current update region.
The display system may include a display processing system which converts the working pixel data from the working buffer to waveform information during sequential scan updates of the frame. Such conversion may include converting working pixel data for the new update region concurrently with converting working pixel data for the current update region for at least one scan update of the frame when the overlap region is detected.
A method of processing pixel information for a display panel according to one embodiment includes detecting a new update for a new update region of a frame of pixels, receiving a new value for each of at least one pixel within the new update region and receiving corresponding working pixel data for the at least one pixel, detecting an overlap region when the new update temporally overlaps at least one current update and when the new update region spatially overlaps at least one current update region of the at least one current update, when the overlap region is detected, for each pixel of the new update region that is not within the overlap region, updating the corresponding working pixel data before completion of the at least one current update, and for each overlap pixel within the overlap region, detecting a collision when the overlap pixel is being updated by the at least one current update to an end value which is different from a new value of the new update, and when a collision is detected, issuing a correction request to correct at least one pixel within the overlap region.
The method may include detecting a collision whenever the end value is different from the new value regardless of whether the overlap pixel is being updated by the at least one current update. The method may include reassigning an overlap pixel to the new update by replacing an end value within corresponding working pixel data with a corresponding new value when the corresponding new value is different from the end value and when the overlap pixel is not being updated by the at least one current update. The method may include detecting a collision for an overlap pixel only when the overlap pixel is being updated by the at least one current update and is not reassigned to the new update. The method may include, for each new update, converting working pixel data for each pixel of the frame to waveform information during sequential scan updates of the frame until the new update is completed, and when the overlap region is detected, concurrently converting working pixel data updated by the new update and converting working pixel data updated by the at least one current update for at least one scan update of the frame.
Although the present invention has been described in considerable detail with reference to certain preferred versions thereof, other versions and variations are possible and contemplated. Those skilled in the art should appreciate that they can readily use the disclosed conception and specific embodiments as a basis for designing or modifying other structures for carrying out the same purposes of the present invention without departing from the spirit and scope of the invention as defined by the appended claims.