МК85Р - Реплика знаменитого калькулятора

МК85.
       Под таким простым названием появилась в советские годы одна из первых (кстати с 16-разрядным процессором) советских микроЭВМ типа КПК. Не буду останавливаться на том, как создавалась эта машинка, информации полно в интернете, например, здесь. Скажу только, что появилась она практически из ничего, благодаря трудам замечательных инженеров и программистов тогда ещё советской закалки и партийным деятелям СССР. Что на ту пору у нас было? Много всего, и в том числе процессор Н1806ВМ2 - продолжатель серии К1801, только с пониженным энергопотреблением (и соответственно, пониженной частотой до 5 МГц -  комплементарные пары полевых транзисторов).



Несмотря на возраст (а выпускался 1801ВМ2 давно, и был хорошо отработан), в нём имелись замечательные передовые (даже для сегодняшнего дня) решения: одновременная обработка предыдущей и запись следующей команды (своеобразный конвейер), аппаратные (микропрограммные) команды умножения и деления (занимающие, правда, много тактов), специальные отладочные команды, 16-разрядная шина данных/адреса (которая экономила выводы), супервизор питания (что-то отдалённо напоминающее POR), возможность работы с теневыми устройствами и окнами  на шине. Выпускал этот процессор (и судя по всему, ещё выпускает в варианте 1836ВМ2) Ангстрем, а вот МК-85 не выпускается с 2000 года, хотя до сих пор за ним буквально гоняется куча народу. И тогда, при СССР, учёные и инженеры бежали и сметали с прилавка этот чудесный передовой прибор, хотя он и стоил немало.


       Итак, что же собой представляет МК-85? первым делом бросается в глаза противоречие: на передней панели написано микрокомпьютер, а на задней микрокалькулятор.


      Ответ прост: МК-85 - и то, и другое. У микроЭВМ есть 2 основных режима: калькуляторный, который позволяет вычислять в строку (заметьте, что не любой калькулятор сегодня позволяет это делать) и компьютерный под управлением BASIC (кстати, интерпретатор был создан специально похожим на BASIC FX-700P, как и внешний вид устройства, и наши разработчики очень горевали, что не смогли проявить большую свободу и фантазию - ограничил заказчик, правительство, кстати, очень важную деталь - порт ввода-вывода, наш МК85 так и не унаследовал от  FX-700P).
       Теперь от внешнего описания пора перейти ко внутреннему. Принципиальная схема МК85 (серийного варианта) приведена ниже (пробный вариант состоял из отобранных кристаллов Н1806ВМ2 (КА1806ВМ2) / Т243-2, контроллера ОЗУ, ПЗУ и клавиатуры на КН1515ХМ1-015 /T241-2-015, контроллера ЖКД на КН1515ХМ1-014 / T241-2-014, ОЗУ 2Кх8 КН557РУ9 / T244-2 и 2-х ПЗУ 8Кх8 типа КН563РЕ1 / Т242-2, какое-то небольшое число этих МК-85 опытного производства всё-таки разошлось по потребителям, судя по тому, что есть фото в интернете, но схемы принципиальной мне так и не удалось найти - если у кого есть, присылайте мне на kt972b(собачка)gmail.com).


     Сердце (точнее мозг) серийного варианта МК85 - процессор (я бы даже сказал, однокристальная микроЭВМ без внутренней памяти) Т36ВМ1-2 (он же - КА1013ВМ2, или КА1806ВМ2 + 1515ХМ1 в одном планарном кристаллоносителе)
(на рисунке, взятом здесь, видна разница между кристаллами КА1806ВМ2 и КА1013ВМ2, на последнем сверху и снизу исходного кристалла  КА1806ВМ2  добавлены зоны вентилей БМК)

содержит на борту контроллер клавиатуры, контроллер памяти, контроллер портов. Блок-схема этого процессора, найденная также на просторах интернета приведена ниже:

     Адресация памяти такая:
ПЗУ — 0x0000…0x3FFF, 
ОЗУ — 0x4000…0x41FF (для 16Kх8 ПЗУ, или  0x8000…0x81FF для  32Kx8 ПЗУ)
ОЗУ — 0x4000…0x405F, область "видео" ОЗУ 96 байт. 
     Адресация портов такая: 
VPT — 0x80…0xFF, область дисплейных портов
VRG — 0xE0 (позиция и тип курсора), 0b000CPPPP, если P(10)>11, то курсор выключен
VRG2 — 0xE8 (не меняется и при инициализации 0, видимо, для расширения)
     Память ROM  Т36РЕ1-2 (она же: КА1013РЕ1) на 32Kx8, однако используется её половина (вторая половина во многих образцах продублирована, вероятно, для увеличения выхода годных изделий).  Память RAM  Т36РУ1-2 (КА1013РУ1) организацей 2Kx8 в количестве 1 шт используется МК85 и в количестве 3-х шт МК85М, память особенно ничем не отличается от "обычных" 6116, кроме заявленного низкого энергопотребления (что, вероятно, сказывается на быстродействии) и интересного корпуса. По некоторым данным, максимальная частота МК85 - 2МГц (видимо, в обычном режиме для экономии питания она составляет 500...700кГц, по схеме ёмкость контура генератора при включении портов уменьшается на 2/3, этим переключением управляют выводы порта PP12...PP15).
       Внутренний контроллер клавиатуры задействует 3 линии порта вывода PP1, PP2 и PP3, которые делят условно клавиатуру на 3 части. При нажатии клавиши (кстати, каждая клавиша является по сути двойной, т.е. код будет 2 нуля из 7) сигнал поступает на входы процессора, где однозначно идентифицируется.
Т. о., формула клавиатуры: 3*С(2/7)=3*21=63 клавиши максимум для 7 входов KB2-KB8 (используется -54). Если не совсем понятно, смотрите Сочетания. Интерфейс контроллера клавиатуры - это порты:
       0х100 = 0b0000000c cccccc00            колонки KB8-KB2 
       0х102 = 0b00000000 0000rrr0            столбцы PP3,PP2,PP1 
     Контроллер ЖКД (по существу это контроллер обычного знакосинтезирующего дисплея на 12 знакомест размером 5х7 марки ИЖВ1-12/5×7 ) собран на Т36ВГ1-2 / КА1013ВГ2, которая является кристаллом КН1515ХМ1-014 / T241-2-014 с небольшими дополнениями в архитектуре (последовательная запись).

       0х104 = 0b00000000 00000000          конфигурационный регистр процессора
0 Направление PP3-PP1 (Входы если 1). Управляют столбцами клавиатуры.
1 PP7-PP4
2 PP11-PP8
3 PP15-PP12 переключают скорость RC генератора, 1 - максимальная частота.
4 Чтение PP1 на наличие импульса более 20 нс, 1 - был импульс, 0 - по записи в регистр
5-9 Конфигурация ПЗУ и ОЗУ.
10 Остановка  RC генератора, если 0, 1 записывается при появлении импульса на портах KB.
11 Делитель частоты процессора на 8, включен если 0, используется для управления клавиатурой и формирования задержек.
12 Режим энергосбережения, если 1.
Значение 0x500 по умолчанию после инициализации.

       Вот и всё, что было мне известно на момент начатия эмулятора. Не густо, но и не пусто).   


Эмуляция.
       Собственно, сама эта идея мне пришла в голову, когда я просматривал Молоток. Цены на МК-85 теперь "кусаются" ещё больше чем раньше. Экземплярчик, не в лучшем состоянии без полного комплекта стоит порядка 100-150$$. Да ещё беда, что предложений очень мало, и выбора практически нет. Да и разве станет гордый радиомучитель радиолюбитель покупать то, что интересно собрать самому, пусть даже оно не будет как заводское. 
Комплектующие.
       Процессор Н1806ВМ2 с Платана можно прикупить за 10...12$$. ОЗУ  КН557РУ9 не удалось найти в продаже, зато нашёл 537РУ9 около 5...6$$. С ПЗУ задачка сложнее:  КН563РЕ1 имеет масочную структуру (т.е. записывается при изготовлении), т.о. - не годится, надо что-то перешиваемое (РТ, РР, РФ) и конечно дорогой устаревший программатор (или "сделай сам"). Контроллеры экрана и ОЗУ, ПЗУ, клавиатуры на КН1515ХМ1-014 и  КН1515ХМ1-015, соответственно, можно достать только из неисправной МК85, однозначно надо замещать своими разработками. Дисплей ИЖВ1-12/5х7 уже давно не выпускается, и является настолько специфическим изделием, что даже непонятно, чем и заменить. Печатная плата - можно ЛУТ, а можно на заказ распечатают спецчернилами, недорого. 
       А что, если ПЗУ, процессор и, может быть ещё кое-что (я - жадный), объединить под "одной крышей" в производительном микроконтроллере? Можно, и дешевле, и корпусов меньше будет. Только вот, есть масса проблем: чтобы эмулировать один процессор другим надо как минимум:
      1)чтобы он был: на порядок мощнее (тактовая частота процессора должна быть в N раз больше частоты эмулируемого, где N - среднее кол-во тактов, необходимое для выполнения операций замещения + запас 5-10%);
      2)чтобы его периферийных ресурсов хватило для эмулируемых выводов, и, может, даже периферийных устройств.
      Поскольку раньше я много работал с сериями ATMega, выбор пал именно на них:

1. Эмулятор контроллера ЖКИ и самого дисплея: ATMega8 + дисплей 16х2 на HD44780 (лучше в COG-исполнении) - кстати эта связка может заменить штатный контроллер МК85 и дисплей (если тот потёк, например), т.е. старые МК85 с повреждённым экраном можно восстановить!
Разработан: поддерживает 2 режима - последовательный (как в МК85) и параллельный. Посмотреть можно здесь.

2. Системный контроллер со встроенными ПЗУ 16-32 кБ и ОЗУ 2кБ (а также блок клавиатуры, управление режимами, энергопотреблением): пока в стадии разработки, но уже ясно, что он будет в себя включать ещё и контроллер дисплея.
Посмотреть можно здесь.

3. Процессор, решено пока взять готовый Н1806ВМ2. С ним проще будет отладить остальные узлы системы.
В разработке...

3.
В зависимости от п2.

Итого, имеем: 2 или 3 корпуса (если не считать самого контроллера экрана).






Комментариев нет:

Отправить комментарий