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

User Tag List

Страница 1 из 10 12345 ... ПоследняяПоследняя
Показано с 1 по 10 из 93

Тема: Доработки General Sound

  1. #1
    Activist
    Регистрация
    06.01.2011
    Адрес
    г. Днепр, Украина
    Сообщений
    470
    Благодарностей: 218
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Доработки General Sound

    Всем добрый день.

    Хочу посвятить тему доработкам General Sound-а, разумеется я имею ввиду именно General Sound на рассыпухе, а не более современные разработки.

    1. Разгон GS:
    Самая главная проблема General Sound-а, которая и заставила меня поднять эту тему - нехватка вычислительных ресурсов процессора для одновременного воспроизведения инструментов в 4-х каналах. Увы, есть ряд MOD-мелодий, на которых эта проблема выливается в скрежет и снижение тональности.

    А теперь смотрим:
    Тактовая частота процессора и ОЗУ в GS - 12 МГц.
    Частота прерываний процессора - 37.5 КГц. Проигрывание звука происходит по прерываниям, т.е. частота дискретизации звука = частоте прерываний.

    При этом тактов за прерываний у процессора всего лишь 12000 / 37.5 = 320. И как показала практика, этого недостаточно.

    Например, запустите какой-нибудь редактор MODов, загрузите любую мелодию, имеющую зацикленные инструменты. Зайдите в режим редактирования, и очистите от нот и параметров текущую позицию. Выберите какой-нибудь зацикленный инструмент, введите любую ноту этого инструмента в одном канале - GS его будет отлично воспроизводить. Перейдите во второй канал, введите ноту этого же инструмента - GS будет уже отлично воспроизводить этот инструмент в двух каналах. Тоже самое проделайте и для третьего канала - тоже будет всё ОК.
    Наконец, как только вы введёте ноту этого же инструмента в 4-м канале, начнутся глюки - тональность воспроизведения упадёт сразу во всех 4 каналах, звук превратится в скрежет.

    Точно такой же скрежет наблюдается на ряде MOD-мелодий, которые увы, нормально не послушаешь.

    Причина этой ситуации понятно - когда (в 1995 г) авторы разрабатывали железо GS, тогда самое лучше, что было в наличии из Z80 - это 10-МГц вариант Z84C0010PEC, и авторы и так его разогнали его до 12 МГц. А снижать частоту прерываний ниже 37.5 КГц, тоже было уже нельзя - звук тогда был бы значительно хуже по качеству, и вся затея стала бы бессмысленной. Авторы выбрали золотую середину, доступной в те годы.

    Теперь же ситуация изменилась - появились Z84C0020PEC, расчитанные минимум на 20 МГц, а так же если постараться, то можно найти и статическое ОЗУ с временем доступа 55 нс и даже быстрее.

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

    Вариант 1)
    Нужно заменить кварцевый резонатор с 12 МГц на 15 МГц. Чтобы получить прежнюю частоту прерываний 37.5 КГц, нужно будет заменить микросхему двоичного счётчика 1533ИЕ19 на десятичный, если удастся найти двойной десятичный счётчик, то это будет то что доктор прописал. Коэффициент деления можно будет получить 400, что даст нам частоту прерываний 37.5 КГц и 400 тактов процессора за прерывания вместо 320.

    Кварц на 15 МГц достать можно, я поищу, что можно найти из подходящих счётчиков, и займусь доработкой.

    После этого хочу попробовать другие варианты, о которых напишу позже.

    2. Расширение памяти GS до 2Мб при обязательном отсутствии на плате GS микросхем памяти 62256.

    Суть простая:

    По классической схеме расширения ОЗУ до 2 Мб, на плате GS должны стоять двумя бутербродами 4 микросхемы основного ОЗУ общим объёмом 128 Кб, и на плате расширения установлено ОЗУ объёмом 2 Мб. При этом первые 128 Кб (4 страницы) просто перекрываются микросхемами ОЗУ на плате GS, поэтому на плате расширения эти страницы просто остаются не использованными.

    Моя плата расширения ОЗУ призвана устранить этот недостаток, теперь ставить на плату GS 2 бутерброда ОЗУ не надо, соответственно на 4 микросхемы 62256 уменьшаются и материальные затраты. Кроме этого, решается вопрос избавления от медленных микросхем ОЗУ 62256 с временем доступа 120-150 нс, что даёт возможность потом разогнать GS. Кроме этого, в качестве логики я решил использовать микросхемы в корпусах DIP, т.к. достать их проще, чем в SOP или SOIC корпусах.

    Эта схема расширения ОЗУ требует наличие 3-х доработок на плате GS. Если у вас GS собран из новодела на новой плате, на которой уже учтено расширение памяти до 2 Мб по старой схеме, то доработки № 2 и № 3 у вас уже есть, остаётся ввести только доработку № 1.

    Все обозначения сигналов я использовал по схеме GS из PDF файла, сами PDF с принципиальной и монтажной схемами GS во вложении.

    Описание всех доработок платы GS:

    № 1 B5 - берётся с DD9 (ИД7) выв.14 (сигнал RAM1) - активируется в адресном пространстве #4000-#7FFF
    № 2 B6 - подаётся на DD13 (ИД7) на выв.6 вместо сигнала /K1 (блокировка ПЗУ при обращении к любой странице ОЗУ)
    № 3 B7 - берётся с DD7 (ТМ8) выв.9 (тактовый сигнал порта #00)

    Принципиальная схема:



    Рисунок платы в масштабе 3х1:



    Смоделированное изображение будущей печатной платы, тоже в увеличенном масштабе:



    список микросхем:

    DD1-DD4 - K6T4008C1B-GB55 (можно GB70)
    DD5 - 1533КП11
    DD6 - 1533ТМ8
    DD7 - 1533ИД7
    DD8 - 1533ЛИ1 (лучше 1531 или 531 в случае разгона процессора)
    DD9 - 1533ЛЕ1 (лучше 1531 или 531 в случае разгона процессора)

    По микросхемам памяти: Самая главная здесь микросхема ОЗУ - DD1, без неё GS работать не будет. Остальные можно ставить, можно нет, от этого будет зависеть кол-во найденных страниц памяти.

    Сами микросхемы ОЗУ можно ставить и меньшего объёма, если они будут в таком же корпусе SOP-32.

    Доступный объём ОЗУ для МОДов будет точно таким же, как и с классическим расширением ОЗУ:

    1 микросхема DD1 емкостью 512 Кбайт - 512-16-32 = 464 Кб ("PRINT IN 179" должен выдать 14 страниц)
    2 микросхемы емкостью по 512 Кбайт - 1024-16-32 = 976 Кб ("PRINT IN 179" должен выдать 30 страниц)
    3 микросхемы емкостью по 512 Кбайт - 1536-16-32 = 1488 Кб ("PRINT IN 179" должен выдать 46 страниц)
    4 микросхемы емкостью по 512 Кбайт - 2048-16-32 = 2000 Кб ("PRINT IN 179" должен выдать 62 страницы)

    32 Кб из общего объёма памяти недоступны, т.к. 0-я страница ОЗУ перекрывается ПЗУ. Эта особенность присутствует и в классическом расширении, и в этом.

    16 Кб из общего объёма используются самим GS для собственных нужд, это 1-я страница ОЗУ, и её половинка проецируется в адресное пространство #4000...#7FFF.

    Фото готовых 4-х плат:



    Фото собранной платы:



    В идеале разъём на плате должен быть 36-контактным, но такой найти не реально. Зато без проблем можно купить 40-контактный, поэтому на плате я предусмотрел лишние 4 отверстия.

    Фото, как должна быть установлена плата расширения в случае применения 40-контактного разъёма:



    Результат:

    Вложения Вложения
    • Тип файла: pdf GS_CPG.pdf (91.5 Кб, Просмотров: 125)
    • Тип файла: pdf GS_E7+.pdf (91.4 Кб, Просмотров: 111)
    Последний раз редактировалось Northwood; 12.08.2013 в 22:44.
    С уважением, Александр

  2. Эти 2 пользователя(ей) поблагодарили Northwood за это полезное сообщение:
    palsw (19.12.2011), perestoronin (24.12.2013)

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

  4. #2
    Guru Аватар для osa
    Регистрация
    12.04.2010
    Адрес
    Шмелёво
    Сообщений
    2,252
    Благодарностей: 483
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    мазила

  5. #3
    Guru
    Регистрация
    25.01.2005
    Адрес
    Miass, Chelyabinsk region
    Сообщений
    4,086
    Благодарностей: 924
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Northwood Посмотреть сообщение
    Точно такой же скрежет наблюдается на ряде MOD-мелодий, которые увы, нормально не послушаешь.
    современные плееры и современная прошивка позволяют нормально слушать эти моды, увеличивая длину циклов до некоторой большей величены.

  6. #4
    Activist
    Регистрация
    06.01.2011
    Адрес
    г. Днепр, Украина
    Сообщений
    470
    Благодарностей: 218
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от psb Посмотреть сообщение
    современные плееры и современная прошивка позволяют нормально слушать эти моды, увеличивая длину циклов до некоторой большей величены.
    Есть пару MODов, с которыми обновление прошивки не поможет, т.к. на них GS не изредка подтормаживает, а конкретно тормозит и в хлам убивает звук.

    Я сделал две аудиозаписи в MP3 на этих двух модах:

    Название: 01 - Crystal Rain_GS.mp3
    Размер: 3.38 Мб
    http://mp3sort.ifolder.ru/27657438

    Название: 02 - Morgen Stemning_GS.mp3
    Размер: 2.25 Мб
    http://mp3sort.ifolder.ru/27657439

    Оба MODа во вложении.

    Я уже сделал доработку - достаточно было допаять всего 1 микросхему 1533ЛИ1 и заменить кварц на 15 МГц, в результате я увеличил число тактов с 320 до 400. На одном из этих двух модах GS идёт уже без глюков, на втором иногда кратковременно всё равно подтормаживает, но уже не убивает звук в хлам.

    Я сделаю всё-таки 440 тактов, этого должно хватать на безглючное воспроизведение любых модов, для этого понадобится кварц на 16.5 МГц или на 33 МГц и вместо 1533ЛИ1 нужно будет допаять 1533ЛИ3.

    Единственный подводный камень, с которым я столкнулся при разгоне General Sound-а, это медленное ОЗУ, которое установлено на моей плате (120 нс и 150 нс), из-за него 12 МГц тактовой частоты процессора почти оказалось пределом. Так что данная доработка требует и замены всего ОЗУ, поэтому мне придётся выкинуть родное ОЗУ и заменить его на новое ОЗУ со временем доступа 55 нс (можно и 70 нс ставить смело), заодно расширив объём памяти.
    Вложения Вложения
    Последний раз редактировалось Northwood; 18.12.2011 в 17:51.
    С уважением, Александр

  7. Этот пользователь поблагодарил Northwood за это полезное сообщение:
    perestoronin (02.02.2013)

  8. #5
    Guru
    Регистрация
    25.01.2005
    Адрес
    Miass, Chelyabinsk region
    Сообщений
    4,086
    Благодарностей: 924
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Northwood Посмотреть сообщение
    Есть пару MODов, с которыми обновление прошивки не поможет, т.к. на них GS не изредка подтормаживает, а конкретно тормозит и в хлам убивает звук.
    вообще-то, после релупера (встроенного в прошивку 1.05а или встроенного в любой плеер) мод играет очень прилично, хотя и не идеально, согласен (изредка есть маленькие тормоза).

    но, опять же, хочу вас "обрадовать". эмулятор, в котором GS работает на 20 мгц, без релупера не тормозит так явно, но ясно слышны щелчки во время этих коротких сэмплов, т.е. скорость здесь не всё решает. а вот со включенным релупером уже все хорошо и не щелкает.

  9. #6
    Master
    Регистрация
    04.12.2008
    Адрес
    г. Черкассы, Украина
    Сообщений
    753
    Благодарностей: 866
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Northwood Посмотреть сообщение
    Единственный подводный камень, с которым я столкнулся при разгоне General Sound-а, это медленное ОЗУ, которое установлено на моей плате (120 нс и 150 нс), из-за него 12 МГц тактовой частоты процессора почти оказалось пределом. Так что данная доработка требует и замены всего ОЗУ, поэтому мне придётся выкинуть родное ОЗУ и заменить его на новое ОЗУ со временем доступа 55 нс (можно и 70 нс ставить смело), заодно расширив объём памяти.
    Т.е. дорабатывать ROM не нужно? Пока эксперименты с GS не ставил, т.к. занят более интересным звуковым девайсом. Ради интереса, все же попробую на Reverse установить другую частоту проца GS, можно до 100МГц (ограничение SRAM 10нс)

  10. #7
    Activist
    Регистрация
    06.01.2011
    Адрес
    г. Днепр, Украина
    Сообщений
    470
    Благодарностей: 218
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от vlad Посмотреть сообщение
    Т.е. дорабатывать ROM не нужно?
    Не нужно, т.к. частота прерываний остаётся 37.5 КГц. Доработка заключается в изменении коэффициента деления счётчиков, сами микросхемы счётчиков останутся родные. Делается это использованием входа "RESET" всего одного счётчика 1533ИЕ19 и новым элементом 1533ЛИ3.

    Но анализ схемы расширения ОЗУ в GS у меня вызвал огромное желание переделать и эту часть, но в этом случае придётся модернизировать прошивку. Дело в том, что по оригинальной схеме, при подключении платы расширения, одна из страниц основного ОЗУ размером 32 Кбайта перекрывается дополнительным ОЗУ, т.е. при расширении до 512 Кбайт, на самом деле доступно лишь 480 Кбайт, из них под МОДы доступно 464 Кбайт. Мне это очень не нравится. Это косяк на этапе разработки архитектуры памяти, и я хочу это переделать, но придётся покопать и прошивку.

    Впрочем, я пока что временно расширение ОЗУ сделаю на макетной плате, и пока этот косяк оставлю на месте, а позже переделаю. Всё-таки 512 Кбайт лучше, чем 480 Кбайт, или 1024 Кбайта лучше чем 992 Кбайт.

    Цитата Сообщение от vlad Посмотреть сообщение
    Пока эксперименты с GS не ставил, т.к. занят более интересным звуковым девайсом. Ради интереса, все же попробую на Reverse установить другую частоту проца GS, можно до 100МГц (ограничение SRAM 10нс)


    ---------- Post added at 17:48 ---------- Previous post was at 17:37 ----------

    Цитата Сообщение от psb Посмотреть сообщение
    вообще-то, после релупера (встроенного в прошивку 1.05а или встроенного в любой плеер) мод играет очень прилично, хотя и не идеально, согласен (изредка есть маленькие тормоза).
    Разгон GS + новая прошивка должны решить проблему тормозов окончательно. 16.5 МГц и 440 тактов за прерывание вместо 320, должно хватить на любые МОДы.

    Цитата Сообщение от psb Посмотреть сообщение
    но, опять же, хочу вас "обрадовать". эмулятор, в котором GS работает на 20 мгц, без релупера не тормозит так явно, но ясно слышны щелчки во время этих коротких сэмплов, т.е. скорость здесь не всё решает. а вот со включенным релупером уже все хорошо и не щелкает.
    Отлично, новую ПЗУ 27C256 я сегодня уже купил, и видимо не зря
    С уважением, Александр

  11. #8
    Master
    Регистрация
    04.12.2008
    Адрес
    г. Черкассы, Украина
    Сообщений
    753
    Благодарностей: 866
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Northwood Посмотреть сообщение
    Не нужно, т.к. частота прерываний остаётся 37.5 КГц. Доработка заключается в изменении коэффициента деления счётчиков, сами микросхемы счётчиков останутся родные. Делается это использованием входа "RESET" всего одного счётчика 1533ИЕ19 и новым элементом 1533ЛИ3.
    Мне еще проще, достаточно заменить коэффициент, сейчас он 320 (12MHz / 320 = 0.0375MHz = 37.5kHz)
    Длительность сигнала INT# тоже придется подкорректировать, т.к. она привязана к базовой частоте (длительность #INT = 32 такта)
    Думаю, что у Вас ROM успеет, если нет, то придется делать механизм теневого ОЗУ (32К) и управления частотой...

  12. #9
    Activist
    Регистрация
    06.01.2011
    Адрес
    г. Днепр, Украина
    Сообщений
    470
    Благодарностей: 218
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от vlad Посмотреть сообщение
    Мне еще проще, достаточно заменить коэффициент, сейчас он 320 (12MHz / 320 = 0.0375MHz = 37.5kHz)
    Длительность сигнала INT# тоже придется подкорректировать, т.к. она привязана к базовой частоте (длительность #INT = 32 такта)
    Думаю, что у Вас ROM успеет, если нет, то придется делать механизм теневого ОЗУ (32К) и управления частотой...
    Если делать по простому, то достаточно уменьшить ёмкость конденсатора. Если делать более сложный приём, то лучше всего сделать защёлку ИНТа на триггере 1533ТМ2, точно такую же, как я сделал для своего Пентагона-1024 1.4, т.е. чтобы сигнал ИНТ прекращался как только процессор выставит подтверждение приёма ИНТ на выходах IORQ и M1. И ничего больше делать будет не нужно.
    С уважением, Александр

  13. #10
    Guru Аватар для VNN_KCS
    Регистрация
    11.10.2007
    Адрес
    Донецкая обл. г.Енакиево
    Сообщений
    2,316
    Благодарностей: 755
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Попробовал на Спеке. В эмуле конечно. И ничего так звучат. Правда первая мелодия глюканула 1 раз на инструменте, звучащем как колокольчик. А вторая нормально.
    Сразу оговорюсь - это заслуга не моя, а Evgeny Muchkin. Он там какой-то релупер мне прислал и я его тут применил.
    з.ы. Правда индикаторы подтормаживают.
    И где ты такие треки классные черпаешь?
    Вложения Вложения
    • Тип файла: rar TEST.rar (90.9 Кб, Просмотров: 125)
    Pentevo - рулез

Страница 1 из 10 12345 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. General Sound
    от GM BIT в разделе Программирование
    Ответов: 13
    Последнее: 30.05.2011, 23:34
  2. Ответов: 245
    Последнее: 28.05.2011, 19:48
  3. Куплю General Sound
    от Sayman в разделе Барахолка (архив)
    Ответов: 17
    Последнее: 18.11.2009, 09:29
  4. General Sound
    от newart в разделе Звук
    Ответов: 133
    Последнее: 11.10.2006, 20:58
  5. Куплю General Sound
    от dhau в разделе Барахолка (архив)
    Ответов: 13
    Последнее: 02.03.2006, 10:32

Ваши права

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