# US 11,115,064 B2 · Error correction decoder and memory system having the same

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,115,064 B2
- Document ID: US11115064B2
- Status: Granted
- Kind: B2
- Application number: 16/590,222
- Filed: 2019-10-01
- Published: 2020-09-24
- Granted: 2021-09-07
- Earliest claimed: 2019-03-19
- Assignees: SK hynix Inc.
- Applicants: SK hynix Inc.
- Inventors: Bo Seok Jeong; Soon Young Kang; Dae Sung Kim
- Web page: https://patentgrep.com/patent/US11115064B2

## CPC

- H03M 13/1108: {Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping}
- H03M 13/3753: {using iteration stopping criteria}
- G06F 11/1012: {using codes or arrangements adapted for a specific type of error (G06F11/1048 takes precedence)}
- G06F 11/1068: {in sector programmable memories, e.g. flash disk (G06F11/1072 takes precedence)}
- H03M 13/116: {Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices}
- H03M 13/3707: {Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code}
- H03M 13/458: {by updating bit probabilities or hard decisions in an iterative fashion for convergence to a final decoding result}
- H03M: CODING; DECODING; CODE CONVERSION IN GENERAL (using fluidic means F15C4/00; optical analogue/digital converters G02F7/00; coding, decoding or code conversion, specially adapted for particular applications, see the relevant subclasses, e.g. G01D, G01R, G06F, G06T, G09G, G10L, G11B, G11C, H04B, H04L, H04M, H04N; ciphering or deciphering for cryptography or other purposes involving the need for secrecy G09C)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Provided herein is an error correction decoder and a memory system having the same. The error correction decoder includes a memory configured to store a hard decision value of a variable node. The decoder further includes a flipping function value generator configured to generate, in an i-th iteration, a first value based on a number of unsatisfied check nodes (UCNs) corresponding to the variable node, and to generate a flipping function value as (i) a difference between the first value and an offset value or (ii) a set value, wherein i is a non-negative integer. The decoder also includes a comparator configured to output, in the i-th iteration, a first signal indicating whether to flip or not flip the hard decision value of the variable node in the memory based on comparing the flipping function value to a flipping threshold value.

## Claims

### Claim 1

An error correction decoder for improving an error correction decoder performance using an iterative decoding scheme, comprising:
a memory configured to store a hard decision value of a variable node;
a flipping function value generator configured to generate, in an i-th iteration, a first value based on a difference between a number of unsatisfied check nodes (UCNs) corresponding to the variable node and a number of satisfied check nodes (SCNs) corresponding to the variable node, and generate a flipping function value by selectively updating the first value based on a comparison of the first value to a reference value; and
a comparator configured to output, in the i-th iteration, a first signal indicating whether to flip or not flip the hard decision value of the variable node in the memory based on comparing the flipping function value to a flipping threshold value.

### Claim 2 (depends on 1)

The error correction decoder according to claim 1, wherein the flipping function value generator is configured to:
upon a determination that the first value is equal to or greater than the reference value, generate the first value as the flipping function value, and
upon a determination that the first value is less than the reference value, generate the reference value as the flipping function value.

### Claim 3 (depends on 1)

The error correction decoder according to claim 1, wherein:
the comparator is further configured to output, upon a determination that the flipping function value is equal to or greater than the flipping threshold value, a second signal indicating that the hard decision value of the variable node in the memory be flipped, and
the memory is further configured to flip, upon receiving the second signal from the comparator, the hard decision value of the variable node and store a flipped hard decision value.

### Claim 4 (depends on 3)

The error correction decoder according to claim 3, further comprising:
a syndrome checker configured to perform a syndrome check corresponding to the i-th iteration using the flipped hard decision value, and to output a decoded codeword including the flipped hard decision value upon a determination that the syndrome check has passed.

### Claim 5 (depends on 1)

The error correction decoder according to claim 1, wherein
the flipping function value generator is configured to generate a value, obtained by subtracting the number of SCNs from the number of UCNs, as the first value, and
wherein the flipping function value is generated to have a value that is equal to or greater than the reference value and is less than or equal to 2q−1 (where q is a natural number of 2 or more) in accordance with the variable node, a degree of which is greater than 2(q-1)−1 and is less than or equal to 2q−1.

### Claim 6 (depends on 5)

The error correction decoder according to claim 5, wherein the flipping function value is represented by q bits and is transmitted from the flipping function value generator to the comparator through q output lines.

### Claim 7 (depends on 1)

The error correction decoder according to claim 1, wherein the flipping function value generator further comprises:
a modulo calculator configured to generate a second value by performing a modulo-2 operation between a channel value corresponding to the variable node and the hard decision value of the variable node, stored in the memory; and
an arithmetic calculator configured to generate, upon a determination that the second value is 1, the first value by adding 1 to a value, obtained by subtracting the number of SCNs from the number of UCNs, and upon a determination that the second value is 0, generate the first value by adding −1 to the value, obtained by subtracting the number of SCNs from the number of UCNs,
wherein the flipping function value is generated to have a value that is equal to or greater than the reference value and is less than or equal to 2q−1 in accordance with the variable node, a degree of which is greater than 2(q-1)−2 and is less than or equal to 2q−2 (where q is a natural number of 2 or more).

### Claim 8 (depends on 7)

The error correction decoder according to claim 7, wherein the flipping function value is represented by q bits and is transmitted from the flipping function value generator to the comparator through q output lines.

### Claim 9

A memory system, comprising:
a memory device; and
a memory controller including a processor configured to receive read values from the memory device and perform error correction decoding based on an iterative decoding scheme based on the received read values,
wherein the processor comprises:
a memory configured to store a hard decision value of a variable node;
a flipping function value generator configured to generate, in an i-th iteration, a first value based on a difference between a number of unsatisfied check nodes (UCNs) corresponding to the variable node and a number of satisfied check nodes (SCNs) corresponding to the variable node, and generate a flipping function value by selectively updating the first value based on a comparison of the first value to a reference value; and
a comparator configured to output, in the i-th iteration, a signal indicating whether to flip or not flip the hard decision value of the variable node in the memory based on a comparison between the flipping function value and a flipping threshold value.

### Claim 10 (depends on 9)

The memory system according to claim 9, wherein
the flipping function value generator is configured to generate a value, obtained by subtracting the number of SCNs from the number of UCNs, as the first value, and
wherein the flipping function value is generated to have a value that is equal to or greater than the reference value and is less than or equal to 2q−1 (where q is a natural number of 2 or more) in accordance with the variable node, a degree of which is greater than 2(q-1)−1 and is less than or equal to 2q−1.
