Recent Changes - Search:

Главная страница

Проекты

Статьи

Домашний WiFi роутер

Архив проектов

Загрузки

GitHub

SourceForge

edit SideBar

IMFC

Клон звуковой карты IBM Music Feature Card

IMFC Clone v1.0

Карта представляет собой модификацию синтезатора Yamaha FB-01, в форм-факторе 8-ми битной ISA платы. Из-за своей дороговизны и заурядного звучания не снискала большой популярности. Поддержка в играх очень скромная. Однако, клонировать эту звуковуху будет очень интересно, благо детали там вполне еще доступные. Но побегать за ними все-таки придется.

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

Ссылки:

Репозиторий проекта: http://svn.stdio.ru/svn/trunk/imfc_clone/
Релизы: https://stdio.ru/download/imfc_clone/releases
Дополнительные фотографии: https://stdio.ru/download/imfc_clone/media.
Плейлист на YouTube: https://www.youtube.com/playlist?list=PLklwb3FAVTuTg9WiCjmrd7izTdC5_sEzL
Тема на "Полигоне призраков": https://www.phantom.sannata.org/viewtopic.php?f=12&t=43060
Тема на Vogons: https://www.vogons.org/viewtopic.php?f=62&t=89229

Воссоздание схемы платы

11.07.2022 Поскольку, карта представляет собой модификацию синтезатора FB-01, со схемотехникой синтезаторной части проблем особых не возникло, так как Sevice Manual со схемой вполне себе доступен. Другое дело - интерфейс с компьютером. Здесь мам помогут: здравый смысл, зоркий глаз и терпение. Полностью разобрана схемы: синтезатора и логика прерывания. Почти готова логика выборки адреса на ISA шине, но не понятно, как работает линия адреса A7. Еще, большие непонятки с RESET'ом.
12.07.2022 Внезапно, удалось разобраться в схеме параллельного интерфейса между хостом и синтезатором. Как оказалось, на триггерах были сделаны линии задержки для сигналов "рукопожатия" (handhake). Также, частично разобрался в схеме сброса: второй инвертор, чье назначение было для меня загадкой, идет в аналоговую часть для формирования сигнала MUTE во время сброса. Таким образом, в цифровой части осталось решить три глобальные проблемы:

  1. Куда идет сигнал ISA_RESET? Судя по всему, на входной буфер U8.
  2. Кто управляет выходом буфера U8 (ноги 1 и 19)?
  3. Как, черт возьми, формируется сигнал ISA_A6 в схеме выборки адреса карты?

14.07.2022 Удалось решить проблему с выборкой карты. Неудачно развел всего два проводка. Поменял их местами все сошлось.
02.08.2022 Доразвел MIDI и, практически, всю аналоговую часть. Пока затык с питанием, так как не видно номиналов конденсаторов и стабилизаторов.
03.08.2022 Контур платы, все разъемы. С 3D моделями разъемов пока не заморачивался.
04.08.2022 Судя по всему, усилители запитываются (AVcc) не +5В, а +9В или +6В. А вот для питания ЦАПа берется это напряжение и уменьшается до +5В стабилизатором U41. Возьмем пока для референса AVcc=+9В.
16.08.2022 Благодаря участникам форума vogons.org у меня появилась серия качественных фото, благодаря которым мне удалось установить номиналы всех деталей. Остался только один вопрос с подключением второго вывода резисторной сборки RA1. Я вижу на плате одну дорожку, но не могу понять, откуда она приходит и куда уходит. Предположительно, она подтягивает 13-й вывод U5 к +5В (через RA1). Но это не имеет смысла, так как этот вывод соединен с сигналом AEN, и очень нехорошо вмешиваться в этот сигнал карте расширения. Если он и должен быть подтянут в напряжению питания, то сделано это должно быть на материнской плате. В принципе, заказать макетную плату можно и в таком виде, а лишнюю дорожку всегда можно обрезать ножиком.
29.12.2022 Увы, сейчас немного не до звуковой карты.
16.04.2023 Заказал тестовую плату на заводе. Ждем до конца марта. Предположил, что RA1-2 все-таки подтягивает ISA_AEN к +5V.

Вопросы по схеме

Цепи

  1. RA1-2 - предположительно, подтягивает ISA_AEN к +5V. (Подтянутая к 5В ISA_AEN никак на работоспособность платы не влияет. Оставил как есть.)
  2. U2-1 должен быть притянут к земле. Непонятно как. (Сделал ч/з внутренний слой.)
  3. U27-1 и U-27-13 - похоже, что к земле притягиваются через внутренний слой, т.к. по внешним линию провести не получается. (Подтянул ч/з внутренний слой.)
  4. U21-4 и U21-10 - +5В похоже, что идет от внутреннего слоя. (Так и сделал.)
  5. U8-6 - DGND подводится через внутренний слой. (Так и сделал.)
  6. U11-5 - DGND подводится через внутренний слой. (Так и сделал.)

Номиналы компонентов

  1. Резисторы: R2 и R3 - 56Ом или 560Ом? Предположительно: 56Ом (56Ом 1%)
  2. Резисторы: R24 и R25 - предположительно: 260Ом 1% (360Ом 1%)
  3. Резисторы: R27 и R28 - предположительно 1КОм или 110Ом 1% (1КОм 1%)
  4. Резистор R35 - предположительно 120Ом
  5. Резистор R39 - предположительно 1МОм (1МОм)
  6. Резистор R45 - предположительно 390Ом (390Ом)
  7. Резисторные сборки: RA3, RA2 и RA1 - предположительно: 8x10K (8x10K)
  8. Конденсаторы: C1 и C7 - видно только, что 16В, но ёмкость не видно. Предположительно: 10мкФ (10мкФ 16В)
  9. Конденсаторы С2 и С3 - 0.01мкФ
  10. Конденсатор С5 - предположительно 0.1мкФ
  11. Конденсаторы: C13 и C14 - предположительно: 10мкФ 16В (плохо видно, но можно разглядеть) (10мкФ 16В)
  12. Конденсаторы: C23 и C25 - предположительно: 10мкФ 16В (10мкФ 16В)
  13. Конденсатор С15 (10мкФ 16В)
  14. Конденсатор С26 - предположительно: 220мкФ 16В (220мкФ 16В)
  15. Конденсатор С30 (10мкФ 16В)
  16. Конденсатор С39 (100мкФ 16В)
  17. Индуктивности: L1, L2 и L4, L5 - хоть какие-нибудь знаки. Однозначно, это Tokin SBT-02xx, но индуктивность неизвестна. Буду использовать что есть: c маркировкой 04 (0.04mH- Tokin SBT-0240)
  18. Микросхема U41 - предположительно линейный стабилизатор на 5В L78L05_TO92
  19. Микросхема U3 - предположительно линейный стабилизатор на 9В: AN78N09

Обозначение компонентов

  1. Круглый керамический конденсатор, рядом с C5 и C6. Похожий на C5: C70 - 0.1мкф

Сборка платы версии pre1

30.05.2023 Плата пришла с завода. Приступил к сборке. По-прежнему не хватает всех компонентов. Заказал в Китае одну микросхему мелкой логики (используется для соединения параллельных портов между собой) и транзисторы. Однако, их отсутствие не мешает проверить питание и усилители. Возможно, попытаюсь проверить так же ЦАП и синтезатор. Но у меня нет даташита на синтезатор, и не ясно, выйдет ли на ATmega генерировать clock 1.6МГц для ЦАПа.
09.06.2023 Частично собрал плату. Протестировал аналоговою часть: выглядит так, что усилители работают. Усиления, правда никакого: какое напряжение на входе, такое и на выходе. Но, для ЦАП, это, видимо, нормально. Протестировать схему MUTE пока нет возможности. Подумаю, как протестировать ЦАП без синтезатора, так как на YM2164 даташитов нету :-(
12.06.2023 Успешная проверка ЦАП и усилителей. Atmega генерирует два тона прямоугольной формы: 500Гц и 1000Гц длительностью 3с. Писк достаточно громко слышен в наушкиках. Пока все идет хорошо. Единственное, что меня смущает, так это форма сигнала. Я, вроде, генерирую прямоугольник, а на осциллограые виден треугольник. С другой стороны, я подавал на вход усилителя прямоугольнк с генератора осциллографа и на выходе получал тоже прямоугольник. Будем считать, что я до конца не понял, как работать с ЦАП'ом.
13.06.2023 Проверил работу генераторов тактовой частоты. Нашел ошибку в генераторе процессора: неправильный номинал резистора R62.
14.06.2023 Проверил работу сигналов выборки ~ISA_CRDS, ~HPIU, ~HTIMER, ~TCR, ~TSR - никаких проблем не обнаружил. По всей видимости, подтяжка ISA_AEN к +5V через резисторную сборку RA1 никакого влияния на работу шины не оказывает. Другие ISA карты на этой шине тоже не испытывают трудностей в работе.
15.06.2023 Протестировал работу таймера. Результат можно посмотреть тут: https://www.youtube.com/watch?v=QKtnqY0oFZE
16.06.2023 Не выдержал и накинул остальные детали на плату, в надежде, что она заработает. Но она не заработала. Программа тестирования из комплекта к карте, говорит, что не может настроить прерывание. Однако, прерывание я тестировал - оно работает.
17.06.2023 Решил проверить музыкальную плату в игре SQ3 и она заиграла! В Silpheed - тоже. Однако, уже вечером, когда я решил записать результат на видео, она снова перестала работать. Если запускать игры из-под DOS, то они зависают после нескольких нот. Из-под Windows 95 зависаний не происходит, но инструменты звучат как-то странно.
19.06.2023 Подключил к параллельному интерфейсу со стороны компьютера логический анализатор, чтобы снять протокол обмена между драйвером и картой. Анализ, показал, что драйвер использует карту в режиме поллинга: в определенный порт записывается команда, а затем периодически запрашивается статус в ожидании бита ready. В какой-то момент драйвер перестает реагировать на это бит и продолжает полить статус бесконечно. Тем не менее, карта этот бит выставляет. Отсюда я делаю предварительный вывод, что это - программная проблема. Нужно анализировать драйвер.
23.06.2023 Пришли недостающие транзисторы для схемы подавления щелчков при включении. Почему-то не получилось проверить ее работоспособность осциллографом: не силен я в аналоговой схемотехнике :) Однако, какие-то незначительные дрыганья на транзисторах я увидел, да и щелчки все-таки исчезли. Будем считать, что все работает.
02.07.2023 Расковырял таки драйвер. До конца выяснить, почему происходит бесконечный поллинг я пока не успел, но зато в самом его конце нашел функцию задержки, основанную на пустых циклах. Обычно, такие штуки приводят к тому, что программы прекрасно работают на компьютерах, на которых их написали, но перестают работать на более быстрых. Более того, эта функция используется при инициализации карты, что, вероятнее всего, и является причиной искаженных инструментов при запуске под Win95. За сутки, мне удалось добиться сборки дизассемблированного драйвера обратно в бинарник, после этого, я увеличил количество пустых циклов в 0x2fff раз. И, похоже, оно заработало: https://www.youtube.com/watch?v=1_qK44evF64. Но это все-равно не очень хорошее решение. Нужно попробовать сделать задержку на основе системных часов DOS (есть такая штука), если, конечно, игра не забирает прерывание от него себе.
03.07.2023 К сожалению, дальнейшие тесты показали, что пропатченный драйвер не помогает с зависанием игр, запускаемых из под DOS. И вероятность сломанных инструментов из под Windows, хоть и уменьшается, но не исчезает полностью. Значит, дело не в кривых задержках. Будем копать дальше.
01.08.2023 Анализ ISA шины с помощью логическогого анализатора показал, что с какого-то момента карта при чтении всегда выдает на линии данных одни нули. Посмотрел по схеме все, что отвечает за вывод данных и обнаружил, что если пошевелить одну из микросхем мелкой логики, то карта начинает работать как надо. Очень похоже, что был плохой контакт. Послежу за поведением карты еще какое-то время, но получается, что все заработао!
17.08.2023 Увы, не помого. Беглый анализ показал, что в момент чтения, на шинном передатчике U9 значения на входе и выходе не совпадают. Такого быть не должно. Очень похоже, что на ISA шину в этот момент пытается писать кто-то еще. Буду разбираться дальше.
18.08.2023 Этим "кто-то еще" был Sound Blaster! Забавно, но это оставалось единственное устройство, которое я не убрал из компьютера. И именно он конфликтовал с IMFC! А я кучу времени и нервов угробил, пока это выяснил. Главное, в интернете про это писали, что IMFC не дружит с SB. Следующий этап - нкжно проверить внешний MIDI порт. Попробую набросать на DOS'е простенький loopback тест.
20.08.2023 Пришли планки. Отлично подошли к плате. Кроме того, протестировал MIDI порт: https://youtu.be/7my3f8IxtpI?si=Qe9H7sydFImHiiHR. Начал подкоговку к релизу платы v1.0. По результату релиза закажу себе уже чистовую плату с нормально позолоченым ISA разъемом.
21.08.2023 Зарелизил первую версию платы на Vogons.
27.08.2023 Пришел ко мне из Китая XT'шный ноутбук BOOK8088 с платой ISA портов. Посему, решил проверит гипотезу, что COMPOSE и PLAYREC не запускались на 133-м пне, потому, что он очень быстрый. И знаете, предположение таки подтвердилось! На i8088, внезапно, никаких проблем с прерыванием не оказалось, программы успешно запустились и успешно что-то проиграли.

Найденные ошибки

  • R62 - неправильный номинал: нужно 4.7К вместо 1К. (исправил в v1.0)
  • ZD1 подключен к земле через неправильный слой: внутренний вместо внешнего верхнего. (исправил в v1.0)

План тестирования

  1. Работа аналоговой части
    1. Работа усилителей от внешнего генератора
    2. Работа ЦАП
  2. Тактовые генераторы
  3. Работа ISA шины, выборка сигналов CS на основе адресов шины: ~ISA_CRDS, ~HPIU, ~HTIMER, ~TCR, ~TSR
  4. Программная проверка таймера (заодно и регистра TSR)
  5. Регистр TCR
  6. Программная проверка параллельного интерфейса.
  7. Cинтезатор.
  8. Внешний MIDI порт.

Хорошо бы написать небольшой тестик под DOS.

Сборка платы версии 1.0

22.08.2023 Заказал производство релизной платы в Китае через Резонит. Будет готова через месяц.
02.10.2023 Пришла из Китая плата. Собрал. Проблем при сборке не возникло. Осталось только дождаться разъема для фильтра MIDI порта.
10.10.2023 Установил фильтр на MIDI-порт. Аппаратная часть проекта завершена. Теперь в планах - написать драйвер для Windows 95.

Edit - History - Print - Recent Changes - Search
Page last modified on October 10, 2023, at 07:46 pm