Показать сообщение отдельно
Непрочитано 08.05.2012, 08:41   #120
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,509 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию Re: FAQ (ЧаВО) по PROTEUS для начинающих и не только

10.3. Виртуальный инструментарий. PATTERN GENERATOR – генератор цифровых последовательностей и Logic Analyser *– логический анализатор сигналов.

Ну, вот мы плавно переместились к знакомству с цифровыми измерительными приборами. В этом параграфе пойдет речь о двух приборах, которые имеют несколько схожий функционал, только с точностью до наоборот. Один из них вырабатывает многоразрядные цифровые сигналы, а другой позволяет их вывести на экран в виде многоразрядной осциллограммы.
Начнем с генератора цифровых последовательностей, который в меню виртуальных приборов представлен, как PATTERN GENERATOR.Слово pattern в переводе с английского означает «образец, модель, набор», но согласитесь, что как-то кривовато и непонятно звучит на русском – «генератор цифровых образцов». Поэтому, я на свой страх и риск исказил дословный перевод, дабы он звучал более благозвучно и был логически понятным. PATTERN GENERATOR имеет свой собственный файл помощи на английском языке. Материал по нему и по всем последующим приборам будет построен аналогично рассмотренному выше таймеру-счетчику, – «вольный перевод» английского хелпа в моем исполнении с некоторыми комментариями, подробностями и примерами. Приступим…
Если рассмотренный ранее сигнал-генератор мы использовали для выработки аналоговых сигналов, то PATTERN GENERATOR, имеющий даже немного похожий реал-тайм интерфейс с ручками-регуляторами и кнопками (Рис. 10-3-1), мы будем использовать для генерации цифровых многоразрядных сигналов. В принципе его можно использовать и как одноразрядный генератор цифровой последовательности, задействовав только один разряд, если кому-то такой режим потребуется.
Основные возможности генератора цифровых последовательностей:
· Возможность использования как в режиме реал-тайм симуляции, так и для анализа с помощью графиков. Это главное его отличие от аналогового «собрата» - вспомните, что тот генератор для графического анализа использовать было нельзя.
· Внутренние и внешние режимы тактирования и сброса в начало последовательности. Здесь и далее в материале по этому прибору я английское слово trigger заменил нашим сочетанием «сброс в начало» - оно более реально отражает суть этой операции в данном случае. Кстати и сами разработчики в свойствах модели используют термин reset, а в графическом интерфейсе прибора – trigger.
· Настройка тактирования и сброса вращающимися ручками в режиме реал-тайм.
· Шестнадцатеричный и десятичный режимы дисплея в графическом интерфейсе прибора.
· Непосредственный ввод значений для лучшей наглядности.
· Возможность сохранения в файле и загрузки текстовых скриптов выводимых цифровых сигналов объемом до 1024 байт.
· Ручное ограничение длительности периода последовательности.
· Пошаговый вывод, позволяющий контролировать введенные значения.
· Дисплей-подсказка, позволяющий видеть точно положение на сетке.
· Возможность внешним сигналом удержать вывод последовательности в текущем состоянии.
· Команды редактирования блоков в сетке, позволяющие ускорить процесс задания последовательности.
На правой стороне модели PATTERN GENERATOR, которую мы помещаем в поле проекта, выбрав в селекторе виртуальные инструментов, находятся восемь однопроводных выходов Q0…Q7 и восьмиразрядная выходная шина B[0..7]. Выходы отдельных разрядов и шины полностью дублируют друг друга, и вы вольны использовать те, которые в данный момент удобнее или оба выхода одновременно. По умолчанию в свойстве Output Configuration генератора включены как те, так и другие – Output to Both Pins and Bus (оба выхода – отдельные выводы и шина), но при желании в этой строчке через раскрывающееся меню кнопки с треугольником можно выбрать и что-то одно: Output to Pins Only – вывод только на отдельные выходы, или Output to Bus Only – вывод только на шину.
С левой стороны модели находятся две группы выводов внешнего управления, функционально разделенные по назначению на входы и выходы. Я опишу их назначение, а с использованием познакомимся в процессе.
Входы:
· CLKIN(Clock Input) – вход внешней тактовой частоты;
· HOLD – вход удержания текущих данных на выходах;
· TRIG – вход внешнего сброса генератора в начало цифровой последовательности;
· OE(Output Enable) – вход разрешения трансляции на выходы Qи Bтекущего значения из последовательности данных. Если вывод не подключен, или на нем лог. 1 – вывод разрешен.
Выходы:
· CLKOUT(Clock Out) – выход внешней тактовой частоты. Сигналы тактовой частоты – меандр с периодом, заданным параметром Clock Rate будут присутствовать на нем только в том случае, если для генератора выбран режим внутреннего тактирования (Clock Mode Internal) и в параметре Clock out Enabled in Internal Mode (выход тактовой разрешен в режиме внутреннего генератора) установить Yes (по умолчанию стоит No);
· CASCADE– выход для каскадирования с аналогичным генератором. С его помощью можно увеличить разрядность выходных данных с 8-ми до 16 и более, но об этом чуть позже на конкретном примере.
Немного остановимся на окне свойств модели PATTERN GENERATOR, в котором, как и у рассмотренного ранее счетчика-таймера можно произвести предустановки режима генератора, не запуская симуляции. Оно представле но на том же рисунке 10-3-1 справа. Кстати, при использовании генератора в качестве источника для графического анализа – это единственная возможность задать параметры выдаваемого сигнала. При симуляции в режиме реального времени PATTERN GENERATOR имеет всплывающее окно с панелью управления и дисплеем ввода генерируемых сигналов (Рис. 10-3-2). Окно отключается и включается, как и у ранее рассмотренных приборов. Чтобы не описывать одно и то же дважды, на рисунке 10-3-2 в скобках синим цветом указано соответствие назначения ручек и кнопок параметрам из окна Edit Properties модели генератора.
Параметры Clock Rate и Clock Mode определяют соответственно частоту и режим тактового сигнала. Максимальная частота может достигать 12 МГц.
А сейчас ВНИМАНИЕ!!! Хотя, как мне кажется, PATTERN GENERATOR и является одним из самых продуманных и совершенных виртуальных инструментов Протеуса с точки зрения графического интерфейса, но и здесь, к сожалению, не обошлось без ложки дегтя со стороны разработчиков. Причина заключается в том, что если в режиме симуляции реального времени ручку регулятора частоты Vernier установить в крайнее левое положение 0, то частота и период на микро-дисплеях панели Clock принимают значение OFF (выключено), а симулятор почти моментально впадает в неисправимую ошибку. Повторно запустить симуляцию уже не удастся до тех пор, пока PATTERN GENERATOR не будет удален из листа проекта. Никакие превентивные меры, вроде исправления частоты через окно Edit Properties, при этом не помогут – только удаление модели из окна проекта и повторная ее установка из левого тулбара. К сожалению, самостоятельно исправить модель нам не удастся, поскольку она находится в системной библиотеке, недоступной для редактирования. Придется подождать, пока на это обратят внимание разработчики.
Итак, примите к сведению, что тактовая частота Clock Rate не может быть нулевой. В режиме симуляции реального времени частота грубо выставляется переключателем тактовой частоты Clock на серой панели слева внизу, определяющим множитель, а плавно ручкой соответствующего регулятора Vernier. Между этими ручками находятся два микродисплея. На верхнем микродисплее отражается текущее значение тактовой частоты, а на нижнем - периода. Аналогично построена и панель регулировки частоты сброса в начало бледно-салатового цвета с переключателем Trigger и регулятором Vernier, поэтому отдельно я ее описывать не буду. Только в ней установка Vernier в нулевое положение не приводит к фатальным последствиям, хотя при этом частота и период принимают отрицательные значения, что тоже выглядит некорректно. Чтобы иметь доступ к панели и заранее установить требуемые значения достаточно запустить симуляцию кнопкой Pause.
Хочу отметить еще один способ точной установки, как тактовой частоты, так и частоты сброса доступный только в PATTERN GENERATOR. Если дважды кликнуть левой кнопкой мыши по ручке соответствующего переключателя или верньера, то под окном микродисплея частоты появляется всплывающее окно непосредственного ввода значения, что очень удобно для точной установки нужной частоты. К сожалению, хоть мы и будем оперировать в этом приборе больше с периодами, их таким образом ввести невозможно, поэтому каждый раз придется пересчитывать нужный временной интервал в частоту для непосредственного ввода последней.
Режим Clock Mode в окне Edit Properties может принимать следующие значения: Internal– внутренний генератор тактовой частоты, External Pos Edge – внешний по переднему фронту (0-›1) или External Neg Edge – внешний по заднему фронту (1-›0). В режиме внешнего генератора соответствующий импульсный тактовый сигнал подается на вход CLKIN. В онлайн панели генератора на рисунке 10-3-2 те же режимы выбираются последовательно нажатием кнопки CLOCK вверху слева, а отображается текущий режим ярко-зеленым светящимся индикатором. На той же панели имеется кнопка STEP, с помощью которой можно в режиме внутреннего тактового генератора, находясь в паузе симуляции (кнопка Pause активна) выдать на выходы генератора текущий сигнал, находящийся в самой правой колонке.
Параметры Reset Rate и Reset Mode в окне Edit Properties определяют частоту и режим сигнала сброса к началу цифровой последовательности. В панели управления генератора частота выставляется переключателем Trigger грубо и вращением регулятора Vernier плавно. Доступен также и непосредственный ввод при двойном щелчке левой кнопкой по одной из ручек установки частоты сброса.
Режим сброса Reset Mode может быть внутренним Internal от встроенного генератора сигнала сброса, либо внешним по переднему или заднему фронту сигнала на входеTRIG. Кроме того, здесь может использоваться асинхронный и синхронный режимы сброса. Что это означает? Здесь пора использовать конкретный пример, и он есть во вложении PG_SYNC_RESET.DSN. Предположим, что наш генератор выводит 4 байта информации: 0x01, 0x02, 0x03 и 0x04. Тактовая частота внутреннего генератора равна 1 Гц, т.е. 4 байта будут передаваться 4 секунды. Мы включим режим вывода тактовой частоты на вывод CLKOUT, т.е. в свойствах для Clock out Enabled in Internal Mode выберем Yes. Установим на вход TRIG внешний генератор, вырабатывающий импульс сброса через 3,5 сек, т.е. до окончания вывода четвертого байта. Теперь попробуем установить асинхронный и синхронный сброс в начало по переднему фронту сигнала и результаты выведем на два цифровых графика. Результат представлен на рисунке 10-3-3. Во-первых, на этих графиках хорошо видно, что в режиме внутреннего тактового генератора смена данных (я использовал зонд на шине B[0..7], но это характерно и для отдельных выводов данных) происходит по заднему спадающему фронту тактового сигнала CLKOUT. Во-вторых, на верхнем графике хорошо видно, что в асинхронном режиме данные на выходе, сигнал тактовой частоты и выходной сигнал каскадирования СASCADE перезапустились сразу же по приходу переднего фронта импульса на входеTRIG, в то время, как в синхронном сброс произошел по окончании очередного тактового импульса на входе CLKOUT. Аналогичная картина наблюдается при выборе асинхронного и синхронного сброса по заднему фронту. Графики приводятся в HELP, и я не буду здесь загромождать материал лишними рисунками, которые каждый может посмотреть самостоятельно на своем компьютере. В панели управления генератора цифровых последовательностей (Рис. 10-3-2) режим сброса в начало устанавливается двумя независимыми кнопками в панели TRIGGER слева посередине и индицируется соответствующими ярко-зелеными индикаторами.
Ну, а теперь перейдем непосредственно к тому, как задать требуемую последовательность вывода цифровых сигналов, сохранить ее и вывести на выход генератора именно требуемое количество байт. Для этой цели служит дисплей, разбитый клетками на байты (вертикальные колонки) в панели управления PATTERN GENERATOR (Рис. 10-3-2). Каждая закрашенная клетка соответствует единичному биту информации, незакрашенная – нулевому. Самый первый выводимый байт с адресом 0x00 расположен справа, а всего их может быть 1024. В самом байте (колонке) нулевой разряд расположен сверху, а старший - 7-й бит снизу. Над клетчатым полем расположена шкала, отображающая с определенным интервалом номера байтов по умолчанию в шестнадцатеричном формате. Под колонками-байтами отображается их текущее значение также по умолчанию в шестнадцатеричном формате.
Если кому-то больше по душе десятичный формат, то его можно установить по всплывающему меню правой кнопки мыши, щелкнув внутри сетки дисплея (Рис. 10-3-4). Установив флажок Decimal Display, получим десятичное отображение шкалы адресов наверху и шкалы значений внизу сетчатого дисплея. Это меню заслуживает особого внимания, поэтому ниже рассмотрим, что еще можно сделать с его помощью.
Опция Clear Pattern позволяет мгновенно очистить (сбросить в нули) весь сетчатый дисплей, т.е. все 1024 колонки.
Опции Load Pattern, Save Pattern и Save Pattern As позволяют соответственно загрузить последовательность из файла или сохранить подготовленную последовательность в файле. Файл будет иметь расширение .PTN и представляет собой обычный текстовый файл, в котором шестнадцатеричные значения выводимых байтов разделены запятыми. В каждой строчке находится по 8 байтов и всего в файле будет 128 строк со значениями и две строки в начале: первая – заголовок, начинающийся с точки с запятой, а вторая пустая. Приведу пример первых четырех строк для файла из примера с «бегущей единицей», который мы будем рассматривать чуть ниже. Хочу сразу отметить, что независимо от того, сколько байт информации мы будем выводить, файл, сохраненный опциями SavePattern и Save Pattern As, будет иметь полный объем в 1024 значения. Незадействованные байты, находящиеся за маркером-ограничителем, будут нулевыми.
Код:
 
; Saved at 21:40 on 29/04/2012.
 
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
Ну, и еще один комментарий по этому поводу. Если кому-то претит тыкать мышкой, набирая последовательность в дисплее панели PATTERN GENERATOR, то можно войти в режим паузы, сохранить «пустой», т.е. со значениями типа 0x00 файл формата .PRN, а затем открыть его в любимом текстовом редакторе и задать нужные значения уже с клавиатуры. Но, продолжим знакомство с опциями меню…
Опция Color Configuration позволяет при движении по стрелке выйти в еще одно подменю установки цветов сетчатого дисплея. Там вы можете выбрать цвета отображения для логической единицы (по умолчанию черная), для логического нуля (по умолчанию белый), а также для сетки (Grid), для фона (Background) и выделяемого блока (Tagbox). Например, на рисунке 10-3-4 я изменил цвет нулей на синий, а единичек на красный, т.е. так, как они отображаются у выводов логических элементов.
Флажок, установленный у Decimal Display или Hex Display, определяет режим отображения данных на шкалах над и под сетчатым дисплеем.
Если установить кликом мышки флажок у Tooltip Display, то при наведении курсора мыши на клетку сетки в панели дисплея PATTERN GENERATOR рядом с курсором будет отображаться дополнительное окно-подсказка. В нем будут три строки: Column Number – номер колонки в сетке дисплея, Row Number – номер строки в сетке дисплея, а также Hoz. Byte Count – номер строки и номер позиции в строке (в угловых скобках) для байта этой колонки в файле формата .PRN.
Действие опций Insert Column (вставить колонку) и Remove Column (удалить колонку) рассмотрим по рисунку 10-3-5. Для этого установим маркер ограничитель последовательности и попутно познакомимся с ним. Маркер-ограничитель ставится одиночным кликом левой лапкой мыши в нужном месте в поле шкалы номеров байтов над сеткой дисплея и выглядит как стрелка указатель вниз с вертикальной пунктирной линией ограничения в сетке (Рис. 10-3-2). Более наглядно в цвете это ограничение выглядит на «раскрашенном» дисплее (Рис. 10-3-5). На этом же рисунке показан процесс вставки и удаления колонок. Сразу же хочу пояснить, что общее количество колонок (байтов) не меняется, оно, как было 1024, так и останется. Процесс вставки/удаления затрагивает только активные (находящиеся справа от маркера-ограничителя) колонки последовательности. Именно эти колонки (байты) и будут воспроизводиться генератором на его выходах. В ходе воспроизведения в режиме реал-тайм дисплей PATTERN GENERATOR будет последовательно сдвигаться вправо и байт, находящийся в самой правой колонке в текущий момент будет выдаваться на выходы генератора. Чуть ниже мы рассмотрим это на примере, а пока давайте закончим с контекстным меню правой кнопки мыши.
Опции BlockSet (блок установить) и Block Clear (блок очистить) призваны облегчить нам редактирование. Если выбрать одну из этих опций, то можно, удерживая нажатой левую лапку мыши, в сетчатом поле дисплея выделить прямоугольный блок клеток, который соответственно либо установится в единицы, либо сбросится в нули.
Ну и последняя опция Restore Default Settings сбросит дисплей PATTERN GENERATOR в исходное состояние, т.е. черно-белое отображение сетки и шестнадцатеричный формат отображаемых чисел. Замечу, что данные, набранные в поле дисплея, при этом не сбрасываются, меняются только цвета и формат чисел. Курсор ограничения также остается на том месте, куда вы его установили.
Настал черед примера действия курсора-ограничителя, а заодно и наглядного вывода данных генератором последовательностей. Здесь мы снова вернемся к использованию внутренних генераторов тактовой частоты и сброса, и от нас потребуется некоторое напряжение ума в области арифметических действий. Тем, кто изучает FAQв процессе длительных ночных посиделок за компьютером, рекомендую принять что-нибудь бодрящее, чтобы расшевелить засыпающий мозг. Сейчас мы будем производить некие арифметические действия с частотами и периодами, и придется пошевелить извилинами. Итак, попробуем вывести на выход генератора «бегущую единицу», т.е. как бы имитируем регистр сдвига единицы от нулевого разряда до седьмого. Помещаем в поле проекта PATTERN GENERATOR и запускаем его кнопкой Pause, чтобы иметь доступ к панели генератора.Данные, которые при этом нам предстоит набрать представлены в верхней части рисунка 10-3-6 и занимают 8 колонок (байтов) в сетчатом поле дисплея.
Курсор ограничитель установим за восьмым по счету байтом. Обратите внимание, девятый байт я установил в 0xFF, но он пока находится за активной областью воспроизведения и понадобится нам чуть позже. Чтобы наглядно видеть изменения на выходах генератора в режиме реального времени установим низкую тактовую частоту 1 Гц. Проще всего это сделать непосредственным вводом, т.е. двойным кликом по одной из ручек в панели Clock и вводом точного значения с клавиатуры. Теперь нам предстоит выбрать частоту внутреннего генератора сброса для того, чтобы воспроизводились все 8 нужных байтов. Сделать это нетрудно, но придется посчитать. Период тактовой частоты составляет 1 сек (нижний микро-дисплей в панели Clock), т.е. для воспроизведения 8 байтов потребуется период 8 сек. Вспоминаем школьный курс физики, период и частота связаны формулой F=1/T. Делим единицу на 8 и получаем 0,125 Гц. Это значение устанавливаем для Trigger, можно тоже через непосредственный ввод. Только не забудьте, что в качестве десятичного разделителя в Протеусе используется точка, а не запятая. После этого запускаем симуляцию (снимаем с паузы) и смотрим, что у нас получилось. Поскольку я не могу здесь использовать кино, ограничусь приведением цифрового графика (Рис. 10-3-7), на котором кроме сигналов разрядов и шины я еще добавил для наглядности вывод тактовой частоты CLKOUTи сигнала CASCADE.
Теперь увеличим частоту сброса вдвое, а все остальное оставим на местах (Рис 10-3-8 ). Период сброса в начало при этом тоже уменьшится до 4 секунд, и генератор за этот период успевает вывести только первые 4 байта, затем цикл повторяется.
В качестве следующего этапа изучения наоборот увеличим период сигнала сброса до 10 секунд, для чего нам потребуется ввести частоту Trigger 0,1 Гц. Естественно, все остальные параметры пока не трогаем. Этот момент проиллюстрирован графиком на рисунке 10-3-9. Теперь наш генератор проходит всю цифровую последовательность до конца и на последнем байте стоит до прихода сигнала сброса.
Ну, и в завершение нашего эксперимента оставим период сброса равным 10 секундам, а маркер-ограничитель сдвинем на 1 байт влево, т.е. добавим в последовательность колонку 0xFF. Проверяем – рисунок 10-3-10. Так и есть, байт появился в нашей последовательности, а поскольку всего у нас стало 9 байтов, то при периоде тактовой частоты 1 секунда и интервале между сигналами сброса – 10 секунд на него приходятся два последних такта, т.е. он длится 2 секунды до прихода очередного сигнала сброса.
Все рассмотренные примеры находятся в файле 4xPG_1Hz.DSN вложения. Окна панелей генераторов там отключены, чтобы не загромождать ими проект в режиме симуляции. Включить окно нужного в данный момент генератора можно через верхнее меню Debug. Все доступные всплывающие окна находятся в самом низу этого меню, мы уже не раз обсуждали данный момент, и подробно останавливаться на нем я не буду.
Дополнительно замечу только, что в данных примерах я использовал асинхронные режимы, но частоты (периоды) подбирал кратными, поэтому у меня на графиках фронты четко совпадают. Если использовать для сигнала сброса частоту, которая окажется дробной по отношению к тактовой, то в асинхронном режиме последний тактовый импульс будет «подрезаться» сигналом сброса. Отдельно такой пример находится в файле PG_DROP_RESET.DSN вложения.
Немного остановимся на использовании внешнего файла цифровой последовательности, поскольку я упустил некоторые нюансы его использования, а заодно и закрепим знания примером. Во-первых, числа в файле совсем не обязательно должны быть в шестнадцатеричном формате. Можно использовать и десятичные числа и даже двоичные, формата %00000001, генератор благополучно их «скушает». Во-вторых, первые две строчки, дата создания и пустая, генерируются, когда вы создаете файл из дисплея генератора последовательностей, и могут отсутствовать, если файл создается вручную, например, сразу в блокноте Notepad. Ну и наконец, в-третьих, при создании файла вручную совсем незачем набивать именно 1024 байта, если они вам не нужны. Если, например, мне нужно выводить числа от нуля до девяти, то я их так и набью в блокноте: «0,1,2,3,4,5,6,7,8,9,». Естественно, кавычек быть не должно (они для наглядности ограничивают вводимую информацию), да и запятая в конце может отсутствовать, это не критично. Но есть одна особенность использования внешнего файла, о которой не могу не упомянуть, чтобы потом не было лишних вопросов. Если последовательность загружена из заранее созданного файла через опцию Load Pattern, то сам файл в окне Edit Properties не добавляется. Эта последовательность сохраниться после остановки симуляции в «теле» проекта, и будет воспроизводиться при последующем запуске симуляции. Но, если файл последовательности добавлен в окне Edit Properties, то при каждом запуске симуляции информация будет добавляться из него. Кроме того, файл, добавленный в окне Edit Properties, используется для графиков. Другими словами…. Допустим, у меня в Pattern Generator Script окна Edit Properties прописан файл count.PRN. Этот файл всегда при запуске реал тайм кнопками Playили Pause будет загружаться, и последовательность в дисплей Pattern Generator будет добавляться из него. Но, если я поставлю симуляцию в Pause, то могу через Load Pattern загрузить последовательность из другого файла или просто руками что-то поправить в уже загруженной и до тех пор, пока я не нажму кнопку Stop симуляции, будет работать эта скорректированная последовательность. При следующем запуске опять загрузится информация из файла count.PRN. В приложенном примере PG_file.DSN по умолчанию загружается файл с десятичной последовательностью dec_file.PRN, но в папке с этим примером есть примеры файлов в шестнадцатеричном hex_file.PTN и двоичном bin_file.PTN форматах, которые вы можете подключить самостоятельно.
Теперь рассмотрим пример внешнего управления выдачей данных из PATTERN GENERATOR (пример вложения Ext_control.DSN). В нем я задействовал все внешние входы управления (Рис. 10-3-11). На вход CLKIN подается тактовая частота 1Гц от внешнего генератора CLOCK. Логические переключатели на остальных входах обеспечивают управление генератором. На рисунке на вход удержания HOLD подана логическая единица, т.е. вывод последовательности приостановлен, а текущий байт (самый правый в дисплее панели генератора) находится на его выходах. Для наглядности я повесил на них семисегментные BCD индикаторы. Поскольку и режим сброса установлен внешним, то при достижении маркера-ограничителя генератор не возвратится к началу, а будет ждать внешнего сигнала сброса на входе TRIG. Последний выданный байт 0xF0 будет при этом присутствовать на выходах. Сброс в начало произойдет при отпускании предварительно нажатого мышкой логического переключателя на входе TRIG, т.е. по заднему фронту импульса на этом входе. Логическая единица на входе OE разрешает выдачу сигналов на выходы генератора. Если логический переключатель на этом входе установить в 0, то последовательность будет сдвигаться, но выходы по ближайшему тактовому сигналу перейдут в третье (серое) состояние. Обратите внимание, что при внешнем управлении уже не важно, что выставлено ручками Clock и Trigger внизу панели генератора. Но, при желании, можно использовать внешнее управление и частично (только сброс или только тактовая частота), тогда те ручки, для которых в левых панелях выбран режим Int(внутренний) будут активны.
Следующий пример, как я и обещал, посвящен каскадированию, т.е. наращиванию числа выводимых разрядов. В примере Cascade.DSN два генератора соединены таким образом, чтобы работать одновременно (Рис. 10-3-12).
Для этого выход CLKOUT ведущего генератора соединяется с выходом CLKIN ведомого. При этом не забудьте, что у ведущего генератора в свойствах надо разрешить выдачу тактового сигнала на этот выход, т.к. по умолчанию она отключена. Кроме того, выход CASCADE ведущего генератора соединяется с входом TRIG ведомого. Ведущий генератор может управляться как угодно и внутренними (как в примере) генераторами Clock и Trigger и внешними, а вот для ведомого генератора необходимо только внешнее управление. При этом очень важно не «напороть косяков» с фазами управляющих сигналов, иначе получим нестыковку во времени. Так, например, мы уже знаем, что в режиме внутреннего тактового генератора смена сигналов происходит по заднему фронту импульса, поэтому для ведомого я выбрал этот режим. А вот сброс ведомого пришлось поставить по переднему фронту, иначе последний сигнал на нем длился 2 такта. Чтобы проверить себя я рекомендую пользоваться цифровым графиком. В частности, для данного примера он представлен на рисунке 10-3-13. На важные моменты в нем я указал стрелками. Это переход с последнего разряда генератора 1 на нулевой разряд генератора 2 и момент сброса в начало обоих генераторов. В данном примере последовательность имеет вид бегущей единицы и хорошо видно, что смена разрядов и сброс проходят корректно.
Ну, кажется, материал по PATTERN GENERATOR я «разжевал» до такой степени, что его «проглотит» даже беззубый грудной младенец. Надеюсь и взрослые «дяди и тети» студенты им не подавятся, поскольку последнее время они обратили на этот прибор внимание, а может преподаватели их «обратили». А нам пора перейти и к следующему прибору, именуемому LOGIC ANALYSER или логический анализатор сигналов. Здесь все несколько проще, и интерфейс прибора и его подключение, поэтому я не стану так подробно его рассматривать, а остановлюсь только на наиболее важных особенностях его применения. Да и родной Helpанализатора не блещет подробностями, да в придачу содержит некоторые «атавизмы» от древних версий. Так, там до сих пор речь идет про 8 однопроводных входов, хотя на самом деле их 16. Итак, приступим…
Логический анализатор сигналов LOGIC ANALYSER (Рис. 10-3-14)предназначен для исследования многоразрядных цифровых сигналов. Принцип работы прибора основан на непрерывной записи в буферную память выборок входного сигнала с заранее предустановленным разрешением с последующим выводом ее на дисплей анализатора. Сразу же поясню, что термин «непрерывная» относится именно к выборкам (сэмплам), т.е. буфер не обновляется непрерывно в процессе реал-тайм симуляции, а заполняется после нажатия кнопки Capture (захват) и, когда он заполнен полностью (кнопка изменит цвет с розового на зеленый), производится вывод записанного в буферную память сигнала. Следующая запись будет произведена после очередного нажатия Capture. После того, как запись произведена, мы можем исследовать записанные сигналы, масштабируя и сдвигая экран дисплея, производить временные измерения с помощью курсоров, но данные в буфере будут оставаться неизменными. Я хочу особо обратить ваше внимание на эту особенность.
Возможности логического анализатора следующие:
· 16 индивидуальных входов сигналов A0A15 и 4 входных восьмиразрядных шины B0B3.
· Буферная память на 40000 выборок (сэмплов).
· Возможность установки разрешения записи от 0,5 нс до 200 мкс на одну выборку. При этом время записи (захвата) составит соответственно от 10 нс до 4 с. Обращаю ваше внимание, что здесь, как и ранее, надо учитывать время, прошедшее по таймеру в трее окна ISIS. А это значит, что 4 секунды при заторможенной симуляции могут превратиться в реальные 40 и больше, а то потом опять начнутся «страшилки про глюки Протеуса».
· Изменение масштаба экрана дисплея возможно от 1000 выборок на одну клетку, до 1-й выборки на клетку.
· Установка совпадения для захвата по логическому AND (И) для комбинации входов в различных сочетаниях низкий/высокий логический уровень или передний/задний фронт импульса, а также совпадения по цифровому значению сигнала на шинах.
· Изменение позиции захвата в пределах от -50% до +50% буфера памяти.
· Простые измерения временных характеристик сигналов с помощью устанавливаемых курсоров.
В отличие от других виртуальных приборов,LOGIC ANALYSER не имеет в окне Edit Properties заранее прописанных строк параметров предустановки. Все установки прибора ведутся из панели, открывающейся при запуске симуляции (Рис. 10-3-14 справа), хотя позже их скрытые значения появляются в окне (Рис. 10-3-15). Соответствие появившихся там параметров установкам прибора на его панели я укажу в процессе изучения последних.
А изучение кнопок и ручек управления мы начнем с ползунков (слайдеров), расположенных напротив соответствующих им индивидуальных входов. Эти ползунки имеют пять положений и по умолчанию стоят в самом левом, т.е. возможность захвата любого сигнала на соответствующем входе (Рис. 10-3-16). Именно ими можно установить совпадение по логическому AND (И) для одного или группы входов, которое потом будет расположено в позиции с нулевым временем (вертикальный пунктир в центре дисплея на рисунке 10-3-16). Все курсоры, устанавливаемые слева от этого пунктира, будут показывать отрицательные значения времени, а справа – положительные.
Положение пунктира нулевого отсчета времени по умолчанию принято посередине дисплея, что соответствует значению TRIGGERPOS=100 в окне Other Properties (Рис. 10-3-15). В том же окне положению ползунков соответствует параметр MODE cномером входа. Если слайдер находится в самом левом (по умолчанию нулевом) положении, то захват сигнала происходит при любом уровне на соответствующем входе(ах). Выставив ползунки на нужных входах соответствующим образом, можно добиться, чтобы захват происходил именно при этом сочетании сигналов. Например, необходимо, чтобы захват сработал на состояние, когда A0=0, A1=1, а на A2 происходит спад сигнала (задний фронт). Тогда нам необходимо поставить движок напротив A0 на зеленую черту, движок A1 на красную, а ползунок на A3 сдвинуть вправо до упора, чтобы он оказался под спадающим фронтом импульсного сигнала, изображенного вверху окна. Результат приведен на рисунке 10-3-17 и в примере вложения LA_capture.DSN.
Чуть ниже ползунков для индивидуальных входов (Рис. 10-3-14) расположены четыре окна с раскрывающимися списками для шинных входов B0B4. Для них нельзя установить совпадения по фронтам, но можно выставить совпадение по цифровому значению из выпадающего списка в диапазоне 00 до FF. В окне Other Properties (Рис. 10-3-15) эти установки соответствуют параметру BUSMODE с соответствующим номером шины и по умолчанию равны -1, что эквивалентно All (любое) в окнах панели управления.
Вообще с установкой AND-совпадений как по сочетанию на индивидуальных входах, так и на шинах я рекомендую быть предельно аккуратными, т.к. можно случайно поставить такое сочетание, которое не встречается во входных сигналах, и захват не произойдет никогда. Если у вас кнопка Capture надолго зависла в розовом состоянии и симуляция при этом не заторможена, то внимательно проверьте сочетание ползунков и значений на шинах или попробуйте вернуть их в исходное состояние.
В правой части панели LOGIC ANALYSER расположены следующие органы управления:
Кнопка Capture, по нажатию которой происходит заполнение буферной памяти анализатора. Вы уже догадались из предыдущего материала, что это самая главная кнопка на панели. После нажатия она становится розовой и происходит заполнение памяти выборками, затем она становится зеленой – захват завершен, и трассы графиков выводятся на дисплей.
Кнопка Cursors (расстановка курсоров) по умолчанию активна (розовая) и позволяет расставлять на дисплее анализатора курсоры (вертикальные зеленые линии на рисунке 10-3-16 ), над которыми отражается числовое значение времени и четырехзначное числовое значение состояние индивидуальных входов в шестнадцатеричном формате. Эта опция позволяет легко проделать временные измерения сигналов и полностью аналогична такой-же опции у виртуального осциллографа. По меню правой кнопки мыши в поле дисплея анализатора курсоры можно удалять как полностью, так и по одному. Отмечу еще, что курсоры, установленные слева от пунктирной линии нулевой точки захвата, будут иметь отрицательное значение времени.
Ниже кнопок расположено колесико сдвига экрана дисплея Position. По умолчанию оно стоит на отметке 50, что соответствует значению HORIZPOS=0 в окне Other Properties (Рис. 10-3-15). При этом нулевая отметка времени расположена в центре экрана. Эта функция также идентична аналогичной у осциллографа. Замечу только, что если полностью все содержимое буфера памяти расположено на экране в мелком масштабе, то сдвиг влево-вправо этим колесом невозможен, ведь мы имеем дело с записанным, а не онлайн, как у осциллографа сигналом.
Нам осталось рассмотреть две сдвоенных (переключатель/регулятор) ручки также похожие на аналогичные у осциллографа.
Переключатель-регулятор DisplayScale позволяет устанавливать горизонтальный масштаб дисплея анализатора, т.е. какое количество выборок из буферной памяти приходится на одну клетку экрана. Текущее установленное числовое значение отображается на микродисплее под ручкой. Эта опция влияет только на отображение на дисплее и никак не затрагивает содержимое буферной памяти прибора.В окне Other Properties (Рис. 10-3-15) установленному значению соответствует параметр HORIZSCALE.
Переключатель-регулятор Capture Resolution наоборот оперирует только с буферной памятью и определяет, какое количество времени приходится на одну выборку (сэмпл), записываемую в буферную память. Изменения установок вносятся до очередного нажатия кнопки Capture и отображаются в цифровом значении на микродисплее под переключателем.В окне Other Properties (Рис. 10-3-15) установленному значению соответствует параметр HORIZVAL.
По ручкам и кнопкам вроде все рассказал, теперь займемся самим дисплеем анализатора. Он тоже во многом похож на дисплей осциллографа и обладает теми же функциями. По щелчку правой кнопки мыши в области экрана дисплея анализатора можно вызвать опцию установки цветовых параметров дисплея и печати осциллограмм. Надо отметить, что установленные по умолчанию цвета сетки, осциллограмм и курсоров довольно блеклые, поэтому я сразу же поправил их под свои нужды. Окно установки цветов Colours Setup отображено на рисунке 10-3-14 слева внизу, а те поправки, которые я внес в цветовую гамму, обведены красными рамками. При желании всегда можно вернуться к исходной цветовой гамме, нажав кнопку Reset в этом окне. Ну и в заключение отмечу, что по клику правой кнопкой мыши в поле дисплея анализатора осциллограммы можно вывести на печать, что тоже аналогично рассмотренному ранее осциллографу.
Маловато, конечно, получилось у меня примеров по логическому анализатору, но прибор достаточно прост в использовании и нет смысла плодить проекты, похожие как братья-близнецы с небольшим отличием в параметрах. На этом заканчиваем материал по цифровым виртуальным приборам и переходим к инструменту специализированному.
Рисунки 10-3-1 ... 10-3-17

ВНИМАНИЕ! По моему недосмотру при втаскивании последнего материала (раздел 10 весь) была нарушена нумерация в заголовках , а в этом посте я машинально сначала закинул примеры к гл. 9.3. вместо 10.3. Спасибо, Ivan_fd обратил внимание на мой ляп. Приношу извинения и выкладываю реальные примеры для гл.10.3.
Миниатюры:
Нажмите на изображение для увеличения
Название: PIC 10-3-1.gif
Просмотров: 551
Размер:	38.1 Кб
ID:	34515   Нажмите на изображение для увеличения
Название: PIC 10-3-2.gif
Просмотров: 585
Размер:	55.1 Кб
ID:	34516   Нажмите на изображение для увеличения
Название: PIC 10-3-3.gif
Просмотров: 450
Размер:	12.0 Кб
ID:	34517  

Нажмите на изображение для увеличения
Название: PIC 10-3-4.gif
Просмотров: 440
Размер:	33.5 Кб
ID:	34518   Нажмите на изображение для увеличения
Название: PIC 10-3-5.gif
Просмотров: 424
Размер:	65.8 Кб
ID:	34519   Нажмите на изображение для увеличения
Название: PIC 10-3-6.gif
Просмотров: 403
Размер:	27.8 Кб
ID:	34520  

Нажмите на изображение для увеличения
Название: PIC 10-3-7.gif
Просмотров: 425
Размер:	14.7 Кб
ID:	34521   Нажмите на изображение для увеличения
Название: PIC 10-3-8.gif
Просмотров: 367
Размер:	14.5 Кб
ID:	34522   Нажмите на изображение для увеличения
Название: PIC 10-3-9.gif
Просмотров: 356
Размер:	15.1 Кб
ID:	34523  

Нажмите на изображение для увеличения
Название: PIC 10-3-10.gif
Просмотров: 360
Размер:	15.3 Кб
ID:	34524   Нажмите на изображение для увеличения
Название: PIC 10-3-11.gif
Просмотров: 454
Размер:	68.5 Кб
ID:	34525   Нажмите на изображение для увеличения
Название: PIC 10-3-12.gif
Просмотров: 440
Размер:	79.8 Кб
ID:	34526  

Нажмите на изображение для увеличения
Название: PIC 10-3-13.gif
Просмотров: 384
Размер:	12.4 Кб
ID:	34527   Нажмите на изображение для увеличения
Название: PIC 10-3-14.gif
Просмотров: 444
Размер:	93.9 Кб
ID:	34528   Нажмите на изображение для увеличения
Название: PIC 10-3-15.gif
Просмотров: 372
Размер:	18.0 Кб
ID:	34529  

Нажмите на изображение для увеличения
Название: PIC 10-3-16.gif
Просмотров: 414
Размер:	48.9 Кб
ID:	34530   Нажмите на изображение для увеличения
Название: PIC 10-3-17.gif
Просмотров: 527
Размер:	86.6 Кб
ID:	34531  
Вложения:
Тип файла: rar 10_3.rar (86.2 Кб, 920 просмотров)

Последний раз редактировалось Halex07; 11.05.2012 в 22:55.
Halex07 вне форума   Ответить с цитированием
Эти 15 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
47petr (17.02.2014), aleksa-yar (09.05.2012), bozhko (08.05.2012), danilych2 (11.06.2014), igor7779 (01.03.2022), Ivan_fd (08.05.2012), kittec (08.05.2012), kot-69 (08.05.2012), malyshevsergey (09.05.2012), mihail (23.03.2015), MihailoMihalych (22.01.2023), strannik2039 (17.08.2014), Traan (16.09.2013), Роман Ефимов (08.05.2012)