IP Library Granted Patent US 10,289,486
Granted Patent B2
US 10,289,486 · App. 15/649,451 · Granted May 14, 2019

Memory with pattern oriented error correction code

Inventors: Hoon Ryu (Sunnyvale, CA); Jong-Sik Na (San Ramon, CA); TaeHyung Jung (Santa Clara, CA)
Assignee: OmniVision Technologies, Inc.
G06F11/1068G11C29/52H03M13/19H03M13/2906
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,289,486
App. No.
15/649,451
Granted
May 14, 2019
Kind
B2
Abstract

Apparatuses and methods for parity generations in error-correcting code (ECC) memory to reduce chip areas and test time in imaging system are disclosed herein. Memory tests are needed to catch hard failures and soft errors. Random and nondestructive errors are soft errors and are undesirable. Soft errors can be detected and corrected by the disclosed ECC which is based on Hamming code. Before data are written into memory, the first parity generator based on the disclosed ECC generates the first parity by calculating the data. The first parity and data are stored into the ECC memory as a composite word. When the previously stored word is fetched from the ECC memory, the second parity generator based on the disclosed ECC is used to generate the second parity. A comparison between the first and second parity leads to a disclosed error mask, which is used to correct a single bit error if the error only happens to a single bit of the fetched data. A minimum distance of three in the disclosed ECC is maintained to make certain that a single bit is corrected on the read data to retrieve the originally stored memory data.

Claims (56)

1. An error-correcting code (ECC) memory, comprising:

a first parity generator configured to receive an input data of m bits and to output a first parity of k bits, wherein each of the k bits of the first parity is a first function of a selected number n of the m bits of the input data, where n and k are both less than m;

a memory array configured to receive the input data and the first parity and, wherein each corresponding bit of the input data and first parity is stored into a memory cell of said memory array and can be accessed as a stored data of m bits and a stored parity of k bits, respectively;

a second parity generator configured to receive the stored data and to output a second parity of k bits, wherein each of the k bits of the second parity is a second function of the selected number n of the m bits of the stored data;

a syndrome generator configured to receive the second parity and the stored parity, and to output an error mask of m bit in response, wherein the syndrome generator performs a bit-by-bit exclusive-OR of the second parity of k bits and the stored parity of k bits, and then outputs the error mask of m bits accordingly; and

a data corrector configured to receive the error mask and the stored data, and to provide an error corrected output data, wherein the error corrected output data is produced by a bit by bit exclusive-OR of the error mask and the stored data.

2. The ECC memory of claim 1 , wherein the first function of the first parity generator is identical to the second function of the second parity generator.

3. The ECC memory of claim 1 , wherein the first function generates each bit of the first parity of k bits to equal each bit of the input data of m bits, wherein every bit of the m bits has the same binary value of zero or one.

4. The ECC memory of claim 1 , wherein the selected number n is an odd integer number.

5. The ECC memory of claim 1 , wherein m, k, and n are each respectively 8, 4 and 5.

6. The ECC memory of claim 5 , wherein for the input 8 bits of the first function consists of d 1 , d 2 , d 3 , d 4 , d 5 , d 6 , d 7 , and d 8 , and the output 4 bits of the first function consists of p 1 , p 2 , p 3 and p 4 , and wherein

p 1 is an exclusive-OR of d 1 , d 2 , d 4 , d 5 and d 7 ;

p 2 is an exclusive-OR of d 1 , d 3 , d 4 , d 6 and d 7 ;

p 3 is an exclusive-OR of d 2 , d 3 , d 4 , d 5 and d 8 ; and

p 4 is an exclusive-OR of d 3 , d 5 , d 6 , d 7 and d 8 .

7. The ECC memory of claim 6 , wherein a Hamming distance of the first function and the second function is greater than or equal to three.

8. An image memory system, comprising:

a data input buffer configured to receive data input, wherein the data input buffer partitions data input into a plurality of internal data packages and outputs each of the same bit of the plurality of the internal data packages to form a plurality of input data;

a first parity generator configured to receive the input data of m bits and to output a first parity of k bits, wherein each of the k bits of the first parity is produced by a first function of a selected number n of the m bits of the input data, where n and k are both less than m;

a memory array configured to receive the input data and the first parity, wherein the input data and the first parity are stored into said memory array as a stored data and a stored parity, respectively, prior to be fetched by a parity generator, a syndrome generator and a data corrector;

a second parity generator configured to receive the stored data and to output a second parity of k bits, wherein each of the k bits of the second parity is produced by a second function of the selected number n of the m bits of the stored data;

a syndrome generator configured to receive the stored parity and the second parity, and to output an error mask of m bit, wherein each of k bits from both the second parity and the stored parity are compared bit by bit, and decoded to produce the error mask of m bits;

a data corrector configured to receive the error mask and the stored data, and to provide an error corrected output data, wherein the error corrected output data is produced by a bit by bit exclusive-OR of the error mask and the stored data;

a data output buffer configured to receive error corrected output data from the data corrector and to output a data output; and

a display/storage configured to receive the data output.

9. The image memory system of claim 8 , wherein the first function of the first parity generator is identical to the second function of the second parity generator.

10. The image memory system of claim 8 , wherein the first function generates each bit of the first parity of k bits to equal each bit of the input data of m bits, wherein every bit of the m bits has the same binary value, wherein each bit of m-bit input data is set to the same value of 0 or 1.

11. The image memory system of claim 8 , wherein the selected number n is an odd integer number.

12. The image memory system of claim 11 , wherein m, k, and n are each respectively 8, 4 and 5, and wherein for the input 8 bits of the first function consists of d 1 , d 2 , d 3 , d 4 , d 5 , d 6 , d 7 , and d 8 , and the output 4 bits of the first function consists of p 1 , p 2 , p 3 and p 4 , wherein

p 1 is an exclusive-OR of d 1 , d 2 , d 4 , d 5 and d 7 ;

p 2 is an exclusive-OR of d 1 , d 3 , d 4 , d 6 and d 7 ;

p 3 is an exclusive-OR of d 2 , d 3 , d 4 , d 5 and d 8 ;

p 4 is an exclusive-OR of d 3 , d 5 , d 6 , d 7 and d 8 ; and

a Hamming distance of the first function and the second function is greater than or equal to three.

13. The image memory system of claim 8 , wherein the display/storage is selected from a group consisting of a liquid crystal on silicon display, a LCD display, and a LED display.

14. The image memory system of claim 8 , wherein the display/storage is selected from a group consisting of a nonvolatile memory, a solid state drive, and a hard disk drive.

15. The image memory system of claim 8 , wherein the memory array is a dynamic random access memory (DRAM).

16. A method of generating and using ECC for a memory, comprising:

receiving a data input by a data input buffer, wherein the data input buffer partitions data input into a plurality of internal data packages, and extracts each of a same bit of the plurality of the internal data packages to form a plurality of input data of m bits;

converting the input data to a first parity by a first parity generator, wherein the first parity generator calculates the input data of m bits and outputs the first parity of k bits, wherein each of the k bits of the first parity is a first function of a selected number n of the m bits of the input data, where n and k are both less than m;

storing the input data of m bits and the first parity of k bits to a memory array;

fetching the memory array to acquire a stored data of m bits and a stored parity of k bits;

converting the stored data to a second parity by a second parity generator, wherein the second parity generator converts the stored data of m bits outputs to a second parity of k bits, each of the k bits of the second parity is a second function of the selected number n of the m bits of the stored data;

comparing the stored parity of k bits and the second parity of k bits by a syndrome generator to generate an internal check bits of k bits, wherein the internal check bits of k bits is decoded to generate an error mask of m bits;

comparing the stored data of m bits and the error mask of m bits by a data corrector to generate a plurality of error corrected output data of m bits;

packeting a data output buffer with a plurality of the error corrected output data until the plurality of input data from the data input in data input buffer has been processed and the data output butter has been completed filled by the plurality of error corrected output data; and

accessing the data output buffer to acquire an data output.

17. The method of claim 16 , wherein the first function of the first parity generator is identical to the second function of the second parity generator.

18. The method of claim 16 , wherein the first function generates each bit of the first parity of k bits to equal each bit of the input data of m bits, wherein every bit of the m bits has the same binary value, wherein each single bit of m bits of the input data is set to the same value of 0 or 1.

19. The method of claim 16 , wherein the selected number n is an odd integer number.

20. The method of claim 19 , wherein m, k, and n are each respectively 8, 4 and 5, and wherein the first function generates each single bit of the first parity to equal the value of each bit of said input data; wherein for the input 8 bits of the first function consisting of d 1 , d 2 , d 3 , d 4 , d 5 , d 6 , d 7 , and d 8 , and for the output 4 bits of the first function consisting of p 1 , p 2 , p 3 and p 4 , the first function performs the following operation:

p 1 is an exclusive-OR of d 1 , d 2 , d 4 , d 5 and d 7 ;

p 2 is an exclusive-OR of d 1 , d 3 , d 4 , d 6 and d 7 ;

p 3 is an exclusive-OR of d 2 , d 3 , d 4 , d 5 and d 8 ;

p 4 is an exclusive-OR of d 3 , d 5 , d 6 , d 7 and d 8 ;

wherein the Hamming distance of the first function and the second function is greater than or equal to three.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 13, 2017
From: RYU, HOON; NA, JONG-SIK; JUNG, TAEHYUNG
To: OMNIVISION TECHNOLOGIES, INC.
Reel/Frame 043002/0593 →
Continuity (1)
Related Publication 20190018732A1 · Jan 17, 2019