Моделирование узлов в Internet

Содержание.
     В данной статье рассказано о моделировании в Internet узлов, собранных на интегральных микросхемах.
Автор считает что:
  • в Internet могут быть созданы системы моделирования узлов, например, на интегральных микросхемах;
  • в Internet могут быть созданы расширяемые библиотеки моделей устройств.
     Для реализации этих задач создана программа – назовем ее средой моделирования, которая обеспечивает:
  • рисование логической схемы узла непосредственно в окне браузера, с возможностью редактирования перечня микросхем и связей между ними;
  • формирование генератором входных импульсных последовательностей;
  • расчет значений для всех точек моделируемого узла;
  • отображение осциллограмм входных и выходных импульсных последовательностей в любых точках моделируемого узла;
  • сохранение нарисованного узла в Internet, с использованием стандартного для Windows диалога Save File;
  • считывание ранее сохраненных схем при помощи диалога Open File.
Программу можно загрузить отсюда (139 кб).      В меню “Файл” среды моделирования, выберите пункт “Открыть”, откроется окно Open File:

Рис 1.

     В окне Open File выберите имя моделируемого узла, например, circuit_1.chi, для этого щелкните по элементу списка левой кнопкой мыши, затем нажмите кнопку “Открыть”, через некоторое время с сервера будет загружена функциональная схема узла, генератор, осциллограф, панель “Графики” с входными и выходными последовательностями:

Рис 2.

Вы можете открыть любой другой файл из перечня в окне Open File. Первые четыре файла содержат примеры для программы моделирования узлов. Это:
  • circuit_1.chi - простая комбинационная схема;
  • circuit_2.chi - генератор, собранный из нечетного числа инверторов;
  • circuit_3.chi - пример, с использованием микросхем tm2;
  • circuit_4.chi - счетчик импульсов на микросхемах ie5.
Запись в эти файлы заблокирована. В остальные файлы списка запись разрешена. Другими словами, пользователь может записывать свои функциональные схемы в любые файлы за исключением перечисленных.
Рассмотрим считанную функциональную схему. Слева расположено окно генератора. Это четырехканальный источник импульсных последовательностей для узла. Справа от узла находиться четырехканальный осциллограф. Это устройство предназначено для приема импульсов от моделируемого узла. Окно “Графики” предназначено для отображения графиков генератора и осциллографа.
Входные последовательности и времена задержек микросхем, как будет показано далее, можно изменять. В соответствии с логикой работы микросхем будут изменяться и выходные значения узла, что найдет отражение на графиках. Подвигайте, например, NumericStepper “Длина 0”, Вы увидите, что входные импульсы по первому каналу генератора и выходные импульсы узла, поступающие на первый вход осциллографа, начинают изменяться. Обратите внимание, происходит это в реальном масштабе времени, т.е. независимо от мощности компьютера задержка моделирования (расчета) не велика. Отметим, что время моделирования зависит от ряда параметров:
  • сложности схему узла;
  • мощности компьютера;
  • наличия генерации в узле;
и некоторых других параметров. Для несложных узлов вполне достаточно мощности среднего компьютера.
Что является стартом для начала моделирования узла? Если схема считывается с сервера, моделирование запускается автоматически, и выходные значения рассчитываются для входных значений взятых по умолчанию. Во всех остальных случаях моделирование запускается при изменении:
  • входных импульсных последовательностей;
  • задержки срабатывания микросхем;
  • включение каналов на генераторе или осциллографе.
     Специальной кнопки для запуска моделирования нет, хотя возможно, ее и стоит ввести. Подробнее об использовании программы смотрите в разделе “Инструментарий”.      Среда моделирования имеет:
  • Панель выбора микросхем;
  • Четырехканальный генератор импульсов;
  • Четырехканальный осциллограф;
  • Панель отображения графиков;
  • Возможность редактирование схемы узла;
  • Возможность сохранения и восстановления схем.
Панель выбора микросхем.
Это окно с именем “Микросхемы”. Панель предназначена для выбора и помещения на рабочий стол микросхем. Делается это так. Щелкните левой кнопкой мыши на нужной микросхеме в окне “Микросхемы”, переведите указатель мыши в любую точку рабочего стола и щелкните еще раз. Проконтролируйте появление микросхемы. Микросхемы на рабочем столе и панель выбора микросхем можно свободно перемещать внутри главного окна программы.
Редактирование схемы узла.
Любая микросхема, помещенная на стол моделирования, может быть удалена с него. Для удаления микросхемы выберите пункт “Delete Component” из ее контекстного меню. Если удаляемая микросхема содержит связи, то будут удалены и они.
Между микросхемами проводятся связи. Для проведения связи установите указатель мыши на нужную контактную площадку микросхемы, нажмите левую кнопку и, не отпуская ее, переместите мышь на контактную площадку другой микросхемы, а затем отпустите кнопку мыши. Проконтролируйте появление связи между контактами. Если разрешение Вашего монитора велико и чертить трудно, включите увеличение.
Схема узла может быть многократно увеличена или уменьшена в размерах. Сделать это можно из контекстного меню рабочего стола выбором пунктов:
  • Zoom In;
  • Zoom Out;
  • Show All.
Связи могут быть выравнены. Имеется в виду, что все связи могут быть отредактированы так, что будут проходить только параллельно или перпендикулярно осям координат. Выполнять эту операцию следует при существенном увеличении. Для выравнивания поместите курсор мыши на линию, “зацепите” ее, нажав левую кнопку мыши, перемещайте курсор до образования угла, кратного прямому, между контактной площадкой и курсором мыши. Когда редактируемая линия окрасится в красный цвет, отпустите левую кнопку мыши.
Связь может быть удалена. Для удаления связи выберите пункт “Delete Line” в ее контекстном меню
Генератор импульсов.
Генератор предназначен для задания входных импульсных последовательностей. Имеет четыре канала, каждый из которых может быть настроен и включен, выключен отдельно.
Настройка канала включает в себя выбор импульсной последовательности и задание длительностей логических нуля и единицы. Для выбора импульсной последовательности следует:
  • выбрать пункт “Setup impulse” в контекстном меню генератора;
  • в открывшемся окне выбрать соответствующий каналу RadioBox, затем, в выпадающем списке выбрать нужную последовательность;
  • для подтверждения выбора нажать кнопку ‘”Ok”.
Для задания длительностей нуля и единицы следует выбрать номер канала в столбце “Настройка” панели генератора, затем, используя NumericStepper c наименованием “Длина 0” или “Длина 1”, установить нужные значения.
Включение/выключение канала генератора выполняется установкой/снятием отметки в соответствующем CheckBox поля “Включение” на панели генератора. Отображаются импульсные последовательности включенных каналов на панели “Графики”.
Осциллограф.
     Осциллограф предназначен для приема выходных последовательностей моделируемого узла. Он имеет четыре канала. Каждый канал может быть подключен к любой выходной точке моделируемого узла. Включение/выключение канала осциллографа производится установкой/снятием отметки в CheckBox, соответствующей каналу. Отображаются импульсные последовательности включенных каналов на панели “Графики”.
Панель отображения графиков.
     Это окно с именем “Графики”. Панель предназначена для отображения импульсных последовательностей генератора и осциллографа, имеет восемь каналов. Каналы жестко не закреплены по месту отображения графиков. Другими словами, первым будет отображен тот график, который был первым включен на генераторе или осциллографе. Нумеруются графики сверху вниз.
Возможность сохранения и восстановления схем.
     Эти возможности реализованы в виде диалогов Open File, Save File и подробно описаны в разделах “Моделирование готового узла” и “Сохранение модели”.      Нарисуем схему нового узла:
  • поместите на рабочий стол востребованные микросхемы, расположите их в нужных позициях. Лишние микросхемы следует удалить с рабочего стола. Для удаления выберите пункт “Delete Component” в контекстном меню удаляемой микросхемы;
  • поместите на рабочий стол генератор и осциллограф, расположите их в нужных позициях;
  • проведите связи между микросхемами, генератором, осциллографом. Связи могут быть выровнены, хотя это совсем не обязательно. Выравнивание связей следует выполнять при существенном увеличении схемы.
     Зададим параметры:
  • установите нужное время срабатывания микросхем узла. Сделать это можно выбрав пункт “Delay Time”, в контекстном меню каждой микросхемы. Затем, установите требуемый интервал времени и нажмите кнопку “Ok”;
  • установите входные импульсные последовательности моделируемого узла. Сделать это можно из контекстного меню генератора, выбрав пункт “Setup impulse’. В появившемся окне следует выбрать номер канала и соответствующую ему последовательность. Обратите внимание на то, что длительности нуля и единицы выбранной последовательности, нужно задавать на передней панели генератора, предварительно выбрав канал в столбце “Настройка”.
  • включите задействованные выходные каналы генератора, установив отметки в CheckBox соответствующим каналам;
  • включите входные каналы осциллографа, установив отметки в CheckBox соответствующих каналам..
     Моделирование:
  • входные и выходные последовательности моделируемого узла можно наблюдать в окне “Графики”. Вы можете изменить время срабатывания любой микросхемы, входную импульсную последовательность, длину нуля или единицы, в ответ программа рассчитает и выведет выходные последовательности узла.
     Нарисованная или открытая схема узла и заданные входные воздействия могут быть сохранены на сервере. Для этого надо в меню “Файл” выбрать пункт “Сохранить как”, откроется диалоговое окно Save File:

Рис 3.

В окне Save File щелкните по любому файлу из списка предложенных, проконтролируйте появление его имени в поле “Имя файла”, нажмите кнопку “Записать”. Схема будет сохранена на сервере.

Примечание 1. Первые четыре файла с именами circuit_1.chi - circuit_4.chi используются для демонстрации работы программы, поэтому запись в них заблокирована. Схему Вы можете записать в любой другой файл, предлагаемый в списке.

Примечание 2. Браузер, по умолчанию, для чтения данных может использовать Кеш. Поэтому, если считать некоторую схему, затем модифицировать ее и вновь записать в файл с тем же именем, то при очередном чтении этого файла, можно обнаружить, что схема не модифицирована. Чтобы такого не происходило, в Internet Explorer следует установить:
Сервис -> Свойства обозревателя -> Параметры -> Проверять наличие обновления -> При каждом посещении страницы.
     Метод моделирования весьма прост и содержит:
  • Классы микросхем.
    На основе классов микросхем динамически создаются объекты. Создание объектов происходит при помещении микросхемы на рабочий стол, или при считывании модели узла с сервера;
  • Массив связей.
    Автор считает, что любую схему можно представить массивом связей вида: Выход – Вход. Массив связей формируется при проведении связей между микросхемами в процессе рисования узла или при считывании готовой схемы узла с сервера.
  • Массив событий.
    Это динамический массив вида: Время – Источник - Значение. Что это значит? Известно, что источниками событий в узле являются:

    • внешний источник, например, выходы внешнего узла;
    • внутренний источник, например, срабатывание некоторого компонента внутри узла.

    Предполагается, что множество внешних событий определено в некотором конечном интервале времени. Другими словами, в массив событий сначала записывается внешняя последовательность воздействий вида: Время – ВыходГенератора - Значение. Делается это перед началом моделирования, при задании пользователем входных импульсов от генератора. Конечно, внешних воздействий может и не быть вообще.
    По мере моделирования узла в массив событий дописываются выходные значения микросхем с расчетным временем предполагаемого события. Отметим, что в один момент времени в узле может происходить множество событий. Наоборот, если никаких событий в узле не происходит, ничего в массив не записывается – так работает принцип событийного моделирования.
  • Алгоритм моделирования.
    Автор считает, что первичным при моделировании узла является шкала событий – это основной вектор. Упрощенно, алгоритм с учетов внешних воздействий выглядит так:

    • устанавливаем текущее время моделирования в 0;
    • находим ближайшее событие в массиве событий, определяем источник события;
    • анализируем массив связей и находим входной контакт микросхемы, на который поступает событие;
    • вызываем модель микросхемы. С учетом задержки срабатывания и внутреннего состояния формируем выходное воздействие, записываем его в массив событий;
    • сортируем по времени массив событий и возвращаемся к поиску очередного по времени события.

    Однако, фактический алгоритм существенно сложнее, так как приходится учитывать ряд факторов, например:

    • если на вход микросхемы поступают два противоположных по значению сигнала, в интервале времени меньшем, чем время ее срабатывания;
    • если контакт микросхемы “висит в воздухе”;
    • если внутреннее состояние микросхемы не определено;
    • если в узле начинается генерация.
     Программа написана на языке ActionScript 2.0 и содержит около двух тысяч строк. Эффекты TimeLine Flash и *.dll библиотеки Windows не используются.
10.06.2005. Евгений Вересов.