Моделируйте протокол связи при помощи объектов графика

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

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

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

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

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

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

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

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

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

В скрипте MATLAB sf_frame_tester.mвыборочный код генерирует короткий сигнал, состоящий из нескольких действительных импульсов и одной ошибки передачи. Ошибка состоит из импульса 470 мс, который является слишком длинным, чтобы представлять символ A и слишком коротким, чтобы представлять символ 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

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

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

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

См. также

Похожие темы