ПЗУ от прототипа УКНЦ Тут.
ПЗУ от прототипа УКНЦ Тут.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Всё прописано в госте - "мутно", но есть
http://docs.cntd.ru/document/gost-7845-92
Titus(01.08.2020)
Нашел ошибочку в реверсе 136-й (особенно это касается @Ynicky, который делает FPGA по еще не оптимизированным реверсам).
У элемента A61.2 надо инвертировать выход, а то сигнал WE будет инверсным.
Это справедливо, как для неоптимизированной схемы, так и для оптимизированной.
Обычно на реверс у меня где-то 2-3 ошибки, которые исправляются в процессе оптимизации и проверки. Это весьма неплохой результат, учитывая общее количество элементов и соединений.
Ynicky(02.08.2020)
Вопрос к PDP-шникам - зачем шины адреса ОЗУ подтянуты через резисторы на +5В? Ведь на этих шинах нет ни одного устройства с открытым коллектором, только комплиментарные выходы. Может быть, чтобы меньше звенели в моменты, когда шина в Z-состоянии?
И еще, не обратил внимания сразу - адреса и данные памяти инвертированы)
ХМ1-136: Растактовка команды записи в регистр планов 1 & 2.
Описание:
Операция начинается по команде WRITE_PLANE12 (RQ = 1, CC0 = 1, CC1 = 0). Используется при записи в регистр планов 1&2 (PLANE12, адрес 177014), а также при записи в регистр октета (OCTET_MASK, адрес 177024).
Слот видеоконтроллера:
Такты 4..7 - чтение видеоконтроллером ОЗУ ПП и ЦП.
Слот ПП и ЦП:
Такт 8 - контроллером ПП на шину AG0..AG7 выставляется старшая часть слова данных.
Такт 8.5 - контроллером ПП на шину DG0..DG7 выставляется младшая часть слова данных.
Такт 9..10 - защелкивание данных в регистрах DC_H, DC_L по сигналу A_D_LATCH.
Такты 12..20 - устанавливается сигнал CPU_REQUEST, во время которого блокируется сигнал PSC.
Слот видеоконтроллера:
Такты 12..15 - чтение видеоконтроллером ОЗУ ПП и ЦП.
Слот ПП и ЦП:
Такт 16 - на шину AC0..AC7 выводится младшая часть адреса из регистра PLANE_ADR_L. Сигнал WE установлен, что означает запись в ОЗУ.
Такт 16.5 - на шину DC0..D15 выводятся данные из регистров DC_H, DC_L.
Такт 17 - устанавливается сигнал NRAS, по которому в ОЗУ защелкивается адрес строки (младшая часть адреса).
Такт 17.5 - на шину AC0..AC7 выводится старшая часть адреса из регистра PLANE_ADR_H.
Такт 18 - устанавливаются сигналы CAS1, CAS2, по которым в ОЗУ защелкивается адрес столбца (старшая часть адреса).
Такт 19.5 - снимается сигнал NRAS, по которому данные запоминаются в ОЗУ.
Такт 20 - завершение операции.
Замечания и особенности работы:
1. За пол-такта до перевода шин адреса AC и AG в Z-состояние, на шину адреса выставляется значение 0x00 (высокие уровни на шине), и уже потом через пол-такта шина переводится в Z-состояние. Вероятнее всего это сделано для уменьшения шума на шине, т.к. в Z-состоянии шина также притягивается через резисторы к плюсу питания.
Однако, в контроллере ОЗУ ПП, работающем на той же шине, такой особенности не реализовано.
2. Отличается логика выставления старшей части адрреса на шины AC и AG (сигнал SEL_ADR_HIGH) для слотов видеоконтроллера, и слотов ПП и ЦП. Смысл этого непонятен, т.к. в слотах ПП и ЦП шины AC и AG в Z-состоянии, и любые внутренние манипуляции с адресами бессмысленны. Возможно, это побочный эффект избыточной логики, которая уже встречалась в данном чипе (проверка наличия одновременно двух сигналов - CLCA и PCLC_8 в F73.2.D69 и E73.D67, хотя эти сигналы абсолютно идентичны).
ХМ1-136: Растактовка команды записи в регистр адреса планов.
Описание:
Операция начинается по команде WRITE_PLANE_ADR (RQ = 1, CC0 = 0, CC1 = 0). Используется в первой фазе при записи в регистр адреса планов (PLANE_ADR, адрес 177010).
Слот видеоконтроллера:
Такты 4..7 - чтение видеоконтроллером ОЗУ ПП и ЦП.
Слот ПП и ЦП:
Такт 8 - контроллером ПП на шину AG0..AG7 выставляется старшая часть регистра адреса планов PLANE_ADR.
Такт 8.5 - контроллером ПП на шину DG0..DG7 выставляется младшая часть регистра адреса планов PLANE_ADR.
Такт 9..10 - защелкивание данных в регистрах PLANE_ADR_H, PLANE_ADR_L по сигналу A_D_LATCH.
Такты 12..20 - устанавливается сигнал CPU_REQUEST, во время которого блокируется сигнал PSC.
Слот видеоконтроллера:
Такты 12..15 - чтение видеоконтроллером ОЗУ ПП и ЦП.
Слот ПП и ЦП:
Такт 16 - на шину AC0..AC7 выводится младшая часть адреса из регистра PLANE_ADR_L.
Такт 17 - устанавливается сигнал NRAS, по которому в ОЗУ защелкивается адрес строки (младшая часть адреса).
Такт 17.5 - на шину AC0..AC7 выводится старшая часть адреса из регистра PLANE_ADR_H.
Такт 18 - устанавливаются сигналы CAS1, CAS2, по которым в ОЗУ защелкивается адрес столбца (старшая часть адреса). В течение активного сигнала CAS, данные с шины DC0..DC15 защелкиваются в регистрах DC_H, DC_L, причем, DC_H защелкивается в инверсном виде.
Такт 19.5 - снимается сигнал NRAS.
Такт 20 - завершение операции.
Замечание:
Команда ХМ1-136 записи в регистр адреса планов (Command Code - WRITE_PLANE_ADR) вовсе не то же самое, что запись в регистр адреса планов для ХМ1-032.
Запись в регистр адреса (PLANE_ADR, адрес 177010) состоит из двух последовательных команд:
1. WRITE_PLANE_ADR - запись адреса планов в видеоконтроллер, и чтение планов 1 и 2 в регистр данных видеоконтроллера.
2. READ_PLANE12 - чтение регистра данных видеоконтроллера контроллером ПП.
- - - Добавлено - - -
Немного поразмышляв, я понял, что это сделано затем, чтобы разнести по времени изменения на шинах адреса, относительно других процессов, которые в большинстве своем синхронизированы с CLCA, и наступают на пол-такта позднее. Таким же образом разнесена установка данных на шинах АG и DG. На DG данные выставляются на пол-такта позже.
ХМ1-136: Растактовка команды чтения планов 1 и 2.
Описание:
Операция начинается по команде READ_PLANE12 (RQ = 1, CC0 = 0, CC1 = 1). Используется во втрой фазе при записи в регистр адреса планов (PLANE_ADR, адрес 177010).
Слот видеоконтроллера:
Такты 4..7 - чтение видеоконтроллером ОЗУ ПП и ЦП.
Слот ПП и ЦП:
Такт 8 - на шину AG0..AG7 выводится старшая часть регистра DC_H в инверсном виде.
Такт 8.5 - на шину DG0..DG7 выводится младшая часть регистра DC_L.
Такты 8..10 - информация с шин AG и DG защелкивается в контроллере ПП, в регистрах PLANE2_DATA и PLANE1_DATA, соответственно.
Такт 16 - завершение операции.
Замечания:
1. При операции записи в регистр адреса планов, старший байт данных планов 1&2 внутри видеоконтроллера хранится в инверсном виде. Очевидно, это сделано для упрощения схемы.
2. Не смотря на то, что между слотом видеоконтроллера и слотом ПП и ЦП, шина адреса AG не переходит в Z-состояние, из-за недоработки в схеме, за пол-такта до слота ПП и ЦП, на шину AG выводится байт 0x00, после чего через пол-такта на шину выводится старшая часть регистра DC_H. Методика, которая изначально была рассчитана на сокращения шумов на шине, в данном случае наоборот порождает лишние шумы.
То, чего так долго ждали миллионы любителей УКНЦ, свершилось!
Последняя из 4 микросхем оптимизирована, причесана и сделана красивой.
1515ХМ1-136-Optimized - rev 42.pdf
1515ХМ1-136-Optimized - rev 42.sch (P-CAD 2006)
p.s.: Что еще хорошо бы сделать:
1. Расписать подробно работу видеоконтроллера (выше были диаграммы лишь арбитра ОЗУ ПП и ЦП).
2. Расписать подробно работу контроллера ОЗУ ЦП.
Моделирую горизонтальный счетчик. Почему-то HCTR после значения 799 становится равным 32 вместо 0. И период HBLANK равет 61,44 мкс вместо 64 мкс. Пока не пойму почему. Может я не правильно перевел схему, но проверил и ошибок не нашел.
Очень странно. Я по своей же схеме моделировал (теоретически на бумажке), после 799 становится 0. Посмотрю еще раз.
- - - Добавлено - - -
Ну вот смотри, у тебя остается включенным разряд D5, т.е. триггер для PCLC_64.
Он управляется элементом G57, который обеспечивает тактовый сигнал при следующих условиях:
1) Разряд D0 переключился из 1 в 0.
2) Разряды D1..D4 равны 1.
3) В разрядах D9.D8 не %11.
Скорее всего у тебя ошибка в элементе J73.2 или на входе G57, к которому он подключен.
nzeemin(04.08.2020)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)