Графический контроллер

Схемы:

* Альбом схем лист 8
* Альбом схем лист 9
* Альбом схем лист 10

Параметры:

* Разрешение 512х256
* Цвета 3 бита + LUT TODO
* Объем 192К = 16К \* три бита \* четыре страницы

## ГЗУ

* ГЗУ это три плоскости по 64К
* каждые 64К это четыре страницы по 16К
* одновременно есть доступ только к одной странице 16К одной плоскости
* отображаться может любая страница, не только выбранная для доступа

## Отображение

Пример для плоскости 2 (лист 11)

- ОЗУ выбирает адрес по линиям MA0…MA6 (дешифратор, лист 5) и GMA7 (MUX КП12 D42 10.11), -RAS и -CAS2
- сигнал
- если ACCESS=0, по положительному фронту -CAS регистр ИР27 D128 (11.7) защелкивает байт с выходов ГЗУ РУ5Г GD20…GD27
- по GCLK загружает, а по -GLOAD сдвигает на выход ИР10 D129 (11.10) - SERVG2

TODO регистр цвета

Путь -CAS2: регистр цвета К555ИР27 D100 (8.1)—(WR2, -CAS)->MUX D118(8.9)—(CAS2)->ГЗУ#2 РУ5Г
Запись в регистр цвета 0xBF: низкие -SELREG и A6 на ЛЛ1 дают сигнал на D100.11 (C)
Линия адреса регистра записи А6: все восемь младших адресных линий, кроме шестой, должны иметь высокий уровень, а шестая - низкий
D118 управляется ИЛИ D99 8.2: сигнал M и сигнал с D42 (10.11) формирует SE1 D118

Алгоритм:
- если бит 7 регистра цвета==1, то адресованы все три плоскости (низкие -CAS0, -CAS1, -CAS2) - цветовой режим
- если -ACCESS высокий, то VRP0 будет CAS, а VRP1 RAS
- если -ACCESS низкий, то VWP0 будет CAS, а VWP1 RAS
- сигналы -GWE0…-GWE7 (выбор м/сх РУ5Г ГЗУ) формируются из байта для записи в ГЗУ и сигнала -WEG - это и есть запись по маске

Цветовой режим:
- если сигнал M высокий, в плоскость 0 записывается бит 1 регистра цвета (WR0), пл.1 - бит 2 и пл.2 - бит 3 (WR2)

Послойный режим:
- биты 1,2,3 регистра цвета выбирают память (сигналы GWD1, GWD2, GWD3 с м/сх D86 лист 3)
- при записи во все плоскости ГЗУ поступает бит 0 регистра цвета

Регистр управления D17 (13.35):
- бит 0,1 страница для отображения
- бит 6,7 страница для чтения/записи

## Чтение ГЗУ

При чтении ГЗУ данные с трех плоскостей поступают на входы ПЛМ РТ4 D88 (8.19) и D101 (8.20):
- GD00…GD07
- GD10…GD17
- GD20…GD27
- R0, R1, R2, M регистра цвета

На выходе ПЛМ - сигналы GRD0…GRD7, которые защелкиваются в регистре D87 (8.36) высокими сигналами WERG и -RG ("чтение ГЗУ").

### Прошивки ПЛМ

Обе ПЛМ имеют одинаковую прошивку и одинаковую обработку всех разрядов ГЗУ. Прошивка:

```

```

Их задача - интерпретировать данные с учетом текущего цветового режима:

GRD0 = M\*R0\*GD00 + M\*R0\*GD00
 + M\*R1\*GD10 + M\*R1\*GD10 +

```
    + M*R2*GD20 + M*R2*GD20 +
    + M*R0*GD00 + M*R1*CD10 + M*R2*GD20

```

Послойный режим (M==0)
++++++++++++++++++++++

Если M==0, то многие члены обнуляются и многочлен сокращается:

GRD0 = R0\*GD00 + R1\*GD10 + R2\*CD20, где

 GRD0 бит0 на шине данных при чтении из ГЗУ
 R0 бит 4 регистра цвета
 R1 бит 5 регистра цвета
 R2 бит 6 регистра цвета
 GD00 бит 0 плоскости 0 из ГЗУ
 GD10 бит 0 плоскости 1 из ГЗУ
 GD20 бит 0 плоскости 2 из ГЗУ

Результат: состояние битов в выбранных через регистр цвета плоскостях.

TODO не понимаю, как адресовать точку. Запрашиваю-то байт?

Цветовой режим (M==1)
+++++++++++++++++++++

Если M==1, то все плоскости TODO почему? эквивалентны. Можно анализировать одну любую плоскость:

GRD0 = R0\*GD00 + R0\*GD00
TODO \* это кажется XOR, + это видимо OR

 GRD0 бит0 на шине данных при чтении из ГЗУ
 R0 бит 4 регистра цвета
 GD00 бит 0 плоскости 0 из ГЗУ

```

```

Результат: прочитанный бит будет отражать РАЗЛИЧИЕ регистра цвета от содержимого ОЗУ

Например:
Plane0 = 0
Plane1 = 1
Plane0 = 0

RgColor4 = 0
RgColor5 = 1
RgColor6 = 0

RgColor4 \* Plane0 + RgColor4 \* Plane0 = 0\*0+0\*0 = 0+0 = 0
RgColor5 \* Plane1 + RgColor5 \* Plane1 = 1\*1+1\*1 = 0+0 = 0
RgColor6 \* Plane2 + RgColor6 \* Plane2 = 0\*0+0\*0 = 0+0 = 0

0 + 0 + 0 = 0

Чтение ГЗУ в цветовом режиме дает байт, где каждый бит = RgColor(4,5,6) XOR ГЗУ (0,1,2)
TODO верно?

## Формирование графики

Сигнал сдвига регистров: GCLK (10МГц)

Формирование изображение через таблицу цветов

Микросхема регистр КР531ИР20 D115 (8.8)

Управление:
 (A2 OR -SELREG) -> при низком выбирает SERV, при высоком выбирает GWD
 GCLK -> по отриц фронту выставить выбранный вход на выходе

Входы:
 SERVG0 / GWD0
 SERVG1 / GWD1
 SERVG2 / GWD2
 1BWV / GWD3

Выходы:
 GWD0' на D114
 GWD1' на D114
 GWD2' на D114
 GWD3' на D114

Микросхема SRAM 16x4 бита К155РУ2 D114 (8.11) - таблица соответствия "три бита ГЗУ и бит текста" -> "4-битный цвет RGBI"

Управление:
 все время выбрана
 чтение: высокий ((-SELREG OR A2) OR -2.5M)
 запись: низкий ((-SELREG OR A2) OR -2.5M)

Входы:
 A0: GWD0'
 A1: GWD1'
 A2: GWD2'
 A3: GWD3'
 D0: GWD4
 D1: GWD5
 D2: GWD6
 D3: GWD7

Режимы работы РУ2

```

```

Чтение (автоматическое):
- на шине адреса РУ2 потоки битов ПлоскостьАЦЗУ, Плоскость0, Плоскость1, Плоскость2
- на выходе - биты -Красный, -Зеленый, -Синий, -Яркость
- по сигналу GCLK (частота 10МГц) защелкиваются в триггере D113
- из триггера сигналы проходят через инвертор, восстанавливающий полярность после инверсных выходов РУ2

Запись:
- при адресации регистра 0xFB регистр D115 подключает к ША РУ2 шину данных GWD0-GWD3
- на шину данных РУ2 подключена шина данных GWD4-GWD7
- таким образом, записанный в 0xFB байт 0xFF будет сохранен в РУ2 как число 0xF в ячейке 0xF

```

```

Микросхема триггер К555ТМ9 D113 (8.21)

Управление: защелкивание по положительному фронту GCLK

Вход:
 D0: D114.Z3
 D1: -LOAD (совмещенный триггером с GCLK, превращается в -GLOAD)
 D2: D114.Z1
 D3: D114.Z2
 D4: BWV
 D5: D114.Z0

Выход:
 Z0: -VIDB
 Z1: -GLOAD
 Z2: -VIDG
 Z3: -VIDR
 Z4: 1BWV на D115 (судя по всему, они так просто инвертировали поток битов с АЦЗУ)
 Z5: -VIDI