а – блок управления записью-чтением очереди, б –
внешний вид подсистемы очередь Буфер (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).
Ссылка на скачивание - внизу страницы.