Передовица » Hardware » ДЗУ » Исследование КНГМД 840

Исследование КНГМД 840

Этот текст - результат долгих ковыряний и проверок, но, как обычно, напоминаю:

! Текст не может считаться истинной в последней инстанции ! Маловероятно, что кто-то попытается проверить написанное здесь, поэтому даже простые ошибки могут долгое время оставаться неисправленными.

Контроллер 840-ки - пожалуй, самый сложный для анализа агатовский блок. Во всяком случае из тех, в которых я ковырялся. Что ещё хуже - его ошибки (или ошибки его программирования) могут быть приняты за сбои дискеты и понять - кто виноват - может быть сложно. В то же время - это очень изящный блок. Я не представляю себе, как его могли задумать таким и как авторам удалось отладить его работу - как программу секвенсора так и железо. В конце концов я решил написать небольшой, не очень технический, рассказ о том, как происходило изучение этой железки. Он помещён первым разделом в конце этой страницы.

Версии железа контроллера

Их существует минимум три. Первая версия у нас есть в виде схемы и в виде монтажной платы. Но живьём её никто из нас не видел. И нет фотографий. Её особенность состоит в том, что микросхема ПЗУ начальной загрузки работает через микросхему параллельных портов 580вв55, в то время как во второй и третьей версии ПЗУ подключено напрямую на шину ЦП через буферную микруху. Разъём дисковода с непривычной стороны. Каких либо других существенных отличий, во всяком случае в обработке данных, там не обнаружено.

Вторая и третья версии отличаются друг от друга только введением дополнительного формирователя сигнала записи (вторая версия выдаёт импульс длительностью около 250 нс, третья версия - 1 мкс). Под формирователь импульса занята микросхема 155аг3, которая во второй версии входила в формирователь частоты 4 МГц. В третьей версии её функцию в формирователе 4 МГц заменили несколькими свободными логическими элементами. Это изменение, скорее всего, было необходимо для некоторых моделей дисководов и/или для улучшения помехозащищённости. Обе версии собирались на одинаковых печатных платах, но у третьей версии больше десятка напаянных проводов.

Есть вероятность, что программа секвенсора в первой версии отличается от второй и третьей версий. Но так как мне доступна только вторая и третья версии контроллера, всё описанное относится именно к ним.

В дальнешем я так буду писать: "первая версия", "вторая версия", "третья версия". Это - моя собственная нумерация, подтверждённых официальных названий для всех трёх версий у меня нет.

Версии ПЗУ начальной загрузки

Их просто несколько, минимум две. В чём отличия - никто серьёзно не ковырялся, скорее всего просто оптимизация кода. Но версий может быть и больше: дело в том, что в коде есть небольшой пустой участок, примерно со смещения ¤50 по ¤5B, в котором попадается сигнатура автора "(C)PHILIPPOV" или "(C) PHILIPPO". Андрей Филиппов - инженер, разработавший 840-ку. Так же не забывайте, что последние 4 байта являются расширенной сигнатурой контроллера: ¤01 ¤02 ¤34 ¤02. Но могут быть и ¤FF FF FF FF, например, в ранних версиях контроллера.

840-ка одинаково успешно работает как в 7-й так и в 9-й архитектуре Агата.

Немного о таймингах

Я пишу везде округлённые числа: 4 МГц, 250 нс и т.д. Но нужно помнить, что все тактовые частоты идут от системного кварца: 14.3 МГц. 4 МГц получается делением системного кварца на 7 и умножением на 2. Таким образом основная тактовая частота контроллера - 4.09 МГц. Остальные частоты и интервалы подвержены этой же поправке.

Дальше идут отдельные большие разделы:

  • Немного лирики и истории. Сперва мне хотелось поместить сей текст в начале этой страницы, но он получился весьма долгим и от того был вынесен в отдельный раздел.
  • Общий обзор. Здесь собраны простые части: интерфейс с системной шиной, умножитель тактовой частоты, формирователи вспомогательных сигналов дисковода и всякое такое.
  • Формат MFM. Немалая сложность разбора связана с самим форматом записи. Если 140-ка использует Group Code Recording (GCR), процедуры кодирования и декодирования которого реализованы в драйвере дисковода, то в 840-ке используется Modified Frequency Modulation (MFM) и сложность контроллера обусловлена тем, что кодирование и декодирование MFM происходит именно в контроллере. Вы легко можете найти описание MFM в интернете, но в этом разделе я опишу особенности агатовской реализации MFM. Кроме того, не все найденные описания MFM мне понравились и я попробовал развернуть этот вопрос подробнее.
  • Секвенсор и канал обработки данных. Общее описание секвенсора. Здесь мы ознакомися с его схемой в общих чертах. Так будет проще понять следующие разделы.
  • Автомат кодирования и предкомпенсации записи. И программа его обслуживания секвенсором.
  • Программа декодирования данных чтения. И графическая диаграмма её работы.

Официальное по контроллеру (и немножко иных файлов неопределённой ценности)

Официальная документация находятся на страничке Контроллеры 840Кб

ВАЖНО: в первой версии схемы нумерация деталей отличается от второй и третьей ! Обычно, описания по программированию ссылаются на вторую или третью версии. Чтобы понять, к какой версии относится документ, нужно знать следующее: в описаниях регистров упоминаются микросхемы 580вв55. Если они названы D14 и D15 - это вторая или третья версия. Если D17 и D18 - это старый документ по первой версии.

Фрагмент документации по программированию контроллера. Две версии: оригинал DJVU и распознанный и тщательно проверенный практикой текст. Изложение материала заметно отличается от ФГ3.032.002 ТО7. Текст крайне полезный тем, что тут от начала до конца описан программный интерфейс контроллера. Ни убавить ни прибавить.

Принципиальная схема, версия третья. Нарисована самостоятельно, криво, но достаточно внятно, чтобы отремонтировать по ней несколько контроллеров. Карандашом показаны отличия от для второй версии. Позиционные номера микросхем взяты с потолка. Рисовалась до того, как удалось добыть официальные схемы. Ныне оставлена, в основном, на всякий случай.

Первая страница: входные цепи - системная шина и селектор адресов, который коммутирует различные части контроллера с системной шиной при обращении ЦПУ к контроллеру.
Вторая страница: то же самое + выходные цепи - буферные схемы интерфейса с дисководом.
Третья страница: схема канала кодирования/декодирования данных. Четвертая: подписи номеров микросхем на плате. Там высокое разрешение, так что видны и точные названия кристалов.

На моих схемах нет двух микросхем - кр580вв55а. Но все линии, которые к ним идут, показаны, например, так: "19.B4 \\ D14" - значит, кристалл D14, лапка 19, 4-й бит порта B. Либо так: "D14.C7" - это кристал D14, 7-й бит порта C. И ещё: из-за ошибки у меня получилось две микросхемы D6, поэтому одна из них позднее была переименована в D6'.

В нескольких коллекциях нам встречался текстовый файлик (иногда этот файл назывался "MFM Филипова"). Это расшифровка программы секвенсора, но с моими расшифровками она немного не совпадает (в районе режима записи). Возможно, эта версия использовалась с железом первой версии. Возможно, алгоритмически она такая же, но заточена под другое железо.

Небольшая программа на агатовском бейсике, моделирующая работу секвенсора в режиме чтения. Мне неизвестны ни автор программы, ни как ей пользоваться, ни правильно ли она работает. Либо её написали при попытке разобраться в работе автомата и тогда она имеет не очень много пользы. Либо её писал сам А.Филиппов, во время работы над контроллером и тогда она могла бы рассказать что нибудь интересное. Заметьте - это полуфабрикат: как минимум, для её работы нужно загрузить в ОЗУ прошивку секвенсора с адреса ¤6000 и что-то ещё интересное должно быть в ячейке ¤1258.

Использование материалов проекта agatcomp без получения предварительного письменного разрешения agatcomp запрещено.


Почта для обратной связи: mail@agatcomp.ru


Живое общение по теме Агата: Telegram группа Agatcomp.


Накопленные знания и проекты: тематический ФОРУМ.


© 2004-2024 agatcomp.su / agatcomp.ru

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *