(BERG = Cornell University Blind Equalization Research Group)

Download the most recent version of the BERGulator (.tar.gz)

Download the most recent version of the BERGulator (.zip)

(The most recent version of the BERGulator is dated Sun Aug 19 10:08 EDT 2001. It includes .mexlx files for Linux-based systems and a workaround for some Matlab-6 bugs. You may compile the *.c files yourself for other platforms using matlab's "mex" command.)

The BERGulator is a MATLAB5-based interactive simulation tool aimed at studying the behavior of the Constant Modulus Algorithm (CMA) when used for direct blind linear channel equalization.

The BERGulator allows you to specify the channel impulse response coefficients, the level of channel noise, and the source alphabet used for experimentation. The channel may be complex-valued, and complex-valued noise is assumed if either the source or the channel is complex-valued. Furthermore, the channel may be baud-spaced or T/2 fractionally-spaced.

Given such a channel/noise combination, The BERGulator is capable of plotting the frequency/impulse responses of the channel, the MMSE optimal equalizer, and the optimal system (chan+eq). For length-2 real-valued channels, it can also plot contours of the CMA surface in equalizer space (with an overlay of the principle axes of the quadratic-cost ellipsoid approximating the neighborhoods of CM minima, and with *'s and x's indicating the locations of MMSE and MSE minima). When a valid surface is present, The BERGulator can superimpose the CM-error-function sign-boundaries (for real-valued sources) and indicate the magnitude and direction of the (constant) cost-gradient within a given constant-sign region. This feature is motivated by the convergence behavior of signed algorithms.

Finally, the BERGulator can plot the tap-trajectories of an equalizer adaptation algorithm and plot the CM- and mean-squared error histories. When an error surface is present and the tap-trajectories will be real-valued, the user can select the equalizer intialization from the surface and the resulting trajectory will be superimposed on it. For higher-dimensional and/or complex-valued equalizers, the user selects the location of a single/double spike (BSE/FSE) initialization. The equalizer-length, stepsize, and the number of iterations can be varied. Numerous variants of the CMA algorithm are available for experimentation.

After simulation run has completed, the frequency/impulse response of any equalizer along the adaptation history can be displayed. In addition the selected equalizer, the local MMSE equalizer, the corresponding system response and the local MMSE system response are also displayed. If a surface trajectory is present, this equalizer selection is obtained from the surface. If only the coefficient history is present, this equalizer is selected from a selected point in the adaptation history. A round/diamond marker is then placed on graph to indicate a frequency/impulse response analysis.

When parameter changes are made that invalidate the currently displayed frequency/impulse responses or error surface, the offending object is automatically erased. On the contrary, any analyses based on an simulation run is retained (for comparison to other experiments) until the "Clear Traces" button is pressed.


Channel Options

Equalizer Algorithms

Algorithm Options

The BERGulator keeps all variables local in scope unless the user invokes the program "berg_global.m". In the latter case, the important variables and user-interface handles are made available to the user so that he/she/it may access these quantites and/or construct an m-file automating the BERGulator user-interface.


BERGulator written by: Phil Schniter, June 1997

Send comments, bug reports, or cold hard cash to