1515ХМ1. Инструкция по разработке МБИС с применением САПР (66 МБ).
https://cloud.mail.ru/public/4TW3/4D7nKBzsh
Вид для печати
1515ХМ1. Инструкция по разработке МБИС с применением САПР (66 МБ).
https://cloud.mail.ru/public/4TW3/4D7nKBzsh
Попробую сжать.
в настройках измени "предпросмотр" на всегда сохранять и настрой вменяемую "карантин" папку для сохранение из веб. С локального диска всё норм, но заливать такой объём в библиотеку архива грустнее грустного...
пред. сканы лились час почти - да ну! ещё и связь рвётся постоянно...
- - - Добавлено - - -
там пред. сканы то же были 109 и 80 кило - не хилО ?
1515ХМ1. Инструкция по разработке МБИС с применением САПР (11 МБ).
https://cloud.mail.ru/public/5tQa/5orNmgrCq
- - - Добавлено - - -
КА1515ХМ1 технические условия, справочный лист и др. (20 МБ).
https://cloud.mail.ru/public/3qmT/ouV5hXXDv
Справедливости ради нужно сказать, что и у Неона опросом клавиатуры также занимается отдельный контроллер i8279. Причем у этого чипа ограничение есть в размере матрицы клавиатуры: 8х8, а клавиш там заметно больше. Вот и при нажатии тех, которым не повезло быть в числе первых 64 имитируется одновременное нажатие двух клавиш (повбывав бы!).
Что касается 8 бит шины, то может быть расчет использование БИС серии К580. Ну и печатная плата проще...
Ynicky, а ХМ2 маленький будет? )
Теперь полностью собрана система тактирования клавиатуры.
Таким образом, часть с клавиатурой готова, и можно полюбоваться на этого монстра.
Много чего там интересного.
Например, счетчик Y тактируется частотой 1/8 CLK1_24,
а счетчик X тактируется по-разному:
1. Если SYNC акивен, а DIN и DOUT неактивны, то тактирование X переключается на 1/8 CLK1_24.
2. Если SYNC и DIN, активны, а DOUT неактивен, то тактирование X переключается на 1/128 CLK1_24.
Да, и разумеется, так и осталась загадка, зачем при одновременно активных SYNC, DIN и DOUT (что по словам опытных PDP-шников быть не может, и, возможно, сделано для тестового режима), тактирование клавиатуры убыстряется в 24 раза до следующего INIT.
https://yadi.sk/i/GYDCS2mBaZ6OuQ
Скан ТУ на КА1515ХМ2 (17,5 МБ).
https://cloud.mail.ru/public/3XpT/2V1mL78B8
Скорее всего это сделано для контроля кристалла на стендовой аппаратуре. Подключили питание, подключили тактовый генератор, управляем по SYNC, DIN, DOUT, INIT, и смотрим, что творится на выходах X.
И по поводу тактирования счетчика X - неправильно написали. Надо так:
1. Если SYNC неактивен, DIN и DOUT активны (запрещённая комбинация в МПИ), то тактирование X переключается на 1/8 CLK1_24.
2. Если SYNC и DIN неактивны, а DOUT активен (запрещённая комбинация в МПИ), то тактирование X переключается на 1/128 CLK1_24.
И кстати по INIT тактирование также переключается на 1/128 CLK1_24, что и должно быть, это со старшего разряда счетчика Y.
Да, поспешил, на полярность не посмотрел.
Значит эти две комбинации запрещенные.
Да еще третья, где активны SYNC, DIN и DOUT.
Получается три комбинации запрещенных для стенда.
- - - Добавлено - - -
Что у нас известно про неиспользуемый бит 13 регистра управления (177716)?
Вроде писал здесь и здесь. Но повторюсь.
В старом ТО упоминается бит 13 регистра 0177716, который переключает векторные прерывания 304 и 310 на вывод IRQ, действительно работает.
По старому ТО при установке бита 13 регистра 0177716 векторные запросы 304 и 310 должны были идти на вывод IRQ, вместо VIRQ. А вывод IRQ должен был быть подключен на вход HALT ПП. Так что в этом случае прерывалась бы по прерыванию HALT. Прерывалось бы всегда, независимо от установки бита 7 в PSW, такое вот высокоприоритетное, маломаскируемое прерывание.
Кстати, совершенно непонятно, зачем при активном EP в порт Y выводят не только значение регистра KBD_BUS, но еще и сигнал KBD_BUS_READ, который никогда не может быть активным при выводе в порт, т.е. всегда будет давать единицу.
- - - Добавлено - - -
А, нет. Вру, конечно. При активном EP он постоянно будет тусоваться на порту.
Видимо, Y1 и Y2 тоже в этом случае для каких-то отладочных целей используется.
Интересное декодирование происходит сигнала с магнитофона со входа EXT.
Да, все это идет куда-то к таймеру)
- - - Добавлено - - -
Стал разбираться - что за странный алгоритм декодирования сигнала с магнитофона.
Оказалось, две линии перепутал на стыке двух страниц) Но теперь исправил)
- - - Добавлено - - -
В общем, все просто. Любая смена фронта на EXT, дает короткий импульс на выходе декодера.
Ширина импульса равна одному полу-периоду тактовой частоты таймера, которая, в свою очередь, выбирается программно.
Впрочем, я еще пока не знаю, куда этот импульс идет, и важна ли его ширина вообще.
Однако, т.к. декодер тактируется частотой таймер, а определение перепадов импульсов синхронно с ней, то чем меньше частота, тем хуже разрешающая способность декодера, и есть вероятность пропуска коротких импульсов на EXT. Что, впрочем, может тоже не важно для магнитофонной записи)
Вы будете смеяться, но пока я не нашел, чтобы таймер останавливался иначе, кроме, как нулевому биту регистра состояния таймера)
https://pic.maxiol.com/images2/15739...4841820.01.png
Добавилась схема тактирования таймера и кое-что еще.
https://yadi.sk/i/ZpBnW8vHUFnN4w
Пока что логика такая:
Постоянная автозагрузка буферного регистра в регистр текущего значения идет, если:
1. TMR_STATE_Q0 = 0 (режим СТОП таймера)
2. TMR_STATE_Q0 = 1 (режим ПУСК таймера), SYS_CON_Q13 = 0 (зарезервированный бит), и TMR_CUR = 0 (регистр текущего значения таймера равен нулю).
Так же идет однократная загрузка буферного регистра в регистр текущего значения, если определена смена фронта на входе EXT (магнитофон), и TMR_STATE_Q0 = 1 (режим ПУСК таймера).
Логики остановки счета таймера иной, кроме как по TMR_STATE_Q0 = 0 (режим СТОП таймера), не обнаружено.
Ура! Значит я все правильно расшифровал)
Разобрал все до винтика.
Интересно, но в чипе НЕТ никакого механизма задания адресов векторов прерываний, которые различны для разных событий.
На все три типа прерывания он отвечает /VIRQ и /IAKO.
Где же задается вектор?
Точно. Не обратил внимания, что вектор выставляется всего несколькими битами)
Итак, чуть более, чем за месяц, вычерпано 10000 ведер воды сложной, но интересной работы.
Итак, вашему вниманию предлагается полностью распознанная и приведенная в человеческий вид внутренняя схема 1515ХМ2-001.
Теперь все секреты и нюансы ХМ2-001 понятны каждому порядочному УКНЦ-шнику.
И одной тайной УКНЦ стало меньше.
Конечно, никаких секретных регистров или бит не обнаружено, но множество нюансов работы теперь видны, как на ладони.
Разумеется, всякие ошибки и замечания (а они будут) пишем сюда.
- - - Добавлено - - -
Замечу, что ничего подобного бит 13 не делает, а просто блокирует возникновение события обнуления таймера.
Безусловно проведена огромная работа, результаты очень знАчимы. Искренний респект тебе!
Маленькая ложка дёгтя к бочке мёда: очень такие красивые диаграммы состояний сигналов на схеме. Однако, они не совсем соответствуют действительности - повсюду асинхронные схемы, каждый из элементов имеет некоторую задержку срабатывания, плюс линии внутренних соединений также вносят свои задержки, сотвественно реальные диаграммы будут иметь приличные задержки и иголки (некоторые сигналы есть функция регистров и комбинаторики), которые тоже надо учитывать...
Повторюсь: огромный, тяжёлый, значительный труд. Очень знАчимый вклад в расшифровке "чёрного ящика". Уважуха! :v2_dizzy_punk:
PS. Уважаемые модераторы и администраторы, а нельзя ли и у нас на форуме ввести подобную систему поощрений? Работа Titus-а сразу же "тянет" на золотую дискетку.
Основная цель реверса - это восстановить точную схему работы чипа на логическом уровне.
Чтобы любой человек мог взглянуть и понять - ага, вот так и так оно работает.
Чтобы, если кто захочет, мог упрятать схему в ПЛИС и получить полностью совместимую реплику.
Что касается задержек и иголок.
1. Внутренние тактовые частоты чипа столь малы, по сравнению с задержками на вентилях, что задержкой распространения сигнала, я думаю, точно можно пренебречь. Кроме того, разработчики, разумеется, тоже все это учитывали.
2. Внутренние иголки так же скомпенсированы разработчиками, иначе триггеры и другие элементы с потенциальными иголками в местах расхождения протифовазных сигналов, нещадно бы глючили.
3. Внешние иголки скорее всего тоже отсутствуют, т.к. смотри пункт 2. Кроме того, емкость затворов выходных ключей столь массивна, что вряд ли успевает перезаряжаться какими-нибудь 5нс иголками.
Словом, на мой взгляд нет смысла учитывать наносекундные погрешности ни для эмуляции, ни для репликации, ни для понимания.
А кому интересно - есть неоптимизированная схема первого этапа реверса, есть фотка кристалла)
p.s.: Кстати, на шине AD_OUT сигналы должны обьединяться по OR, а не просто тупо электрически. Дорисую в следующей версии, чтобы все было точно.
- - - Добавлено - - -
Для малого нужно чтобы наш товарищ Vslav нафоткал эти чипы как мининмум.
А как максимум - сфоткать все чипы.
В идеале - сфоткать редкие чипы ХМ2-002 и раритетный ХМ1-033, чтобы понять, как был устроен прототип УКНЦ.
Вопрос к Alex_K - что у нас интересненького в ХМ2-003 (ХМ1-039)?
- - - Добавлено - - -
Глянул на ХМ2-003. В отличие от ХМ2-001, где необозначенные выводы (2 шт) просто не были заведены на кристалл, в ХМ2-003 необозначенные выводы (1 шт) на кристалл заведены.
Вид портов следующий:
1. Входы - 10, 13, 16-20, 51-53
2. Выходы с открытым коллектором - 12, 15, 21
3. Выходы комплиментарные - 11, 14, 22-23, 42-50, 54-56
4. Входы-выходы с открытым коллектором - 41
5. Входы-выходы комплиментарные - 1-9, 24-31, 33-40, 57-63
Необозначенный вывод номер 21 (выход с открытым коллектором).
Имеется в виду выходной каскад AD? Да, там с тремя состояниями.
Есть еще внутренняя шина AD_OUT.
Там все источники складываются по OR (это я еще добавлю в схему). Но помешать друг другу они не могут, потому что одновременно активен может быть только один из них.
- - - Добавлено - - -
Исправил недочеты и по мелочам шлифанул.
Теперь на внутреннюю шину данные смешиваются, как и положено по OR, через мегабуфер высотой в 7 этажей) Т.е. регистров)
Можно было бы, конечно, с учетом того, что регистры никогда не пишутся на внутреннюю шину одновременно, нафантазировать псевдо-Z состояние на этой шине, но это было бы неправдой. Так что пусть будет 7 этажей)
А что такое "обычный" буфер ? 155ЛН4 это обычный буфер? Совпадает с твоим функционалом?
Буфер - это то, что не выполняет никакой логической функции. В крайнем случае инверсия.
Внутри этих блоков выполняется логическое И, причем один из входов (OE) - размножается.
В итоге мультиплексор нарисован вообще непонятно как. И было (до коррекции) вообще печально - все
выходы "буферов" просто тупо соединялись в шину. Проблема в том, что в таком виде утрачивается
информация об исходном построении схемы.