Skip to content

Latest commit

 

History

History
116 lines (69 loc) · 11.5 KB

spu.md

File metadata and controls

116 lines (69 loc) · 11.5 KB

SPU

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

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

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

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

CXD2922BQ_package CXD2925Q

Микрофотография кристалла CXD2925Q (увеличение 4X), с размеченными доменами ячеек и юнитами:

Spu_annotated_regions

Технология: 3 слоя металла, стандартные ячейки и кастомные блоки (внутренняя память, регистры).

2 верхних слоя металла используются для разводки (Channel router). М1 используется для схемотехники стандартных ячеек и внутренних блоков.

Spu_metal_layers

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

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

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

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

SPU_overview

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

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

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

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

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

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

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

SPU_hardware

Картинка актуальна только для материнок 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). Схема из сервисного мануала:

SPU_new

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

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

ЦАП

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

AudioDAC

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-бит со знаком.