![]() |
Эмулятор комбинационной схемы
Вложений: 1
Добрый день!
Наверняка каждый из Вас в университете или школе рассматривал комбинационные схемы. Передо мной стоит задача разработать приложение, позволяющее создавать, и самое ужасное - симулировать их. Для того чтобы было понятнее, я приведу пример во вложении. Допустим у нас есть 2 кнопки генерирующие логический 0, либо 1 в зависимости нажаты ли они. Выходы этих клавиш поступают в блок логического "И", который в зависимости от входных данных формирует на выходе 0, либо 1. Мне нужно создать редактор, позволяющий эмулировать подобные процессы, только элементов там будет значительно больше. В качестве примера можно привести Electronic WorkBench под винду. Как реализовать интерфейс и связи между элементами я знаю, но как производить симуляцию сцемы - понятия не имею. Может кто-то сталкивался и хотя бы подскажет в каком направлении компать. Т.к. для меня важна только идея - код я реализую если алгоритм будет понятен. Заранее благодарен. |
|
А D-триггеры тоже будут? =)
silin, что это? Там, похоже тема из обычной корпусной электроники 70-х годов. И, ИЛИ, ИЛИ-НЕ, ИСКЛ-И(ИЛИ), RS-ТРИГЕРЫ, C-ТРИГГЕРЫ, регистры, мультиплексоры, счетчики и в таком духе. |
Спасибо за ссылку. Дело в том, что я первым делом в википедию и пошел искать ответы. Принцип действия логических элементов я знаю, сложность для меня состоит в создании эмулятора такой схемы.
Мне нужно на входе установить виртуальное устройство типа кнопки, подающей сигнал и визуально наблюдать его прохождение. А на выходе установить, что-то типа лампочки и видеть функционирование схемы. Добавлено: Нашел внизу страницы, которую дал silin: http://www.neuroproductions.be/logic...ndex.php?id=52 То что нужно, знать бы как это реализовано... |
http://code.google.com/p/as3ds/ - возможно, поможет. Особенно не всматривался, что туда входит.
|
Cпасибо, пригодится любая информация!
|
У вас типичная задача для систем автоматизированного проектирования (САПР). То, что вы хотите реализовать, это моделирование систем на макро-уровне.
Можете прочитать про это в книге И.П. Норенкова "Основы автоматизированного проектирования", ну, или, например, в лекциях В.В. Топоркова ;) Если вкратце, то первоначально, вам необходимо построить модель комбинационной схемы, например, в виде графа. Впоследствии применяя метод простых итераций или метод Зейделя решаете задачу определения состояний комбинационной схемы в 0,1, и в переходах 0->1,1->0. Определяете выходные значения(а заодно статические и динамические риски сбоев ;) ). Однако, эти методы достаточно требовательны к памяти и вычислений многовато, можно воспользоваться модификацией методов на основе событийной модели(это когда создаётся специальный блок, следящий за изменением событий на выходе элементов и пересчитывает только в том случае, если имело место изменения состояния выхода). Заодно сможете и задержки просчитать. :) |
>>silin, что это?
наводящий вопрос..:) я банально не понял, в чем собственно проблема, если "реализовать интерфейс и связи между элементами" не вопрос, то в чем затык ? |
Вложений: 1
Цитата:
Если рассмотреть элементарный пример в приложении, то мы видим 2 кнопки (источники сигнала), логический элемент "ИЛИ" и графичекий индикатор. Принцип расчета я пока вижу следующим образом: 1) Циклически перебираем все элементы, являющиеся генераторами сигнала (в данном случае 2 кнопки). 2) Берем первый и устанавливаем его значение на всех входах, элементов подключенных к нему. 3) Пытаемся эмуляровать дальше и видим, что у элемента "ИЛИ" известно значение только первого входа, поэтому берем следующий генератор сигнала и повторяем пункт 2. 4) При подаче второго сигнала на входы элемента "ИЛИ" - мы можем двигаться дальше. 5) Получаем выходное значение и зажигаем либо тушим лампочку. Это все, что я пока могу полагать - не знаю является ли этот алгоритм универсальным, поэтому мне остается только начать изучение книг предложенных, wizardjedi. Спасибо за помощь. |
Зачем циклически опрашивать? Есть четыре объекта (в данном случае): два входа, логический элемент, выход. Лампочка запрашивает сигнал с выхода, выход запрашивает логичекий элемент, логический элемент опрашивает свои входы, входы запрашивают состояние своих кнопок.Все
|
Хорошая идея! Я не подумал, действительно удобнее было бы эмулировать в противоположную сторону.
Спасибо за совет. |
Событийная система ту вроде неплохо подходит.
Объекты, преставляющие элементы схемы (элемент ИЛИ на иллюстрации выше) подписываются входными "контактами" на "выходы" предыдущих. 1. Сначала все объекты на входах имеет состояние null или предопределенное. 2. Жмем кнопку! Кнопка диспатчит подписчикам свое состояние. 3. Срабатывает эффект домино. Все довольны. Цитата:
|
в простейшем виде то, что Дима описал:
Код AS3:
Код AS3:
Код AS3:
Код AS3:
|
dimarik, я с Вами полностью согласен.
Спасибо, silin. Примите невероятные благодарности за реализованный код, он мне очень поможет в разработке. |
| Часовой пояс GMT +4, время: 02:52. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.