...

суббота, 27 марта 2021 г.

Прикоснемся к магии или как я вступил в ряды MISTического общества

Ниже предложен рецепт приготовления деликатеса, позволяющего Вам попробывать различные 8 и 16-битные приставки и компьютеры. Основное же блюдо для меня miniMIG — эмулятор Амига с графикой OCS/AGA/RTG и CPU до 68020 в 20 раз быстрее стандартной A600.

В свои студенческие годы после ZX-Spectrum (Пентагон-128 с дисководом) я прикоснулся к волшебному миру Амига, сначала A600, затем A1200, аксели от 030-40MHz до PPC603+040. И вот, совсем недавно я узнал о Apollo Vampire (цена конечно кусачая) решил поискать что-нибудь подобное. Нашел несколько вариантов, но самый интересный, на мой взгляд, проект MIST доделанный Павлом Рябцовым. Проштудировал ветку Сборка, настройка платы MiST v 1.31 , заказал на сайте CHIPkin две печатные платы (как оказалось потом правильное решение, попеременно возникали проблемы то с одним, то с другоим экземпляром) и детали, которые были в наличии. Остальное было куплено на Али и "Чип и Дип", по мере прибытия деталей, начал сборку, о чем и хочу рассказать вам. Если Вы являетесь таким же OLD-фагом старых компьютеров, как и я, пожалуйста, приготовьтесь к прочтению.

1. Собираем цепь питания и индикации. Устанавливаем на плату силовые микросхемы IC1 LM3940IS-3.3, IC2 1117-2.5V, IC4 1117-1.2V, электролиты C4, C6, C7, C10, C19, C22, также можете накидать парочку блокировочных конденсаторов на 100n. Припаяем цепь индикации красный LED3, зеленый LED2, желтый LED1 светодиоды и токоограничивающие резисторы R3, R7, R45 на 220 Ом к ним. Питание я подавал на con jack DC +5V уж больно microUSB по мне хлипенькие, кнопку поставил 6 контактную, хотя видел и вариант с угловой на два. Не забудьте припаять 0 резистор R1 с обратной стороны платы или кинуть "соплю" на контакты. При подключении питания и включении кнопки должен засветиться зеленый светодиод. Проверьте напряжения со стабилизаторов 3.3V, 2.5V, 1.2V. Вот что у меня получилось :


2. Запаиваем IC7 AT91SAM7S256 и все что нужно для её запуска транзистор T1 IRLML6402, резисторы R20, R46-R50, R72, R76, R78, R80, R82-R85, конденсаторы C33, C42-C48, C57-C64. В конце припаяем кварцевый резонатор Q3 18.432MHz, кнопки S2-S4, двойной dip переключатель S5, разъем SV3 для вывода отладочной информации, гнездо ARM JTAG SV4 и перемычку JP1. Разъем microUSB я подобрать не смог, может вам повезет больше, припаял провода от сломанного кабеля.


Теперь можно приступить к программированию ARM, для этого установим SAM-BA v2.18 (for Windows) качаем с сайта www.microchip.com. Первое включение на 5сек провести с замкнутой перемычкой JP1, в это время должен проинициализироваться USB загрузчик и при повторном включении без перемычки в диспетчере устройств появится новый USBSerial/COMxx порт. Запустите программу SAM-BA, выберите нужный COM порт, тип процессора и жмите Connect.


В следующем окне сначала выбираем Erase all flash жмем Execute, затем выберите файл прошивки поновее и нажмите кнопку Send File. Подробнее читайте мануал HowToInstallTheFirmware, там же найдете о программировании через JTAG.


В следующем окне сначала выбираем Erase all flash жмем Execute, затем выберите файл прошивки поновее и нажмите кнопку Send File. Подробнее читайте мануал HowToInstallTheFirmware, там же найдете о программировании через JTAG.

Все вышеперечисленное у меня получилось лишь на второй плате с МК rev. D, заказанным из магазина "Чип и Дип", первую плату с контроллером rev. C заказанным с Алика я тоже потом завел, замкнув вывод ERASE на 5сек. Возможно контроллер был б.у. поэтому и потребовались подобные фокусы.

3. Пора паять обвязку SD карты резисторы R77, R79, R81, дроссель L1, заодно контроллер USB U1 MAX3421E, резистор R65, конденсаторы C36, C40, C41 и резонатор Q2 12MHz. Не забываем припаивать конденсаторы на 100nF, вот что у меня получилось :


Подключите к SV3 USB-COM адаптер типа такого :


Если у вас все запаяно правильно и установлена карта, в терминалке увидите :


Minimig by Dennis van Weeren
ARM Controller by Jakub Bednarski
Version ATH201126
SDHC card detected
spiclk: 24 MHz
usb_init
max3421e_init()
Chip revision: 13
busprobe()
usb_reset_state
...

У меня упорно выдавался "Chip revision: ff" на второй плате, пока я не прозвонил все ноги. Оказалось не пропаял вторую ногу ARM к земле.

4. Раз все нормально, распаиваем USB HUB IC6 TUSB2046B, резисторы R51, R53, R55, R56, R66-R75, конденсаторы C35, C37, C38, C39, C49-C56. Обратите внимание, что номинал C38, C39 100pF, в BOM листе с сайта zx-pk.com ошибка, они там указаны 100nF, с такой ёмкостью USB HUB работать не будет. Также вместо резисторов R57-R64 в моем варианте платы место под резисторные сборки на 4 резистора по 15КОм с первым общим. Исправленный список деталей смотрите в полезных ссылках. В конце установим кварц Q1 6MHz, термопредохранитель R54 на 1.1A и двухэтажные USB гнезда :


5. Теперь, самое интересное, FPGA IC5 EP3C25E144. Здесь поаккуратней, на одной плате у меня был непропай с нее на CAS ОЗУ, пришлось любоваться графическими артефактами, пока не прозвонил все ноги. Необходимый минимум для ее запуска генератор OSC1 на 27MHz, дроссель L1, резисторы R4-R6, R8-R10, R12-R15, как обычно конденсаторы по питанию на 100nF.


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


Если FPGA рабочая и не перемаркировка, в дебажном выводе читаем лог про FPGA:


FPGA bitstream file opened, file size = 385575
[************************]
FPGA bitstream loaded
FPGA configured in 1918 ms
ident = a3
Identified MiST core
...

Код ident зависит от корки, для TurboGFX он равен a4, главное чтобы не было ошибок.

6. Теперь можно запаять память IC3 MT48LC16M16A2, ее заказал с префиксом 75D, так как увидел на схеме такую строчку :
SDRAM model is MT48LC16M16A2, speed variant -75 (tAC=6ns, tOH=3ns)
У одного человека увидел SDRAM H57V2562GTR-75C, но в нашей деревне ее найти оказалось сложнее, а мой вариант :


7. Распаиваем видео DAC однопроцентные резисторы R22-R42 и на синхро R16, R17 и конечно X2 узкий VGA разъем. С первой платой я возился неделю, почему нет видео, хотя по логам все ОК, оказалось пожалел пасты на строчный резистор.

8. Допаиваем оставшиеся блокировочные конденсаторы и аудиотракт резисторы R18, R19, R43, R44 и конденсаторы C28, C29, C31, C34 и линейный выход X1. Наушники тоже работают, домашняя специфика позволяет слушать только через Sennheiser, Infinity пока простаивают без дела. Насчет конденсаторов C30, C32 прочитал на форуме что без них "звук повеселее", на одной плате я их не запаял, действительно стало побольше высоких частот. Однозначно сказать не могу, решать Вам, попробуйте оба варианта.

9. Так как Midi пользоваться точно не буду, а на часы сразу детали не пришли, осталось припаять термопредохранитель R52 на 0.2A и разъемы X3,X5 папа DR9 для оригинальных джойстика и мыши (еще не проверял). В итоге получилось так :


Осталось залить амижную корку с ROM и другими необходимыми файлами и полюбоваться на картинку :


Последний раз подобное я видел около 20 лет назад, смахнул скупую слезу и пошел качать образы HDD для эмулятора. Использовать для каждого девайса свою флешку — неудобно, я пользуюсь Sorgelig's startup menu для выбора систем через core менеджер. С ним у меня не заработали TurboGFX и Амижная, но под последнюю я и планировал отдельную карту. Очень порадовал ZX, игру Target Renegade с General Sound я чуть-ли не прошел до конца.


Если у Вас ошибка при загрузке FPGA, советую припаять разъем JTAG SV1 и через ByteBlaster с помощью Quartus 13 прошить последовательно уроки с 1 по 4, подробнее почитайте раздел SOC в MIST developer tutorials, возможно это наведет Вас на путь истинный. Обязательно переведите ползунок 1 переключателя S5 в «ON» перед подключением.

Полезные ссылки :


  1. Обещанная ссылка на исправленный BOM list
  2. Сайт разработчиков MiST — FPGA retro gaming .
  3. Статья FPGA MiST Guide на сайте arekuse.net.
  4. Архив SD Amiga на сайте MEGA.

И самое главное, ради чего затевалось данная публикация. Есть у меня идея — заменить Atmail на STM32F4, автоматически выкинутся часы и наверное MAX3421E. В будущем можно поставить Cyclone 4 пожирнее. Если у Вас есть мысли по этому поводу, милости просим.

Let's block ads! (Why?)

Комментариев нет:

Отправить комментарий