## 1801ВП1-119

### Фотографии кристалла высокого разрешения
[1801ВП1-119, 97M](http://www.1801bm1.com/files/retro/1801/images/vp1-119.jpg)

### Условное графическое обозначение
![Symbol](/119/img/119.png)

### Назначение выводов
| Номер | Название  | Конфигурация | Назначение
|-------|-----------|--------------|-----------------------------------------
| 1     | CLK       | Вход         | Основной тактовый сигнал, используется для тактирования внутренней машины состояний, состояние меняется как по фронтам, так и по срезам
| 2     | RCLK      | Вход         | Запрос на цикл регенерации памяти, про фронту на этом входе будет активирован внутренний запрос на цикл регенерации
| 3     | nHLTM     | Вход         | Признак пультового режима. При обращении к DRAM в пультовом режиме вход DEF (признак некорректируемой ошибки) игнорируется
| 4     | DEF       | Вход         | Признак некорректируемой ошибки DRAM. Фронт на данном входе при активном цикле (на выходе nLA низкий) и не в пультовом режиме (на входе nHLTM высокий), и не зависимо от сигнала DCE, вызывает блокировку генерации nRPLY (nFRPLY генерируется всегда) и возникает тайм-аут обращения по шине
| 5     | nSACK     | Вход         | Признак доступа внешнего контроллера. Блокирует выработку активного nESYNCx и nFRPLY, влияет на nOUT
| 6     | nLA       | Выход        | Строб адреса, активный низкий уровень при активном nSYNC или nRPLY
| 7     | nESYNC    | Выход        | Синхронизации nSYNC, активируется по срезу CLK, далее подается на nSSYNC процессора, неактивен при nSACK (доступ внешнего агента к памяти и устройствам системной платы)
| 8     | nESYNCO   | Выход ОК     | Копия сигнала nESYNC, открытый коллектор
| 9     | nFRPLY    | Выход OK     | Выдается при чтении динамического ОЗУ по фронту CLK при активном nCAS (примерно полтакта CLK после nCAS)
| 10    | nIN       | Выход        | Разрешение трансляции данных с магистрального МПИ на внутреннюю шину платы. Активен при чтении с внешних устройств и записи внешним контроллером.
| 11    | nOUT      | Выход        | Разрешение трансляции внутренней шины платы на магистральный МПИ. Активен почти всегда, кроме записи данных внешним контроллером.
| 12    | DCE       | Вход         | Высокий уровень разрешает коррекцию ошибок. Влияет на выработку S0, S1, CB0, CB1, nWEC и nRB.
| 13    | S0        | Выход        | Управление циклом схемы коррекции ошибок 555ВЖ1
| 14    | S1        | Выход        | Управление циклом схемы коррекции ошибок 555ВЖ1
| 15    | NC        | Нет          | Не используется, никуда не подключен
| 16    | nRB       | Выход        | Разрешение буферов прочитанных данных. Используется при записи байта с предварительным чтением комплиментарного байта для формирования полного записываемого слова
| 17    | CB0       | Выход        | Строб записи младшего байта буфера данных
| 18    | CB1       | Выход        | Строб записи старшего байта буфера данных
| 19    | nA0       | Вход         | Младший разряд адреса A0, в том числе используется для разрешения nCS0/nCS1
| 20    | nA11      | Вход         | Разряд адреса A11, используется для выбора системных ОЗУ и ПЗУ в пультовом режиме (сигналы nSROM/nCSx)
| 21    | GND       | Питание      | Нулевой потенциал (земля)
| 22    | nA12      | Вход         | Разряд адреса A12, используется для выбора системных ОЗУ и ПЗУ в пультовом режиме (сигналы nSROM/nCSx)
| 23    | nSEL      | Вход         | Низкий уровень генерируется процессором при обращении к системной памяти в режиме пульта, разрешает активацию nSROM и nCSx
| 24    | nSROM     | Выход        | Выборка системного ПЗУ, активный уровень  - низкий
| 25    | nCS0      | Выход        | Разрешением младшего байта системного статического ОЗУ
| 26    | nCS1      | Выход        | Разрешение младшего байта системного статического ОЗУ
| 27    | nDCLO     | Вход         | Системный сброс, инициализация контроллера
| 28    | nWEC      | Выход        | Запись слова контрольных разрядов в DRAM
| 29    | nWE       | Выход        | Запись слова данных в DRAM
| 30    | nRAS0     | Выход        | Строб младшей половины DRAM, выбор определяется входом nA19
| 31    | nRAS1     | Выход        | Строб старшей половины DRAM, выбор определяется входом nA19
| 32    | nCAS      | Вход         | Общий строб для всех банков динамического ОЗУ
| 33    | nA19      | Вход         | Адрес A19, старший разряд области динамического ОЗУ, определяет nRAS0/nRAS1
| 34    | nTA       | Вход         | Микропроцессор начинает цикл чтения низким уровнем на этой линии, 1801ВП1-119 запускает цикл чтения
| 35    | nA20      | Вход         | Разряд адреса A20, используется для дешифрации области DRAM (обращение к младшему мегабайту)
| 36    | nA21      | Вход         | Разряд адреса A21, используется для дешифрации области DRAM (обращение к младшему мегабайту)
| 37    | nDOUT     | Вход         | Строб записи данных МПИ
| 38    | nDIN      | Вход         | Строб чтения данных МПИ
| 39    | nRPLY     | Выход ОК     | Строб подтверждения транзакции МПИ, генерируется как ответ при обращении к динамическому и статическому ОЗУ, ПЗУ
| 40    | nWTBT     | Вход         | Признак транзакции записи, признак байтовой записи МПИ
| 41    | nSYNC     | Вход         | Строб адреса МПИ
| 42    | VCC       | Питание      | Потенциал +5В (источник питания)

### Описание
1801ВП1-119 представляет собой микросхему-компаньон для микропроцессора 1801ВМ3.
Основным функционалом, который выполняет 1801ВП1-119, является контроллер
динамической памяти и сопряжение процессора с остальными устройствами системной
платы, поэтому микросхему условно можно назвать "северным мостом чипсета"
в рамках современной терминологии. Массово применялся этот "северный мост"
в составе плат микроЭВМ типа МС1201.03 и МС1201.04. На структурных схемах этих
плат микросхема 1801ВП1-119 обозначена как "блок управления" и выполняет
следующие функции:
- дешифрацию адреса обращения по системной магистрали
- формирование сигналов управления динамическим ОЗУ - nRASx, nCAS, nWE, nWEC
- формирование сигналов управления системным статическим ОЗУ - nLA, nCSx
- формирование сигнала выборки системного ПЗУ - nSROM
- выдачу сигналов управления блока обнаружения и коррекции ошибок (на 555ВЖ1),
  S0 и S1, а также прием ответного сигнала DEF при обнаружении некорректируемой
  (двойной и более) ошибки
- управление буферными регистрами данных - сигналы CBx, nRB, используемых для
  выполнения байтовых операций записи, а также хранения данных после завершения
  цикла обмена с динамическим ОЗУ
- выдачу сигналов nIN и nOUT для управления буферными элементами между внешней
  магистралью МПИ и внутренней шиной системной платы
- формирование сигнала nESYNC для микропроцессора 1801ВМ3
- формирование сигналов nRPLY и nFRPLY для завершения циклов обмена МПИ


В ходе моделирования выявлены следующие особенности работы микросхемы:
- динамическое ОЗУ на платах МС1201.03/04 может выполнять циклы обращения
  только 16-битными словами. При чтении ненужный байт просто игнорируется
  микропроцессором. При записи байта 1801ВП1-119 организует предварительную
  операцию чтения и затем формирует полное 16-битное слово для записи.
  В связи с чем байтовая запись работает на данных платах значительно
  медленее варианта с маскированием записываемых данных
- сигнал nTA должен предпочтительно активироваться (ниспадающий фронт)
  только после установления стабильного адреса, иначе возможна ситуация
  когда дешифратор DR_ENA еще не отработал, а уже требуется старт по nTA.
  Это приводит к более позднему старту цикла чтения
- nWTBT должен опережать ниспадающий фронт nDOUT (по нему осуществляется
  запуск циклограммы записи, а nWTBT нужен для выбора типа цикла (запись
  байта или слова)

Микросхема 1801ВП1-119 использует всего 236 ячеек матрицы, однако при
реверсе возникли сложности. Схема содержит очень много триггеров, cделанных
на отдельных ячейках типа ИЛИ-НЕ, с большим количеством обратных связей,
что препятствовало линейному распознаванию схемы. Но в итоге удалось
справится с сортировкой ячеек. Типовой триггер в составе ВП1-119 выглядит так:
![image](/119/img/dlat_pcad.png)

Для определения логики работы триггер был промоделирован в logisim
![image](/119/img/dlat_circ.png)

Данная схема представляет собой синхронный D-триггер с запоминанием
инвертированных данных nIN по срезу на тактовом входе CLK. Также имеется
асинхронный сброс RST, при высоком уровне на котором триггер постоянно
находится в состоянии низкого уровня. Данные триггеры служат основой
внутреннего автомата состояний контроллера динамической памяти, все события
происходят по фронтам и срезам, а не по уровням сигналов.

Циклы обращения к статическому ОЗУ (моделирование):
![image](/119/img/sim_sram.png)

Цикл регенерации (реальная плата и моделирование):
![image](/119/img/sim_refresh.png)

Циклы на реальной плате с отключенной коррекцией ошибок:
![image](/119/img/nc_read0.png)
![image](/119/img/nc_read1.png)
![image](/119/img/nc_write16.png)
![image](/119/img/nc_writelb.png)
![image](/119/img/nc_writehb.png)

Смоделированные циклы с отключенной коррекцией ошибок:
![image](/119/img/sim_no_write.png)

Циклы на реальной плате с включенной коррекцией ошибок:
![image](/119/img/co_read.png)
![image](/119/img/co_write.png)
![image](/119/img/co_writelb.png)
![image](/119/img/co_writehb.png)

Смоделированные циклы с отключенной коррекцией ошибок:
![image](/119/img/sim_corr_ok.png)
![image](/119/img/sim_corr_def.png)
