You can edit almost every page by Creating an account. Otherwise, see the FAQ.

AFF3CT

From EverybodyWiki Bios & Wiki


BER/FER simulations available in AFF3CT.
BER/FER simulations available in AFF3CT.

A Fast Forward Error Correction Tool (AFF3CT) is an Open-source software (MIT license) dedicated to the Forward Error Correction (FEC or channel coding) simulations. It is written in C++11 and it supports a large range of codes: from the well-spread Turbo codes[1] to the very new Polar codes[2][3][4] including the Low-Density Parity-Check (LDPC) codes. A particular emphasis is given to the simulation throughput performance (hundreds of Mb/s on today's CPUs) and the portability of the code.

AFF3CT can also be used as a library to create dedicated simulations or directly in SDR contexts.

Example[edit]

Here is a simple code example with the AFF3CT library:

#include <iostream>

// AFF3CT headers
#include <Tools/Perf/MIPP/mipp.h>
#include <Tools/Display/Frame_trace/Frame_trace.hpp>

// AFF3CT headers
#include <Module/Source/Random/Source_random.hpp>
#include <Module/Encoder/NO/Encoder_NO.hpp>
#include <Module/Modulator/BPSK/Modulator_BPSK.hpp>
#include <Module/Channel/Additive/AWGN/Standard/Channel_AWGN_std_LLR.hpp>
#include <Module/Decoder/NO/Decoder_NO.hpp>

int main(int argc, char** argv)
{
	constexpr int    size  = 16;
	constexpr double sigma = 1.f;
	
	// buffers
	mipp::vector<int  > refs (size);
	mipp::vector<int  > bits (size);
	mipp::vector<float> symbs(size);
	mipp::vector<float> LLRs (size);

	// AFF3CT objects
	aff3ct::module::Source_random<>        source   (size       );
	aff3ct::module::Encoder_NO<>           encoder  (size, size );
	aff3ct::module::Modulator_BPSK<>       modulator(size, sigma);
	aff3ct::module::Channel_AWGN_std_LLR<> channel  (size, sigma);
	aff3ct::module::Decoder_NO<>           decoder  (size, size );
	aff3ct::tools ::Frame_trace<>          trace    (size       );

	// run a small simulation chain
	source   .generate   (       refs );
	encoder  .encode     (refs,  bits );
	modulator.modulate   (bits,  symbs);
	channel  .add_noise  (symbs, LLRs );
	modulator.demodulate (LLRs,  LLRs );
	decoder  .hard_decode(LLRs,  bits );

	// display the resulting bits
	std::cout << "Hello World AFF3CT!" << std::endl;

	std::cout << "Input bits:" << std::endl;
	trace.display_bit_vector(refs);

	std::cout << "Output bits:" << std::endl;
	trace.display_bit_vector(bits, refs);

	return 0;
}

See also[edit]

References[edit]

  1. Cassagne, A.; Tonnellier, T.; Leroux, C.; Gal, B. Le; Aumage, O.; Barthou, D. (2016-09-01). "Beyond Gbps Turbo decoder on multi-core CPUs". 2016 9th International Symposium on Turbo Codes and Iterative Information Processing (ISTC): 136–140. doi:10.1109/ISTC.2016.7593092.
  2. Cassagne, Adrien; Gal, Bertrand Le; Leroux, Camille; Aumage, Olivier; Barthou, Denis (2015-09-09). Languages and Compilers for Parallel Computing. Springer, Cham. pp. 303–317. doi:10.1007/978-3-319-29778-1_19. Search this book on
  3. Cassagne, A.; Aumage, O.; Leroux, C.; Barthou, D.; Gal, B. Le (2016-08-01). "Energy consumption analysis of software polar decoders on low power processors". 2016 24th European Signal Processing Conference (EUSIPCO): 642–646. doi:10.1109/EUSIPCO.2016.7760327.
  4. Gal, B. Le; Leroux, C.; Jego, C. (2015-01-01). "Multi-Gb/s Software Decoding of Polar Codes". IEEE Transactions on Signal Processing. 63 (2): 349–359. doi:10.1109/TSP.2014.2371781. ISSN 1053-587X.

External links[edit]


This article "AFF3CT" is from Wikipedia. The list of its authors can be seen in its historical. Articles copied from Draft Namespace on Wikipedia could be seen on the Draft Namespace of Wikipedia and not main one.