nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 25 Jun 2017 03:05



Reply to topic  [ 15 posts ] 
Игровой автомат "Городки" на Proteus 
Author Message
Fanat

Joined: 27 Jul 2015 18:20
Posts: 70
Reply with quote
Попалась мне на глаза схема игрового автомата из СССР 80-х годов "Городки" - вот такого: http://gorodki.15kop.ru/
Решил смоделировать его в Протеусе - проностальгировать, так сказать.
Экран дисплея позаимствовал из темы про "Специалиста в протеусе" (viewtopic.php?f=90&t=11446). Немного доработал - он у меня зависал при переключении окон. Также порешал проблемы с 155ИЕ7: они в модели не хотят работать, как в оригинальной схеме - пришлось ставить задержки на входы начальной загрузки.
В общем, нарисовал два модуля и решил потестировать. Оказалось, что модель у меня работает в анимации в 30(!) раз медленнее реального времени. :osad: И это при 25% реализации задачи. При этом демо-проекты работают в реальном времени нормально.
Может есть какой секрет, чтобы заставить проект на мелкой логике работать так же, как с МК?

Проект прилагаю. В нём пока только рисуется поле с цифрами и бита. Самих городков ещё нет. В "тестовом уголке" можно нажать кнопку СТАРТ и запускать биту кнопкой FIRE.

И ещё маленький вопрос. Почему в sub-circuit не отображается состояние линий при анимации? Только на основном листе.

Для работы dll необходим пакет Visual Studio Runtime : https://www.microsoft.com/ru-ru/downloa ... x?id=48145


Attachments:
gorodki.zip [62.48 KiB]
Downloaded 13 times
05 Jul 2016 19:42
Profile
Fanat

Joined: 27 Jul 2015 18:20
Posts: 70
Reply with quote
Дорисовал схему. Всё, кроме звуковой имитации - её нет в альбоме...
Обновил dll-ку : теперь она поддерживает градации яркости.
Счётчики ИЕ7 так и не захотели нормально работать, поэтому заменил их на протеусовские универсальные.
В общем, проект рабочий. На компе с 4-х ядерным 3GHz процессором выдаёт 6 fps ! :rotate:
Обнаружился глюк Протеуса. Если анимация не успевает работать в реальном времени, и выдаётся предупреждение об этом в логе, загрузка проца по указателю в программе падает до 50%. Чтобы увеличить скорость симуляции можно открыть любое меню программы - пока оно открыто, загрузка >90%. Или можно уменьшить кол-во кадров в секунду в настройках анимации Протеуса, чтобы сообщение о перегрузке процессора не появлялось.
На самом деле Протеус грузит процессор из расчёта одного ядра. То есть, если у нас 4 ядра, то они загружаются равномерно на 25% каждое, а в Протеусе написано: 95%.

Во вложении проект Протеуса, прошивка ПЗУ спрайтов, VSM-модель экрана ЭЛТ и её исходник.


Attachments:
GORODKI.zip [93.66 KiB]
Downloaded 24 times
11 Jul 2016 09:48
Profile
Fanat

Joined: 27 Jul 2015 18:20
Posts: 70
Reply with quote
Исправил ошибку с вылетом dll при симуляции графиков. Теперь можно рассчитывать graph не отключая CRT.


Attachments:
CRT.zip [8.18 KiB]
Downloaded 16 times
13 Jul 2016 15:03
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 11:08
Posts: 7777
Location: Россия
Reply with quote
IgorR76 wrote:
Исправил ошибку с вылетом dll при симуляции графиков.

И в чем заключалась эта ошибка? А то коллега PVV любит работать в Graph Mode,
а коллега aav8 о сути этой ошибки как-то скромно промолчал...

_________________
iLavr


13 Jul 2016 15:58
Profile
Fanat

Joined: 27 Jul 2015 18:20
Posts: 70
Reply with quote
В режиме графиков доп.окна не создаются. Попытка обратиться к окну приводила к вылету. Сейчас проверяется, создалось ли окно ЭЛТ.


13 Jul 2016 16:03
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 11:08
Posts: 7777
Location: Россия
Reply with quote
IgorR76 wrote:
В режиме графиков доп.окна не создаются.

То есть, в Graph Mode POPUP-окон просто быть не должно?
Это опытный факт, или мы что-то пропустили, читая Proteus VSMSDK.HLP ?

_________________
iLavr


13 Jul 2016 16:09
Profile
Fanat

Joined: 27 Jul 2015 18:20
Posts: 70
Reply with quote
Именно опытный. Я такого в sdk не видел. Ошибку выловил методом исключений. Но ведь и правда, popup-ы в режиме расчета графиков не появляются. При попытке создания класса окна возвращается NULL.


13 Jul 2016 16:33
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 11:08
Posts: 7777
Location: Россия
Reply with quote
IgorR76 wrote:
Но ведь и правда, popup-ы в режиме расчета графиков не появляются. При попытке создания класса окна возвращается NULL.

Я сам не проверял, но коллега PVV говорил мне, что aav8 как-то смог, вроде, эту проблему
в Graph mode разрешить: http://www.nedopc.org/forum/viewtopic.php?p=121697#p121697

_________________
iLavr


13 Jul 2016 16:49
Profile
Fanat

Joined: 27 Jul 2015 18:20
Posts: 70
Reply with quote
Этой проблемы уже нет.

Зато попутно проводил эксперименты по повышению производительности Протеуса, и вот что обнаружил. Весь ресурс процессора съедает делитель тактовой частоты. То есть, если взять генератор 4МГц, и подать на счетчик, то загрузка будет под 100%. В то же время, взяв за основу, скажем 250кГц, и сформировав из неё видеосигнал(просто синхроимпульсы), получим загрузку 30-50%, и 50 кадров в секунду! Набросав простой примерчик, я получил на своём ЭЛТ изображение полос, и 50 fps! Подавая напрямую без делителя 4МГц на пиксельклок CRT, производительность не падает. Практической пользы от этого никакой, но:
Отсюда делаю вывод, что основные тормоза симуляции происходят из за текстовых *.mdf файлов, на которых написана вся 74хх логика. Предполагаю, что написав для каждой микросхемки dllку, можно существенно повысить скорость симуляции.
И ещё. На соседнем форуме мне подсказали программку DICE - эмулятор электронных игр без процессора. Маленькая бесплатная утилитка с открытым кодом. В реальном времени эмулирует работу цифровых микросхем, и выводит видеокартинку. Но у неё свой "язык схем". Вот думаю, можно написать транслятор с протеусовского sdl, или модифицировать DICE, чтобы она понимала sdl, и можно будет запускать проекты Протеуса на эмуляцию в реальном времени. Цифровые, конечно.


13 Jul 2016 17:54
Profile
Maniac

Joined: 05 Nov 2008 22:47
Posts: 228
Location: 81.28.208.238
Reply with quote
Честно говоря я уже и не помню в чем была проблема с граф-моде.
Скорее всего с окном состояния процессора - оно создается и в него выводится информация.
А проверки что оно создалось/не создалось не было.
На верное так ...
... блин позаниматься некогда ...


13 Jul 2016 22:06
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 11:08
Posts: 7777
Location: Россия
Reply with quote
aav8 wrote:
Честно говоря я уже и не помню в чем была проблема с граф-моде.
Скорее всего с окном состояния процессора - оно создается и в него выводится информация.
А проверки что оно создалось/не создалось не было. ...

PVV вроде что-то похожее говорил...
Просто хочется уяснить поточнее суть - если используем граф-моде - ПОПАП-окна лучше принципиально не открывать?

Меня, собственно, вот что беспокоит: все виртуальные приборы Протеуса - это тоже окна того же
класса, что создал IgorR76 в своей модели дисплея.
Но "осциллографы" и "лог.анлизаторы" не конфликтют вроде бы с граф-моде...

_________________
iLavr


14 Jul 2016 12:01
Profile
Fanat

Joined: 27 Jul 2015 18:20
Posts: 70
Reply with quote
Lavr wrote:
" не конфликтют вроде бы с граф-моде...

Ну так и мой дисплей не конфликтует! Он проверяет результат создания окна.
IgorR76 wrote:
Сейчас проверяется, создалось ли окно ЭЛТ.

В графмоде функция создания окна возвращает NULL, попытка обратиться к окну приводит к вылету. Просто надо проверять IPOPUP перед обращением. Если NULL - то ничего не выводить.


14 Jul 2016 12:33
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 11:08
Posts: 7777
Location: Россия
Reply with quote
IgorR76 wrote:
Просто надо проверять IPOPUP перед обращением. Если NULL - то ничего не выводить.

Не сходится... Тогда что - "осциллограф" не будет "показывать" в граф-моде?

_________________
iLavr


14 Jul 2016 12:44
Profile
Fanat

Joined: 27 Jul 2015 18:20
Posts: 70
Reply with quote
IgorR76 wrote:
Предполагаю, что написав для каждой микросхемки dllку, можно существенно повысить скорость симуляции.

Попробовал. Отдельно генератор 4МГц абсолютно не загружает проц. Просто подключив проводник к генератору, получаем загрузку в 25%. Подключив далее стандартный протеусовский счётчик, получаем OVERLOAD. При подключении счётчика из dll-ки загрузка - 60%. :osad: Не то, на что рассчитывал. Но и в два раза лучше, чем дефолт. Значит, симуляцию грузят EVENTs изменения состояния выходов. Жаль! Разогнать Протеус не получится.
Тогда пойдём в сторону транслятора для DICE...


14 Jul 2016 12:51
Profile
Fanat

Joined: 27 Jul 2015 18:20
Posts: 70
Reply with quote
Lavr wrote:
Не сходится... Тогда что - "осциллограф" не будет "показывать" в граф-моде?


:ebiggrin: А Вы запускали graph mode? Там вообще ничего не анимируется. PROSPICE просчитывает схему в фоне, и выдаёт графики в окно. Никаких осциллографов! :)


14 Jul 2016 12:56
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 15 posts ] 

Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.