Main Content

Model a Communications Protocol by Using Chart Objects

This example shows how to use a standalone Stateflow® chart to model a frame-synchronization and symbol-detection component in a communications system. Standalone charts implement classic chart semantics with MATLAB® as the action language. You can program the chart by using the full functionality of MATLAB, including those functions that are restricted for code generation in Simulink®. For more information, see Create Stateflow Charts for Execution as MATLAB Objects.

Implement a Symbol-Detection Algorithm

In this example, the input to the communications system consists of a binary signal of zeros and ones received every 10 milliseconds. The input signal can contain any combination of:

  • A 770-ms pulse (77 consecutive ones) to mark the beginning and end of a frame of data and to ensure system synchronization.

  • A 170-ms pulse (17 consecutive ones) to indicate symbol A.

  • A 470-ms pulse (47 consecutive ones) to indicate symbol B.

The file sf_frame_search.sfx defines a standalone Stateflow chart that implements this communication protocol. The chart consists of two outer states in parallel decomposition. The Initialize state resets the value of the local data symbol at the start of each execution step. The Search state contains the logic that defines the symbol-detection algorithm. When this state detects one of the pulses allowed by the communication protocol, the name of the corresponding symbol is stored as symbol and displayed in the MATLAB Command Window. Parallel decomposition enables the chart to preprocess the input data. For more information, see Define Exclusive and Parallel Modes by Using State Decomposition.

To track the length of a pulse through several execution steps, the chart uses the count operator. This operator simplifies the design of the chart by eliminating the need for a manual counter. For example, the condition [count(pulse)==17] guards the outgoing transition from the substate NewFrame. This condition becomes true when the data pulse is one for 17 consecutive execution steps. In this case, the chart transitions to the CouldBeA substate. If this transition is followed by an input of zero, then the chart registers the reception of symbol A and transitions back to the NewFrame substate. Otherwise, the chart transitions to the SearchForB state from which the condition [count(pulse)==29] searches for an additional 29 ones to mark symbol B.

Execute Standalone Chart

In the MATLAB script sf_frame_tester.m, the sample code generates a short signal consisting of several valid pulses and one transmission error. The error consists of a 470-ms pulse that is too long to represent symbol A and too short to represent symbol B.

%% Test Symbol Detection Algorithm
% Generate a short signal consisting of several valid pulses and one
% transmission error.

f = sf_frame_search(pulse=0);        % create chart object
sendPulse(f,77);                     % frame marker
sendPulse(f,17);                     % A
sendPulse(f,47);                     % B
sendPulse(f,37);                     % transmission error
sendPulse(f,47);                     % B
sendPulse(f,17);                     % A
sendPulse(f,77);                     % frame marker
delete(f);                           % delete chart object

function sendPulse(f,n)
% Send a pulse of n ones and one zero to chart object f.

for i = 1:n
    step(f,pulse=1);
    printDot(1)
end

printDot(0)
step(f,pulse=0);

    function printDot(x)
        persistent k
        if isempty(k)
            k = 1;
        end
        
        if x == 0
            fprintf("\n");
            k = 1;
        elseif k == 50
            fprintf(".\n");
            k = 1;
        else
            fprintf(".");
            k = k+1;
        end
    end
end

Running the script produces these results in the MATLAB Command Window:

..................................................
...........................
frame
.................
A
...............................................
B
.....................................
error
...............................................
B
.................
A
..................................................
...........................
frame

During the simulation, the chart animation provides a visual indication of the runtime behavior of the algorithm.

See Also

Related Topics