This application relates generally to bi-stable displays, such as electrophoretic displays, and more particularly to a method for providing high quality image updates in bi-stable displays with fast update times and limited memory usage.
Bi-stable displays, such as electrophoretic displays (EPDs), typically operate to produce an image using a field or array of pixels, wherein each pixel has a reflection state that is either black (a least reflective state) or white (a most reflective state) or some reflective state in-between these two extremes (a gray level state). Bi-stable displays having pixel elements that can take on more than two states (gray levels) typically use a number of reflective states that is a power of two, e.g., four, eight, sixteen, etc. During operation, the pixel elements of bi-stable displays, such as EPDs, are driven to a new reflection state by the combination of the voltage applied to a set of transistor electrodes associated with the pixel elements and time. In particular, the reflection state of a pixel element of an EPD is not able to change instantaneously because the reflection state of the pixel element is based on the position of a reflective material (e.g., a microcapsule) within an electromagnetic field or between two electrically charged electrodes, which position changes relatively slowly (non-instantaneously) over time in response to a change in a voltage differential being applied between the two electrodes. Thus, the reflective state (DR) of an EPD pixel element is a function of the voltage (V) between the pixel electrodes and the derivative of time (Dt) in the form of DR=V×Dt.
In order to refresh an EPD or other bi-stable display from a first image to a second image, each of the pixel elements of the display is driven from a first reflection state (associated with the first image) to a second reflection state (associated with the second image) over an image refresh time, also referred to as an image refresh cycle, typically on the order of 600 milliseconds. Each image refresh cycle is made up of a number of (e.g., 30) frame times or frame cycles (also called frame scans) during which each pixel element of the display is or can be provided a new voltage level. More particularly, the frame time is a measure of the amount of time that it takes to change the voltage at every pixel element of the display, and is thus the time it takes to scan all of the rows (i.e., gates) of the display once. The frame time for typical EPDs is 20 ms (corresponding to a scan rate of 50 Hz).
Generally speaking, during each frame cycle, a display driver turns each row of pixel elements of a display on, in sequence, by providing (via a gate line associated with a row of pixel elements) a turn-on voltage to the gate electrodes of the transistors associated the pixel elements in that row. At this time, the display driver also sets the voltage at the source electrode of each of the transistors within the row of pixel elements to a new voltage state via a set of source lines. The display driver cycles through all of the rows of pixel elements once in series during each frame scan thereby providing a controlled voltage to each pixel element. When an image refresh cycle is made up of 30 frame cycles, the voltage at each pixel element can be changed 30 times over the course of driving the pixel element from one reflection state to another reflection state within a single image refresh cycle.
The manner in which the voltage state or voltage level provided at the source electrode of each pixel element is changed between the different scans within an image refresh cycle is based on a recipe that defines the voltage levels to be provided to a pixel element at each of the different frame times (scans) within an image refresh cycle to thereby effectively cause that pixel element to go from one particular reflection state (associated with the old image) to another particular reflection state (associated with a new image). Thus, the recipe specifies or determines the voltages that are to be provided to a pixel element transistor during successive frame times or scans of an image refresh cycle such that a different average or effective voltage (V) is or can be supplied via the source electrode of the transistor of each pixel element in the display panel over the number of scans of the image refresh cycle. The recipe is configured to assure that the pixel element is correctly driven to a new reflection state associated with the average voltage. Typically, in most driving circuits, only three different voltages are allowed on the source electrodes of the pixel transistors, e.g., −15V (white), 0V (stay) and +15V (black). As a result, the recipe is used to create an average voltage, over time, at the transistor output that matches the desired gray level. This voltage source limitation is made to simplify the column (i.e., source) driver integrated circuits (ICs) as it can be difficult to design a driving IC that is able to provide a significant number of different voltage levels to the source electrodes of the pixel transistors. However, some bi-stable stable displays, such as EPDs, may have 4, 8, 16, etc., reflection states, and thus need an increased number of voltage states, which, as noted above, are created by the voltage averaging action of the recipe.
In order to implement the image driving methodology discussed above, EPDs typically use a double image buffer on the driving IC or chip, to update the image on the display. Such a double image buffer includes a first image buffer that stores voltage values or pointers for the voltage values (e.g., gray level, voltage level, etc.) of each of the pixel elements of the old image and a second image buffer that stores the values or pointers for voltage values for each of the pixel elements of the new image to be written to the display. Thus, the first image buffer contains the levels of the current image on the display, while the second image buffer contains the gray levels of the new image to which the display is to be driven. During operation, the two images are compared, on a pixel-by-pixel basis, by hardware on the driving IC, and the difference between the two images, on a pixel-by-pixel basis, determines the recipes that the driver IC uses to supply voltage to the source electrodes of the pixel element transistors to turn the old image into the new image. This operation is different from all other conventional displays, like liquid crystal displays (LCDs) or organic light emitting displays (OLEDs), that all have only one image buffer containing the current or new image data that is replicated on the screen at a high frequency (typically at 50 Hz). The reason for this difference is that EPDs are bi-stable (or actually multi-stable), meaning that the last image will remain on the screen even when the power is turned off. Therefore a new image always has to be created by starting with the old image and driving the image pixels in an effective manner based on the difference between the pixel state of the old image and the pixel state of the new image.
However, as noted above, this methodology requires a driving IC that has two complete image buffers, wherein each image buffer has a number of storage elements equal to the number of pixels, with each storage element having a size determined by the number of reflection states (gray levels) to which any of the pixel elements may be driven. For, example, the two state system referred to above needs a 1 bit memory for each pixel element in each of the image buffers, while a 16 gray level system needs a four bit memory (i.e., a byte of memory) for each pixel element of the display for each image buffer. Moreover, the look-up table, which may also be located on the driving IC needs to have a number of recipes equal to the square of the number of gray states.
In some cases, however, it can be more expensive (in terms of cost, complexity and size on the driving IC) to provide two complete image buffers on the driving IC. For example, driving ICs that are able to provide a significant number of different gray levels, e.g., associated with a 4, 8, 16, etc., gray level display, can be limited in space. Moreover, it is more difficult to provide memory on these ICs. As such, many simple EPD driving ICs have only have a single image frame buffer. These driving ICs are typically used in lower resolution displays, such as shelving displays that are typically used to provide electronic pricing information, product information, etc.
For driving ICs that only have a single image buffer, it is typical to drive the display in a manner that blanks or erases the entirety of the old image prior to driving the pixels elements to the gray levels associated with the new image. In other words, using these types of ICs, it is typical to use a first part of the image refresh cycle (e.g., half of the frame times or frame cycles) to drive each pixel element to a known state, called an erase state, which is typically all white or all black. The IC may use a different recipe for blanking or erasing each possible gray level value of the old image, and thus the IC may only need a number of recipes that equals the number of gray levels, e.g., four recipes for a four gray level system, 16 recipes for a 16 gray level system, etc. The image buffer may be loaded with a pointer to one of these recipes (or to a memory location within a look-up table that stores or points to one of these recipes) during the first half of the image refresh cycle, called an erase phase. Thereafter, during the second half of an image refresh cycle (called a write phase), the IC drives the pixel elements of the display from the known erase or blank state to the new gray level states as specified by the new image. Here again, the IC may use a different recipe for going from the known erase state to each of the possible gray level values of the new image (and thus the IC may again need a number of recipes that equals the number of gray levels, e.g., four recipes for a four gray level system, 16 recipes for a 16 gray level system, etc.) During this time, the image buffer may be loaded with a pointer to one of these recipes (or to a memory location within a look-up table that stores or points to one of these recipes). However, in this case, the comparison used to identify the recipe is performed in hardware on the driving IC.
While this methodology is very judicious in terms of usage of the image buffer memory, this methodology requires that the entire image be blanked or erased at the same time during each image refresh cycle. This feature provides an image refresh that can appear to be flashing, or not as smooth, as the image refresh methodology performed in systems that have two image frame buffers. Moreover, this methodology always takes between half and the full amount of the image refresh time (e.g., 600 ms) to completely refresh the display and is thus slower, on average, than systems that use a two image buffer in which, in many instances, pixel elements can be driven from the first reflective state associated with the old image to the second reflective state associated with the new image in less than half the image refresh cycle time. Again, this slower transition is more noticeable to a user. The flashing and slower changing display can, at times be noticeable to a user, and makes the image update process using a single image buffer appear to be less clean or crisp than that to that which users have become accustomed.
A new bi-stable display driving technique may be used to drive an image refresh on a bi-stable display, such as an EPD, using a driving IC with a single and limited in size image buffer, in a manner the does not require a simultaneous blanking or erasing of the display and in a manner that operates to drive the pixel elements of the display to their final value associated with the new image more quickly during an image refresh cycle, thus making the image refresh of higher quality and more pleasing to the eye while still using a driving IC with limited memory.
Generally speaking, the technique determines, in the central processing unit (CPU) attached to the driving IC, a difference, on a pixel-by-pixel basis, between the gray level values of the old or current image and the gray level values of the new image to thereby define a difference matrix, and the CPU may store an indication of these pointers developed from these differences in the image buffer on the driving chip. In some cases, the difference matrix may be matrix that stores pixel value pairs defining the values of the current image pixel and a value of the new image pixel. Moreover, these difference values of the difference matrix may be encoded or developed as a number or identifier indicating one particular pair out of all of the possible pairs or combinations of old values and new values. In this case, there will be a total number of possible identifiers equaling the square of the number of gray levels used in the system. The identifier or pointer stored in the image frame buffer for each pixel may point to an address in a look-up table, that may also be located on board the driving IC. The look-up table may store, at the address pointed to by the pointer in the frame buffer, the particular recipe to be used to drive the voltage level of a pixel element for that particular difference or for that old/new pixel value pair to reach the new pixel value (reflection state) during the various scans of an image refresh cycle.
Thereafter, the timing circuitry of the driving IC uses the pointers stored in the image frame buffer to access the recipes within the look-up table to drive the transistors and, in particular, to set the voltage level of the transistor source electrode of a pixel during the successive scans of an image refresh, to drive the pixel from the old gray level (reflection state) to the new gray level (reflection state) directly, without necessarily going through a blanking or erase state. This operation provides for an image refresh that is more smooth and that takes less time, resulting in a higher quality image refresh.
Of course, the microprocessor 10 of
As indicated in
As noted above, driving ICs which only have a single frame buffer, such as the driving IC 14 of
A new driving methodology described herein performs the old/new image comparison computations directly, on a pixel-by-pixel basis, in the CPU 10 (instead of on the driving IC 14). In one case, the CPU 10 performs the comparison to identify a difference between the current pixel value or gray level of a pixel (i.e., associated with the current or old image) and the new pixel value or gray level of the same pixel (i.e., associated with the new image to be written to the display 18) to produce an identifier that identifies one of a finite set of gray level pairs (old to new). A different recipe may be used for each such identifier or possible pair. The CPU 10 performs this comparison for each pixel in the image to produce a difference matrix that has an element associated with each pixel in the image. The results of the comparison are then used to create pointers that are stored into the frame image buffer 28 on the driving IC 14 while the recipes are stored in the look-up table 30 on the driving IC 14. If desired, pointers to the recipes may instead be stored in the look-up table 30 that point to a position in RAM 12 that stores the recipe itself. Thereafter, during the image refresh cycle, the controller 24 may simply use the recipe, as stored in the look-up table 30, that is defined or identified for a pixel within the image frame buffer 28 for each pixel, to thereby control the source driver circuit 40 to provide the appropriate voltage level to the source electrodes of the transistors of the pixels elements in the display 18. In this manner, the part of the computational power needed to perform the pixel-by-pixel comparison is performed in the CPU 10 (instead of on the driving IC 14) which reduces the processing power requirement of the controller 24. However, as this comparison only needs to be performed once per image refresh, or at most a limited number of times during an image refresh cycle, this computation does not put any or much additional requirements on the CPU 10 over and above those that the CPU 10 already must satisfy, as this comparison step is not very sensitive to the display 18 timing schedule associated with the frame scans. Moreover, the CPU 10 may convert the elements of the difference matrix into pointers to (e.g., addresses of) the look-up table 30 to define for the controller 24 which recipe to use to update each pixel in the image during a particular refresh cycle.
More particularly, during operation, the CPU 10 compares the current image or pixel value at each pixel of the display 18 to the new image or pixel value at each pixel of the display, and creates a difference chart (matrix) that defines the gray level changes between the old image and the new image. In one case, in which there are 16 gray levels, the differences may be written as a two-byte value pointing to an address within the look-up table 30, with the first bite being a row of the look-up table 40 and the second byte being a column of the look-up table 30. These addresses may then be written to the frame buffer memory 28 for use in defining how each pixel element associated with each location of the frame buffer memory 28 is to be changed or driven during a particular refresh cycle. Here, the first byte indicates the old image gray level value, and the second byte indicates the new image gray level value. Of course, the look-up table memory location defined by any particular image frame buffer value stores a recipe (or a pointer to a recipe) to be used to drive the pixel element associated with the image frame buffer location from the old gray level to the new gray level during the successive frame scans of an image refresh cycle. In this manner, the image frame buffer 28 may store a pointer to a look-up table address value (wherein each address value combines a row pointer, which may be indicative of the old gray level value, with a column pointer, which may be indicative of the new gray level value), and the pointer may point to, or identify a recipe stored in the look-up table 30 that defines how to set the voltages of a pixel element transistor during each of the frame scans of an image refresh cycle to go between those two levels. In another case, the CPU 10 may encode each identified pair (old pixel value/new pixel value) as a unique number or identifier (e.g., 0-255 for a system having 16 gray levels) and store the unique identifier in the frame memory or image frame buffer 28. This unique identifier will then point to a particular location or address within the look-up table 30 at which the recipe for this old/new gray level pair will be stored. This encoding step may limit or reduce the memory size that is needed for each location of the frame buffer 28. In any event, this image refresh operation allows the controller 24 to drive the display 18 from the current pixel values (associated with a current or old image) directly to the new pixel values (associated with a new image to be written to the display 18) without having to go through an erase or a blanking state first. This operation thereby makes for a smoother transition in the display, as well as provides for a faster image refresh.
Using this methodology, the driving IC 14 can store, within the image frame buffer 28, a single value during the entire image refresh cycle, which value points to a single recipe that defines the voltage sequence to be provided to the source electrode input of the transistor for that pixel during each frame scan of the image refresh cycle. This feature, in turn, uniquely drives a pixel in the display from an old pixel gray level to a new pixel gray level, without necessarily driving all of the pixel values to an erase state first. This methodology thus enables a full image update without the use of an erase phase (wherein each of the pixels is simultaneously at an erase state). This methodology also enables the use of a driving IC with a single image frame buffer to refresh an EPD in a manner that appears cleaner (with no or less blanking), and in a manner that is faster, while also off-loading some processing power to the CPU (i.e., away from the driving IC controller).
As will be understood, this methodology requires an image frame buffer that is able to store a byte sized (8-bits) pointer to the look-up table 30, in a display system that uses 16 gray levels. Thus, in this case, the image frame buffer 28 needs to have a byte worth of storage for each pixel of the display 18. Moreover, this system requires a look-up table 30 that can store a number of recipes equal the square of number of gray levels. However, in many cases, the driving IC 14 may not include a frame buffer or a look-up table that includes that much memory space. It is, however, possible to reduce size of the image frame buffer 28 and the size of the look-up table 30 (to, for example, less than a byte for a 16 gray level display) by driving each pixel of the display to a new value in various phases, such as in two phases, three phases, etc. In this case, the CPU 10 may define a new difference value for each pixel in the display at each phase and may reload a new look-up table pointer in the image frame buffer 28 and a new set of recipes into the look-up table 30 at the beginning of each phase. In another case, the different sets of recipes for each phase of a refresh cycle may be stored in separate or separately addressable look-up tables or look-up table sections on the driving IC 14, for example, to reduce the need to reload a particular look-up table during the refresh cycle. In this case, the separate or separately addressable look-up tables on the driving IC 14 are considered to be “a look-up table” as used herein. Here, the frame buffer memory 28 may be reloaded with new pointers (to a new look-up table section) for each phase, or may use the same pointers, but the controller 26 may access the recipes from a different look-up table or look-up table section during each different phase. This latter technique reduces the need to reload the frame buffer memory 28 during a particular refresh cycle having multiple phases. For example, the CPU 10 may, at a first phase, develop a comparison chart or difference matrix (and define an associated set of recipes) that drives the pixel values from the old image to one of a limited number of intermediate gray levels, for example, to one of four intermediate gray levels of the 16 possible gray levels. Then, during the next phase, the CPU 10 may develop a new comparison chart or difference matrix (and an associated set of recipes) associated with driving the values of each of the pixel elements from one of the limited number of intermediate of gray levels to any of the possible final gray levels and may store these pointers and recipes in the image frame buffer 28 and the look-up table 30, respectively. While this methodology will result in a slower image refresh, as long it uses two or more phases, this methodology does not result in a simultaneous blanking or erase of the display (as the pixels of the display will still take one of two, four, eight, etc., intermediate levels in a pseudo-random manner, at the end of the first phase). However this methodology will reduce the memory size needed for both the image frame buffer 28 and the look-up table 30 by reducing the number of possible transition pairs used at each phase (and thus the size of the identifier needed to be stored in the image frame buffer 28 and the number or recipes needed to be stored in the look-up table 30).
Still further, this multi-phase methodology can be extended to any number of phases and to any number of intermediate gray levels. Thus, for example, an image pixel can be driven from an old image value to a new image value by being driven, during a first phase, from its current value to one of a limited number of intermediate gray levels, being driven, during a second phase, from one of the limited number of intermediate gray levels to another of a set of intermediate gray levels, and being driven, in a third phase, from one of the another set of intermediate gray levels to any of the possible final gray level values. Here, each subsequent intermediate gray-level value through which a pixel element passes will presumably be closer to the final gray-level value for that pixel. In any case, in each of these situations, each of the pixel values of the image does not reach an erase state simultaneously, and thus presents a more crisp or cleaner display update. Moreover, if desired, the CPU 10 may compute a separate difference matrix to define the pixel transitions in each phase and the controller 24 may store new pointers in the frame buffer memory 28 and may store new recipes (if desired) in the look-up table during each phase.
In a still further case, the CPU 10 may perform a comparison from the old gray level to the new gray level values to define a comparison chart such as that described above and illustrated in, for example,
In any event, using one or more of the techniques described above, EPD or other bi-stable display driver ICs can be used that combine gate, source and display controller features into one IC while including only a single image frame buffer and a single look-up table, with limited memory space. These techniques are particularly useful for devices with small form factors and for low cost products where IC size and component size is important. Moreover, these techniques are useful with driver ICs with only a single image frame buffer and only a limited amount of on-chip memory space, which are the types of ICs that are readily available using CMOS technology, which is a high-voltage technology needed for the gate drivers (and to a certain extent the source drivers) of the IC portion of the integrated component of EPDs, as the cost to add more complex functions in the IC that uses this high-voltage technology is higher and does not permit the use of a double image buffer.
It should be noted that, while the image driving technique described herein is described with reference to changing pixels of a bi-stable electronic display between different gray-level values (i.e., different gray-level image values), the technique could additionally or alternatively be used to drive a color bi-stable electronic display by changing pixels of such a bi-stable electronic display between different color values (i.e., different color level image values). Such different color image values could define different colors (e.g., a different combination of red, green and blue, for example) or could define different levels of a single color (e.g., different brightness or amount of blue, for example).
In some cases, each image pixel of a “color” bi-stable display may have separate image components (e.g., particles or media) that effect or control the gray level of a pixel (i.e., the black/white image value) and that effect or control one or more color levels of the pixel (e.g., red or blue or green). In these cases, a different recipe may be stored and used to drive each such image component of a pixel during a particular refresh cycle. That is, a first recipe may be used to drive the black/white image component of a pixel during a refresh cycle to drive the pixel from one gray level to another gray level and a second recipe may be used to drive a color image component (e.g. red) of the same pixel from one “red” level to a second “red” level. These recipes may be stored separately in the image look-up table 30 on the driving IC 14 and may have different pointers thereto stored in the image frame buffer 28 (also referred to herein as a frame buffer memory) during a particular refresh cycle. If desired, the different sets of recipes for different image components could be stored in separate look-up tables on the driving IC 14 or in the same look-up table that has separately addressable regions for these different types of recipes. In any case, the separate look-up tables may be considered “a look-up” table, as used herein. Likewise, the driving IC 14 may have a frame buffer 28 that has two or more memory locations for each pixel, with a pointer to the different sets of recipes (e.g., to a black/white recipe and to a color recipe) being stored in the different memory locations for each pixel. Of course, the frame buffer 28 may be divided into separate and distinct frame buffer sections that are separately addressable, but that make up a common “frame buffer memory” as used herein. In any event, in this case two different recipes may be used simultaneously during an image refresh cycle to drive the different image components of a single pixel. The CPU 10 may additionally compute or determine a separate difference matrix for each of the image components and may develop a separate set of recipe pointers for storage in the frame buffer memory 28 from each of these difference matrixes. Of course, any number of image or color components and separate set of recipes therefor could be used to control a color display, with any number of look-up table and frame buffer memory components being placed on the driving IC 14 to support the manipulation of these image or color components.
On the other hand, a single recipe may be stored for a pixel that effects or defines the manner in which the different image components of a color pixel may be driven. For example, a certain set of voltages may be used to drive a first image component (such as +15, 0, and −15 volts being used to drive the black/white image component to produce a gray level for the pixel) and a second set of voltages may be used to drive a second image component (such as +3, 0, and −3 volts being used to drive a color image component, such as red). In this case the same recipe may effect both image components of a pixel by varying between these different voltage levels at different times during a refresh cycle. If desired, a recipe may have different phases to be instituted at different times during an image refresh cycle, with a first phase used to define and drive movement of one of the image components (e.g., the black/white image component) and a second phase used to define and drive movement of a second one of the image components (e.g., the color image component, such as the red image component). In one particular example which uses different levels of voltages to drive the different image components, the recipe could have a first phase made up of a series of voltage levels to drive a black/white component (e.g., +15, 0, +15, −15, +15) and may have a second phase made up of a series of second voltage levels to drive a color component (e.g., −3, −3, +3, 0, +3). These first and second phases of the recipe may be instituted at different times of a refresh cycle.
Still further, while the description of the driving technique provided herein assumes that the difference matrix will be established by the processor 10 of
Although the forgoing text sets forth a detailed description of numerous different embodiments of the invention, it should be understood that the scope of the invention may be defined by the words of the claims set forth at the end of this patent and their equivalents. The detailed description is to be construed as exemplary only and does not describe every possible embodiment of the invention because describing every possible embodiment would be impractical, if not impossible. Numerous alternative embodiments could be implemented, using either current technology or technology developed after the filing date of this patent, which would still fall within the scope of the claims defining the invention. Thus, many modifications and variations may be made in the techniques and structures described and illustrated herein without departing from the spirit and scope of the present invention. Accordingly, it should be understood that the methods and apparatus described herein are illustrative only and are not limiting upon the scope of the invention.
This application is a continuation of International Application No. PCT/US2015/030254 filed on May 12, 2015, which claims priority to and the benefit of the filing date of U.S. Provisional Patent Application Ser. No. 61/992,211, entitled “High Quality Image Updates in Bi-Stable Displays” which was filed on May 12, 2014, the entire disclosure of which is hereby expressly incorporated by reference herein.
Number | Date | Country | |
---|---|---|---|
61992211 | May 2014 | US |
Number | Date | Country | |
---|---|---|---|
Parent | PCT/US15/30254 | May 2015 | US |
Child | 15351420 | US |