The DE domain uses an event-driven model of computation where time-stamped particles represent events that occur at arbitrary points in simulated time. Schedulers maintain an event queue (a list of events sorted chronologically by time stamp) and manage the execution of events in chronological order. The DE domain is well suited for modeling large complex systems and for integrating and managing the execution of design elements developed in other domains.
The DE domain is a high-level domain that can be used for a broad range of modeling projects. The event driven approach is particularly useful for handling levels of abstraction. MLDesigner extends this abstraction power with data structures, quantity and server resources. The DE domain includes a core library of more than 40 demonstration models. Source code is provided for all core library blocks, so you can quickly modify them to represent your specific problem.
Dynamic Data Flow is a generalized implementation of the dataflow model of computation. The DDF model of computation uses dynamic (runtime) scheduling to addresses the needs data flow models that require more flexible scheduling than is provided in SDF ( Synchronous Data Flow). Data dependent flow of control is only allowed within the confines of a primitive. DDF supports conditionals, data-dependent iteration, and true recursion.
The DDF domain is a good choice for signal processing applications with a limited amount of runtime control. It is useful for systems with multiple modes of operation, such as modems (which have startup sequences and often implement multiple standards), for signal coding algorithms (which often offer a range of compression schemes), and for asynchronous signal processing applications, such as timing recovery and arbitrary Sample Rate conversion.
DDF is the most general of the Data Flow domains. In addition to DDF-specific design blocks, it can also use Boolean Data Flow and Synchronous Data Flow design blocks.
The SDF model of computation uses static scheduling of data flow where the flow of control is completely predictable at compile time. The SDF domain is a subdomain of the Dynamic Data Flow domain and SDF primitives can be used in DDF systems. For greater efficiency on long runs, the two domains can also be mixed using the MLDesigner hierarchy. A module within a DDF system can be SDF, meaning that it will use an SDF scheduler. Conversely, a module within an SDF system can be DDF.
The SDF domain is suitable for fixed and adaptive digital filtering (in time or frequency domains), multi-rate applications, and filter applications (polyphase real and complex FIR filters.) Application examples in the demo library include speech coding, sample rate conversion, analysis synthesis filter banks, modems, phase locked loops, channel simulation, linear prediction, chaos, filter design, Kalman filtering, phased array beam forming, spectral estimation, sound synthesis, image processing, and video coding.
The CT/DE domain is an experimental domain that supports the design and simulation of continuous time and mixed signal systems. There are many instances where pure discrete event or continuous time models of computation are not sufficient and are in fact problematic. By combining the two models of computation into a new domain it is now possible to design heterogeneous systems with completely different signal types. Connections between ports of different types are made possible by inserting a primitive to convert the signal. These Primitives can be found in the EventInterpreters library (to convert a discrete into a continuous signal) and in the EventGenerators library (to convert a continuous to a discrete signal). This greatly enhances the designer's ability to create models that were till now problems.
The CT part of this mixed domain is suited for modeling physical systems with linear or nonlinear algebraic equation descriptions and has been extended to handle discrete events. This is achieved by having the scheduler switch between continuous time and discrete event mode. At a given time in the simulation interval the Discrete Event scheduler processes all events that have a current timestamp. The simulator then switches to the Continuous Time scheduler. The continuous trajectory of the signal is calculated by a numerical ordinary differential equations (ODE) solver until the next scheduled discrete event is reached where the scheduler switches back to discrete event mode.
The CTDE is work in progress and is stored in the MLD Experimental Library.
The Finite State Machine domain is a new MLDesigner domain, introduced with Version 2.3 to replace the original Ptolemy FSM domain. It describes behavior in terms of states, transitions between states, and actions that affect or are affected by transitions. The FSM domain is a subdomain; FSM Models are always incorporated into other domains via the MLDesigner wormhole mechanism. Finite State Machines are often used to represent control systems and protocol operations.
The MLDesigner FSM mechanism supports an extended set of finite state machine elements. These elements include events, states, transitions, actions, arguments and histories. The FSM supports multiple levels of hierarchy. Most MLDesigner elements can be linked to states, transitions and actions.
When developing FSM models, the Model Editor is automatically configured as an FSM Editor through the addition of tool buttons for FSM model actions such as adding ports, arguments, states, transitions, histories, and labels.
BDF constructs an annotated schedule - a static schedule where each firing in the schedule is annotated with the Boolean conditions under which it occurs. Any sequence of firings can depend on a sequence of Boolean values computed during the execution. Execution of an annotated schedule consumes much less overhead than execution of a comparable dynamic dataflow schedule.
Boolean dataflow is a compromise between SDF and DDF. Like DDF, it supports runtime flow of control. Unlike DDF, it attempts to construct a compile-time schedule. This gives the efficiency of SDF with the generality of DDF. BDF has a smaller range of primitives than DDF, and does not support recursion, but the model of computation is as general as that of DDF and it can be used for similar applications.
In addition to BDF design blocks, the BDF domain also accommodates SDF design blocks.
A higher order function takes a function as an argument and/or returns a function. For example, the HOF domain provides a function, in the form of a primitive called Map, that can apply any other primitive (or module) to the sequence(s) at its inputs.
The HOF domain is a subdomain; HOF primitives are designed to be usable in all other MLDesigner domains.