GPU
GPU (Graphics Processor Unit) рисует двухмерные примитивы в видеопамяти и выводит картинку на TV.
Дополнительно GPU занимается мастерингом видеосигнала (например управляет Color Burst), хотя непосредственно генерацию видеосигнала производит отдельная микросхема-ЦАП, на базе цифровых выходных сигналов RGB, идущих с GPU.
Управление GPU со стороны CPU осуществляется всего двумя IO-портами GP0 и GP1, а также DMA, для передачи дисплейных списков (display lists, DL).
GPU построен по такой же технологии, что и CPU (standard cells + custom blocks) :
- Старые версии материнок (PU-7 и старые PU-8) использовали 2 чипа GPU : 160pin CXD8514Q (IC203) и 64pin CXD2923AR (IC207). Одна из них занималась рисованием примитивов (более крупная 160-контактная), а вторая очевидно выводом картинки из видеопамяти на ТВ (64-контактная). Мануалов у нас нет, поэтому узнать точнее можно только по фотографиям материнской платы (отследить дорожки).
- Все остальные версии использовали 208pin версии GPU, индекс остался прежним - IC203.
PCB | PU-7 / older PU-8 | newer PU-8 | PU-18 | PU-20 | PU-22 | PU-23 | PM-41 | PM-41(2) |
---|---|---|---|---|---|---|---|---|
IC203 | ![]() |
![]() |
![]() |
??? | ![]() |
![]() |
![]() |
![]() |
CXD | 8514Q/2923AR | 8561Q | 8561BQ | ??? | 8561CQ | 8561CQ | 8561CQ | ??? |
Contents |
Аппаратный интерфейс (старый GPU 160-pin)
Cтарый GPU состоящий из двух чипов (CXD 8514Q/2923AR) работает следующим образом:
- Интерфейс между GPU и CPU не претерпел изменений в последующих версиях.
- Большая микросхема CXD 8514Q (160 контактов) занимается отрисовкой примитивов в специальную двух-портовую DRAM. Соответственно она также содержит DRAM Refresh логику. Картина немного усложняется тем, что VRAM поделена на два банка (2 микросхемы).
- Маленькая микросхема CXD 2923AR (64 контакта) занимается выборкой пикселей из VRAM и представляет собой RGB DAC. Однако выборка пикселей (установка адреса, режим цветности 15/24 bpp) происходит под управлением большой микросхемы. Для этого 2923AR имеет 4 специальных управляющих входа, функция которых пока неизвестна.
- Выходные значения RGB с CXD 2923AR, а также сигналы Subcarrier и Colorburst SYNC генерируемые CXD 8514Q подаются на RGB Encoder IC501, после чего видеосигнал уходит потребителю.
Аппаратный интерфейс (новый GPU 208-pin)
Картинка из сервисного мануала SCPH-9000 :
GPU соединяется с тремя узлами : с CPU (IC103), с видеопамятью SG-RAM (IC201) и с ЦАП.
Нужно отметить что в старых версиях ЦАП был реализован в виде двух микросхем (IC202 - Video DAC и IC501 - RGB Encoder), которые в последствии были объединены в одну (IC502).
Также видеопамять была объединена с GPU, но только в самых последних ревизиях PSOne (PM-41(2)), что удивительно количество контактов микросхемы осталось прежним - 208.
Тайминги
Особенность видеопамяти
ЦАП
Программная модель
Программирование GPU осуществляется с помощью библиотеки PsyQ: libgpu.
На самом деле эта библиотека является базовой для взаимодействия с GPU, в состав PsyQ также входит более продвинутая библиотека libgs, которую используют приложения. Но мы сконцентрируемся на базовом интерфейсе.
Базовыми структурами являются Display Environment (DISPENV) и Draw Environment (DRAWENV)
typedef struct { RECT clip; /* clip area */ short ofs[2]; /* drawing offset */ RECT tw; /* texture window */ u_short tpage; /* texture page */ u_char dtd; /* dither flag (0:off, 1:on) */ u_char dfe; /* flag to draw on display area (0:off 1:on) */ u_char isbg; /* enable to auto-clear */ u_char r0, g0, b0; /* initital background color */ DR_ENV dr_env; /* reserved */ } DRAWENV; typedef struct { RECT disp; /* display area */ RECT screen; /* display start point */ u_char isinter; /* interlace 0: off 1: on */ u_char isrgb24; /* RGB24 bit mode */ u_char pad0, pad1; /* reserved */ } DISPENV;
Взаимодействие между CPU и GPU происходит через два порта: GP0 (Data) и GP1 (Status). При этом CPU может отправлять данные в GP0 как напрямую, так и с помощью DMA.
|