В главном штампе первого листа. Левый верхний угол.
Вложение 70532
А вот старая схема изм4:
https://cloud.mail.ru/public/57YP/skE45yesc
Вид для печати
В главном штампе первого листа. Левый верхний угол.
Вложение 70532
А вот старая схема изм4:
https://cloud.mail.ru/public/57YP/skE45yesc
Пока сделал скан ТУ на КА1515ХМ2 (80 МБ).
https://cloud.mail.ru/public/a4iR/3x2iG3jSj
Ynicky, не XA, а XM !!!
http://archive.pdp-11.org.ru/BIBLIOTEKA/KA1515XM2TU/
Извиняюсь перед теми, кто ждет, что следующий ряд не перевожу. Работа, понимаешь.
Отсканировал КА1515ХМ1 технические условия, справочный лист и др.
Так как все было в одной папке, сделал один файл (110 МБ).
Сканировал в цвете, 150 точек на дюйм. Никакой обработки не делал.
Просьба к Hobot-у продублировать документ на своём сайте.
https://cloud.mail.ru/public/4HDb/4fxNkVyLE
http://hobot.pdp-11.ru/BIBLIOTEKA/%c...515XM1TUSL.pdf
После некоторого перерыва 16-й столбец из 19.
Весьма интересная линия задержки(?) Q37.R20.Q2 в цепи /RPLY.
Выглядит весьма странновато)
Столбец 17 из 19!
Из интересненького:
1. Впервые встретился RS-триггер с инверсными входами, т.е. построенный не на элементах '2ИЛИ-НЕ', а на элементах '2И-НЕ'. Сходу чуть не перепутал его со стандартным, т.к. очень похожи внешне. Пришлось прошерстить всю схему, и проверить, не перепутывал ли ранее. Нет, все окейно.
2. Начинают вырисовываться дешифраторы и всякое интересненькое.
И... столбец 18 из 19!
Из интересненького:
Даже невооруженным глазом четко прорисовывается регистр счетчика таймера. Видно, как в него загружается значение, и как каскадно соединены триггеры счетчика.
Избыточность, на мой взгляд, большая. Если все упаковать в функциональные блоки - регистры, счетчики, дешифраторы - схема станет очень читаемой и понятной. Но это второй этап.
В размер аттача на форуме схема уже не влезает (лимит 640Кб), поэтому размещаю на Яндекс-диске.
Заметки по реверсу 1515ХМ2-001:
По нумерации ячеек:
1. В нумерации отсутствуют буквы 'I' и 'O', чтобы не путать с единицей и нулем.
2. В первых столбцах присутствуют несколько номеров вида C6a, C21a, D3a, D3b.
3. Всего в матрице 1296 логических ячеек.
Порты (всего 60):
Замечание: не все входы и выходы портов могут быть задействованы.
1. Двунаправленных портов с комплиментарным выходом: 21 (P1, P9-P24, P28, P30, P56, P62).
Каждый порт содержит 4 мощных транзистора, 2 сверхмощных и 1 резистор.
2. Двунаправленных портов с открытым коллектором: 31 (P2-P6, P25, P27, P29, P33-P55).
Каждый порт содержит 4 мощных транзистора, 1 сверхмощный и 1 резистор.
3. Входы: 8 (P7, P8, P26, P31, P57-P59, P61).
Каждый порт содержит 4 мощных транзистора и 1 резистор.
Итого, порты содержат 60 резисторов, 240 мощных транзисторов и 73 сверхмощных транзистора (в сумме 313 транзисторов)
Итак - финальная версия первого этапа реверса 1515ХМ2-001.
Разумеется, могут быть ошибки и все такое прочее.
В архиве, схема для P-CAD, и схема в виде PDF.
В логических элементах много избыточности. Явно была библиотека различных блоков типа - регистра, счетчика, буфера и т.д. Т.е. никто не делал эту схему на уровне триигеров и простейших логических элементов. А автоматической оптимизации логики у САПР'а скорее всего не было. Отсюда и избыточность.
В общем, реверсить было явно сложнее и дольше, чем делать эту схему)
Немножко живой математики.
Логические элементы:
* НЕ: 2 транзистора - 115 штук + ~4 штук тупиковые
* НЕ x 2: 4 транзистора - 87 штук
* НЕ x 4: 8 транзисторов - 32 штуки
* НЕ-НЕ: 4 транзистора - 22 штуки
* 2И-НЕ: 4 транзистора - 149 штук
* 2ИЛИ-НЕ: 4 транзистора - 102 штуки
* 3И-НЕ: 6 транзисторов - 40 штук
* 3ИЛИ-НЕ: 6 транзисторов - 44 штуки
* 3ИЛИ: 8 транзисторов - 1 штука
* 4И: 10 транзисторов - 49 штук
* 4ИЛИ: 10 транзисторов - 9 штук
* НЕ-2И (кое-где оптимизирован до 2И): 10 транзисторов (из них 2 посажены на землю) - 2 штуки
* 2И,2И-2ИЛИ-НЕ: 8 транзисторов - 17 штук
* 2ИЛИ,2ИЛИ-2И-НЕ: 8 транзисторов - 1 штука
* 2MUX1: 4 транзистора - 3 штуки
+ НЕ-НЕ: 4 транзистора - 2 штуки
* BUF (НЕ-НЕ): 4 транзистора - 14 штук
* RS-Trigger A: 8 транзисторов - 38 штук
* RS-Trigger B: 8 транзисторов - 1 штука
* D-Trigger-One: 12 транзисторов (3 ЛЯ) - 63 штуки
+ НЕ-НЕ: 4 транзистора - 63 штуки
* D-Trigger-One-R: 14 транзисторов (3 ЛЯ) - 28 штук
+ НЕ-НЕ: 4 транзистора - 28 штук
* D-Trigger-One-S: 14 транзисторов (3 ЛЯ) - 1 штука
+ НЕ-НЕ: 4 транзистора - 1 штука
* D-Trigger-Edge-S: 24 транзистора (5 ЛЯ) - 19 штук
+ НЕ-НЕ: 4 транзистора - 19 штук
* D-Trigger-Edge-R: 24 транзистора (5 ЛЯ) - 3 штуки
+ НЕ-НЕ: 4 транзистора - 3 штуки
* D-Trigger-Edge-RS: 28 транзисторов (5 ЛЯ) - 12 штук
+ НЕ-НЕ: 4 транзистора - 1 штука
Всего 1277 элементов (6064 транзисторов + около 80 недосчитались)
+ 313 транзисторов на порты,
Итого: ~6457 транзисторов.
Потерянные элементы:
1296 - 1277 = 19 недосчитались
Где могли недосчитаться.
Скорее всего при подсчетах элементов не учел что-то, что упаковалось в более крупные, или промахнулся при подсчетах.
Напомню, что в официальной документации заявлено 15200 элементов (вентилей). 15200 против реальных 6457. Как тебе такое, Илон Маск?
Замечу, что для ХМ2-000 (тестовая микросхема) там заявлено вообще 23550 вентилей.
А вообще, ХМ2-001 самая жирная из всех ХМ2. В ХМ2-002 по документации 14800 вентилей, а ХМ2-003 - 12100 вентилей.
Небольшое дополнение к вопросу - откуда в схеме тупиковые элементы, а так же логическая избыточность.
Я думаю, что это так же появилось в следствие того, что проектировщики оперировали крупными блоками, в составе которых в обязательном порядке находилось определенное количество элементов. И если какие-то выходы блока не использовались, то появлялись такие тупиковые инверторы. Т.е. САПР эти элементы автоматически не обрезал.
Тоже самое с логической избыточностью в тактовом генераторе. Там используются два специфических триггера, модифицированных дополнительным элементом НЕ-2И в управляемые делители на 2. И элемент E55, который должен был бы по логики выкинуться, просто находился внутри этого управляемого делителя.
Обновил в первом посту библиотеку элементов. Теперь она включает в себя подробные схемы всех элементов, встретившихся в ХМ2-001.
Картинки залил вместо рекламного радикала на https://pic.maxiol.com/ по совету Hobot'а.
Ув. доктор г.к. @Titus, можно простой популистский вопросец - вот вы узнали, что хотели про начинку этой
схемы, эти знания помогут в доработке эмулятора УК-НЦ ?
Всякий раз читая твое 'г.к.' произношу это как 'Горячего копчения')))
Я еще не все узнал, а только перевел схему с кристалла в понятный человеку вид. Но не каждому человеку. Теперь надо перевести в понятный каждому)
Разумеется, это поможет доработать все имеющиеся в мире эмуляторы УКНЦ, а так же создать реплику микросхемы, если кто захочет)
Вопрос - как положено маркировать регистры, в которые можно загружать/читать значение, а так же значение которого может декрементироваться по такту?
Я обозвал входы D0..D11, выходы Q0..Q11, вход загрузки L, вход тактирования C, а на регистре написал REG, а под ним -1.
Это корректно?
Начал переводить схему в понятный вид.
Постепенно убираю с первых двух листов элементы и переношу их на третий, упаковывая в регистры, счетчики и все такое прочее логически связанное и понятное.
1515ХМ2-001-Optimized - rev 4
Сделал дешифрацию регистров.
Интересно, что подтверждение /RPLY для разных регистров сделано по-разному.
Для записи в буферный регистр таймера, и для чтения из регистра текущего значения - отдельно, и по-разному.
А для всех остальных регистров одинаково.
Итак, новая версия.
На третьем листе добавилось много чего интересненького.
Равно, как и второй лист схемы заметно поредел.
Это называется счетчик. В советских схемах обозначался CT. Вход загрузки обозначали либо C, либо PE. Счетчиков должно быть два. Первый это счетчик таймера (работает по декременту), а второй счетчик клавиатуры (работает по инкременту, читается чтением регистра 0177702).
- - - Добавлено - - -
Возможно. Я делал описание в соответствии с выводами Y3-Y15. А Y1 и Y2 в схеме УКНЦ нигде не используются.
После анализа всех регистров доступных на запись - неизвестных битов и регистров не обнаружено) Все, как в документации, плюс добавки из этой темы.
Все остальные регистры отвечают на чтение и запись. Регистры 0177702 и 0177714 отвечают только на чтение, регистр 0177712 отвечает только на запись.
- - - Добавлено - - -
Оказывается ответ AR на SYNC только для своих регистров, я думал общий, сделан специально для 1801ВМ2.
В какой ситуации активны все три сигнала DIN, DOUT и SYNC?
Тогда что вы скажете на это?
https://pic.maxiol.com/images2/15734...4841820.01.png
Как видно по схеме, по сигналу INIT некая внутренняя частота выбирается равной 1/24 CLC
Однако, если /DIN, /DOUT и /SYNC в нуле, то система переключается на частоту CLC.
В QBUS (МПИ) такого нет. SYNC активен только во время адресного обмена. Соответственно во время обмена могут устанавливаться либо DIN, либо DOUT, но никак не вместе. DIN используется также во время запроса вектора прерывания, а также в процедуре чтения безадресного регистра, в этих случаях SYNC неактивен.
Тогда зачем это сделали на схеме?
- - - Добавлено - - -
Да, проверил, действительно инверсию потерял. Вход 2 Q71.Q72 должен быть инверсным.
- - - Добавлено - - -
Сегодняшняя версия: https://yadi.sk/i/lhLhx9ZhmhUbOw
Из интересненького:
1. Некоторые биты в регистрах сбрасываются по INIT, а некоторые по DCLO, а некоторые вообще не сбрасываются, что совершенно неочевидно без реверса.
2. Много чего еще интересненького.
Насколько мне помнится, SYNC активен во время всего цикла адресного обмена.
Выставляется адрес, выставляется SYNC, дальше задержка, снимается адрес,
если чтение - выставляется DIN, ждётся RPLY, устройство выставляет данные, выставляет RPLY, снимаются SYNC, DIN, снимаются данные, RPLY
если запись - выставляется DOUT, устройство выставляет данные, выставляет RPLY, снимаются SYNC, DOUT, снимаются данные, RPLY
Ну и может ещё выставляться WTBT, а при отработке прерывание не выставляется адрес
Ну собственно я так и говорил. А кроме чтения и записи есть еще чтение-модификация-запись. Выставляется адрес, потом по DIN читаются данные, небольшая пауза для обработки данных в процессоре, запись по DOUT. В этом цикле SYNC также активен во время всего адресного обмена, а адрес выставляется только один раз.
Кстати по схеме правильно формируются сигналы чтения и записи регистров. Учитывается не только выбор регистра и тип операции (чтение/запись), но и чтобы все это проходило при активном SYNC. Есть правда одно НО при формировании RPLY, если производились операции с разрешенным регистром, то его адрес останется в буфере LATCH_ADDRESS. Будет следующим циклом на шине чтение вектора прерывания, то по DIN будет выставлено RPLY, т.к. в буфере LATCH_ADDRESS разрешенный адрес.
Выставление RPLY, на шине AD в этом случае ничего не будет выставлено. Есть вероятность прочтения с шины нулевого вектора. В УКНЦ есть такое - если не вставить дискету в привод и запустить загрузку с этого привода, то через какое-то время ПП может вылететь в СТОП, вот только по какому адресу не помню.
Тогда запишем тройной DIN, DOUT, SYNC в коллекцию загадок)
Похоже, счетчиков поболее, чем два)
Этот, например, по INIT устанавливается в 0x0F, затем декрементируется, и дает сигналы на 0x04 и на 0x02. Зачем - еще не смотрел. Думаю, что это что-то в цепи тактирования клавиатуры.
https://pic.maxiol.com/images2/15735...4841820.01.png