Uniform random number generators
by Agner Fog, 2001 - 2007
randomc.zip contains a C++ class library of uniform random number generators of good quality.
The random number generators found in standard libraries are often of a poor quality, insufficient for large MONTE Carlo calculations. This C++ implementation provides random number generators of a much better quality: Better randomness, higher resolution, and longer cycle lengths.
The same random number generators are available as libraries coded in assembly language for higher speed. These libraries can be linked into projects coded in other programming languages under Windows, Linux, BSD, etc. The library files are available in the archive asmlib.zip.
Non-uniform random number generators are provided in stocc.zip.
Computes BER v EbNo curve for convolutional encoding / soft decision
Viterbi decoding scheme assuming BPSK.
Brute force MONTE Carlo approach is unsatisfactory (takes too long)
to find the BER curve.
The computation uses a quasi-analytic (QA) technique that relies on the
estimation (approximate one) of the information-bits Weight Enumerating
Function (WEF) using
A simulation of the convolutional encoder. Once the WEF is estimated, the analytic formula for the BER is used.
pMatlab is a toolsbox from MIT for running matlab in parallel style on a multi-core PC or a cluster environment. These two documents summary the usage of pMatlab and running time measurements on three simple MONTE Carlo simulation codes.
The package includes 3 Matlab-interfaces to the c-code:
1. inference.m
An interface to the full inference package, includes several methods for
approximate inference: Loopy Belief Propagation, Generalized Belief
Propagation, Mean-Field approximation, and 4 MONTE-carlo sampling methods
(Metropolis, Gibbs, Wolff, Swendsen-Wang).
Use "help inference" from Matlab to see all options for usage.
2. gbp_preprocess.m and gbp.m
These 2 interfaces split Generalized Belief Propagation into the pre-process
stage (gbp_preprocess.m) and the inference stage (gbp.m), so the user may use
only one of them, or changing some parameters in between.
Use "help gbp_preprocess" and "help gbp" from Matlab.
3. simulatedAnnealing.m
An interface to the simulated-annealing c-code. This code uses Metropolis
sampling method, the same one used for inference.
Use "help simulatedAnnealing" from Matlab.
This demo shows the BER performance of linear, decision feedback (DFE), and maximum likelihood sequence estimation (MLSE) equalizers when operating in a static channel with a deep null. The MLSE equalizer is invoked first with perfect channel knowledge, then with an imperfect, although straightforward, channel estimation algorithm. The BER results are determined through MONTE Carlo simulation. The demo shows how to use these equalizers seamlessly across multiple blocks of data, where equalizer state must be maintained between data blocks.
VHDL implementation of the twofish cipher for 128,192 and 256 bit keys.
The implementation is in library-like form All needed components up to, including the round/key schedule circuits are implemented, giving the flexibility to be combined in different architectures (iterative, rolled out/pipelined etc). Manual in English is included with more details about how to use the components and/or how to optimize some of them. All testbenches are provided (tables, variable key/text, ECB/CBC MONTE carlo) for 128, 192 and 256 bit key sizes, along with their respective vector files.