Важная информация

User Tag List

Показано с 1 по 10 из 217

Тема: Прикрутить YM2149F к IBM-PC?

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Veteran Аватар для Tronix
    Регистрация
    16.09.2010
    Адрес
    г. Москва
    Сообщений
    1,933
    Спасибо Благодарностей отдано 
    78
    Спасибо Благодарностей получено 
    231
    Поблагодарили
    115 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Прикрутить YM2149F к IBM-PC?

    Заказал пару YM2149F из китая. Одна будет стоять в ПК "Дуэт" в виде отдельной платы, вставляющейся в слот расширения. Вторая YM2149F типа запасная, но вот подумалось - нельзя ли ее как-то прикрутить к PC ? Ну не знаю, в качестве ISA-8 платы или с помощью топора, LTP-порта и какого-нибуть микроконтроллера? А то чего оно будет просто так лежать....

    UPD 10.01.2015:
    В результате этой темы сначала подключил YM к LPT (схема здесь), а затем захотелось подключить и к USB. В итоге получилось следующее:



    Используемый микроконтроллер - дешевый старенький PIC16F628A, без аппаратного USB. Используется программная реализация USB 1.1 с помощью библиотеки 16fusb . В качестве проигрывателя выступает знаменитый ZX Tune. Напрямую он не поддерживает AY-USB, зато если находит у себя в директории одну из библиотек dlportio.dll/inpout32.dll/inpoutx64.dll , то позволяет переключится в настройках вывода звука на YM-LPT, а затем использует функцию __stdcall void DlPortWritePortUchar(unsigned short port, unsigned char val); для выдачи байт YM2149.



    Так, если написать библиотеку-заглушку с этой функцией, то возможно перенаправлять вывод байт на USB устройство. Что я и сделал, взял за основу исходники inpout32. На выходе получаются библиотеки inpout32.dll или inpoutx64.dll, в зависимости от используемой версии плеера (x86/x64). Они уже есть в скомпилированном виде в приложенном архиве, достаточно одну их них скопировать в папку с ZX Tune, запустить плеер, зайти в настройки звука и переместить на самый верх устройство "aylpt".

    Драйвера для Win XP, Win 7 x86/x64 скачиваются здесь: http://16fusb.googlecode.com/files/1...32-1.2.6.0.zip

    Уже скомпилированная прошивка для PIC, библиотеки inpout32.dll/inpoutx64.dll . Так же выложены исходники прошивки, исходники библиотеки-заглушки и конечно схема устройства.

    Немного по схеме

    для тактирования PIC применен кварцевый генератор, а не кварц, тем самым высвобождая одну ногу МК (RA6), необходимую для управления сигналом RESET. Нога RA5, торчащая в воздухе, в данном семействе работает только на вход и не может быть использована для управления выходным сигналом. Можно было бы попробовать ее (ногу RA5) использовать как входной сигнал U+ или U- USB, но в обработчике прерывания тогда бы увеличилась задержка из-за разбросанности на разных портах (порт A и порт B) сигналов, что скорее всего привело бы к неработоспособности USB стека. Хотя не отрицаю, что возможно бы и получилось перенести с ноги RB2 функционал на RA5, а RB2 использовать для управления RESET, а МК тактовать просто от кварца. Но, как получилось. С другой стороны, для тактирования YM2149F собран генератор на микросхеме 74HC02 и кварце 3.579545 MHz. Можно было бы попробовать использовать вторую свободную половину микросхемы для сборки аналогичного генератора и для PIC, но остановило два момента: 1) у меня нету кварца на 24МГц (а кварцевый генератор был, с какой-то древней мамки) 2) я не знаю, как поведет себя 74HC02, если с "разных боков" у нее будут разные частоты, причем одна из них довольно высокая (24МГц все таки большая частота).

    Дальше, нога RA4, которая управляет сигналом BDIR, с открытым коллектором, поэтому ее обязательно нужно подтянуть к питанию - на схеме это 10K резистор R5.
    [свернуть]


    Немного деталей по прошивке

    Прошивка базируется на оригинале библиотеки 16FUSB, но многое подогнано "под себя":
    - выкинуто все, что связано с чтением сигналов из PIC в хост (компьютер) для увеличения быстродействия обработки реквестов USB;
    - состояние направлений портов ввода-вывода жёстко задано при инициализации МК и не изменяется в процедурах выдачи байта на ноги.
    - организован кольцевой буфер на 30 байт. При декодировании запроса от хоста байты складываются в буфер. Когда есть свободное время, данные из буфера выдаются на YM.
    - дичайше оптимизирована скорость выдачи байта на ноги МК. Частично за счет жестко указанных направлений ввода-вывода, частично из-за известности предыдущего состояния управляющих бит.
    - что-то еще по мелочи.
    UPD: 17.01.2015:
    - Пофикшен глюк с зацикливанием PIC через несколько тысяч пакетов (развернут цикл RxLoop в файле isr.asm, вместо goto RxLoop вставлена проверка на признак конца пакета)
    - Теперь данные передаются сразу по 16 байт, то есть два дата-пакета USB без UBR по 8 байт. Буфер в контроллере расширен до 64 байт.
    [свернуть]


    Про стабильность и скорость: Сначала было ооочень медленно, потом было медленно и, наконец стало нормально. Проверил на двух машинах - одна с Win7 x64 быстрая современная, другая - ноут с Win XP на атоме. Работает одинаково и там и там. Но не исключаю, что на какой-то другой конфигурации может вести себя по другому, поэтому собирая устройство помните - вы делаете это на свой страх и риск.

    PS: К ПК "Дуэт" тоже подключил YM, как и хотел. Тут подробнее:тема про Дуэт
    Вложения Вложения
    Последний раз редактировалось Tronix; 17.01.2015 в 11:15.

  2. Этот пользователь поблагодарил Tronix за это полезное сообщение:

    nimdasys_inbox_ru (01.05.2020)

  3. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Куплю YM2149F
    от cmari в разделе Барахолка (архив)
    Ответов: 2
    Последнее: 13.09.2010, 00:48
  2. Хочу прикрутить NEMO IDE к моему Speccy
    от ILoveSpeccy в разделе Внешние накопители
    Ответов: 15
    Последнее: 21.04.2010, 23:40
  3. AY38910 vs YM2149F
    от AlexBel в разделе Звук
    Ответов: 1
    Последнее: 10.01.2008, 19:44
  4. Продам 2 YM2149F и ещё кое-что
    от Lounge Lizard в разделе Барахолка (архив)
    Ответов: 0
    Последнее: 13.08.2005, 04:17

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •