A non-volatile counter

Abstract: A non-volatile counter comprising: an array of memory cells incorporating groups 1 of cells, each group 1 of cells being divided into word strings X, X′ capable of storing data words and associated fault flags FR, sensing means 3 for checking the status of the memory cells and for issuing fault signals to the fault flags, and logic means 5 responsive to the fault signals and fault flags for selecting the word strings, wherein the memory cells each include at least two non-volatile transistors and wherein on detection of a fault in a word string X the stored data word is written into a second word string X′.

Description: The present invention relates to a non-volatile counter which makes efficient use of its memory cells by transferring a data word from an imperfect area of memory to another area of the memory. Prior art electronic counters are known which incorporate counter decades implemented as twisted ring counters (supporting five-bit Johnson coding) or which include decades represented simply by a word in an array of non-volatile RAM (NVRAM) (as disclosed in EP-273954 and US patent number 4839909). Such prior art counters achieve their function by reading the contents of the word into a Central Shifting Unit (CSU) where the word is incremented (shifted) and then written back into the memory word. This arrangement saves memory area by avoiding the need for many separate non-volatile shift registers. When a decade changes from its highest state to zero, a carry is recorded and the next decade is incremented. The CSU addresses each decade in turn, from least significant to most significant, performing increments as necessary. All this is done under the control of a sequencer circuit. On completion of this sequence the whole NVRAM array is written into its non-volatile shadow, where it remains until the next counting operation is triggered. Such prior art counters, and counters according to the present invention, are used for applications such as odometers, elapsed time recorders and event counters. The present invention is designed to improve the confidence with which high numbers of counts may be made. With this in mind, since such uses by nature incorporate a "macro cell", the present invention can be included in many circuits with minimal modification, thus reducing chip design time. According to the present invention there is provided a non-volatile counter comprising: an array of memory cells incorporating groups of cells, each group of cells being divided into word strings each capable of storing a data word and an associated fault flag; sensing means for checking the status of the memory cells storing the data words and for issuing fault signals; and logic means responsive to an address, to the fault signals and fault flags for selecting the word strings; wherein the memory cells each include at least two non-volatile transistors and wherein on detection of a fault in a data word, the associated fault flag is toggled and is written together with the stored data word into a second word string within the same group of cells. Non-volatile memory cells (each having two or more non-volatile transistors) which are suitable for incorporating in a counter according to the present invention are disclosed in detail in US patent No. 5065366. The design of the counters according to the present invention differs from the prior art in that most of the strings of cells in the memory array are duplicated, and a system exists for selecting between the default and spare string for each data word. In a preferred embodiment of the invention which has six counting decades (100K's, 10K's, 1K's, 100's, 10's and 1's), only the lower four decades are provided with back up data word strings on the basis that the 100K and 10K registers are not worked sufficiently heavily to justify it. In this regard, the non-volatile transistors suffer from endurance limitations; as the number of reprogrammings increases, so the performance of a transistor is impaired until failure becomes probable. The spare data word string is brought into action once one of the transistors in the default word fails (though, thanks to two-transistor redundancy, data is not lost). The counting then continues in a new, un-endured string of memory cells. Preferably each sensing means and each logic means are associated with only a single group of memory cells. Fault flags associated with the two highest decades (100K and 10K decades) are preferably hard-wired out of the memory array for providing "overflow" or "tamper" information or, alternatively, a "world fault report". The sensing means associated with a group of memory cells is preferably activated each time a string of cells in the group stores a data word having the value "0". In a preferred embodiment of the invention, each string of cells includes six memory cells, five for storing the data word and one for the fault flag. If all of the strings of cells in a particular group of memory cells have their fault flags activated, it is preferable that each string is utilized sequentially such that no one string is over-endured. An improvement which is preferably included in the counter system is that of "mapping", disclosed in U.K. Patent 2171543 or U.S. patent number 4663770, which involves rotating the significance of the decades. By sharing the work load among the lower decades, such that there is no one decade which suffers heavy endurance, the life of the counter is extended. Mapping may be applied very easily to the counter of the present invention, as each pair of default and spare words is addressed along a single word line. Selection of default or spare word preferably takes places after the mapping process. A specific embodiment of the present invention is now described purely by way of example with reference to the accompanying drawings, in which: Figure 1 is a schematic diagram of a counter according to the present invention; Figure 2a is a schematic diagram of the logic circuitry included in the embodiment shown in figure 1; and Figure 2b is a Truth table corresponding to the logic circuit shown in figure 2a. With reference to the drawings, the counter includes an array of memory cells formed as groups 1a-1e of cells, sensing means 3a-3d, logic means 5a-5d, an address decoder/mapper 7 and a central shifting unit (CSU) 9. Each group 1 of cells is divided into two strings X, X′ of cells, each string having five non-volatile memory cells for storing a data word and a sixth memory cell which acts as a fault report flag (FR). Four of the groups 1 of memory cells represent counting decades, whilst the two strings in the fifth group le of cells are used to store two further decades (the 10K and 100K decades). In this embodiment, which has six counting decades (100K's, 10K's, lK's, 100's, 10's and l's), only the four lower decades are provided with back-up strings of memory cells on the basis that the 100K and 10K registers are not worked sufficiently heavily to justify it. Even though the 100K and 10K decades are not provided with any backup strings of cells, the strings are still provided with fault report flags since all the memory cells are arranged in an array and it is easier therefore to do so. These fault flags are assigned to special functions: for the 100K decade, the fault flag represents "overflow" or "tamper" to indicate when the maximum number of counts has been reached, inhibiting further counting; for the 10K decade, the fault flag is used as a "world fault report", being set upon the failure of any of the four lower decades and wired out to a pad, for example. This latter feature indicates the status of the counter, and hence whether special action is required. The logic circuitry incorporated in each logic means 5 is shown in detail in figure 2a. As can be seen, the circuitry includes 5 NAND gates and a NOT gate. The Truth table shown in figure 2b summarises the effect of the logic circuitry of figure 2a which controls the choice of word string X, X' accessed in each group 1 of cells in the memory array at any time. The states of the fault flags of each group 1 of cells are fed back via a NOR gate to the logic means. In use, the counter is originally set such that FRX and FRX' are set to "0" where X represents any of A, B, C or D (this may be achieved in the factory set-up routine). This configures the logic circuitry to select WX if X is activated by the address decoder; this is for normal read or write operations. Each time the decade holds the value "0", which is "00000" (five bits), then all the non-volatile transistors in the memory cells are ON. At this stage a SERIAL check is performed, such as described in U.S. patent No. 5065366 to determine whether any of the non-volatile transistors has failed. This is achieved by configuring all the non-volatile transistors in the word in series and checking the existence of a current path. The sensing means 3, which is an electronic circuit, shown in figure 1 performs this detection. The fault flag memory cell (FR) is not included in the SERIAL check because it may well hold a "1" while the rest of the word is "00000". As this memory bit is not heavily used it is not necessary to check it. If a fault is detected in the periodic check, then the sensing circuit 3 puts the FAULT signal high. This causes the sequencer to toggle the fault flag of the corresponding string of cells, thus ensuring that the logic means 5 selects the spare string X′in the same group 1 of cells. The FAULT signal from the sensing circuit 3 also overrides the X/X′ selection performed by the spare-select logic means 5 such that, when the word is written back into the array , it is written into both X and X′ simultaneously. When the word has been written back into both the strings X, X′ of the group, FRX and FRX′ hold the same value, so FRX NOR FRX′ is used as a logical input to the logic circuitry 5. As the counter progresses in its normal read/write routine, FRX NOR FRX′ selects which of the strings of cells X or X′ should be used. If then the spare register also fails, the procedure is identical. The fault is detected, so FAULT is set high by the sensing circuitry 3 and the corresponding fault flag is toggled in the string via the CSU toggler. The new word is written into both string X and X′, and the new state of the default flag causes operation to revert to the original word string. In this regard, although memory cells in both strings have faults, the strings of memory cells are still working because of the two-transistor redundancy in each memory cell. As the fault flags of both X and X′ will continue to show a fault, the system will cause the data to be toggled from one word string to the other regularly as counting continues to take place in the group of memory cells recording the particular decade, thus sharing the work-load evenly between two non-perfect data word strings. The system described above ensures that the one word string is used until it includes a memory cell having a failed non-volatile transistor, the second word string is then used until it includes a memory cell having a failed non-volatile transistor, after which the two strings are used alternately. The scheme described is not dependent on array size, so any number of words in an array of any size can be equipped with spare words and associated fault report flags. This is rendered straight forward by the fact that the spare selection activity is invisible to the addressing and mapping circuitry. Also possible with this system is the inclusion of a "leading-zero-blanking" bit (LZB) in each decade. This is set to (say) "0" during factory set-up, and is set to "1" the first time the decade is used. The hardware involved in providing the display can then differentiate between a leading zero (which is not displayed) and a non-leading zero (which is). The inclusion of LZB in the present scheme is straight forward, although the LZB bits must not be included in the periodic SERIAL check as they will frequently be at "1" when the rest of the word is at "00000". The same form of cell as that used for the fault flag bit may be employed. Possibly the sequencer may use the LZB bit as a periodic check inhibit signal; if the LZB bit is "0" then it is not worth checking the word as it has not yet been incremented from zero. The present invention has been described above purely by way of example and modifications of detail can be made within the scope of the present invention defined by the appended claims.

Claims: A non-volatile counter comprising: an array of memory cells incorporating groups of cells, each group of cells being divided into word strings each capable of storing a data word and an associated fault flag; sensing means for checking the status of the memory cells storing the data words and for issuing fault signals; and logic means responsive to an address, to the fault signals and fault flags for selecting the word strings, wherein the memory cells each include at least two non-volatile transistors and wherein on detection of a fault in a data word, the associated fault flag is toggled and is written together with, the stored data word into a second word string within the same group of cells. A counter as claimed in claim 1, wherein during counting a data word read from a word string is incremented in a central shifting unit prior to being written back into the group of memory cells. A counter as claimed in claim 1 or claim 2, wherein each group of memory cells is divided into two word strings, each word string having an associated fault flag. A counter as claimed in any preceding claim, wherein each sensing means and each logic means is associated with only a single group of memory cells. A counter as claimed in any preceding claim, wherein the fault flags are hard wired to the logic means. A counter as claimed in any preceding claim, wherein the array includes four groups of cells, each group assigned to represent a separate decade of the counter. A counter as claimed in claim 6, wherein the array includes an additional group of cells divided into two word strings representing higher decades of the counter. A counter as claimed in claim 7, wherein the two additional word strings have associated fault flags which are hard wired out of the array. A counter as claimed in any preceding claim, wherein the sensing means is actuated each time a word string stores the value "0". A counter as claimed in any preceding claim, wherein when all the word strings in a group have their fault flags activated, the strings are utilised sequentially such that no one string is over-endured. A counter as claimed in any preceding claim, wherein each word string includes six memory cells, five for storing the data word and one for the fault flag. A counter as claimed in any preceding claim, wherein the significance of the groups in the counter is rotated.

Inventors: BENNETT DANIEL HARRISON, DODD GARY LAWRENCE, MURRAY KENELM GERALD DIGBY, BENNETT, DANIEL HARRISON, DODD, GARY LAWRENCE, MURRAY, KENELM GERALD DIGBY
Applicants: HUGHES MICROELECTRONICS LTD, HUGHES MICROELECTRONICS LIMITED
Application year: 1990
Main classification: H03K21
IPC codes: G11C16, H03K21, G11C17, G11C29, G06F11