A multidimensional parity-check code (MDPC) is a type of error-correcting code that generalizes two-dimensional parity checks to higher dimensions. It was developed as an extension of simple parity check methods used in magnetic recording systems and radiation-hardened memory designs. [1]
In an MDPC code, information bits are organized into an -dimensional structure, where each bit is protected by parity bits. Each parity bit is calculated along a different dimensional axis. The code can be characterized by its dimension vector, where defines the size of the block or multi-block in the th dimension. The code length can be expressed as
while the number of information bits is given by
Reduced generator matrices eliminate redundant parity bits while maintaining error correction capabilities. This modification increases the code rate without significantly degrading performance. The code rate for a reduced MDPC is given by
The reduced generator matrix can be created using systematic construction methods, resulting in more efficient encoding processes compared to traditional parity check codes.
The following pseudocode shows how to generate a reduced generator matrix: [3]
function function_name is// Initialize G with identity matrix augmented with ones column G ← [I_{r1-1} | 1_{(r1-1)×1}] for n ← 2 to N do// Update G with Kronecker product G ← I_{r_n-1} ⊗ G // Calculate product of previous dimensions x ← Πi=1n-1(ri - 1) // Create temporary matrix with ones column and identity G_tmp ← 1_{(r_n-1)×1} ⊗ I_x // Augment G with temporary matrix G ← [G | G_tmp] return G end function
Decoding in MDPC systems typically employs an iterative algorithm based on Failed Dimension Markers (FDM), which indicate the number of parity check failures associated with each information bit. The FDM-based decoding process works by identifying bits with the highest probability of error and iteratively attempting corrections until either all errors are resolved or a maximum iteration limit is reached. [3]
MDPC codes have applications in scenarios where short block lengths are required, such as real-time communications systems and memory protection schemes. They offer several advantages over other error-correcting codes, including positive code gain at low signal-to-noise ratios and simpler implementation complexity compared to LDPC codes. The level of error protection can be adjusted by modifying the number of dimensions or the size of each dimension, allowing for flexibility in design trade-offs between code rate and error correction capability. [4]