Я приветствую читателей на своем канале и продолжаю рассказ о самодельном 8-разрядном компьютере КРИСС СР/М
В первой части я немного рассказал о причинах разработке такого "примитивного" компьютера и возможностях его использования. В недавнем обновлении первой части я добавил видео примера графики и игры Xonix
Во второй части я рассказал о концепции а также опубликовал схемы компьютера
В третьей части более подробно рассказано об основных узлах компьютер периферии
Четвертая часть посвящена особенностям программной эмуляции процессора Z80
Итак я продолжаю рассказ о компьютере #КРИСС ср-м
Сборка и наладка устройства
Компьютер имеет одноплатную архитектуру, он собран на плате из фольгированного с двух сторон стеклотекстолита толщиной 1,5 мм с металлизированными отверстиями. Толщина платы важна для монтажных панелей. Чертёж печатной платы устройства приведен на рисунках 1а и 1б
Изменения на схеме
При подготовке окончательного варианта печатной платы в схему были внесены незначительные изменения, не затрагивающие общих принципов работы, но повышающие надёжность и обеспечивающие удобство сборки:
— добавлены дополнительные блокировочные керамические конденсаторы в цепи питания ёмкостью 0,1 мкФ, на плате они имеют позиционные обозначения С38—С40;
— вывод / RST (вывод 1) микроконтроллера DD 11, левый по схеме вывод резистора R 15 и верхний по схеме контакт разъёма ХР9 подключены к выводу порта РС2 (вывод 25) микроконтроллера DD 8, вследствие чего у него освободилась шина lz C для случая использования видеоконтроллера как отдельного устройства;
— задействована вторая половина сдвоенного счётчика DD 10 со счётным входом — выводом 13, а не первая половина, как на схеме рис. 3;
— изменилась структура подключения многофункционального разъёма ХР7, новая цоколёвка подобрана так, что для максимально простого варианта устройства, "лайт"-версии, вместо запланированного разъёма MD 8 F может быть установлен MD 6 F с возможностью прямого подключения клавиатуры без дополнительных переходников. Новая цоколёвка разъёма приведена в табл. 1 (через дробь указан номер вывода для MD 6 F ), при использовании разветвителя необходимо соответствующим образом скорректировать его подключение.
Кроме того, генератор тактовых импульсов частотой 25,175 МГц должен иметь позиционное обозначение G 2, а не G 1 , разъём " LAN " HR 91 1105А должен иметь позиционное обозначение А2, а не А1, как указано на схеме
Расположение элементов на плате показано на рис.3
Сборка устройства
Сама сборка устройства особенностей не имеет, но есть несколько моментов, на которые нужно обратить внимание, они помогут упростить сборку и придать изделию законченный вид.
В устройстве применены микросхемы в корпусах DIP , выводные резисторы мощностью рассеяния 0,125 (1/6) Вт, керамические конденсаторы с расстоянием между выводами 2,54 мм ёмкостью 0,1 мкФ и 20 пФ, с расстоянием 5,25 мм — ёмкостью 1 мкФ. Сопротивление резисторов может быть немного изменено, например, можно применить все резисторные сборки сопротивлением 2,2 кОм, резисторы в цепях линий RESET ( R 1 1, R 13, R 15) сопротивлением 4,7—10 кОм, в цепях подтяжки линий INT сопротивлением 2,2—4,7 кОм. Ёмкость оксидного конденсатора С2 (1000 мкФ) может быть в пределах 470—1000 мкФ, а ёмкость конденсаторов С22, С23, С35, С36 (20 пФ) — в интервале 18—22 пФ. Ориентируйтесь на документацию к соответствующим микросхемам. Микроконтроллер ATtiny 13 ( DD 11) можно использовать на частоту 20 или 16 МГц, поскольку его рабочая частота — около 13 МГц. Его может заменить МК ATtiny 13 A - PU . В компьютере применена микросхема ОЗУ W24512 A -15, которая заменима W 24512 A -10. Диод SR 260 ( VD 7) можно заменить на SR 160, он чуть меньше по размерам.
Индикаторные светодиоды HL 2— HL 5 предназначены для индикации режимов работы на лицевой панели устройства. Есть несколько вариантов их монтажа. Самый простой вариант — использовать любые маломощные светодиоды диаметром 3 мм, изогнув их выводы под углом 90° и рассчитав положение так, чтобы центр линзы был на высоте 5 мм от платы. Более красиво будет выглядеть установка специальных монтажным стоек LED -301( B ) или уже готовых сборок L -934**/1* D фирмы Kingbright . Но тут есть нюанс: яркость свечения светодиодов этих сборок небольшая, поэтому можно уменьшить сопротивление резисторов в цепях их подключения ( R 8, R 9, R 1 2) до 1,5 кОм. При установке отдельно монтажных стоек для распространённых типов светодиодов их придётся рассверлить сверлом 4,5 мм из-за "юбки". Специальные же светодиоды для стоек L -934** не отличаются от предустановленных в вышеупомянутые стойки. Отверстия в панели рекомендуется закрыть световодами.
Сборку устройства начинают с монтажа слота для SD -карт, после чего устанавливают все остальные компоненты, кроме предохранителя F1. Микроконтроллеры, микросхемы ОЗУ и ПЗУ рекомендую устанавливать на панельки, сами микросхемы устанавливают после сборки и предварительных процедур налаживания.
Устройство рассчитано на сборку в стандартный корпус GAINTA G 738, в лицевой и задней панелях вырезают отверстия по чертежу на рис.3 и наносят необходимые надписи. При заказе изготовления выбирайте толщину панелей 2 мм. Плату фиксируют винтами М3 с диаметром головки 5,2 мм. Это чуть меньше стандарта, но такие винты легко доступны. Под каждый винт укладывают изолирующую шайбу из волокна/картона диаметром 5 мм. На нижнюю часть корпуса рекомендуют приклеить ножки, для этого идеально подходят защитные мебельные протекторы из ПВХ.
На верхней крышке устройства в центре закрепляют динамическую головку, её приклеивают за монтажные выступы или по периметру клеем "Момент". К плате головку подключают тонким двойным шлейфом с разъёмом на конце. Разъём для подключения может быть любой с шагом контактов 2,54 мм. Если не устанавливать разъём ХР10 подключения внешней динамической головки (обычно он не нужен), то комфортно размещается разъём CWF -2. Провод подключения делайте достаточно длинным, чтобы при открывании крышку корпуса можно было убрать в сторону без отключения головки. Сама динамическая головка — любая миниатюрная, максимально плоская, с сопротивлением катушки 8 Ом и мощностью 0,5—2 Вт. С заявленными на схеме элементами громкость звука достаточно большая, для домашнего применения можно уменьшить сопротивление резистора R 18 до 47 кОм, сопротивление резистора R 17 (56 кОм) может быть в интервале 10—56 кОм. Звук "меандровый”, но приемлемый, немного улучшает качество звука тонкая поролоновая прокладка толщиной 1 мм между диффузором и крышкой корпуса.
Устройство подключают к сети переменного тока 230 В шнуром с выключателем, на который одевают резиновый проходной изолятор (кабельный ввод) диаметром 4 мм. Мощность устройства небольшая, поэтому прекрасно подходят бытовые кабели для бра — они тонкие, гибкие и весьма надёжные. Для подключения к плате используют соединитель кабель—плата WF -4 с шагом контактов 2,54 мм (используют крайние два контакта) или PHU -2 с шагом 5,25 мм. Первый вариант удобнее, хотя и не предназначен для коммутации высокого напряжения, в нашем случае это решено использованием только двух крайних контактов четырёхвыводного разъёма.
Налаживание устройства
После подачи питания проверяют напряжение на выходе AC / DC преобразователя А1, оно должно быть в интервале 5...5,2 В с пульсациями, не превышающими 100 мВ. Такие преобразователи за много лет работы зарекомендовали себя с положительной стороны и отказы у оригинальных изделий не встречались.
Далее на двухвыводный разъём, установленный около сетевого разъёма, подают питание +5 В от лабораторного источника питания и проверяют потребляемый устройством ток, который не должен превышать 100 мА. После этого проверяют напряжение питания контрольных точек 3,3 В и наличие генерации импульсов 25,175 МГц в контрольной точке " F " рядом с генератором G 2.
Если всё в норме, то предохранитель F 1 устанавливают на плату, и сборку можно считать оконченной.
Рекомендую сборку производить, начиная с минимальной работоспособной конфигурации. Внешний вид собранной платы в такой минимальной конфигурации, на которой отсутствуют "опционные" элементы, показан на рисунке в заголовке статьи. В этом случае не устанавливают микросхему ЧРВ DS 1305 N ( DD 4), контроллер Ethernet ENC 28 J 60 ( DD 6), преобразователь уровней МАХ232СРЕ ( DD 7), микросхему ПЗУ 25 LC 1024- l / P ( DS 2), стабилизатор LD 1 117-33 ( DA 2), разъём " LAN " HR 911105 A (А2), кварцевые резонаторы 32768 Гц ( ZQ 1) и 25 МГц ( ZQ 3), резисторы R 14, R 23— R 28, конденсаторы С17, С18, С24—С27, СЗЗ— С37, дроссель L 2 и элемент питания G 1 .
Если устройство сразу собирают в варианте с сетевым контроллером, есть особенность установки резистора R 14 — на плате он разведён как два параллельных резистора и обозначен как R 14*. Дело в том что микросхема ENC 28 J 60 ( DD 6) имеет несколько так называемых ревизий. Для устаревших версий требуется резистор сопротивлением 2,7 кОм, для более современных — 2,32 кОм (по документации). При сборке сначала устанавливают резистор сопротивлением 2,7 кОм, после запуска устройства и проверки версии микросхемы ( REVID ) при значении 06 параллельно ему устанавливают резистор сопротивлением 16 кОм. Заранее узнать номер ревизии возможности нет. Номинальное сопротивление резисторов R 23— R 26 по документации к микросхеме ENC 28 J 60 — 49,9 Ом, такие резисторы доступны в исполнении для поверхностного монтажа (на них написано 49 R 9). Разводка платы допускает установку этих резисторов как выводных, так и поверхностно монтируемых типоразмера 0805 или 1206. В случае их отсутствия можно установить резисторы ближайшего стандартного номинала (51 Ом), точного соответствия спецификации при этом не будет, но работоспособность сохранится.
Если запланировано подключение принтера, как альтернативу необходимости сборки переходника-разветвителя можно установить разъём ХР7 MD 6 F для прямого подключения клавиатуры, а разъём ХР10 использовать для порта RS -232, перерезав дорожки, ведущие к усилителю мощности DA 3, и соединив его контакты перемычками со стороны монтажа с выводами 4 и 7 ХР7 или соответствующими выводами микросхемы DD 7.
Программирование микроконтроллеров
Микроконтроллеры (МК) необходимо предварительно подготовить, установив разряды конфигурации и загрузив микропрограммы стартовых загрузчиков (далее будем называть их бутлоадерами), кроме МК ATtiny 13 ( DD 11), который прошивают сразу. После этого для изменения микропрограмм их доставать уже не потребуется, поэтому при желании после подготовки их можно запаять в плату без колодок. Настройка разрядов конфигурации (FUSE-bit) приведена в таблице. Не забывайте, что сначала надо загрузить прошивку бутлоадера, а только потом устанавливать конфигурационные разряды, поскольку все МК работают или с внешними тактовыми импульсами, или с внешним кварцевым резонатором.
После прошивки и установки разрядов конфигурации микросхемы устанавливают на плату. Стандартный цикл первоначальной загрузки устройства такой:
— МК формирователя синхроимпульсов стартует в обычном режиме, возможности его перепрограммировать нет, МК видеоконтроллера может остановить его работу сигналом / RESET ;
— МК видеоконтроллера стартует в рабочем режиме с выводом на экран приветственного сообщения из EEPROM ;
— МК контроллера внешних устройств (КВУ) стартует в режиме бутлоадера и ждёт команды от МК ЦП;
— МК ЦП выдерживает паузу 1 с для инициализации внешних и наплатных устройств, что сопровождается индикацией светодиода " SYS ", после чего ожидает на командном порту UART 0 сигнала на программирование 1 с, не получив его, формируется короткий звуковой сигнал и выдаётся команда на старт КВУ, через 1 с после этого запускается основная программами ЦП.
После запуска системы в МК, которые имеют только бутлоадеры, нормальным поведением является мигание светодиода " SYS " в течение 1с, короткий звуковой сигнал, и далее всё повторяется.
Для программирования необходимо использовать стандартный преобразователь UART — USB (именно UART , а не RS -232!). Программирование выполняют с помощью специальной консольной программы под ОС Windows , для запуска необходимо использовать стандартную консоль cmd.exe или менеджер FAR . Для программирования выполните действия в следующем порядке:
— подключите устройство к линии питания 230 В, но не включайте его;
— подключите преобразователь к разъёму ХР1, соблюдая назначение выводов (1 — TxD , 2 — RxD , 3 — GND ), обычно порядок подключения справа— налево (по расположению элементов на плате рис. 8) по цветам преобразователя такой: белый (вывод 1) — зелёный (вывод 2) — чёрный (вывод 3); красный не используется и должен быть надёжно заизолирован;
— подключите преобразователь к порту USB компьютера с ОС Windows любой версии, убедитесь, что все драйверы установлены, посмотрите в конфигурации оборудования номер назначенного COM -порта, если есть возможность, поменяйте его на 15;
— из пакета установочных программ запустите файл upload _ start.bat , заменив в нём "15" в первой строке сразу за именем исполняемого файла на свой номер СОМ-порта;
— программа выведет служебные сообщения и перейдёт в режим ожидания;
— включите устройство выключателем на шнуре питания;
— если всё сделано правильно, начнётся процесс программирования, каждый переданный пакет сопровождается звуковым сигналом устройства;
— после успешного окончания работы программы прошивки (обычно это занимает одну—две минуты) отключите питание устройства и отключите переходник UART — USB .
На этом процедура подготовки устройства к работе практически завершена. Имейте в виду, что выводы UART 0 МК ЦП используются в работе, поэтому оставлять переходник подключённым категорически не рекомендуется. Программирование идёт в режиме реального времени с контролем таймаутов, иногда возникают сбои. Если программа зависнет или не доработает до конца, перезапустите процедуру программирования.
Впоследствии обновления устанавливают по аналогичной процедуре, но загрузка идёт уже не полная, а выборочная, только изменённых компонентов. Bat -файл для каждого случая или настройки программы включается в состав пакета обновлений.
Запуск и загрузка
Подключите к устройству клавиатуру PS/2 и включите питание. Устройство должно вывести сначала тестовый экран VGA -контроллера, потом загрузочный экран системы (рис. 4). На этапе загрузки опрашивается установленное периферийное оборудование и выполняются базовые настройки.
Как было описано в разделе про описание видеоадаптера, качество работы зависит от точности тактовых частот 20 и 25,175 МГц. Если изображение на экране нестабильно, с пропуском символов или, наоборот, с лишними пробелами (это как раз бывает при сильном отклонении номиналов частот кварцевых резонаторов от заявленных значений), рекомендую попробовать поменять кварцевый резонатор 20 МГц и генератор 25,175 МГц.
Для работы необходим загрузочный образ SD -карты, который может быть либо записан из тестового образа в комплекте программ (рекомендуется для этой процедуры использовать программу Win 32 Disklmager ), либо подготовить его самостоятельно, воспользовавшись описанной ниже процедурой.
Сначала в отдельный каталог установите файловый менеджер FAR и плагин Multiarc к нему. FAR не требует установки и работает из любого каталога. В настройках плагина в файл Plugins \ MultiArc \ Formats \ custom . ini добавьте в конец файла настройки для работы с образами дисков СР/М, которые будут иметь расширение .срт (см.табл).
Далее скачайте и установите бесплатный пакет программ cpmtools , необходимо установить его в корневую папку диска / cpmtools , добавив этот путь в системный PATH . В файл конфигурации пакета diskdefs добавьте настройки для работы с образами дискет 819 кБ, которые как базовые используются в данном проекте (табл.).
Вместо оригинального можно использовать немного скорректированный вариант пакета, в котором добавлена работа с файлами, записанными в системе прописными буквами. Это не ошибка, в СР/М такое не допускается, но на практике иногда встречается.
Перезапустите FAR и откройте в нём пустой образ дискеты из комплекта программ fdd 819. cpm . Если все настройки выполнены правильно, откроется пустой каталог. Скопируйте в него необходимые программы.
Для работы с SD -дисками служит специальное приложение под MS Windows R1715 sd.exe , при вызове которого необходимо указать букву диска, ассоциированного с SD -картой. Если вы используете карту первый раз, то необходимо на неё программой Win 32 Disklmage.exe записать любой файл в виде образа. Он использоваться не будет, но разрушит форматирование и даст знать программе, что это не "обычная" SD -карта. При попытке записать на отформатированный диск программа выдаст ошибку — минимальная защита.
Организация SD -карты включает блоки предзагрузки и образы дискет, каждый имеет своё название, своё название имеет и каждая карта. После запуска список команд можно посмотреть, набрав знак вопроса В названиях можно использовать русский язык, консольные программы работают в кодировке СР866, аналогичной кодировке КРИСС. Типовые команды работы с программой (в планах подключение к multiarc , но пока не реализовано):
— форматирование карты: f Имя карты — инициализирует карту для дальнейшей работы;
— загрузка загрузочного блока: задайте имя блоку командой n fO [имя загрузочного блока], после чего загрузите образ из файла командой р 00 имя_ файла;
— загрузка образа дискеты: задайте имя дискете командой п 01 [имя дискеты], после чего загрузите образ из файла командой s 00 имяфайла;
— загрузите образы других дисков при необходимости наборами команд: п 02/р 01, п 03/р 02 и т. д.;
— посмотреть содержимое карты можно командой d .
По умолчанию дискета s 00 считается вставленной в дисковод A :, s 01 — в дисковод В:. Дисководы С: и D : в текущей версии загрузочного образа не используются. На карту можно записать до 32 образов дискет, переключение осуществляется через системную консоль, вызываемую после загрузки ОС комбинацией клавиш Ctrl - Alt - Del .
При загрузке компьютера карта должна быть вставлена до включения питания, после инициализации будут показаны имя карты и имя загрузочного образа. Если необходимо поменять карту во время загрузки, то после смены карты нажмите ввод и карта снова реинициализируется. Укажите номер загрузочного блока "О" и нажмите ввод. После загрузки ОС появится приветственное сообщение СР/М "А:". Вы теперь внутри ОС, можно работать — принципы работы в ОС СР/М многократно описаны, см., например, [5]. Перезагрузка, напомним, выполняется в любой момент комбинацией клавиш Ctrl - Shift - Alt - ESC .
КРИСС СР/М корректно работает с большинством программ, написанных для СР/М, в частности для Robotron 1715, но есть и особенности, которые будут описаны далее в разделе про системное программирование.
Дополнительная информация
Немного дополнительной информации, которая может быть полезна.
Начнём с ресурсов МК. Как было сказано в начале статьи, все МК работают с загрузкой, близкой к максимальной, поэтому дальнейшая оптимизация не производилась. Небольшая сводка по задействованию аппаратных ресурсов приведена в таблице, где приведён или процент использования, или сколько ресурсов из имеющихся задействованы, IRQF обозначает использование флага прерывания без обработчика. Загрузка достаточно плотная.
При желании реализовать обработчик манипулятора мышь на МК DD 5 следует быть крайне осторожным. С одной стороны, выводы GPIO могут быть использованы, и для работы есть свободное прерывание PCI . Но в текущей версии прошивки этот МК обрабатывает поток SPI -запросов от МК ЦП в режиме реального времени, без сигнала подтверждения обработки. Это значит, что задержка между отправляемыми байтами должна быть такой, чтобы гарантировать их обработку. Этот МК обрабатывает два прерывания: от клавиатуры INTO и от канала SPI , причём клавиатурное имеет больший приоритет, возможную задержку надо учесть. Сейчас это прерывание минимизировано, насколько это возможно, даже размещено в области векторов прерываний, чтобы исключить лишнюю команду перехода rjmp , но всё равно с учётом времени входа/выхода из прерывания, входа/выхода прерывания SPI при пакетной отправке в МК ЦП приходится вставлять задержку для стабильной работы. При реализации ещё одного обработчика эта задержка неизбежно возрастёт, что несколько снизит производительность МК ЦП, особенно в части вывода на экран. Как альтернативный вариант можно рассмотреть подключение мыши через дополнительный МК с подключением на шину I2С МК КВУ, что позволит вынести опрос в асинхронный режим.
На плате предусмотрено несколько разъёмов, в частности ХРЗ и ХР5. Их можно использовать при необходимости обновления микропрограмм бутлоадера МК DD 1 и DD 5 без демонтажа микросхем, но использовать этот путь нужно с осторожностью и только когда нет других возможностей, например, установив микросхемы на колодки. Порядок программирования МК DD 1 такой:
— устанавливают перемычку на разъём ХР5, тем самым блокируется работа МК DD 5;
— к контактам 2—6 разъёма ХРЗ подключают ISP -программатор и загружают микропрограмму.
Такой вариант имеет риск, что МК DD 5 может воспринять команды как "свои" и некорректно их обработать, поэтому, возможно, процедуру придётся повторить. Для программирования DD 5 процедура аналогична:
— контакты 1 и 5 разъёма ХРЗ замыкают с его контактом 6, блокируя работу МК DD 1 и DD 8;
— к разъёму ХР5 и контактам 2—4 разъёма ХРЗ подключают ISP -программатор и загружают микропрограмму.
Сменить прошивку МК DD 8 аналогичным образом возможности нет. ISP -программирование МК DD 11 выполняется после замыкания контактов 1 и 5 разъёма ХРЗ с его контактом 6 и установки перемычки на контакты разъёма ХР5, все необходимые сигналы выведены на внешние разъёмы. Это единственный способ смены микропрограммы МК DD11.
А вот видео сборки компьютера КРИСС СР/М (не мое)
Файлы к статье
Печатная плата в Sprint Layout
Комплект микропрограмм файлов начальной прошивки в одном архиве, bat-файл в комплекте
CP/M 2.2 на базе ОС SCPX компьютера Robotron 1715
Пакет программ CPMTOOLS, преднастроенный для работы с образами дискет 819 кБ - официальный релиз
Программа для управления образами SD-карт