Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Использование Synchro-блоков




Мы уже видели, что не все блоки модели Scicos должны активизироваться. Мы также знаем, что модель может иметь два независимых источника активации, управляющих разными блоками. Другая ситуация возникает, когда активация необходима во многих точках схемы.

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

С другой стороны, два активирующих сигнала могут быть синхронными, но не быть одновременными. Например, моменты одной активация могут быть подмножеством моментов другой активации (активация с кратными частотами). В этом случае, часть событий, сформированных тактовым генератором с более высокой частотой, одновременна с событиями низкочастотного тактового генератора. Но и в этом случае оба сигнала (с высокой и низкой частотами) должны быть порождены одним генератором, иначе они будут не синхронны. Т.е. необходимо убедиться, что низкочастотная активация получена из высокочастотной.

 

Рассмотрим еще один пример. Здесь блок синхронизации маршрутизирует события, поступившие на входной порт активации между выходными портами активизации. Выбор выходного порта активации зависит от величины сигнала на основном входе блока.

«If-then-else» направляет поступающий сигнал активизации (в этом случае он поступает с часов) на один из своих выходных портов активизации. Если входной сигнал (то есть выходной сигнал блока random generator), положительный, сигнал активации от часов поступает в первый выходной порт активизации, в противном случае – во второй. Генератор шума формирует случайную последовательность. Параметры блока определяют статистические свойства случайной переменной. Блок генератора прямоугольных волн выдает свой сигнал на выход, изменяя свое внутреннее состояние в момент активации.

Выберем опцию Gaussian для шумового генератора. Модифицируем параметры MScope, чтобы получать 3 входа.

Результат для периода часов 2 с показан ниже.

Создадим новую схему. Рассмотрим теперь цикл событий с условием, например счетчик, который останавливается при нулевом результате. Здесь есть специфические проблемы.

Компилятор выдает сообщение: algebraic loop. Эта модель неприемлема. Проблема здесь в том, что для решения, на какой порт If-then-else-блок должен направлять поступающее активационное событие, нам нужно знать величину выхода 1/z-блока. Но этот выход зависит от поступления события (или не поступления) из If-then-else-блока. Возникает неопределенность, которая называется алгебраический цикл (algebraic loop).

Может показаться, что 1/z-блок – это просто в некотором отношении блок задержки и он должен прервать цикл. Но это не так. Причина - в том, что функции 1/z-блока реализуются следующим образом.

Структура 1/z-блока

Из схемы видно, что когда 1/z-блок активизирован, содержимое памяти подается на выход, а затем входной сигнал копируется в память. Таким образом, нет непосредственной связи входом и выходом, а есть между входным сигналом активизации и выходом. Но для того, чтобы прервать цикл, нам нужно иметь выход MEMORY доступным за пределами блока. Это не возможно в данном блоке. Поэтому в Scicos есть специфический блок Mem (в палитре Others), который позволяет это сделать. Создадим новую схему.

Эта схема успешно проходит компиляцию.

Если мы в начале запишем в блок Mem положительное число, то при каждом такте часов активации эта величина уменьшается на единицу пока не станет равна нулю. При этом сигналы часов переключаются в неподключенный выходной порт активизации синхронизатора. Счетчик останавливается.

Запустим модель.

В Mem записано 10. Работа продолжается до конечного времени моделирования. Можно остановить моделирование, когда достигнут ноль, соединением порта else с блоком Stop (палитра Event).




Поделиться с друзьями:


Дата добавления: 2014-12-25; Просмотров: 397; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.