Concatenated Permutation Block Codes for Correcting Single Transposition Errors Reolyn Heymann , Jos H. Weber , Theo G. Swart and Hendrik C. Ferreira University of Johannesburg, Dept. E&E Eng. Science, South Africa Email: {rheymann, tgswart, hcferreira}@uj.ac.za TU Delft, The Netherlands Email: J.H.Weber@tudelft.nl Abstract—Permutation codes are advantageous due to their favourable symbol diversity properties and are applied in flash memories combined with rank modulation. Codebooks tradition- ally consist of permutations with specific distance properties. A class of permutation codes was presented where a codeword consists of a sequence or concatenation of permutations, rather than a single permutation. These codebooks were constructed to correct substitution or deletion errors. In this paper, per- mutations are concatenated to form codewords with the goal of detecting and correcting adjacent transposition errors. An outer code is used to detect erroneous permutations in the codeword, using additional parity permutations. The symbol diversity of permutation codes is preserved and codebooks with higher cardinalities are constructed which result in better code rates. I. I NTRODUCTION Permutation codes are used in combination with rank mod- ulation in flash memories [1]. Flash memory consists of cells. A number of cells are grouped together to form a block. A cell is programmed by injecting or removing charge. Every cell has a number of discrete levels representing specific symbols. Current flash memories allow a single cell to be pro- grammed (injecting charge) but a single cell cannot be erased (removing charge). If the value of a cell needs to be erased, the entire block needs to be copied to a different location, all the original cells are erased and then the block is copied back except for the cell whose value needs to change. It is thus more time consuming to write to flash memory than reading from flash memory: the injection procedure needs to be controlled very carefully since an overshoot error (injecting more charge than needed) cannot be fixed by just erasing the value of the single cell and reprogramming it. In [1] rank modulation has been proposed. With rank modulation and permutation codes, it is not necessary to have distinct levels representing specific symbols any more, but symbol values are represented relative to each other. If one symbol has a higher value than another, then more charge will be stored in the cell representing the higher value. Overshoot will thus no longer be a problem. Most errors in flash memory are caused by charge leakage thus making the charge of cells drift down. The number of errors due to leakage is decreased due to the use of rank modulation. However, leakage is not necessarily at the same rate and may still cause errors. The use of permutation codes combined with M-ary FSK modulation has also been shown to be able to combat different types of noise present in powerline communication (PLC), especially for narrowband PLC [2] in the CENELEC A band. Every symbol in the permutation code is mapped to a specific frequency. Examples of applications are automatic meter reading and demand side management. Error-correcting codes for transposition errors have been presented in [3] and [4]. In [3] codes use the Lee metric as distance measure. A graph approach is used to construct codebooks capable of correcting adjacent transposition errors. In [4], the Kendall tau distance is used. Several upper and lower bounds are presented in [4]. Error correction in flash memories using interleaved codes has been proposed in [5]. Symbols are divided into different sets and then interleaved to form codewords. Only even permutations are used. Thus, symbols from one set may only occur in certain positions. These codes use the Ulam metric as distance measure and focuses on translocation errors. In [6], permutations are concatenated to form codewords. A larger subset of the symmetric permutation group, S M , is used than in traditional coding techniques where one permutation is one codeword, which result in better code rates. The focus of the work was on substitution errors and deletion errors. The work in this paper adapts the construction from [6] to be able to correct adjacent transposition errors. S M will also be divided into subsets, however, the subsets will contain more permutations with larger distances than in [6]. Outer codes are used to detect erroneous subwords. The subsets are then used to correct the transposition errors. This paper is organized as follows: in the next section formal definitions and notations are given for the most important concepts used in this paper. This paper follows on the work done in [6], which is summarized in Section III. A code construction is presented in Section IV. This section illustrates how the construction can be used in combination with an outer code to correct adjacent transposition errors. The outer code is generalized in Section V. The construction is compared to previous work in Section VI and the paper is concluded in Section VII.