This paper describes the design and C99 implementation of a free and open-source Low-Density Parity-Check (LDPC) codes encoder and decoder focused primarily on the Quasi-Cyclic LDPC (QCLDPC) codes utilized in the IEEE 802.11ax-2021 (Wi-Fi 6) and IEEE 802.16-2017 (WiMAX) standards. The encoder is designed in two variants: the first one universal, the other a minimal memory usage design. The decoder provides a single- and multi- threaded implementation of the layered singlescan min-sum LDPC decoding algorithm both for floating point and fixed-point arithmetic. Both encoder and decoder are directly callable from MATLAB using the provided MEX wrappers but are designed to be simply used in any C project. A comparison of throughput and error performance with the recent commercial closed-source MEX implementation of an LDPC encoder and decoder introduced in MATLAB R2021b Communications Toolbox is provided. Source code portability to alternative nonx86 architectures is facilitated by using only the standard C99 constructs, GNU tools, and POSIX libraries. The implementation maintains low-memory requirements, enabling its deployment in a constrained-architecture in the context of Internet of Things. All source codes are freely available on GitHub under a permissive BSD license.
翻译:本文描述了一款自由开源的LDPC(低密度奇偶校验码)编码器与解码器的设计及其C99实现,重点针对IEEE 802.11ax-2021(Wi-Fi 6)和IEEE 802.16-2017(WiMAX)标准中采用的准循环LDPC(QC-LDPC)码。编码器提供两种变体设计:第一种为通用型,第二种采用最小化内存占用设计。解码器提供单线程与多线程实现,支持浮点与定点算术下的分层单次扫描最小和LDPC解码算法。编码器与解码器均通过提供的MEX封装函数可直接从MATLAB调用,但设计初衷是便于在任何C项目中使用。本文还与MATLAB R2021b通信工具箱中最新商用闭源MEX实现的LDPC编码器与解码器进行了吞吐率与误码性能对比。通过仅使用标准C99结构、GNU工具和POSIX库,实现了源码向非x86架构的便携移植。该实现保持低内存需求,使其能够部署在物联网受限架构中。所有源代码均在GitHub上以宽松的BSD许可协议免费提供。