YM2149

Программно управляемый генератор звука (SSG)

Обзор

  SSG - (Software controlled Sound Generator) это большая интегральная микросхема, выполненная по технологии NMOS и разработанная для генерации звуков. От микропроцессора и микроконтроллера (CPU) требуется только инициализация массива регистров, что уменьшает загрузку CPU. Генерация звука производиться тремя генераторами прямоугольных волн, генератором шума и генератором огибающей.

Характеристики

  • Одно напряжение питания 5 вольт.
  • Лёгкое сопряжение с 8 и 16 битными процессорами.
  • Лёгкое сопряжение с внешней системой через два восьмибитных порта ввода-вывода.
  • Широкий диапазон голосов в восемь октав.
  • Плавное затухание на 5 битном генераторе огибающей.
  • Встроенный 5 битный цифро-аналоговый преобразователь.
  • Удвоенная частота, поданная на тактовый вход, может быть поделена встроенным делителем.
  • TTL совместимые уровни сигналов.
  • Низкое потребление (125 мвт).
  • 40 штырьковый пластмассовый DIL корпус.
  • Совместимость по ножкам с AY-3-8910 производства General Instruments.

    Распиновка
    Распиновка

    Блок схема
    Блок схема


    Описание выводов
  • DA7~DA0

      Восьмибитная двунаправленная шина данных, используется для передачи данных и адресов между SSG и CPU. В режимах чтения и записи DA7~DA0 обмениваются байтами с массивом регистров R7~R0. В адресном режиме DA3~DA0 адресует регистры, а DA7~DA4 используются вместе с |A9 и A8 для старших адресов.

  • A8 и |A9

      Линии старших адресов. A8 подтянут резистором к высокому потенциалу, а |A9 к низкому. Если эти выводы не используются, необходимо подать на A8 +5 вольт, на |A9 - общий.

  • |RESET

      Активный уровень напряжения - низкий. Устанавливает содержимое всех регистров в "0". Этот вывод подтянут резистором к высокому потенциалу.

  • CLOCK

      Вход тактовых импульсов на генераторы звука и огибающей. Оснащён делителем частоты с коэффициентом деления 2, который позволяет использовать для тактирования частоту в два раза меньшую, чем та, что подается на вход.

  • |SEL

      Когда на |SEL подан высокий уровень, входная частота принимается как есть. При низком уровне на |SEL, тактовая частота получается делением на два входящей частоты. Этот вывод подтянут резистором к высокому потенциалу для сохранения совместимости по выводам с AY-3-8910 производства General Instruments, когда этот вывод ни к чему не подключен.

  • BDIR, BC1, BC2

      Управляют внешней (DA7~DA0) и внутренней шиной SSG. Контроллер шины может находиться в одном из четырёх состояний. Управление избыточно и BC2 может быть подключен к +5V.
    Дешифрация BDIR, BC1, BC2.
    BDIRBC2BC1Режим
    000Неактивный
    001Адресный
    010Неактивный
    011Чтение
    100Адресный
    101Неактивный
    110Запись
    111Адресный

    Неактивный режим: DA7~DA0 в высокоимпедансном состоянии.
    Адресный режим: с DA7~DA0 снимается адрес (номер) регистра и устанавливается как текущий.
    Режим записи: данные с DA7~DA0 записываются в текущий регистр.
    Режим чтения: содержимое текущего регистра выводится на DA7~DA0.

  • ANALOG CHANNEL A, B, C

      Каждый канал имеет цифро-аналоговый преобразователь, преобразующий цифровые величины в аналоговые сигналы.

  • IOA7~IOA0, IOB7~IOB0

      Это два восьмибитных порта ввода/вывода. Наличие портов позволяет поместить SSG между внешней системой и центральным процессором для передачи данных. Выводы подтянуты резисторами к высокому потенциалу.

  • TEST1
    Вывод для тестирования устройства. Никуда не подключен.
  • Vcc
    Вывод питания +5V.
  • Vss
    Вывод земли.
  • Расшифровка функций

     Все функции SSG контролируются 16 внутренними регистрами. Центральный процессор должен только записывать данные в эти регистры, а SSG самостоятельно генерирует звук. Генерация звука производиться следующими модулями:

  • Генератор тона (Music generator): генерирует квадратные колебания различной частоты отдельно для каждого канала (A, B и C).
  • Генератор шума (Noise generator): генерирует псевдослучайный сигнал переменной частоты.
  • Смеситель (Mixer): смешивает выходы тона и шума раздельно по трем каналам (A, B и C).
  • Регулятор громкости (Level control): задает постоянный или переменный уровень громкости для каждого из трех каналов (A, B и C). Постоянный уровень устанавливается центральным процессором, а переменный - генератором огибающей.
  • Генератор огибающей (Envelope generator): формирует различные типы затухания (единичное и повторяющиеся затухания).
  • Цифро-аналоговый преобразователь (D/A convertor): звук формируется изменением уровня сигнала на каждом из трех каналов (A, B и C).

    Центральный процессор может читать содержимое внутренних регистров, не внося изменений в генерируемый звук.

    Массив регистров

    Массив регистров

      В десяти битном адресе младшие адреса DA3~DA0 используются для выбора 16 внутренних регистров из массива регистров. Старшие адреса |A9, A8 и DA7~DA4 используются для выбора кристалла. В случае, когда на них присутствует комбинация отличная от 010000b двунаправленные буферы переводятся в высокоимпедансное состояние.

    Структура массива регистров (номера регистров представлены в шестнадцатиричной системе).

    Структура массива регистров


  • Частота тона (задается регистрами R0~R5)

      Частота прямоугольных импульсов производимых генераторами тона трех каналов (A, B и C) задается регистрами с R0 по R5. R0 и R1 управляют каналом A, R2 и R3 используются для канала B, R4 и R5 для канала C. Частота колебаний осциллятора fT получается следующим образом из значения регистра TP:

    fT = fMaster/(16 TP),
    где fMaster - тактовая частота, равная входящей частоте при высоком уровне на |SEL и 1/2 входящей частоты при низком уровне.

  • Структура регистров, задающих частоту тона

  • Частота шума (задается регистром R6)

      Частота шума fN определяется регистром NP по следующей формуле:

    fN = fMaster/(16 NP).
    Структура регистра R6, задающего частоту шума

  • Установки смесителя и портов ввода/вывода (задается регистром R7)

      Смеситель используется для комбинирования компонентов тона и шума. Различные комбинации определяются битами B5~B0 регистра R7. Звук выводиться, когда в регистре содержится "0". Таким образом, когда биты соответствующие тону и шуму установлены в "0" смеситель смешивает их на выходе. Когда шуму соответствует "0" и тону "1", выводиться только шум и наоборот. Если все биты, отвечающие за тон и шум, установлены в "1" звук не воспроизводиться. Выбор режима портов ввода/вывода определяется битами B7 и B6 регистра R7. Порт настраиваются на ввод когда в соответствующий бит, записан "0", иначе на вывод.

    Структура регистра R6, задающего частоту шума

  • Уровень громкости (задается регистром R8~RA)

      Громкость звука на выходе ЦАП для трех каналов (A, B и C) регулируется регистрами R8, R9 и RA.

    Структура регистров управления уровнем громкости

    Режим M определяет, будет ли уровень громкости фиксированый (при M="0") или переменным (при M="1"). Когда M="0", уровень громкости устанавливается в одно из 16 значений и определяется битами L3, L2, L1 и L0. Когда M="1" уровень громкости определяется пятью битами E4, E3, E2, E1 и E0 генератора огибающей.

  • Частота огибающей (задается регистрами RB и RC)

      Частота повторения огибающей fE определяется периодом огибающей EP:

    fE = fMaster/(256 EP).

    Структура регистров управления периодом огибающей

    Фактический период огибающей 1/fEA есть 1/32 периода 1/fE (На сколько я понимаю, fEA используется для формирования огибающей посредством пятиразрядного ЦАП, следовательно плавное возрастание/убывание сигнала происходит за 1/fE, т. е. за 32 такта fEA. В [1] информация по звуковому генератору вообще скудная и неверная, что, кстати, привело к ошибке в процедуре выключения звука "музыкального звонка", а в [2] по этому поводу сказано следующее: "Генератор формы огибающей путем деления частоты огибающей на 16 образует и выдает на регулятор амплитуды форму огибающей, представленную шестнадцатью фиксированными уровнями напряжений на один цикл, закодированными в четырехразрядном выходном счетчике", что также противоречит данному документу - примечание переводчика).

  • Форма огибающей (задается регистром RD)

      Счетчик генератора огибающей синхронизируется частотой огибающей fEA 32 раза за период огибающей. Уровень огибающей определяется пятью битами (E4~E0) счётчика огибающей. Форма огибающей создается увеличением, уменьшением, высоким или низким уровнем и повторением этого счетчика. Форма огибающей управляется битами B3~B0 регистра RD (Вероятно под "счетчиком" понимается пяти разрядный счетчик входящий в генератор огибающей, который управляет ЦАПом и могущий работать как на возрастание так и на убывание в зависимости от установок регистра RD. Тактируется он частотой fEA и переполняется за время 1/fE - примечание переводчика).

    Структура регистра RD управления формой огибающей

    В зависимости от сигналов CONT, ATT, ALT и HOLD огибающая может принимать формы, представленные в следующей таблице.

  • Варианты формы огибающей

  • Данные портов ввода/вывода (регистры RE и RF)

      Регистры RE и RF используются для хранения содержимого портов ввода/вывода. RE отождествлен с IOA и RF с IOB.

  • ЦАП

      ЦАП устройства имеет логарифмическую шкалу 0 - 1В, т. е. фактически регулирует громкость звука, что обеспечивает широкий динамический диапазон выходного сигнала.

    Электрические характеристики

  • Максимально допустимые значения параметров

    ПараметрДиапазонЕденица измерения
    Напряжение на выводах

    Диапазон рабочих температур

    Температура хранения
    -0,3 ~ +7,0

    0 ~ 70

    -50 ~ 125
    Вольт

    °C

    °C
  • Рекомендуемые значения параметров

    ПараметрСимвол обозначенияМин.Ср.Макс.Еденица измерения
    Напряжение питания Vcc

    Vss
    4,75

    0
    5

    0
    5,25

    0
    Вольт

    Вольт

  • Продолжение не последует. Это конец.