AY-3-8910
AY-3-8910 — микросхема, являющаяся трёхканальным генератором звука (PSG, Programmable Sound Generator по терминологии производителя). Разработана фирмой General Instrument (нынешний Microchip), изначально предназначалась для использования с 16-разрядным процессором CP1610 (упрощенная версия CP1600) той же фирмы и с 8-разрядными микроконтроллерами серии PIC1650. AY-3-8910 и её варианты широко использовались во многих игровых автоматах, игровых приставках и домашних компьютерах. Помимо General Instrument, эта микросхема производилась по лицензии разработчика фирмами Microchip (в то время — сторонний производитель кристаллов), Micrel (под оригинальным названием) и другими (под различными названиями), а также фирмой Yamaha (под названием YM2149F, SSG — Software-controlled Sound Generator по терминологии производителя).
Одно из первых применений AY-3-8910 относится к 1980 году, в игровом автомате Carnival от Sega, а затем на платформе MSX. Совместимые с AY-3-8910 микросхемы применяются и в настоящее время. Их производство прекращено, однако сохранился запас ранее произведённых микросхем, и они продолжают продаваться, например, для ремонта старых компьютерных систем. Существует VHDL-реализация микросхемы, для применения в FPGA-репликациях игровых автоматов и других ретро-компьютерных систем. Исходный VHDL-код свободно доступен в сети Интернет, в скомпилированном виде он занимает около 10 процентов объёма Xilinx XC2S300 FPGA.
Считается, что AY-3-8910 имеет возможности генерации звука, аналогичные микросхеме Texas Instruments SN76489 (создана и продавалась в тот же период времени). Однако, хотя их общие характеристики похожи, эти микросхемы имеют достаточно различные возможности. Творческий подход к использованию AY-3-8910 позволяет получать гораздо более сложный звук, чем у SN76489, благодаря наличию в AY-3-8910 так называемой огибающей, которая может быть запрограммирована на нестандартную (звуковую) частоту.
Известность в России
В России микросхема AY-3-8910 получила известность благодаря её применению в компьютере ZX Spectrum 128 и, соответственно, в его многочисленных клонах. За время популярности ZX Spectrum в России существовало более тысячи людей, писавших музыку для AY-3-8910. Всего для чипа было написано более 25 000 композиций.[1] Эта микросхема создала среди российских компьютерных музыкантов начала 1990-х годов свою субкультуру, аналогичную созданной микросхемой SID компьютера Commodore 64 в других странах. В настоящее время осталось некоторое количество энтузиастов, продолжающих писать музыку для AY-3-8910. В рамках различных фестивалей компьютерного искусства, таких, как Chaos Constructions, DiHalt, ASCiI, ArtField, и др. присутствуют и соревнования по написанию музыки для этой микросхемы.
Радиолюбители подключали AY-3-8910 ко многим отечественным бытовым компьютерам, в частности, к Вектор-06Ц, Орион-128, БК-0011 и IBM PC, а также к телефонам с определителем номера Русь «Соната».
Описание
AY-3-8910 имеет следующие возможности:
- Три программируемых генератора треугольных импульсов (тона), без возможности изменения скважности сигнала
- Один программируемый генератор псевдо шума с периодичностью 16 кб (128 кбит)
- Один генератор огибающей, производящей амплитудную модуляцию тона, шума, либо их смеси, а также звучащий сам по себе при выборе звуковой частоты
- Логический микшер (смешивает выход генераторов шума и огибающей с одним или несколькими каналами тона)
- Раздельные выходы звука трёх каналов тона (могут быть смешаны как в монофонический, так и в стереофонический сигнал)
- Два порта ввода-вывода общего назначения
- Программируемое усиление [2]>
AY-3-8910 представляет собой конечный автомат, состояние которого задаётся с помощью шестнадцати 8-разрядных регистров. Они программируются через 8-разрядную внешнюю шину, использующуюся как для передачи данных, так и для задания адреса регистра — режим переключается сменой уровня на специальном выводе микросхемы. Типичный цикл передачи значения: шина переключается в режим задания адреса, передаётся адрес, шина переключается в режим передачи данных, передаются данные. Эта шина изначально была реализована на собственных процессорах GI, но ее пришлось воссоздавать с помощью логики или дополнительного интерфейсного адаптера, такого как MOS Technology 6522, однако чип использовался с гораздо более распространенной технологией MOS 6502 или Zilog Z80
Шесть регистров R0..R5 управляют частотой звука, генерируемой тремя основными каналами, с помощью задания значения делителя входной тактовой частоты. Делитель хранится в двух 8-разрядных регистрах для каждого из каналов, однако реальная разрядность счётчика-делителя — 12 разрядов, что даёт 4095 вариантов значения частоты звука (0 и 1 эквивалентны).
Регистр R6 задаёт 5-разрядное значение периода для псевдослучайного генератора шума.
Регистр R7 представляет собой логический микшер, содержащий по два бита для каждого канала, в зависимости от которых к каналам подмешивается сигнал генератора шума, либо генератор огибающей. Также в регистре R7 находятся два бита управления портами ввода-вывода общего назначения.
Три регистра R8..R10 управляют громкостью трёх основных каналов (16 уровней), а также имеют бит разрешения использования огибающей.
Три регистра R11..R13 управляют частотой (два регистра, 16-разрядное значение) и формой (один регистр, 16 вариантов) сигнала генератора ADSR-подобной огибающей. В отличие от большинства систем, 8910 использует фиксированные значения времени для фаз плато и затухания, и повторяющуюся последовательность фаз атаки и спада. Для примера, генератор может постоянно повторять цикл атаки-спада, или наоборот, начиная с максимального уровня, постепенно понижая его, без фазы атаки.
Регистры R14 и R15 управляют состоянием входных-выходных линий портов ввода-вывода общего назначения.
Варианты исполнения
Оригинальный кристалл 8910 имел три варианта исполнения.
AY-3-8910 имела два параллельных восьмиразрядных порта ввода-вывода общего назначения — A и B. Выполнена в 40-выводном корпусе (DIP40).
AY-3-8912 выполнена в 28-выводном корпусе (DIP28). Сигналы порта B не подводятся ко внешним выводам. Такое исполнение снижало стоимость микросхемы и её габариты, что сделало это исполнение наиболее популярным.
AY-3-8913 выполнена в 24-выводном корпусе (DIP24). Сигналы портов A и B не выведены наружу. По сравнению с 8912, габариты уменьшились несущественно, а функциональность снизилась, поэтому это исполнение получило наименьшее распространение.
Назначение выводов микросхемы YM2149F соответствует AY-3-8910, за исключением вывода 26, который включает внутренний делитель входной частоты вдвое, если на него подан низкий уровень. Если этот вывод никуда не подключён, микросхема работает так же, как AY-3-8910. Помимо встроенного делителя входной частоты, YM2149 имеет отличие в разрядности ЦАП огибающей — 5 бит вместо 4 (с логарифмической шкалой). Также для тона используются только нижние (тихие) 4 бита. Это создаёт отличие в тембре звучания огибающей, делая его более ярким, однако позволяющим получить бо́льшую гибкость баса.
YMZ284-D выполнена в 16-выводном корпусе (DIP16). YMZ284-M выполнена в 16-выводном корпусе (SOIC16). Функционально и программно полностью совместим с AY-3-8910, AY-3-8912 и AY-3-8913. Отличительная особенность — малое количество выводов, упрощенный интерфейс, моно аудиовыход.
Microchip AY38910A выполнена в 40-выводном корпусе (DIP40). Полностью совместима с YAMAHA YM2149f.
Microchip AY8930. Совместим с Microchip AY38910A. Может быть переключен в расширенный режим: не 4 а 8-битный тональный период, не 5 а 8-битный шумовой период, шум генерируется не жёстким LFSR-механизмом, а с дополнительными программируемыми AND и OR масками.
Микросхемы Winbond WF19054, China JFC95101, WB5300 и Jile KC89C72 также являются клонами AY-3-8910.
Творческое использование
Хотя микросхема не имеет специальных возможностей для проигрывания оцифрованных звуков, оно может быть реализовано программно, с помощью использования 4-разрядного ЦАП одного или нескольких каналов при запрещённой логическим микшером генерации тона и шума. Такой подход требует большего использования времени процессора, чем при использовании микросхем, специально созданных для воспроизведения цифрового звука (таких, как чип Paula в компьютере Commodore Amiga). Но, тем не менее, он широко использовался на таких платформах, как компьютер Atari ST, для воспроизведения цифровой музыки, и на Amstrad CPC для воспроизведения коротких звуковых эффектов в некоторых играх.
Используя ту же технику, но не отключая генерацию тона, возможно расширить возможности генерации различных тембров. В этом случае изменение выходного уровня ЦАП канала используется для модуляции основного тона другой частотой. Таким образом можно получить, например, три независимых амплитудных огибающих любой формы, или тембры, напоминающее звучание микросхемы SID. Для эффективной реализации этого способа требуется наличие в системе возможности прерывания работы процессора с достаточно высокой частотой — например, на компьютере Atari SТ, где эта техника использовалась наиболее активно, применялось прерывание по началу строки растра. На системах, где таких аппаратных возможностей нет, для реализации подобного эффекта потребуется почти всё время процессора. Существует демонстрационная программа Digisid, реализующая эффект на компьютере ZX Spectrum, который не имеет аппаратных возможностей, подобных Atari ST.
В 2006 году два разработчика программ для компьютера MSX создали продвинутый энкодер, преобразующий wave-файлы в наиболее подходящие данные для каналов AY, используя алгоритм поиска Витерби. Это позволило воспроизводить wave-файл с частотой дискретизации 44100 Герц на компьютере MSX двадцатитрёхлетней давности, с соотношением сигнал-шум выше чем у 8-разрядного ЦАП. Алгоритм Витерби очень ресурсоёмок, он не мог применяться в 80-х годах, так как в то время не существовало достаточно мощных компьютеров для выполнения такого преобразования.
Некоторые люди, в особенности пользователи компьютера ZX Spectrum, используют микросхему AY для создания музыки, в том числе и для концертных выступлений.
Список систем
Неполный список систем, в которых использовалась 8910 или её варианты. Не включает различные игровые автоматы, количество которых превышает тысячу.
Игровые приставки:
- Amstrad GX4000 (на основе Amstrad CPC)
- Mattel Intellivision
- Vectrex
- Zemmix (на основе MSX)
Домашние компьютеры. Многие из них имеют множество моделей от разных производителей:
- Apple II (в виде отдельной звуковой карты)
- Atari ST
- Atari Falcon
- Amstrad CPC
- FM-7 (Fujitsu Micro-7)
- Galaksija Plus
- Mattel Aquarius (в составе модуля расширения «Mini Expander»)
- Компьютеры стандарта MSX
- PC 6001
- Правец-8Д
- Spectravideo
- Tatung Einstein
- ZX Spectrum и его клоны
Музыкальные редакторы
Для компьютеров, в которых применялась микросхема AY-3-8910, было создано большое количество музыкальных редакторов, использующих её возможности генерации звука. Большинство из них имело интерфейс трекера. Часто они имели большое внешнее сходство с первыми трекерами, появившимися на компьютере Amiga — например, The Ultimate Soundtracker (1987), NoiseTracker (1989), ProTracker (1991). Также, в качестве названий подобных программ использовались похожие или полностью совпадающие названия. По этой причине названия разных программ от разных авторов на разных платформах, и даже в пределах одной платформы, также часто совпадали.
Ниже приводится неполный список музыкальных редакторов для AY-3-8910. Он не включает редакторы, ориентированные на применение семплов (редакторы так называемой digital музыки). Некоторые из редакторов выходили только в демонстрационных версиях. В список включены только те демонстрационные версии, которые имели основную функциональность, то есть позволяли редактировать музыку.
- Amstrad CPC:
- Atari ST/STE:
- Medi (1988)
- Edsynth (1989)
- Music maker (1989)
- Blipp Blopper (1991)
- CLS Soundchip Editor (1991)
- Musicmon (1991)
- Chipmon II (1992)
- S.O.T.E. Tracker (1993)
- Xlr8 (1993)
- YM Tracker (1993)
- Sid Sound Designer (1994)
- Magic Synth (1997)
- Sound Chip Synth (1999)
- maxYMiser DMA (2005)
- Triplex 2k4 (2005)
- MusicMon (2006)
- Insignia Trisound Sequencer
- Megatizer
- Music-Editor
- MV2000
- PSG Tracker
- Xbios Music Construction
- MSX:
- PSG Tracker (1992)
- Karoshi’s Caruso (2005)
- ZX Spectrum:
- WHAM 128 (1986) — не путать с Beeper версией редактора известного как Mark Time Music Box
- A.Y. Tracker (1992)
- Sound Tracker (1992)
- Advanced Sound Master (1992)
- SQ-Tracker (1993, существует также одноимённый digital редактор 1997 года)
- Super Sonic (1993)
- Cacofony Pro System (1995)
- Pro Sound Maker (1995)
- Pro Tracker 1.x (1995)
- Pro Tracker 2.x (1995)
- Sound Tracker Pro (1996)
- Fast Tracker (1997)
- Pro Tracker 3.x (1997)
- Global Tracker (1998)
- Pro Sound Creator (1999)
- Minimal Tracker (2000)
- Turbo Sound Editor (2005, для устройства Turbo Sound)
- Sound Tracker 3.x
- БК0011М:
- Rock Monitor
Помимо музыкальных редакторов существуют более узкоспециализированные программы, предназначенные для создания звуковых эффектов (например, для использования в играх).
- IBM PC (кросс-редакторы с эмуляцией AY):
- AYFX Editor (2006)
- MSX:
- Sound Effect Editor (1991)
- ZX Spectrum:
- Sound FX (1995)
- Sample Studio (1998)
- Cyberax Sound Editor (1999)
Дальнейшее развитие
Фирма Yamaha использовала ядро YM2149F в целом семействе музыкальных микросхем, которые использовались в мобильных телефонах, видеоиграх, и т. п. Например, микросхема YM2203 (также известна как OPN), помимо собственного синтезатора на основе частотной модуляции (FM), содержит полноценный аналог YM2149F, полностью совместимый по номерам и назначению регистров (однако, следующая в серии микросхема, YM2612, содержит только FM-часть 2203).
Во многих компьютерах стандарта MSX2 и в некоторых компьютерах MSX1 используются специализированные БИС «чипсета» разных фирм. Это, например, микросхемы Yamaha S1985, S3527, Toshiba T7775, T7937, T9769. Помимо большой части схемы компьютера, они также содержат в своём составе полноценный аналог YM2149F.
Фирма Philips разработала микросхему SAA1099 (применялась в компьютере SAM Coupé и в первых звуковых картах Creative Labs для IBM PC). Её возможности аналогичны двум AY-3-8910 (6 каналов, 2 огибающих, 2 генератора шума), с некоторыми дополнениями. Однако, программная и аппаратная совместимость отсутствует.
Эмуляция
Помимо реализации эмуляции микросхемы в эмуляторах различных систем, использующих её, существуют отдельные эмуляторы микросхемы. Они позволяют воспроизводить музыку, написанную для различных систем и сохранённую в их специальных форматах, на обычном PC. Как и в случае с другими подобными микросхемами звукогенераторов, программная эмуляция имеет некоторые отличия в звуке по сравнению с реальной микросхемой, причём возможно даже отличие в лучшую сторону (более чистое звучание, без искажений, делающее звук несколько непохожим на оригинальный). Если в случае с другими, более сложными микросхемами, эти различия возникают из-за неточности эмуляции логики работы микросхем, то в случае с AY-3-8910 и совместимыми микросхемами все тонкости и различия их работы полностью изучены, и основным источником различий становится проблема передискретизации (ресемплинга) сигнала (микросхема позволяет генерировать звук с частотами до нескольких сотен килогерц).
Примечания
- Статистика коллекции ZX TUNES
- [chrome-extension://oemmndcbldboiebfnladdacbdfmadadm/http://map.grauw.nl/resources/sound/generalinstrument_ay-3-8910.pdf datasheet] .
Ссылки
- Оригинальная документация на AY-3-8910 AY-3-8912 AY-3-8913 Архивная копия от 5 января 2004 на Wayback Machine
- ZX TUNES — онлайн коллекция музыки для ZX Spectrum (AY-3-8910)]
- Эмулятор AY Emulator для Win32; большой архив отечественной музыки с платформы ZX Spectrum, музыкальный редактор с эмуляцией AY для win32;
- Музыка для микросхемы AY (англ.)
- ST SOUND, статья про AY-38910
- ymVST — VST-плагин, имитирующий YM2149F — сделан с помощью VST мэйкера, на WAV семплах — звук мало похожий на оригинал.
- Несколько VHDL-реализаций игровых автоматов в FPGA
- Документация на компьютер Amstrad CPC, включает документацию на AY
- Группа AY Riders, исполняющая музыку с использованием микросхемы AY
- Пример оцифрованного звука, воспроизводимого на Philips VG-8020 и демонстрирующего работу Viterbi энкодера
- Habr от 09.04.2014. Звук на чипе AY-3-8910 (или Yamaha YM2149F) родом с ZX Spectrum на PC через LPT-порт