MuDiSP SourceForge.net Logo
MuDiSP download

 

The MuDiSP3 is a set of C++ classes acting as a framework for the execution of Digital Signal Processing (DSP) simulations. The entire simulated system is represented by a "System" class which inherits his properties from a general purpose DSP. The user can then add blocks to give the desired functionalities to the system. These can be either library blocks, blocks made out of other blocks, or new blocks written from scratch.

The two main features are a flexible way to pass system parameters to the simulation, and a set of classes to collect statistical results of the simulations. MuDiSP also provides a set of classes for random number generation. They act as wrappers for the underlying random library which can be easily replaced by the programmer.

The MuDiSP environment is designed to simulate systems where events happen synchronously with a discretized representation of time. A typical use of the discrete timing is the modeling of Digital Signal Processing systems.

The MuDiSP environment allows multi-rate and provides the user with a sophisticate tool able to find automatically the execution rates for each region of the system.

MuDiSP The basic element in the DSP simulator is the block. Depending on their internal composition, blocks can be of two types:

No limit is imposed to the level of recursion of the compound blocks so very complicated systems can be easily modeled and simulated. The block class has four basic methods for the definition of its behavior:

Build()

contains the sub-blocks connection instructions, it is executed once per simulation.

Setup()

contains the code for initializing the processing of the block and permits the reading of the run-time parameters; it is also executed once per simulation.

Run()

contains the code of the actual processing of the block, it usually contains instructions for collecting data from the input ports of the block and/or instructions for delivering processed data to the output ports. It is executed once per iteration.

Finish()

it performs all the post-simulation processing, organizing, displaying or saving results. It is executed once.

Another feature is the ability to handle algorithms with feedback obtained by a special delayed connection between the blocks. The data representation flowing through the branches is generic and use templates so the user can propagate any kind of data in the simulated systems; from elementary C++ data formats like integers or floating point numbers to vectors, matrices and any user defined class. The support for parameters gives an easy method for differentiating instances of the same block class and allows to modify the behaviour of the blocks without recompiling the system. This is particularly useful to build families of simulations where only a few variables are modified from one to another. Another essential feature of MuDiSP is the self-contained implementation of the blocks which permits the building of large libraries and the total reuse of the code. This is due to the high degree of abstraction of the Block class, from which all the blocks in the system are derived.

 

New features in MuDiSP3:

 


MuDiSP author

Last modified: May 2005