а – блок управления записью-чтением очереди, б – внешний вид подсистемы очередь Буфер (buffer). Буфер эффективен для преобразования входного потока в наборы данных, а также как средство хранения этих данных. Рассмотрим применение буфера для выделения из потока пронумерованных байт данных с фиксированными номерами. На рис. 22 приведено изображение рассматриваемой подсистемы Buf. Пусть система предназначена для выборки из входного потока наборов данных (D_inp) по их номерам (Indx). Для простоты рассмотрен случай, когда требуется выбрать два первых набора. Внутренняя схема подсистемы (рис.23) содержит два компаратора Compare1 и Compare 2, которые выбирают требуемые наборы данных. При срабатывании соответствующего компаратора разрешается работа контролируемого им буфера, в который и записываются выбранные данные. Записанные в буферы данные сохраняются для обеспечения их дальнейшей обработки, например, объединения в один массив блоком cat.
Рис. 23. Набор буферов для хранения данных
Элементы Bufer_1 и Bufer_2 представляют собой Enable-подсистемы (рис. 24) и содержат управляющий вход Enable, входной In1 и выходной Out1 порты, а также собственно буфер Buffer. Окна настройки буфера и его портов приведены на рис. 25. Настройка заключается в том, что выходные данные буфера объявляются доступными и после завершения интервала времени, в котором Enable-подсистема была активна. Их значение будет определяться теми данными, которые были введены в буфер в последний момент активности подсистемы (held). Размер буфера принят равным единице. Поскольку в условиях моделирования процессов, идущих с различной тактовой частотой и имеющих различное дискретное время, контролирование заполнения буфера с размером больше единицы затруднительно. Исследование буфера можно выполнить на основе файла buffer_.mdl, находящегося в папке подготовительных материалов проекта.
Рис. 25. Настройка буфера и его портов в Enable-подсистеме
а – настройка выходного порта подсистемы, б – настройка параметров порта,
в – настройка управляющего входа подсистемы
Функции Matlab. Функции Matlab используются при отсутствии требуемых готовых блоков в библиотеке Simulink и других библиотеках. Для применения функций пользователя предусмотрены шаблоны Fcn, и MATLAB Fcn и Embedded MATLAB Function в библиотеке раздела User-Defined Functions (рис.26). Схема для проверки работы блоков имеется в папке подготовительных материалов для курсового проекта (файл Fcns.mdl).
В рассматриваемой системе программирования различают два вида файлов, содержащих программные коды. Модель созданная в среде Simulink, хранится в S-файле. Модель, написанная на языке MATLAB, хранится в M-файле.
Рассмотрим применение блоков, определяемых пользователем для взаимного преобразования бинарного и десятичного представления чисел. Такая задача возникает при формировании контрольной суммы кадра передатчика и при проверке правильности контрольной суммы в приемнике.
Применение блока Fcn в рассмотренном случае нецелесообразно. Поскольку он не сможет возвратить векторную величину (бинарную последовательность).
Блок MATLAB Fcn. Применение данного блока требует, что бы кроме указания самой используемой функции и передачи ей параметров, была указана размерность возвращаемого результата. В общем случае размерность может быть не известна заранее, а вычисляется в процессе моделирования.
Одно из решений заключается в применении Enable-блоков. В этом случае при передаче управления такому блоку размерность известна. На рис. 27 приведен фрагмент модели, реализующий рассмотренное решение. В блоке Fcn (рис. 27 г) вычисляется размерность ожидаемого результата преобразования
Expession = ceil(1.4427*log(u+eps)), где ceil – функция вычисления целого,
u – значение величины, передаваемой на вход блока,
eps - точность вычисления в функциях MATLAB,
log - натуральный логарифм.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.