exponenta event banner

Моделирование коммуникационного протокола с использованием объектов диаграммы

В этом примере показано, как использовать автономную диаграмму Stateflow ® для моделирования компонента синхронизации кадров и обнаружения символов в системе связи. Автономные диаграммы реализуют классическую семантику диаграмм с MATLAB ® в качестве языка действий. Можно запрограммировать диаграмму с помощью всех функциональных возможностей MATLAB, включая функции, ограниченные для генерации кода в Simulink ®. Дополнительные сведения см. в разделе Создание диаграмм потока состояний для выполнения в виде объектов MATLAB.

Реализация алгоритма обнаружения символов

В этом примере вход в систему связи состоит из двоичного сигнала нулей и единиц, принимаемых каждые 10 миллисекунд. Входной сигнал может содержать любую комбинацию:

  • Импульс длиной 770 мс (77 последовательных импульсов) для обозначения начала и конца кадра данных и обеспечения синхронизации системы.

  • 170-миллисекундный импульс (17 последовательных импульсов) для обозначения символа А.

  • Импульс 470 мс (47 последовательных импульсов) для обозначения символа В.

Файл sf_frame_search.sfx определяет автономную диаграмму Stateflow, которая реализует этот протокол связи. Диаграмма состоит из двух внешних состояний в параллельном разложении. Initialize состояние сбрасывает значение локальных данных symbol в начале каждого шага выполнения. Search состояние содержит логику, которая определяет алгоритм обнаружения символа. Когда это состояние обнаруживает один из импульсов, разрешенных протоколом связи, имя соответствующего символа сохраняется как symbol и отображается в окне команд MATLAB. Параллельная декомпозиция позволяет диаграмме предварительно обрабатывать входные данные. Дополнительные сведения см. в разделе Декомпозиция состояния.

Для отслеживания длительности импульса через несколько шагов выполнения диаграмма использует count оператор. Этот оператор упрощает конструкцию диаграммы, устраняя необходимость в ручном счетчике. Например, условие [count(pulse)==17] охраняет исходящий переход от подсостояния NewFrame. Это условие становится верным, когда данные pulse равен единице для 17 последовательных шагов выполнения. В этом случае диаграмма переходит к CouldBeA подсостояние. Если за этим переходом следует нулевой вход, то диаграмма регистрирует прием символа А и переходит обратно в NewFrame подсостояние. В противном случае диаграмма переходит к SearchForB состояние, из которого условие [count(pulse)==29] ищет дополнительные 29 для обозначения символа B.

Выполнение автономной диаграммы

В сценарии MATLAB sf_frame_tester.m, код выборки генерирует короткий сигнал, состоящий из нескольких действительных импульсов и одной ошибки передачи. Ошибка состоит из 470 мс импульса, который является слишком длинным для представления символа А и слишком коротким для представления символа В.

%% 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

Выполнение сценария приводит к следующим результатам в окне команд MATLAB:

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

Во время моделирования анимация диаграммы обеспечивает визуальную индикацию поведения алгоритма во время выполнения.

См. также

Связанные темы