Embedded MATLAB block provides a way of bringing restricted subset of MATLAB into Simulink. There are couple of possibilities when moving untimed MATLAB algorithms into Simulink. This demo illustrates two such alternatives in porting a sample viterbi algorithm (written in M) into Simulink using embedded MATLAB.
The subsystem 'eML_viterbi_ex1' implements the whole algorithm in a single monolithic embedded MATLAB block, where as 'eML_viterbi_ex2' has a similar implementation but broken down into multiple embedded MATLAB blocks.
The former approach can be used to quickly port existing M code into Simulink and verify that it works the same using the debugging capabilities provided by embedded MATLAB block coupled with signal logging and data visualization capabilities provided by Simulink.
The latter approach has the visual appeal and shows the break down of complex piece of logic in mutilple blocks and graphically displays the hierarchy and data flow. In this case the algorithm is broken down into Brach Metric, Path Metric and Trace back units. The Path Metric is further broken down to Add Compare Seelect and Renormalization units.
One of the further advantages of breaking down the algorithm into multiple blocks is that when going for hardware implementation of this algorithm, tradeoffs between area and speed can be explored by placing pipeline registers (integer delay blocks) between blocks and to identify critical path etc.,