The objective of this extension project is to enable the ORCA project to test, evaluate, and use the recently established Polar codes in the context of the various ORCA testbeds. To this end, both an encoder and several decoders for Polar codes have been implemented as hardware modules that are compatible with XILINX FPGA based communication testbeds.
The decoder was developed in an Open Call for extension of the ORCA project by the Telecommunications Circuits lab of EPFL https://tcl.epfl.ch/.
The implementation, along with documentation and additional code (e.g., MATLAB simulation code for the encoder and the decoder, test vectors, etc) is available in Polar Code git link, which is composed by 3 folder: epfl-orca-polar-rtl, LV2.0 and LV2.1.
The repository "epfl-orca-polar-rtl" is organized in the following folders:
The top-level folder of the repository also contains a Makefile, in which the correct order of compilation for the various components can be seen. Two parameters can be defined at compile-time, namely the blocklength (N=256, N=512, N=1024 currently supported) and the maximum list size L for SCL decoding (L=2 and L=4 currently supported). These can be changed in the “polar_config.vhd” file within the “rtl” decoder on lines 10 and 11, respectively. All remaining parameters are derived automatically from the values of L and N. Note that, when using L=2, “MemoryL2.vhd” has to be used, wihle when using L=4 “MemoryL4.vhd” has to be used. The interface of the encoder/decoder IP cores was defined by the patron in such a way that the integration with the LabVIEW software of the testbed can be easily handled with the expertise that the patron already has. The interface is provided in the tables below, where we show both the logical interpretation and the physical implementation of each input/output separately.
Encoder Logical Interface:
Encoder Physical Interface:
Decoder Logical Interface:
Decoder Physical Interface:
The folders "LV2.0" and "LV2.1" contain the stand alone application of polar codes in LabVIEW 2.0 and 2.1, respectively.