SPU

From PSXDEV
Jump to: navigation, search

SPU (Sound Processing Unit) воспроизводит звук. SPU использует специальный формат ADPCM-компресии, для хранения звуковых данных (похожий на формат XA-ADPCM).

Звуковая система PSX представляет собой связку CD-ROM декодера (в который входят CD-контроллер, CD DSP и SUB-CPU), непосредственно SPU и выходного ЦАП.

Аппаратная реализация всех частей звуковой системы менялась в разных версиях материнских плат.

Тут мы будем рассматривать непосредственно SPU, когда он был реализован в виде отдельной микросхемы IC308 (CXD2922Q/CXD2925Q).

200px 200px

К сожалению, никаких микрофотографий кристалла или даташита пока нет.

Contents

Функциональные особенности SPU

SPU содержит 24 звуковых канала (voice). Источником звука являются данные из памяти SPU (512 KB), в формате ADPCM. Есть возможность вместо ADPCM подавать на вход шум (noise) с подстраиваемой частотой.

Над ADPCM можно делать тональную модуляцию (pitch), над шумом нельзя. Примером эффекта pitch является изменение тональности голоса, после вдыхания гелия :)

Затем входные данные подаются на генератор ADSR-огибающей и далее на общий микшер.

SPU overview.jpg

Как видно к звуку 24 каналов дополнительно подмешивается звук с CD-ROM.

Есть возможность добавить эффекты реверберации (эхо и пр.).

Громкость регулируется для : звуковых каналов (отдельно для L/R), входных данных с CD-ROM, реверберации, а также есть общий регулятор громкости.

Обмен данными между памятью SPU и CPU RAM происходит посредством DMA, при этом работа SPU (звучание) не прерывается.

Выходной цифровой звук подается на ЦАП.

Аппаратная реализация

Ниже приведена картинка из сервисного мануала с выводами SPU и соединением его с памятью SPU и другими устройствами:

SPU hardware.jpg

Картинка актуальна только для материнок PU-18 и ниже, так как в более новых поменялась компоновка микросхем.

Описание контактов :

  • Слева находятся контакты для подачи потоковых аудио данных с CD-ROM контроллера : DTIA, LRIA, BCIA.
  • Выходной цифровой звук (в последовательной форме) через контакты DATO, LRCO, BCKO подается на ЦАП. На ЦАП также подается тактовая частота XCK.
  • Дополнительно на вход SPU может быть подмешано потоковое аудио с параллельного порта (PIO), через контакт DTIB. При этом частота сэмплирования такая же, как и у выходного звука. При этом BCIB почему-то заведен на землю, а LRIB идёт на контакт CD-DSP LRCK.
  • Ниже находятся контакты для работы с памятью SPU: XOE0 (включить обмен), XWE0 (write enable), MA (адресная шина, используется только 9 бит), MD (шина данных, 16 бит), XCAS/XRAS для рефреша DRAM. Заметим, что есть также XWE1 и XOE1, возможно для дополнительной памяти SPU. Особенность памяти SPU в том, что обмен происходит 16-разрядными словами (16-битная память). Поэтому выходной адрес с контактов SPU умножается на 2 (выходной контакт D0 заведён на контакт памяти D1 и так далее) и получается "индекс" ячейки памяти.
  • Главный тактовый сигнал для подсистемы PSX : SYSCK
  • Тестовые сигналы TEST и TES2
  • Сигнал сброса XRST заведен через конденсаторы на VSS, чтобы обеспечить время для сброса после включения питания
  • Интерфейс для взаимодействия с CPU : HD (host data, шина данных, 16 бит), HA (host address, шина адреса, 9 бит), XCS (выбор чипа), XRD/XWR (read/write), DACK/DREQ (DMA acknowledge/request), XIRQ (прерывание SPU). Обмен по внешней шине также происходит 16-разрядными словами, с умножением адреса на 2.
  • Cигнал MUTE (?)

Сокращения : BC,BCK - bit clock, LR,LRC - left/right clock, DAT,DT - data. Что всё это значит? Эти три сигнала представляют собой последовательный интерфейс для передачи стереозвука: bit clock - это тактовая частота, по которой передаются данные (data). LRC - это частота, которая разделяет пачку бит на левый и правый каналы. Когда LRC=1 - на вход подаются биты для левого канала, когда LRC=0 соответственно для правого.

Сигналы, названия которых начинаются с "X", имеют инверсную логику (active low).

Память SPU

Как уже говорилось, особенностью памяти SPU является её 16-разрядная "слотовость". Поэтому вместо термина "адрес", тут лучше применять термин "индекс".

Объем памяти - 512 KB.

Память SPU используется для хранения ADPCM-семплов для воспроизведения и таблиц для эффектов реверберации.

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

Карта памяти SPU:

00000h-003FFh  CD Audio left  (1Kbyte) ;\CD Audio after Volume processing
00400h-007FFh  CD Audio right (1Kbyte) ;/signed 16bit samples at 44.1kHz
00800h-00BFFh  Voice 1 mono   (1Kbyte) ;\Voice 1 and 3 after ADSR processing
00C00h-00FFFh  Voice 3 mono   (1Kbyte) ;/signed 16bit samples at 44.1kHz
01000h-xxxxxh  ADPCM Samples  (first 16bytes usually contain a Sine wave)
xxxxxh-7FFFFh  Reverb work area

Складируются только входные данные с CD и каналы 1 и 3 (почему именно 1 и 3 - так решили инженеры Sony :))

Обмен данными между памятью SPU и памятью CPU происходит через DMA, параллельно воспроизведению звука.

Что изменилось в новых версиях материнок

Изменение CD/Audio системы произошло в материнках начиная серии SCPH-7500 (PU-22). Схема из сервисного мануала:

1000px

SPU теперь стал входить в состав большой микросхемы с индексом IC732, в виде Audio DSP. Наиболее заметные изменения :

  • Они зачем-то добавили на картинку интерфейс с SUB-CPU, пока непонятно зачем. Возможно более новые версии SUB-CPU содержат новую версию ROM, которая управляет работой Audio DSP. А может чтобы показать, что CD-контроллер управляется центральным процессором через Host interface, который передает управление далее по цепочке, в SUB-CPU interface.
  • ЦАП теперь стал входить в состав микросхемы. По этой причине старые версии PSX больше ценятся аудиофилами, из-за больших возможностей моддинга. Во времена когда SPU был в виде отдельной микросхемы выход (в виде последовательных данных) подавался на ЦАП производства Asahi Kasei.

ЦАП

ЦАП выглядит следующим образом :

600px

Datasheet доступен : Datasheet

На вход поступают 1-bit последовательные данные от SPU (LRCK, BICK, SDATA), внутри ЦАП содержится много интерполяторов и прочих непонятных девайсов, в результате на выходе мы получаем перфектный аналоговый стерео-сигнал (AOUTL, AOUTR).

Как и у любого ЦАП тут используются 2 цепи питания - цифровая (DVDD,DVSS) и аналоговая (AVDD,AVSS). Напряжения VREFL и VREFH задают соответственно нижнюю и верхнюю границу напряжения аналогового сигнала (обычно VREFH=AVDD, VREFL=AVSS).

Выходной контакт DZF устанавливается если на входе слишком долго не было никакого звука (SDATA=0), сбрасывается автоматически.

Формат сэмплов - 16-бит со знаком.