Encoding a data word for writing the encoded data word in a multi-level solid state memory
A method for encoding a data word for writing an encoded data word in N cells of a solid state memory. Each of the N cells can be programmed in one of q nominal levels. The method includes encoding the data word as a codeword of a first codeword type having q symbol values or as a codeword of a second codeword type having (q−d) symbol values, dε[1, . . . , q−1], depending on a state of the N cells.
1. An encoder for encoding a data word for writing an encoded data word in N cells of a solid state memory, each of the N cells having q programmable levels, wherein the encoder is configured to encode the data word as a codeword of a first codeword type having q symbol values or as a codeword of a second codeword type having (q−d) symbol values, dε[1, . . . , q−1], in dependence on a state of the N cells.
2. A decoder for decoding a codeword written in N cells of a solid state memory, each of the N cells having q programmable levels, said codeword being encoded by an encoder;
wherein said encoder is for encoding a data word for writing an encoded data word in N cells of the solid state memory, each of the N cells having q programmable levels; and
wherein the encoder is configured to encode the data word as a codeword of a first codeword type having q symbol values or as a codeword of a second codeword type having (q−d) symbol values, dε[1, . . . , q−1], in dependence on a state of the N cells, the decoder comprising;
a receiver which is configured to receive a read back signal from the N cells for reading back the written codeword; and
a processor which is configured to determine if the written codeword is of the second codeword type in dependence on the received read back signal and which is configured to provide side information to an error correcting code in dependence on a determined written codeword of the second codeword type.