1. A method of encoding data words into codewords, the method comprising steps of: (a) mapping the data words into a number of data segments, each data segment having a number of bits equal to the number of bits in a codeword divided by the number of data segments; (b) encoding each data segment into a codeword segment having the same number of bits as the data segment; and (c) concatenating the codeword segments together to form the codeword.