Patent Document ID: 20160080003
Application ID: 14785582
Patent Flag: 0

Claim One:
1. A method to encode data, the method comprising: receiving a first group of data to be encoded and stored in a memory block of a single-level cell-type flash memory as a second group of data subject to a current state of a third group of data stored in single-level cell-type flash memory cells in the memory block of the flash memory, each element of the first group of data corresponding to a row of a parity-check equation, each data element of the second group of data corresponding to a single-level cell-type flash memory cell in the memory block of the flash memory and initially corresponding to an unknown variable of the parity-check equation, each row of the parity-check equation corresponding to a check node of the parity-check equation and each unknown variable corresponding to a variable node of the parity-check equation; determining a marginal probability of each data element of the second group of data for a first selected configuration of the second group of data; determining a value of at least one data element of the second group of data according to the marginal probability of each data element of the second group of data; and iteratively determining the marginal probability of each remaining undetermined data element of the second group of data for subsequently selected configurations of the remaining undetermined data elements of the second group of data, and determining a value of at least one remaining undetermined data element of the second group of data until all data elements of the second group of data have been determined, the determined values of the data elements of the second group of data being the encoded first group of data, wherein solutions to the parity check equation are subject to the constraint that the value of a data element of the second group of data is zero if the current state of a corresponding flash memory cell in the memory block is zero.