Вход

Просмотр полной версии : Эмулятор 1818ВГ93 (MB8877A) на контроллере LGT8F328P. Конструкция выходного дня.



Froggy
29.08.2025, 21:14
https://i.postimg.cc/63S6mChR/vg-0.jpg (https://postimg.cc/7G3yCGdY)

В последнее время наблюдается дефицит чипов контроллеров дисковода для наших любимых ZX-Spectrum. Это касается как советских 1818ВГ93, так и зарубежных микросхем MB8877A.
Согласно законам рынка цена на эти чипы значительно повысились. Кроме того, часто можно выкупить неисправный чип, а в случае с MB8877A – нерабочий «перемарк» с неизвестно чего.
Купить на алиэкспрессе нормальную микросхему MB8877A – очень большая удача.

Идея эмуляции ВГшки давно висела в воздухе. Была даже рабочая реализация от Робуса, но, по разным причинам, в массы она не пошла.

Не так давно появился интересный проект эмулятора ВГ93 (MB8877A) от известного спектрумиста Евгения Угрюмова. Кстати, эмулятор дисковода на Atmega 328P тоже авторства Евгения Угрюмова.
В основе проекта чип LGT8F328p - китайский микроконтроллер, клон популярного AVR ATmega328p (Arduino Nano). Практически полностью с ним совместим, а также имеет несколько дополнительных фич!. Проект развивается уже достаточно давно, многие спектрумисты его повторили, а топовые ретро-блогеры сделали видео и стримы по сборке и тестированию девайса.

Хоть и с опозданием, решил тоже повторить этот эмулятор и кратко описать свой опыт.

Итак, сначала надо закупиться.
Отдельно чип LGT8F328P стоит дороже чем готовая плата (искать на али как LGT8F328P LQFP32 MiniEVB плата) с ним на борту. Поэтому, обычно все покупают платы и сдувают оттуда нужный контроллер:

https://i.postimg.cc/Hxfc7qRf/vg-11.jpg (https://postimg.cc/JD54f21q)

Далее желательно купить (заказать) печатную плату. Гербера есть в свободном доступе. Zip-файл я прикреплю в конце поста. Это вариант от Alex MicroDRV.

https://i.postimg.cc/9fgqcRpX/vg-9.jpg (https://postimg.cc/wtJBVBZn)

Кроме платы и чипа надо найти «гребенки» для изготовления «ножек» микросхемы эмулятора. Я использую т.н. цанговые панельки, поэтому купил цанговые «гребенки». Кроме этого, надо три блокировочных SMD конденсатора на 0.1uF, танталовый электролитический конденсатор на 47uF, и SMD-резистор на 10 кОм.

https://i.postimg.cc/sXBGxj6Y/vg-10.jpg (https://postimg.cc/Q93dn3rC)

Сначала запаиваем микроконтроллер, потом SMD детали. Контактные «гребенки» паяем в последнюю очередь. Чтобы запаять их ровно я использую макетную плату от Ардуино. Выступающую часть контактов обрезаю заподлицо с платой и формирую при пайке «шарики».

https://i.postimg.cc/hhRDSg6t/vg-1.jpg (https://postimg.cc/wRF82K9C)

https://i.postimg.cc/d3yQPDWf/vg-2.jpg (https://postimg.cc/q6pH2BHc)

Все. Плата готова:

https://i.postimg.cc/66kn7ZNy/vg-3.jpg (https://postimg.cc/Wt7hChzv)

https://i.postimg.cc/v8g5HzkJ/vg-4.jpg (https://postimg.cc/qgrN18kw)

Теперь надо прошить контроллер.
Самое простое и доступное решение – использовать в качестве программатора популярную плату Arduino NANO. Стоит она не дорого и продается на всех торговых площадка от Али до Озона.
Для превращения Ардуино NANO в программатор, в нее надо «залить» скетч ArduinoISP. Этот скетч есть в стандартном комплекте среды разработки Arduino IDE 1.8.18

https://i.postimg.cc/N0BxKHm1/prog.jpg (https://postimages.org/)

Подробно про установку Arduino IDE я рассказывать не буду. Нужное видео легко найти в youtube. Кроме этого, я дам ссылки на ряд видео по сборке эмулятора ВГ93 – там процесс установки Arduino IDE и программирования Arduino NANO очень подробно показан.

Теперь нам надо подключить программатор на Arduino NANO к плате эмулятора ВГ93.
Вот таблица необходимых подключения. Всего надо пять проводов.

https://i.postimg.cc/RZVFqCqW/vg-24.jpg (https://postimages.org/)

Для наглядности подключение в картинках:

https://i.postimg.cc/CKxqyHb6/vg-7.jpg (https://postimg.cc/VJ26ntGj)

https://i.postimg.cc/t4y6kHJb/vg-8.jpg (https://postimages.org/)

Для соединения использовал стандартные 10 см проводки для Ардуино и макетную плату. Тут каждый делает, как ему удобно.

https://i.postimg.cc/4x59FFH9/vg-6.jpg (https://postimg.cc/yDDxDjP1)

Провод к пину RESET необходимо подпаять. На плате есть специальная площадка:

https://i.postimg.cc/Dy1s1z25/vg-5.jpg (https://postimg.cc/YhqhHMLm)

Для прошивки использовал программу AVRDUDESS 2.18. Вот ссылка на архив https://drive.google.com/file/d/1c69OsfLcIeuGPmpDdnNlmRJyrYakJtzx/view

После запуска необходимо выбрать нужный тип программатора – Arduino as ISP
Ниже прописать номер порта, к которому привязалась плата Arduino NANO и скорость порта 19200.
В левом верхнем углу выбираем чип, который нам надо запрограммировать - LGT8F328P.
В поле Flash указываем путь к нужному файлу прошивки (для начала залил прошивку vg93_lgt_evo.hex). Файлы прошивок прикреплю ниже, альтернативные прошивки есть в архиве с прошивальщиком AVRDUDESS.

Когда все готово, нажимаем кнопку Program! В случае удачного подключения и настройки ниже побежит прогресс программирования.

https://i.postimg.cc/zDgR1fR5/vg-13.png (https://postimages.org/)

Все, можно отключить эмулятор от программатора. Наша новая «ВГ93» готова к установке в Спектрум.

Для проверки использовал свою тестовую плату ZS Scorpion 256 Turbo+. В качестве дисковода подключил самодельный эмулятор типа Gotek.

https://i.postimg.cc/zvKLwd13/vg-12.jpg (https://postimg.cc/K3cvxDjy)

https://i.postimg.cc/GhR9wxCJ/vg-22.jpg (https://postimg.cc/bd6q1bds)

Сначала проверил чтение. В турбо-режиме (7 МГц) Скорпион некорректно считывал даже оглавление диска. В обычном режиме (3.5 МГц) чтение работало корректно.

https://i.postimg.cc/4Nv7mF5S/vg-14.jpg (https://postimg.cc/0bQ24nhY)

Евгений Угрюмов оперативно подсказал мне, что лучше использовать другую прошивку. Залил vg93_lgt_SYNC.hex

С ней чтение заработало и в нормальном и турбо режиме без сбоев.
Проверил форматирование. Формат проходил как в TR-DOS, так и через свою утилиту в ProfROM.
Проверил запись. В среде TR-DOS использовал команду COPY S для копирования файлов с использованием одного дисковода (спасибо ZX_RemX за инструкцию). Операция прошла удачно.
После этого скопировал файлы большего размера через trdn. Копирование и проверка файлов тоже прошли удачно.

А вот запись сохранения игры через меню ProfROM заканчивается зависанием игры. Полученное при этом сохранение оказывается «битым» и подвешивает Скорпион.

https://i.postimg.cc/WbcqpPMZ/vg-15.jpg (https://postimages.org/)

После тестов с Готеком, подключил реальный 3.5" дисковод.

https://i.postimg.cc/P52CMp0b/vg-16.jpg (https://postimg.cc/6846W3WT)

Проверил чтение - все читается нормально.
Потом проверил форматирование в операционной системе TR-DOS. Здесь тоже проблем не возникло:

https://i.postimg.cc/YS0hD2w5/vg-17.jpg (https://postimg.cc/DWVv8T06)

Скопировал игру Dizzy1EE с SD-карты на дискету с помощью Proteus. Успешно, игра после этого читается и запускается.
Сохранение состояния игры через меню ProfROM, как и в тестах с Готеком "завешивают" игру. Сохранение получается битым.
Пока эту проблему не поборол. Скорее всего, Скорпион использует некие нестандартные процедуры при записи дампа памяти на дискету.

Проверка на Пентагоне 128 (2013)

Достал с полочки свой Pentagon 128 (2013). Он сразу оснащен двумя дисководами. Gotek - диск "А", 3.5" FDD - диск "B".

https://i.postimg.cc/sxYXGvph/vg-21.jpg (https://postimg.cc/xNdYWjpf)

Установил эмулятор "вгшки" на место MB8877A.

https://i.postimg.cc/d0fDbMsL/vg-18.jpg (https://postimg.cc/cKQs3b8S)

https://i.postimg.cc/qRCg0mqQ/vg-19.jpg (https://postimg.cc/ftDMffx0)

Чтение, форматирование ожидаемо прошли успешно на обоих дисководах.
Для проверки записи скопировал игру Dizzy1 с Готека на дискету с помощью командера trdn.
Все прошло без сбоев, игра запустилась с дискеты.

https://i.postimg.cc/4yky3zhG/vg-20.jpg (https://postimg.cc/vghbqxz2)

Вывод.
Эмулятор мне понравился. Конечно, я еще не очень долго его тестировал, но пока каких-либо критических глюков или ошибок не заметил. Остается открытым вопрос по сохранению дампа памяти через меню ProfROM в Скорпионе. Если кто-то будет тестировать этот эмулятор на Scorpion 256 turbo с ProfROM, прошу проверить этот момент и отписаться в теме.

Ссылки на видео по сборке эмулятора:


https://www.youtube.com/watch?v=rUDzDQmH8XQ


https://www.youtube.com/watch?v=PNimxUipoS4


https://www.youtube.com/watch?v=6J5qNIbH4uM

Небольшое видео с моими тестами эмулятора:


https://youtu.be/G3qcKT8jezo

Буду рад комментариям и конструктивным замечаниям.

Прикрепляю архив с схемой эмулятора, герберами и прошивками.

82715
82716

SoftLight
29.08.2025, 21:36
Как же мне нравятся Ваши статьи! Очень познавательно и все по делу. Чтож делать, придется повторять! XD

bychkov
30.08.2025, 05:06
Спасибо за подробное описание.

fifan
30.08.2025, 06:05
Ни слова не сказано на каком уровне эмулируется ВГ93. Меня вот интересует вопрос о эмуляции данного чипа на других, не совместимых со Спектрумах компьютерах.

anasana
30.08.2025, 10:22
Ни слова не сказано на каком уровне эмулируется ВГ93. Меня вот интересует вопрос о эмуляции данного чипа на других, не совместимых со Спектрумах компьютерах.
Я полностью с нуля переотрисовал топологию ВГшки в нормальной сетке и с транзисторами, вот кто бы занялся самой моделью..

Froggy
30.08.2025, 10:31
Ни слова не сказано на каком уровне эмулируется ВГ93. Меня вот интересует вопрос о эмуляции данного чипа на других, не совместимых со Спектрумах компьютерах.

Это надо спрашивать автора. Он бывает в телеграмм канале t.me/zx_floppy
Вот ссылка на еще один материал по сборке и тестированию этого эмулятора https://dzen.ru/a/aEwamRKa1FdiKejd

M80
30.08.2025, 10:55
А без программатора никак? У Ардуино ведь уже есть загрузчик. Почему бы не загрузить и хекс для ВГ93?

Froggy
30.08.2025, 11:17
А без программатора никак? У Ардуино ведь уже есть загрузчик. Почему бы не загрузить и хекс для ВГ93?
А как? Для загрузки все равно нужен программатор. В Ардуино НАНО на плате уже есть чип FT232 с помощью которого мы можем заливать прошивки через usb. Ставить такой чип с юсб-разъемом на плату эмулятора - это плохой вариант.

У меня есть отдельный программатор для Атмег. И он сделан на чипе ATMEGA8...

https://i.postimg.cc/g2vJn2K4/isp-prog.jpg (https://postimg.cc/ts4ycywV)

M80
30.08.2025, 14:52
А как?
Ну а как грузят скетчи в Ардуино? На ардуино плате уже стоит чип с загрузчиком, который активизируется по сбросу. Всё что нужно - это USB-UART преобразователь и avrdude (программа загрузчик на ПК).
Что бы было понятнее. Хекс загружается в Ардуино плату. А уже затем чип перепаивается на плату ВГ93.

Froggy
30.08.2025, 15:14
Всё что нужно - это USB-UART
Так это и есть программатор, который ставить на плату эмулятора не хотят.


Что бы было понятнее. Хекс загружается в Ардуино плату. А уже затем чип перепаивается на плату ВГ93.
А как прошивку менять? Каждый раз чип перепаивать?

M80
30.08.2025, 15:30
Так это и есть программатор, который ставить на плату эмулятора не хотят.
А как прошивку менять? Каждый раз чип перепаивать?
USB-UART - это не программатор.
Конечно, если требуется обновление ПО, тогда нужен либо программатор, либо загрузчик и USB-UART.

Titus
31.08.2025, 05:09
Я полностью с нуля переотрисовал топологию ВГшки в нормальной сетке и с транзисторами, вот кто бы занялся самой моделью..

Надо выкладывать для всех, тогда может кто-то и заинтересуется.

anasana
31.08.2025, 10:16
Надо выкладывать для всех, тогда может кто-то и заинтересуется.
Проект в лейке, там у меня есть буквально парочку мест, где нужно накинуть транзисторы в области которые, скорее всего, конденсаторы.
Я давно просил Vslav глянуть на них и выложить на его Гит, но он всё никак этим не займётся. Затык только в этом. Я ещё раз маякну ему на этот счёт.

SoftFelix
31.08.2025, 11:27
В основе проекта новый чип от Atmega - LGT8F328P.
Это не Атмеговский чип, а китайский клон производителя Logic Green оригинальной ATmega328p, но только с улучшенными характеристиками (как это ни странно звучит для "китайского клона"). Подробнее можно посмотреть тут (https://alexgyver.ru/lessons/lgt8f328/).

Froggy
31.08.2025, 11:33
Это не Атмеговский чип
Спасибо, исправил.

Кто-то проверял данный эмулятор с ZS Scorpion 256?

Rio444
31.08.2025, 22:19
Это не Атмеговский чип, а китайский клон производителя Logic Green оригинальной ATmega328p
Имхо слово "клон" не совсем уместно.
Скорее аналог такой же архитектуры и с такой же системой команд, как ATmega. Плюс очень близкая распиновка.
Не клон потому что прошивается совсем по-другому (программатор для AVR не подойдёт никак). Не имеет фьюзов. Прошивки тоже не полностью совместимы.
Если есть исходники, прошивку для атмеги с небольшими корректировками можно перекомпилировать для LGT. Уже скомпилированную прошить скорее всего не получится.

M80
01.09.2025, 07:14
Спасибо, исправил.
Кстати, фьюзы в AVRDUDESS выставлять не надо - они до одного места там.