Клон звуковой карты Roland LAPC-I
Попытка создать неточную копию Roland LAPC-I из запчастей от синтезатора D-10.
Поскольку у меня имеется комплект микросхем Roland от синтезатора D-10, я решил собрать из них внутренний синтезатор для PC, похожий на LAPC-I, для ретро игр.
В качестве образца я использовал все найденные мною фотографии оригинала.
LAPC-I представляет собой синтезатор CM-32P (не MT-32) со встроенным MPU-401 и выполнен в формате большой ISA платы.
Несмотря на то, что практически все микросхемы для синтезатора мне удалось найти, детали для MPU являются крайне редкими. В свободную продажу они никогда не поступали, а искать и потрошить доноров у меня рука не поднимется.
Устройства MPU-401 очень редкие и дорогие, и сами по себе являются уникальными экспонатами. Так что уничтожать их ради новодела - варварство чистой воды. Поэтому MIDI контроллер я решил эмулировать с помощью HardMPU. Правда его схему пришлось немного доработать, чтобы он аутентично смотрелся в итоговой плате: схема выборки порта была скопирована с оригинала, а остальную логику я запихнул в CPLD Altera MAX7000. Видео с тестирование переделанного HardMPU можно посмотреть здесь.
Отличия от оригинала.
- MPU-401 заменена на HardMPU. MPU использует три микросхемы: контроллер со специальной прошивкой, внешняя SRAM для этого контроллера и Gate Array в качестве интерфейса к ISA. В качестве контроллера используется Atmega, Gate Array заменен на CPLD, а дополнительная память оказалась не нужна. За счет этого удалось освободить место для того, чтобы вместить раздутую аналоговую часть.
- В HardMPU отсутствует функциональность для работы с многодорожечным магнитофоном, поэтому часть аналоговой схемы с усилителями и компараторами отсутствует.
- Не удалось найти мелкие выводные резисторы, которые использовал Roland, поэтому пришлось использовать обычные на 0.125Вт. Из-за этого не получилось скопировать разводку аналоговой части, так как она очень сильно распухла.
- Разъемы "тюльпаны" для выхода на усилитель заменены на обычный Jack 3.5: толку от тюльпанов особого нет, а сами разъемы еще нужно поискать. В то же время, гнезда для Jack'ов у меня есть в избытке.
- Разъем для внешнего MIDI используется DB-9 c разводкой от HardMPU. В оригинале используется DB-15, который идет на специальный внешний блок. Внешнего блока у меня нет, поэтому копировать оригинал в этой части смысла нет.
- На плате есть перемычка Disable Synth, которая выключает внутренний синтезатор и позволяет использовать плату как MIDI интерфейс для подключение внешних устройств, вроде MT-32 или SC-55.
- Добавил светодиод MIDI Message. Поскольку в LAPC-I и CM32 общая прошивка, то программная поддержка светодиода имеется.
Репозиторий проекта: http://svn.stdio.ru/svn/trunk/lapci_clone/.
Дополнительные фотографии и видео: https://stdio.ru/download/lapci_clone/.
Видео на YouTube.
Плата версии 1.0
Планы по монтажу такие:
- Cпаять часть схемы, которая относится к HardMPU. Данная часть уже проверена на макете и проблем создать не должна. К тому же ее можно протестировать отдельно с помощью внешнего интерфейса MIDI.
- Затем, собрать цифровую часть синтезатора. Музыки на данном этапе я не услышу, но с помощью осциллографа смогу понять, работает синтезатор или нет. Кроме того, активность светодиода "MIDI Message" покажет работает процессор вместе с прошивкой.
- Завершит сборку монтаж ЦАПа вместе с аналоговой частью. Здесь я уже должен получить какой-то звук. В крайнем случае, у меня есть возможность протестировать ЦАП, НЧ фильтры и усилители с помощью микроконтроллера Atmega. Я уже делал это для клона MT-32.
- Дальше пойдет тестирование. Проект клона MT-32 провалился из-за того, что готовое устройство не могло проработать непрерывно более 40 минут: происходил сброс микроконтроллера. Если карта будет работать долгое время без сбросов и зависаний, то этап тестирования можно будет считать завершенным.
- Демонтаж временных панелек с сохранением внешнего вида платы. Скорее всего, панельки будут демонтироваться с повреждениями. Микросхемы будут припаяны непосредственно на плату.
- Изготовление задней планки: высверливание отверстий под разъемы Jack-3.5 и выпиливание отверстия под DB-9. В качестве заготовки будет использоваться ISA bracket от Mouser.
- В случае неудачи, все детали будут аккуратно демонтированы с платы феном. Приоритет будет за сохранением деталей. Перед демонтажом я попытаюсь добиться работоспособности устройства с помощью навесного монтажа. Проект уйдет на вторую итерацию.
22.06.2021 На данный момент подан запрос на завод на изготовление платы. К сожалению, плата получилось большая, 4-х слойная и просто так ее произвести не получается.
07.07.2021 Плата пришла с завода. Приступаю к монтажу. Чтобы не травмировать лишний раз DIP микросхемы впайкой-выпайкой, посажу их на панельки. Если плата получилась удачной и повторного заказа не понадобится, то все панельки будут демонтированы самым щадящим для платы способом, и микросхемы будут установлены напрямую (кроме UV-PROM).
21.07.2021 К сожалению, микроконтроллер синтезатора сразу работать отказался: осциллограф показывает импульсы ни линии ~RESET. Такое может быть из-за того, что из ПЗУ не считывается программа. Сама прошивка проверялась на полудохлой плате клона MT-32 и оказалась рабочей. Буду копать дальше.
Часть платы, отвечающая за HardMPU заработала успешно, хотя и были обнаружены баги в разводке.
22.07.2021 Внезапно, микроконтроллер перестал шалить на линии ~RESET и заработал. Я даже увидел корректную работу генератора PWM: 50% заполняемости. Активность на линиях адреса-данных (AD) тоже была похожа на правду. К сожалению, счастье дилось не долго. Хотя ~RESET остается стабильным, на линиях AD сигналы стали какие-то слишком периодические, a PWM выдает короткие импульсы. Пока подозрение на качество платы (что вряд ли), либо на некачественную припайку GA. Также, обнаружил, что неверно подключил светодиод на схеме. После того как светодиод бы впаян правильно, иногда, при включении питания он начинает моргать, чего быть не должно. Похоже, что из ПЗУ считывается мусор.
26.09.2021 Заметил, что время доступа в используемом ПЗУ - 250нс, в то время как на всех фотографиях используются микросхемы со 150нс. Возможно, проблемы именно с этим. Заказал себе более быстрые чипы.
30.09.2021 Нашел у себя м/с EEPROM подходящей емкости со временем доступа в 45нс. Попробовал использовать ее в качестве Control ROM. Самое интересное, это - помогло! Импульсы PWM стабильно выставлялись в 50% после подачи питания. Решил запихнуть карту в компьютер. Обращу внимание, что по цифровой части я распаял только процессор с памятью, Gate Array, ну и HardMPU. На утилиту hardhmu.com девайс ответил веселым морганием светодиода! Более того, когда я запустил MIDI файл от Space Quest I, светодиод как бешеный заморгал во время загрузки инструментов. Правда, моргания закончились, как только пошли реальные ноты: индикатор засветился постоянно. Но это, как-раз, можно объяснить отсутствием LA32, от которого должны приходить прерывания и в нужный момент свет выключать. Следующий шаг - напайка синтезатора. Уже с этого момента должен появиться какой-то звук на осциллографе. Ревербератор можно добавить позже.
07.10.2021 После монтажа чипа LA32, сперва светодиод заморгал как надо, при воспроизведении MIDI, но затем, внезапно погас и больше не загорался. Не помог даже перезапуск компьютера. Проект идет очень тяжело. :-(
15.11.2021 Пока решил оставить в покое цифровую часть и начать проверку аналоговой. Подключил ЦАП от LAPC-I к заведомо исправной плате MT-32. Оттуда же взял аналоговое питание -/+6В. Для управления регулятором громкости с помощью ШИМа пришлось воспользоваться контроллером ATmega. На удивление, ЦАП, фильтры, регулятор громкости и усилители заработали сразу. Единственное, пришлось пару дней повозиться с подавителем щелчка при включении. Почему-то схема не работала, если один из резисторов был номиналом 100К. При замене его на 10К все заработало. Это странно, потому что на двух схемах и снимках платы ясно видно, что он 100-килоомный. Тестирование аналоговой части можно посмотреть здесь.
16.11.2021 Нужно вернуться к цифровой части. Во-первых, часть схемы, которая отвечает за HardMPU я считаю рабочей. Нет больше смысла пихать карту в ISA слот при тестировании: можно брать MIDI из платы MT-32, подключенного к отдельному HardMPU. Во-вторых, нужно проверить микросхему GA. Есть подозрение, что она сгорела. Все остальные микросхемы, кроме MCU P8095 я уже проверил. Позже Микросхема GA оказалась рабочей.
17.11.2021 Прозвонил шины адреса/данных/управления в цифровой схеме MCU/GA/ROM/RAM. Все соответствует схеме, обрывов не найдено. Заметил, что номиналы подтягивающих резисторов на шине DA[15-0] микроконтроллера не соответствуют схемам MT-32 и CM-64: 10К вместо 33К. Возможно проблема в этом. На всякий случай заказал в Китае резисторные сборки на 33К. Номинал в 10К я взял из схемы синтезатора D-110 и там они вполне себе работали. Правда, там используется немного другой контроллер.
21.11.2021 Решил не дожидаться резисторных сборок из Китая и приобрел в местном магазине похожие, но на 9 резисторов вместо 8-ми. Самое интересное, что процессор запустился: видно что линия PWM меняла заполнение импульсов со 100% до 50%. Поэтому я решил припаять LA32. И что же вы думали: звук появился! Я реально слышал музыку из первой Кирандии. Но увы, счастье длилось не долго. Минут через 10 синтезатор подвис. После перезапуска, он проработал еще минуту. Потом перестали помогать и перезапуски. На текущий момент, LAPC-I вернулся к перманентному состоянию трупа. Не помогли, значит, резисторы на 33К. Пока я могу придумать только одну причину: дефект платы, но прозвон ничего не показал. Небольшие помехи есть по линии питания, но эти помехи должны приводить к зависанию в процессе работы, а плата вообще не запускается. Менялись или проверялись все детали цифровой части: процессор, память и чипы от Roland. Нужно еще перепроверить мелкую логику, но в работе контроллера ее практически нет.
Заметил, что после перехода на резисторы 33К потребление цифровой части снизилось до 350мА. Это больше похоже на норму, так как раньше доходило до 800мА.
22.11.2021 Прозвон чипов Roland показал замыкание некоторых выводов. Визуально замыканий видно не было. Более тщательная пропайка этих микросхем оживила синтезатор. К сожалению, полной победы не получилось: прибор все-равно виснет через 5-10 секунд, а загрузка инструментов в треке Space Quest 1 вообще не прошла ни разу. Однако, это уже некоторый прогресс. Возможно, сейчас не работает какая-нибудь линия адреса. Нужно проверить пайку еще раз.
24.11.2021 Очень странно: короткое на контактах SMD микросхем появляется спустя некоторое время после пайки. Грешу на флюс. Нечто подобное у меня было, когда я паял ATmega'у в корпусе QFN: через 10-15 минут после пайки контроллер стабильно отказывался работать. Пока возьму тайм-аут и дождусь, когда их Китая придет новый паяльник и флюс. Самый лучший результат работы синтезатора - 30с. Один раз удалось даже загрузить инструменты для SQ1. В корпусе компьютера (при прямом подключении к ISA) цифровая часть работает точно так же, а в аналоговой слышны очень громкие помехи. С последним еще придется разбираться. :-(
23.01.2022 Как это ни странно - оно заработало. Для этого пришлось:
- найти правильную позицию платы в слоте, так как в некоторых положениях она не оживает;
- промыть SMD чипы очистителем для карбюраторов, так как было подозрение, что мой флюс проводит ток;
- заказать за дорого через EBay правильный чип памяти в Великобритании, так как китайцы упорно слали перемаркированный мусор.
Синтезатор проработал больше часа без зависаний - это мой рекорд для самодельного клона MT-32. Из интересного: нет шумов в аналоговой части. Звук чистый. Ничего не менял. Странно.
Теперь нужно исправить косяки в проекте KiCAD и заказать новую плату. Еще нужно изготовить ISA брекет.
27.01.2022 Опять проблема: отечественный производитель печатных плат, который уже делал мне прототип этого устройства, оптимизировал производство и теперь не может изготовить мне нужную плату. Получается, что она на 3см длиннее ванны для гальванизации краевого разъема. Без покрытия ISA разъема твердым золотом вся эта история не имеет смысла. По какой-то причине, в Китае покрытие твердым золотом стоит каких-то бешеных денег. Если в России изготовление прототипа мне обошлось в 120$, то китайцы уже просят 450$. Поскольку история с клонированием LAPC-I затянулась и порядком мне надоела, я, несмотря на жабу, решился на заказ в Китае. Плата придет через месяц. Надеюсь, сюрпризов не больше будет. На всякий случай заказал две платы: вдруг получится одну продать и частично возместить расходы. У меня есть набор чипов на второй экземпляр, но сомневаюсь, что кто-то захочет иметь клон за относительно большие деньги.
Найденные недостатки при проектировании платы v1.0
- Слишком высокий ISA разъем. Высоту разъема я увеличил чтобы сделать фаску: для этого край разъема должен на 1-1.5мм быть дальше от контактов. Нужно было уменьшить размер контакта, а край платы не трогать. Если данную плату не придется перезаказывать, то данная проблема решится стачиванием фаски напильником.
- Отверстия под штырьки разъема Jack 3.5 слегка не совпадают. Проблема не критичная, но если придется плату переделывать, то это нужно будет исправить.
- Неправильно указана цепь питания для резистора R44: Vcc вместо +5V. Из-за этого, один из выводов оказался ни к чему не подключен.
- Микросхемы IC30, IC31 и IC32, IC33, IC36 слишком близко располагаются друг к другу. По какой-то причине, во внутренней библиотеке KiCAD неправильно указаны габариты DIP корпусов.
- Светодиод по схеме подключен неправильно.
- Неправильный номинал резистора R41: 2.2К вместо 82К.
- Схема подавления щелчка при включении не работает, если номинал резистора R54 равняется 100К. Номинал нужно изменить на 10К (или 15К).
- Перепутаны номиналы транзисторов Q5 и Q7. Нужно так: Q5-2SC1815, Q7-2SA1015.
Все исправлено в версии v1.1.
Плата версии 1.1
28.01.2022 Заказ изготовления PCB в Китае. Ориентировочная дата выполнения: 26.02.2022.
24.03.2022 Сегодня пришли платы. Приступил к сборке. Перед сборкой проверил тестовый образец - как ни странно, заработал сразу и без зависаний. Решил собирать устройство сразу на чистовую, без панелек.
27.03.2022 После финальной сборки устройство заработало сразу. Без приключений не обошлось: жидкость для очистки карбюраторов (которой я мыл плату по совету из Ютюбчика) смыла маркировку с резисторов. Пришлось покупать новые и перепаивать, иначе некрасиво все выглядело. Сейчас тестирую на зависание при длительной работе. Одновременно приступлю к слесарке и буду делать заднюю планку. Блин, неужели во всех моих предыдущих неудачах был виноват некачественный флюс? Хотя нет, память я изначально подобрал тоже не правильную.
27.03.2022 (вечер) Больше часа устройство проработало без зависаний. Cделал планку, наклейки на микросхемы. Плату выкупал и прополоскал в дистиллированной воде. Похоже, проект закрыт? Добавил пару финальных фоток и видео в дирку с media.