Микро-ЭВМ на КМ1801ВМ2

Digital Equipment Corporation PDP-8 & PDP-11 (а также совместимые с последним советские ЭВМ на 1801ВМ1/2/3)

Moderator: Shaos

User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Микро-ЭВМ на КМ1801ВМ2

Post by Shaos »

Lavr wrote:
Shaos wrote:начал городить свой "стэнд" для тестового запуска ВМ2
Сверху-то симпатично,... а снизу что там у него? :wink:
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Микро-ЭВМ на КМ1801ВМ2

Post by Shaos »

Макетка на удивление хорошо паяется без ошкуривания и лужения (и не смотря на отсутствие металлизации отверстий) - видимо при производстве сразу была обильно смазана канифолью :)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Микро-ЭВМ на КМ1801ВМ2

Post by Shaos »

Вообще для формирования !RPLY надо кроме !DIN и !DOUT ещё и !SYNC задействовать т.к. в случе "безадресного чтения" нулевой !DIN есть, но ни нулевого !SYNC, ни нулевого !RPLY на диаграмме не обнаруживаются - значит надо вот так (заодно притянул смещение 0 как вариант для старта и !INIT):
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Микро-ЭВМ на КМ1801ВМ2

Post by Shaos »

"Стэндъ" сегодня :roll:
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Микро-ЭВМ на КМ1801ВМ2

Post by Shaos »

Фигурно гнул ноги светодиодам, чтобы более-менее равномерно распределить 16 штук вдоль четырёх 74LS75, которые защёлкивают адрес и одновременно инвертируют, а светодиоды подключены к неинвертированным выходам - теперь можно как минимум начальный пуск сымитировать :roll:
Я тут за главного - если что шлите мыло на me собака shaos точка net
Mixa64
Doomed
Posts: 478
Joined: 25 Aug 2009 07:02
Location: Москва

Re: Микро-ЭВМ на КМ1801ВМ2

Post by Mixa64 »

Shaos wrote:Вообще для формирования !RPLY надо кроме !DIN и !DOUT ещё и !SYNC задействовать т.к. в случе "безадресного чтения" нулевой !DIN есть, но ни нулевого !SYNC, ни нулевого !RPLY на диаграмме не обнаруживаются - значит надо вот так (заодно притянул смещение 0 как вариант для старта и !INIT):
Для полноты картины можно добавить безадресное чтение вектора прерывания, когда DIN активен, IAKO активен, RPLY на них выдается, а SYNC неактивен.

(так вкусно детали смакуете, с картинками, что аж самому захотелось опус на параллельную тему замутить :) )
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Микро-ЭВМ на КМ1801ВМ2

Post by Lavr »

Mixa64 wrote:так вкусно детали смакуете, с картинками, что аж самому захотелось опус на параллельную тему замутить
Ну так зачерпывай горсть 1801ВМ2 и - на стенд их! на стенд! :mrgreen:
Давненька мы баек про твой стендъ не читали, может он поприличнее стал с тех пор!
Посмакуем с картинками... 8) заодно мож и посмеемся... :wink:
iLavr
Mixa64
Doomed
Posts: 478
Joined: 25 Aug 2009 07:02
Location: Москва

Re: Микро-ЭВМ на КМ1801ВМ2

Post by Mixa64 »

Lavr wrote:
Mixa64 wrote:так вкусно детали смакуете, с картинками, что аж самому захотелось опус на параллельную тему замутить
Ну так зачерпывай горсть 1801ВМ2 и - на стенд их! на стенд! :mrgreen:
Давненька мы баек про твой стендъ не читали, может он поприличнее стал с тех пор!
Посмакуем с картинками... 8) заодно мож и посмеемся... :wink:
А, вы все про то.. Я уж и забыл. Та тема была хоть и паяльно-конструкторская, но оффтоп, поэтому и без подробностей. И раз настаиваете, поржать можно тут
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Микро-ЭВМ на КМ1801ВМ2

Post by Shaos »

Mixa64 wrote:
Shaos wrote:Вообще для формирования !RPLY надо кроме !DIN и !DOUT ещё и !SYNC задействовать т.к. в случе "безадресного чтения" нулевой !DIN есть, но ни нулевого !SYNC, ни нулевого !RPLY на диаграмме не обнаруживаются - значит надо вот так (заодно притянул смещение 0 как вариант для старта и !INIT):
Для полноты картины можно добавить безадресное чтение вектора прерывания, когда DIN активен, IAKO активен, RPLY на них выдается, а SYNC неактивен.
и действительно - есть такое с вектором прерывания:

http://www.nedopc.org/forum/viewtopic.php?p=143271#p143271

значит надо по И собирать /SYNC и /IAKO, чтобы схему формирования /RPLY включать:
vm2-rply-test-nand-sync-iako.gif
Mixa64 wrote:(так вкусно детали смакуете, с картинками, что аж самому захотелось опус на параллельную тему замутить :) )
ну дык самодельная электронная порнуха - основная тема этого форума :twisted:
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Микро-ЭВМ на КМ1801ВМ2

Post by Shaos »

А мой "стэндъ" сегодня ожил :mrgreen:
VM2-stand-180224.jpg
На плате с чёрным ВМ2, как я и писал раньше, четыре 4-х битных прозрачных защёлки 74LS75, где у каждого бита есть как прямой, так и инверсный выход - т.е. тут одновременно защёлкиваем адрес (по спаду сигнала !SYNC), инвертируем адрес (для дальнейшего его прямого использования) и подаём неинвертированые выходы (на которых находится инверснутый процессором адрес) на светодиоды для визуального отображения (диоды на питание т.к. они светятся когда на них идёт ноль). На маленькой макетной платке две 74F00 для формирования RS-триггера, который с помощью микропереключателя тактирует проц, и остаток подключен как инверторы для буферизирования и индикации на светодиодах. На макетной платке по больше DIP-переключатели (не используются) и светодиоды для дополнительной индикации (пока используется 4 для индикации CLCI, CLCO, !SYNC и !DIN). Кроме того на этой же платке прицеплен преобразователь из 9 вольт в 5 (платка красного цвета с большим светодиодом). !AR подключен прямиком к !SYNC. На !RPLY идёт !DIN через 2 инвертора (чисто на попробовать, т.е. никакой хитро-логической городёжки с тактированием, как на схемке чуть выше). ACLO и DCLO отключал по ходу пьесы руками - в результате тактирования обнаружилось, что при шине данных, которая всегда возвращает нули, на шине адреса чередуются #0000, #0002, #0078, #007A т.к. проц переходит в режим HALT по команде HALT, которая все нули...

P.S. Теперь можно проверять процыки! А ещё надо прицепить буфер, который по DIN будет выдавать команду NOP и тогда можно будет счётчик адресов узреть, который бежит по всему адресному пространству - как раз то, чего и хотел добиться Lavr своей проверялкой :roll:
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Микро-ЭВМ на КМ1801ВМ2

Post by Shaos »

Shaos wrote:в результате тактирования обнаружилось, что при шине данных, которая всегда возвращает нули, на шине адреса чередуются #0000, #0002, #0078, #007A (т.к. проц переходит в режим HALT по команде HALT, которая все нули)
вобщем, как и на диаграмме начального пуска из заводской документации, CLCO меняет своё состояние (при отпущенном DCLO) по спаду каждого импульса входного тактирования CLCI (в данном случае при отпускании кнопки)

ниже мои записки состояния сигналов DIN, SYNC и CLCO, которые я фиксировал после каждого нажатия-отпускания кнопки тактирования (интересно, что нулевой SYNC в начале противоречит диаграмме):

Code: Select all

; начальное состояние - DCLO и ACLO подключены к земле
такт   1: DIN=H SYNC=L CLCO=L
такт   2: DIN=H SYNC=L CLCO=L
такт   3: DIN=H SYNC=L CLCO=L
такт   4: DIN=H SYNC=L CLCO=L
такт   5: DIN=H SYNC=L CLCO=L
; подключаем DCLO к логической единице, ACLO остаётся подключенным к земле
такт   6: DIN=H SYNC=H CLCO=H
такт   7: DIN=H SYNC=H CLCO=L
такт   8: DIN=H SYNC=H CLCO=H
такт   9: DIN=H SYNC=H CLCO=L
такт  10: DIN=H SYNC=H CLCO=H
такт  11: DIN=H SYNC=H CLCO=L
такт  12: DIN=H SYNC=H CLCO=H
такт  13: DIN=H SYNC=H CLCO=L
такт  14: DIN=H SYNC=H CLCO=H
такт  15: DIN=H SYNC=H CLCO=L
такт  16: DIN=H SYNC=H CLCO=H
такт  17: DIN=H SYNC=H CLCO=L
такт  18: DIN=H SYNC=H CLCO=H
такт  19: DIN=H SYNC=H CLCO=L
; подключаем ACLO к логической единице, теперь процессор готов к работе
такт  20: DIN=H SYNC=H CLCO=H
такт  21: DIN=H SYNC=H CLCO=L
такт  22: DIN=H SYNC=H CLCO=H
такт  23: DIN=H SYNC=H CLCO=L
такт  24: DIN=H SYNC=H CLCO=H
такт  25: DIN=H SYNC=H CLCO=L
такт  26: DIN=H SYNC=H CLCO=H
такт  27: DIN=H SYNC=H CLCO=L
такт  28: DIN=H SYNC=H CLCO=H
такт  29: DIN=H SYNC=H CLCO=L
такт  30: DIN=L SYNC=H CLCO=H <<< цикл безадресного чтения
такт  31: DIN=L SYNC=H CLCO=L <<< цикл безадресного чтения
такт  32: DIN=L SYNC=H CLCO=H <<< цикл безадресного чтения
такт  33: DIN=H SYNC=H CLCO=L
такт  34: DIN=H SYNC=H CLCO=H
такт  35: DIN=H SYNC=H CLCO=L
такт  36: DIN=H SYNC=H CLCO=H
такт  37: DIN=H SYNC=H CLCO=L
такт  38: DIN=H SYNC=H CLCO=H
такт  39: DIN=H SYNC=H CLCO=L
такт  40: DIN=H SYNC=H CLCO=H
такт  41: DIN=H SYNC=H CLCO=L
такт  42: DIN=H SYNC=H CLCO=H
такт  43: DIN=H SYNC=H CLCO=L
такт  44: DIN=H SYNC=H CLCO=H
такт  45: DIN=H SYNC=H CLCO=L
такт  46: DIN=H SYNC=L CLCO=H <<< цикл чтения из памяти - на адресной шине #0000 (защёлкнуто)
такт  47: DIN=L SYNC=L CLCO=L <<< пошёл DIN (/RD)
такт  48: DIN=L SYNC=L CLCO=H
такт  49: DIN=L SYNC=L CLCO=L
такт  50: DIN=L SYNC=L CLCO=H
такт  51: DIN=H SYNC=L CLCO=L <<< DIN закончился
такт  52: DIN=H SYNC=H CLCO=H <<< цикл чтения из адреса #0000 закончился 
такт  53: DIN=H SYNC=H CLCO=L
такт  54: DIN=H SYNC=H CLCO=H
такт  55: DIN=H SYNC=H CLCO=L
такт  56: DIN=H SYNC=H CLCO=H
такт  57: DIN=H SYNC=H CLCO=L
такт  58: DIN=H SYNC=H CLCO=H >>> на шине адреса-данных появилось значение #0002
такт  59: DIN=H SYNC=H CLCO=L
такт  60: DIN=H SYNC=L CLCO=H <<< цикл чтения из памяти - на адресной шине #0002 (защёлкнуто)
такт  61: DIN=L SYNC=L CLCO=L <<< пошёл DIN (/RD)
такт  62: DIN=L SYNC=L CLCO=H
такт  63: DIN=L SYNC=L CLCO=L
такт  64: DIN=L SYNC=L CLCO=H
такт  65: DIN=H SYNC=L CLCO=L <<< DIN закончился
такт  66: DIN=H SYNC=H CLCO=H <<< цикл чтения из адреса #0002 закончился
такт  67: DIN=H SYNC=H CLCO=L
такт  68: DIN=H SYNC=H CLCO=H
такт  69: DIN=H SYNC=H CLCO=L
такт  70: DIN=H SYNC=H CLCO=H
такт  71: DIN=H SYNC=H CLCO=L
такт  72: DIN=H SYNC=H CLCO=H
такт  73: DIN=H SYNC=H CLCO=L
такт  74: DIN=H SYNC=H CLCO=H
такт  75: DIN=H SYNC=H CLCO=L
такт  76: DIN=H SYNC=H CLCO=H
такт  77: DIN=H SYNC=H CLCO=L
такт  78: DIN=H SYNC=H CLCO=H
такт  79: DIN=H SYNC=H CLCO=L
; начали выполнять программу по адресу #0000, считанному ранее по вектору, полученному в процессе безадресного чтения
такт  80: DIN=H SYNC=L CLCO=H <<< цикл чтения из памяти - на адресной шине #0000 (защёлкнуто)
такт  81: DIN=L SYNC=L CLCO=L <<< пошёл DIN (/RD)
такт  82: DIN=L SYNC=L CLCO=H
такт  83: DIN=L SYNC=L CLCO=L
такт  84: DIN=L SYNC=L CLCO=H
такт  85: DIN=H SYNC=L CLCO=L <<< DIN закончился
такт  86: DIN=H SYNC=H CLCO=H <<< цикл чтения из адреса #0000 закончился
такт  87: DIN=H SYNC=H CLCO=L >>> на шине адреса-данных появилось значение #0002 (адрес следующей инструкции)
такт  88: DIN=H SYNC=L CLCO=H <<< цикл чтения из памяти - на адресной шине #0002 (защёлкнуто)
такт  89: DIN=L SYNC=L CLCO=L <<< пошёл DIN (/RD)
такт  90: DIN=L SYNC=L CLCO=H
такт  91: DIN=L SYNC=L CLCO=L
такт  92: DIN=L SYNC=L CLCO=H
такт  93: DIN=H SYNC=L CLCO=L <<< DIN закончился
такт  94: DIN=H SYNC=H CLCO=H <<< цикл чтения из адреса #0002 закончился
такт  95: DIN=H SYNC=H CLCO=L
; тут похоже начался режим HALT, т.к. ранее по адресу #0000 было прочитано слово #0000 (инструкция HALT)
такт  96: DIN=L SYNC=H CLCO=H <<< начался цикл безадресного чтения, чтобы определить откуда считывать вектор перехода на обработчик HALT
такт  97: DIN=L SYNC=H CLCO=L <<< цикл безадресного чтения
такт  98: DIN=L SYNC=H CLCO=H <<< цикл безадресного чтения
такт  99: DIN=H SYNC=H CLCO=L
такт 100: DIN=H SYNC=H CLCO=H
такт 101: DIN=H SYNC=H CLCO=L
такт 102: DIN=H SYNC=H CLCO=H
такт 103: DIN=H SYNC=H CLCO=L
такт 104: DIN=H SYNC=H CLCO=H
такт 105: DIN=H SYNC=H CLCO=L
такт 106: DIN=H SYNC=H CLCO=H
такт 107: DIN=H SYNC=H CLCO=L
такт 108: DIN=H SYNC=H CLCO=H
такт 109: DIN=H SYNC=H CLCO=L
такт 110: DIN=H SYNC=H CLCO=H >>> на шине адреса-данных появилось значение #0078
такт 111: DIN=H SYNC=H CLCO=L
такт 112: DIN=H SYNC=L CLCO=H <<< цикл чтения из памяти - на адресной шине #0078 (защёлкнуто)
такт 113: DIN=L SYNC=L CLCO=L <<< пошёл DIN (/RD)
такт 114: DIN=L SYNC=L CLCO=H
такт 115: DIN=L SYNC=L CLCO=L
такт 116: DIN=L SYNC=L CLCO=H
такт 117: DIN=H SYNC=L CLCO=L <<< DIN закончился
такт 118: DIN=H SYNC=H CLCO=H <<< цикл чтения из адреса #0078 закончился
такт 119: DIN=H SYNC=H CLCO=L
такт 120: DIN=H SYNC=H CLCO=H
такт 121: DIN=H SYNC=H CLCO=L
такт 122: DIN=H SYNC=H CLCO=H
такт 123: DIN=H SYNC=H CLCO=L
такт 124: DIN=H SYNC=H CLCO=H >>> на шине адреса-данных появилось значение #007A
такт 125: DIN=H SYNC=H CLCO=L
такт 126: DIN=H SYNC=L CLCO=H <<< цикл чтения из памяти - на адресной шине #007A (защёлкнуто)
такт 127: DIN=L SYNC=L CLCO=L <<< пошёл DIN (/RD)
такт 128: DIN=L SYNC=L CLCO=H
такт 129: DIN=L SYNC=L CLCO=L
такт 130: DIN=L SYNC=L CLCO=H
такт 131: DIN=H SYNC=L CLCO=L <<< DIN закончился
такт 132: DIN=H SYNC=H CLCO=H <<< цикл чтения из адреса #007A закончился
и далее оно опять уходит в #0000 и #0010...

P.S. кстати тут RPLY формируется из DIN почти без задержек (задержка на 2 каскада 74F00) и присутствует при "безадресном чтении" в том числе - т.к всё более менее работает, то надо полагать, что такой постоянный RPLY никому особенно и не мешает...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Микро-ЭВМ на КМ1801ВМ2

Post by Shaos »

Shaos wrote:А ещё надо прицепить буфер, который по DIN будет выдавать команду NOP и тогда можно будет счётчик адресов узреть, который бежит по всему адресному пространству - как раз то, чего и хотел добиться Lavr своей проверялкой :roll:
Добавил пару инвертирующих буферов 74LS240 и 16 переключателей - NOP бегает :)
VM2-stand-180224-2.jpg
но т.к. инструкция NOP возвращается всегда при наличии DIN (даже в случае "безадресного чтения"), то адресный счётчик начинает выполнять программу с адреса 0x00A0 (0240) :roll:

на фотке можно видеть, что я добежал до адреса #00FE (0000000011111110)

P.S. третью "крону" уже доедаю :mrgreen:
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Микро-ЭВМ на КМ1801ВМ2

Post by Shaos »

Shaos wrote:Теперь можно проверять процыки!
Проверил все пластиковые корпуса, что у меня были (КР1801ВМ2) - четыре штуки 1992 и 1993 годов - все рабочие! :)
Попробовал также парочку в белой керамике (КМ1801ВМ2) - 1989 и 1990 - и вот они ведут себя совсем неадекватно :(
Как будто застревают на адресе #00A0...
P.S. Из шести керамических нашёлся таки один полностью рабочий (см.ниже) - остальные жжёный мусор... :evil:
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Микро-ЭВМ на КМ1801ВМ2

Post by Shaos »

Прогнал на керамике вариант с нулями - после того, как он обратился к "безадресному чтению" (причём DIN обнулился только на 2 такта вместо трёх), он остановился (только CLCO чередовался на выходе и всё) - я предположил, что это из-за лишнего RPLY на "безадресном чтении" - поставил элемент ИЛИ, чтобы !RPLY формировался только если есть одновременно !DIN и !SYNC - на этот раз оно таки дошло до чтения из памяти (правда не на 40х тактах, а на 80х), RPLY в этот раз сформировался, но после этого оно опять застряло - видимо для керамики RPLY таки надо тактировать и задерживать...

P.S. После нескольких проб с триггером откатился обратно на ИЛИ и подключился к более стационарному питанию - из 6 керамических ВМ2, что у меня накопились, нормально полетел только ОДИН, остальные либо вообще толком не входили в цикл, либо при счёте показывали не все ноги (AD могут выборочно выгорать?)...
VM2-stand-180225.jpg
P.P.S. Лабораторный блок питания показал, что исправные экземпляры потребляют 280...320 мА и практически не греются, а неисправные - 330 и выше, а один изобразил 450 мА
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Микро-ЭВМ на КМ1801ВМ2

Post by Shaos »

Подцепил DOUT на формирование RPLY и получил очень интересные результаты при наблюдении за поведением шины в процессе ручного прогона подпрограммы из прошивки МК-85 :roll:
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net