Ленинград-3.1. Сборка первого самодельного компьютера
Эта история окунается в ещё более давние времена — 2011 год. Именно в этом году у меня появился первый собственноручно собранный компьютер. До этого я на такие серьёзные вещи не замахивался и опыта не имел. Но надо было когда-то начинать.
Так как моим первым компьютером был «Робик» (отечественный клон ZX-Spectrum 48k), то и решено было начинать с чего-то подобного. А уже потом замахиваться на что-то более сложное и масштабное.
В итоге, я остановился на компьютере «Ленинград-3» . Не потому, что хотел именно его собрать. Просто так совпало, что в тот момент проходил поиск всех желающих поучаствовать в заказе производства печатаных плат именно этого компьютера. И я не смог обойти это событие стороной. Да, это была заводская, а не самодельная плата. Так что если у меня спросить: какой же был твой первый собственноручно собранный компьютер? То я без малейшего промедления отвечу: зелёный, как крокодил. Именно такого цвета была паяльная маска у печатной платы. Но, обо всём по порядку.
Описание изменений
За основу конструкции взят компьютер «Ленинград-2», разработанный в 1991 году, в который были внесены следующие изменения (цитирую автора):
- Добавлен корпус 2ИЛИ-НЕ (ЛЕ1). На трех элементах собрана доработка сигнала WE, необходимая для нормального функционирования расширения до 128 кБ. На одном элементе выполнен инвертор сигнала H2, необходимый также для схемы расширения до 128 кБ.
- На системный разъем выведены входные и выходные сигналы для расширения до 128 кБ.
- Изменено положение кварцевого резонатора.
- В разрыв сигналов ROM CS добавлены диоды VD22 и VD23. Сделано это для возможности использования как двух корпусов 8Kx8 (2764), так и одного корпуса 16Kx8 (27128) в режиме 48 кБ. В первом случае VD23 следует не впаивать, а во втором случае ROM 27128 следует установить на место DD48 и использовать оба диода.
- Добавлены резисторы в разрыв некоторых сигналов, которые пропускаются через схему расширения до 128 кБ. Их номиналы в 330 Ом, указанные на схеме, нужно изменить. Изначально номиналы были выбраны по аналогии с разрывом сигнала IORQ при подключении контроллера дисковода. При этом номинал этого резистора составлял 470 Ом. При установке этих дополнительных резисторов с номиналом 330 Ом, сигналы стали «не доходить» и это негативно повлияло на формирование изображения и вообще на работоспособность машины. Пока я их не подбирал, а вместо них просто поставил перемычки.
- Клон планировалось сделать двухмодульным. Второй модуль, представляющий из себя плату, подключаемую к системному разъему содержал(бы) схему расширения до 128 кБ. Установлена плата — 128 кБ, не установлена — 48 кБ. Но это так и осталось неосуществленной идеей. Все новые сигналы на схеме отмечены красным цветом, новые элементы — зеленым.
Ревизия «Ленинград-3.1» является больше номинальной и, как таковых, отличий от «Ленинград-3» не несёт.
Вообще, особенностью компьютеров серии «Ленинград» является достаточно сильное упрощение схемы, что не лучшим образом сказалось на совместимости с оригинальным компьютером ZX-Spectrum от Sinclair Research. С другой стороны это был один из самых массовых клонов.
Схема компьютера
Схема компьютера «Ленинград-3.1» со всеми исправлениями на 06.03.2011 приведена ниже:
К сожалению, исходного файла в формате программы SPlan с внесёнными исправлениями у меня нет. Но можно скачать архив с авторской версией и списком опечаток. В архив так же добавлено и приведенное выше изображение.
Описывать схему компьютера я здесь не буду. Но оставлю ссылку на брошюру «Техническое описание работы компьютера ZX-Spectrum (Ленинградский вариант)». Документ так себе, но может кому-то будет интересен. Взят отсюда.
Если внимательно посмотреть на схему, то может возникнуть вопрос о подключении динамика. Ведь на схеме динамик — левитирует! Злые языки утверждают, что если приземлить открытый контакт динамика на коллектор транзистора, то ему может поплохеть из-за большой величины тока в обмотке во время открытия транзистора. Другие же твердят, что ничего страшного не произойдет. Третьи предлагают между коллектором и динамиком поставить конденсатор…
Тем не менее, если всё-таки взять небольшой динамик с сопротивлением обмотки 8 Ом и соединить его напрямую с коллектором транзистора, то при питании 5 В и уходе транзистора в насыщение получим ток 625 мА (если пренебречь потерями на переходе коллектор-эмиттер и считать динамик чисто активным сопротивлением), а рассеиваемую мощность — 3,12 Вт. Тут, как говорится, и транзистор погибнет и динамик может не пережить. Такое себе решение. Можно, конечно, попробовать динамик заменить на пьезоизлучатель, ведь он имеет куда большее сопротивление от сотен Ом до нескольких тысяч Ом.
С другой стороны, если посмотреть на плату компьютера (и не обращать внимание на шелкографию транзистора VT2), то можно предположить, что коллектор транзистора подключен к плюсу питания, база — к контакту «Audio» разъёма X5, а эмиттер — к единственной никуда не ведущей контактной площадке (динамику). А ведь это же эмиттерный повторитель! Соответственно, усилительный каскад будет повторять на выходе напряжение базы, усиливая только ток. На базу же сигнал поступает не напрямую с выхода микросхемы DD36, а через делитель напряжения R49, R50. Но всё-равно это решение мне кажется достаточно сомнительным при использовании с низкоомным динамиком.
Я же динамик к компьютеру вообще не подключал, так как не было необходимости. И даже транзистор не впаивал.
Печатная плата
Печатная плата имеет размеры 214 мм X 118 мм. Все используемые элементы — выводные. Что не удивительно, ведь устройство, по сути, является репликой компьютера из 1991 года.
Топология печатной платы приведена на рисунке :
Как можно видеть, на плате указана ревизия 3.2. Она отличается только мелкими исправлениями шелкографии. При этом, часть надписей переместились на переходные отверстия. В общем, такие себе исправления.
Если ссылка выше не работает, то архив с разводкой печатной платы в формате Sprint-Layout и GERBER-файлы для заказа платы можно скачать здесь.
В моём же случае плата была ревизии 3.1:
Сейчас меня не удивить заводской печатной платой, да ещё и такого качества. А на тот момент, после всех своих самоделок, я был просто поражён. И маска, и шелкография, и качественная металлизация отверстий, и лужёные площадки… Просто загляденье!
Сборка компьютера
Все купленные компоненты были рассортированы по пакетикам с пластиковой застёжкой и подписаны. Схема распечатана на принтере и склеена в один лист. Ну и ко всему этому приложена печатная плата. Получился самый настоящий радиоконструктор!
Самым смешным эпизодом в поиске комплектующих для компьютера была покупка микросхем памяти К565РУ5. После того как я поинтересовался о микросхемах, продавец перезвонила «главному продавцу» и поинтересовалась есть ли такие микросхемы в наличии и где они лежат? На что получила ответ, что он сейчас будет и просьба, чтобы я никуда не уходил.
Через пару минут, немного навеселе, появляется и хозяин лавки. Он сходу сообщил, что ему было крайне интересно увидеть того человека, который интересуется РУ-шками. И сразу же решил подколоть меня фразой: ты там что, синклер собираешь? После утвердительного ответа и его искреннего удивления, последователи истории и воспоминания из 90-х. О далеких поездках за радиодеталями, количестве брака и многом другом. В итоге, человек и воспоминаниями поделился и микросхемы памяти продал.
Но это было лирическое отступление. А теперь время переходить к непосредственной сборке компьютера.
Тут дело нехитрое. Каждый компонент вставляется в положенное ему место на плате и припаивается. Кто-то предпочитает первым делом запаивать резисторы с конденсаторами, а лишь потом микросхемы. Мне же нравится просто идти от одного угла или стороны платы к другому, отклоняясь по необходимости и оставляя установку разъёмов и других габаритных элементов на самый конец.
Плата компьютера практически собрана. Осталось вставить в панельку центральный процессор, подключить это всё к ТВ-тюнеру и подать питание.
На тот момент, я смог найти только советскую КМОП-версию микропроцессора Z80 под названием КМ1582ВМ2-0100. Продавец уверял, что работать в спектруме будет чуть ли не лучше, чем обычный процессор.
У микропроцессора КМ1582ВМ2-0100 больше всего меня удивила хлипкость выводов. Они были из настолько тонкого и мягкого металла, что гнулись от одного взгляда. Никогда и нигде я больше такого корпусирования микросхем не встречал. И да, в панельку такой микропроцессор вставить не так то и просто по всё той же причине.
Но, дело сделано. Процессор вставлен. Сигнал «Видео» подключен к композитному входу ТВ-тюнера. Питание подано. И… и ничего. Никакого изображения на экране не появилось.
Оказалось, что на плате перепутаны местами сигналы «Video» и «Green» в разъёме X5. Так что если решите повторять конструкцию — учитывайте это!
После правильного подключения, на экране (окно в правом нижнем углу монитора) таки появилось инвертированное нестабильное мерцающее изображение «матраца»:
«Матрац» отображается на экране при отсутствии микросхем ПЗУ и состоит из вертикальных полос на бумаге (центральной области экрана, PAPER). А своё название получил из-за визуальной схожести с советским матрацем для кровати. Впрочем, такие матрацы до сих пор ещё можно обнаружить как в старых вагонах пассажирских поездов, так и на базах отдыха, застрявших в далёком прошлом.
Правильный «матрац» выглядит как повторяющаяся последовательность пикселей и имеет определённую структуру: 8 точек чёрного цвета, 2 точки белого, 3 точки синего, 2 точки белого и 1 точка синего. Цвет бордюра (область вокруг листа, BORDER) — чёрный.
Несмотря на инверсию цветов и нестабильную синхронизацию, большая часть компьютера выглядит исправной. Осталось дело за малым — запрограммировать микросхемы ПЗУ.
Изначально закрадывались дурные мысли попробовать собрать ручной программатор. Но я быстро понял, что несмотря на всю романтику этого процесса, я всё же не настолько самурай. И программировать ПЗУ-шки тумблерами, как делали это особо отчаянные люди в далёком прошлом, выставляя побитно значение адреса и данных для прошивки каждого байта, не стоит. Не потому, что я могу ошибиться и все нужно будет начинать с начала. А потому, что были планы собрать и другие компьютеры. Да и тумблеров у меня столько не было. И вообще на дворе XXI век и не стоит уж так радикально перегибать палку. Так что, отложив в сторонку плату компьютера «Ленинград-3.1», я занялся сборкой программатора «Willem 3.1», которому будет посвящена отдельная статья.
Так как компьютер из 1980-х, то для полной атмосферности был укомплектован и соответствующими микросхемами ПЗУ. Теми самыми, с ультрафиолетовым стиранием. В корпусе этих микросхем имеется окошко, закрытое кварцевым стеклом, через которое можно увидеть сам кристалл. А если туда ещё и посветить ультрафиолетом с нужной длиной волны, то микросхема очистится от записанных в неё данных. Не сразу, конечно, а через некоторое время. Именно поэтому, после записи микросхемы ПЗУ, окошко необходимо заклеить каким-либо непрозрачным материалом. Например, кусочком изоляционной ленты.
Купленные на радиорынке микросхемы ПЗУ 27128 оказались неисправными. Так что ни в компьютер, ни в контроллер дисковода BDI (Beta disk interface) их поставить не получилось. Но имелись в наличии две микросхемы 2764 от неисправного советского матричного принтера, которые и были использованы в компьютере «Ленинград-3.1» в качестве ПЗУ.
Стирание микросхем постоянной памяти осуществлялось советской ультрафиолетовой лампой для загара. Светит она очень мощно и греет не менее интенсивно. Всё дело в том, что в качестве балласта для лампы используются инфракрасные излучатели (как в обогревателе). Поэтому, микросхемы приходилось относить на достаточно большое расстояние от лампы. Несмотря на все эти сложности, очистка микросхем прошла успешно, как и последующая запись.
А пока собирался программатор, на радиорынке был найден ещё один микропроцессор. На этот раз обычный, произведенный по NMOS технологии ST Z8400AB1. Его то я и определил в компьютер. Тем более, что с КМ1582ВМ2-0100, если память не изменяет, наблюдалась довольно нестабильная работа, а любые колебания питающего напряжения мгновенно приводили к зависанию.
После замены процессора и установки зашитых микросхем ПЗУ, на экране появилось стандартное приветствие. Компьютер ожил! Но проблема с синхронизацией и цветами никуда не исчезла.
Модернизация формирователя синхроимпульсов
После успешного старта компьютера необходимо было разобраться со срывом синхронизации. Оказалось, что проблема старая и давно известная. И если советские телевизоры ещё как-то могли «переварить» подобный сигнал синхронизации, то вот ТВ-тюнерам или более-менее современным телевизорам от него становится совсем плохо. Кадры скачут как при просмотре киноплёнки с поврежденной перфорацией.
Устранение данной неисправности описано в брошюре «Ленинград-2. Устранение недостатков» на стр.3 и рис.2. и состоит в уменьшении длительности синхроимпульса с 9 мкс до 6 мкс.
Я перерисовал приведённую схему, выделив красным цветом то, что необходимо добавить, а чёрным — уже имеющиеся в компьютере элементы.
В качестве инвертора была применена микросхема КР1533ЛН2, установленная на небольшой макетной плате. Доработка очень органично расположилась на свободном пространстве между микросхемами:
В результате доработки, изображение как на телевизоре, так и на ТВ-тюнере, стало стабильным. Рекомендую!
Восстановление правильных цветов
Помимо самой инверсии цветов, на выходах DD34 (К555КП14) был обнаружен инвертированный сигнал синхронизации с амплитудой 1,4 В.
Для того, чтобы разобраться в сложившейся ситуации, пришлось выпаять микросхемы DD34, DD44, DD45, DD46 и вместо них установить панельки.
При наблюдении осциллографом сигналов на отогнутых (когда соединение с контактом в панельке отсутствует) выходах микросхемы мультиплексора DD34 (К555КП14), ни какого сигнала синхронизации замечено не было:
При этом, на соответствующих входах DD44 и DD45 сигнал синхронизации также не наблюдался. А присутствовало лишь постоянное напряжение в районе 1,4 В — 1,6 В, как и должно быть на «висящем в воздухе» входе микросхемы.
Но если выходы DD34 соединить со входами DD44 и DD45, то в местах соединения сразу же появляется инвертированный сигнал синхронизации небольшой амплитуды. Так откуда же он там берётся?
А весь секрет в том, что мультиплексор КП14 переключает выходы в третье состояние (Z-состояние, отключение от схемы). И если посмотреть схему, то управляет этим самым переключением инвертированный сигнал синхронизации, поступающий с выхода инвертора DD21.2 на вход мультиплексора OE (DD34, 15 ножка). То, что на инвертор приходит именно сигнал синхронизации, можно легко понять, так как к этому же входу подключается и катод диода VD1 в формирователе видеосигнала. А как известно, именно «просаживанием» на землю сигнал синхронизации и подмешивается к яркостной составляющей чёрно-белого изображения.
Таким образом, мультиплексор, переводя выходы в третье состояние, позволяет входам микросхем DD44 и DD45 подтянуть напряжение до тех самых 1,4 В — 1,6 В. Вот и все чудеса. В итоге, мы и получаем на выходах мультиплексора инвертированный сигнал синхронизации с амплитудой около 1,4 В.
А теперь вернёмся к инверсии цветов. Для того, чтобы исправить данное недоразумение, необходимо использовать мультиплексор с инверсными выходами (или же с инверсным сигналом управления). Как показывает справочник, этим мультиплексором может быть как КП11 так и КП16.
Мультиплексор КП11 является полным аналогом КП14, но с инверсным входом для управляющего сигнала. Таким образом, все выходные сигналы так же инвертируются. А вот у КП16, в отличии от КП11, еще и выходы переводятся не в третье состояние, а в состояние логического нуля. Именно этот мультиплексор я и выбрал, дабы больше не созерцать на его выходах непонятные сигналы и не тратить время на размышления откуда они там могли взяться.
Кстати, в схеме компьютера «Ленинград-2» указан именно КП16 (а в скобках КП14). Но в той же схеме имелся и переключатель (или перемычка), притягивающий входы DD44 к земле, позволяя инвертировать сигналы уже на выходе DD44. Но в схеме «Ленинград-3.1» эта часть куда-то пропала, а в качестве мультиплексора вместо КП16 указан КП14. Это явная ошибка, которую стоит учитывать!
Кроме замены микросхемы мультиплексора, была осуществлена и замена подстроечных резисторов на более вменяемые. Предыдущие совершенно не были предназначены для того, чтобы их вращали. А во время экспериментов и поиска неисправностей крутить их приходилось не один раз, от чего пластмассовый шлиц ротора практически сразу пришел в негодность.
Результат проделанной работы не может не радовать:
Для получения цветного изображения, компьютер подключался к телевизору через PAL-кодер.
А для возможности ввода символов, на макетной плате была спаяна миниатюрная клавиатура из тактовых кнопок:
Таким образом, после доработки, цвета вроде бы восстановились. Но это только на первый взгляд. Да и изображение на экране оказалось каким-то тусклым.
Привязка к уровню чёрного
После замены микросхемы мультиплексора обнаружились новые проблемы. На этот раз с цветом BORDER’а. Он всегда чёрный, вне зависимости от выбранного значения. А вот отображаемый цвет PAPER’а начал зависеть от цвета BORDER’а.
Путем наблюдений выяснилось, что если какой-то компонент цвета в бордюре совпадает с тем же компонентом цвета у бумаги, то из цвета бумаги этот компонент вычитается. Немного непонятно, но сейчас поясню.
Рассмотрим это на следующих примерах:
- BORDER = 1 (синий), PAPER = 3 (пурпурный). Отображаемый цвета PAPER’а будет 2 (красный). То есть из пурпурного (синий+красный) вычитается синяя составляющая;
- BORDER = 3 (пурпурный), PAPER = 2 (красный). Отображаемый цвет PAPER’а будет 0 (чёрный), так как если из красного вычесть красную составляющую, то получится чёрный;
- BORDER = 3 (пурпурный), PAPER = 4 (зелёный). Отображаемый цвет PAPER’а будет 4 (зелёный), так как зелёной составляющей в BORDER’е не содержалось.
А ещё установленный цвет бордюра постоянно присутствовал на выходах 2, 5, 7 регистра DD36 (ТМ9). При этом если «болтающийся в воздухе» управляющий вход /R (вывод 1) регистра DD36 подтянуть через резистор к земле, то последние две строчки бейсиковского редактора, как и положено, окрашиваются в цвет бордюра, а цвет листа начинает соответствовать установленному. Сам же бордюр по прежнему остается чёрным. При загрузке на нём очень редко проскакивают полоски, а на бумаге никаких «шлейфов» от процесса загрузки не наблюдается. Дивные вещи.
Более наглядно сложившуюся проблему с изображением у компьютера «Ленинград-3.1» можно посмотреть на видео:
Теперь давайте разберёмся, что же такое привязка к уровню чёрного и зачем это надо? Небольшая цитата:
Немного про привязку к уровню черного (применимо к «Ленинграду» правильнее будет говорить «введение импульса гашения»). Этот страшный термин означает, что при обратном ходе луча сигналы на RGB-выходе компа должны показывать черный цвет, чтобы телевизор «запомнил» этот уровень и считал его уровнем черного цвета. В «Ленинграде» такого не было. Из-за этого на советских телевизорах в зависимости от цвета бордюра менялся цвет самого экрана, который внутри бордюра.
источник
О как! Так это же именно то, с чем я и столкнулся. Благо есть готовое решение для исправления данной ситуации (там же по ссылке выше), но оно для компьютера «Ленинград-1». А так как схемы компьютеров всё же отличаются, то просто так не задумываясь применить это решение в компьютере «Ленинград-3.1» не выйдет.
Поэтому мне пришлось перерисовать схему доработки под «Ленинград-3.1». Чёрным цветом, как и прежде, обозначена часть, которая уже имеется в компьютере (в том числе заменённый чуть ранее мультиплексор DD34 на КП16). А красным — изменения, которые необходимо внести добавить в компьютер.
В оригинальной схеме доработки указан триггер КР1533ТМ2, но у меня в наличии был только К555ТМ2. В принципе, особой разницы нет, какую серию применить.
Как и в случае с модернизацией формирователя синхроимпульсов, дополнительная микросхема установлена на кусочке макетной платы. А сама доработка на этот раз расположилась на свободном участке уже в верхней части платы под системным разъёмом:
В результате вышеописанных трудов, ширина управляющего импульса на 15 ножке мультиплексора DD34 значительно увеличилась:
Как следствие, у бордюра появился цвет. Правда появилась и новая проблема: не все цвета устанавливались. Пришлось снова смотреть регистр DD36 (ТМ9). И на его выходах не всегда наблюдалось то, что должно было быть. В качестве простого теста прицепил сверху на впаянную микросхему регистра еще одну такую же. И появились все цвета бордюра. Всё сразу стало понятно — микросхема неисправна.
После замены микросхемы DD36, компьютер «Ленинград-3.1» наконец-то заработал так как и положено.
Прошивки ПЗУ
К сожалению, дампы с прошивками ПЗУ я выложить здесь не могу, так как они защищены авторским правом и запрещены к свободному использованию в аппаратных клонах компьютера. Но их можно без труда найти в Интернете. В том числе и в комплекте с любым эмулятором ZX-Spectrum.
Стоит заметить, что есть и свободная реализация BASIC для ZX-Spectrum, выпущенная под лицензией GPLv2 — OpenSE Basic. К сожалению, я ей ни разу не пользовался. Поэтому и сказать ничего не могу. Но надо будет обязательно попробовать и узнать что оно такое.
Тест памяти
В процессе наладки компьютера может оказаться полезной отдельно прошитая ПЗУ с тестом памяти. Ну и не только памяти. По этой ссылке можно скачать архив, содержащий саму прошивку и описание работы теста. Не переживайте о размере дампа. В нём повторяется один и тот же тест через каждые 2кБ. Таким образом можно прошивать этот тест в ПЗУ любого размера, вплоть до 27512.
При исправной работе компьютера, на экран телевизора будет выведен вот такой результат:
Не стоит пугаться выведенных ошибок. Так и должно быть. Ведь стандартное ПЗУ не установлено. Но переживать нужно, если тест не дошел до этого места и вывел другую информацию о неисправности.
Этот тест для компьютера ZX-Spectrum не единственный. Существуют и другие тесты как для 48k так и 128k машин. Более подробно о них можно почитать здесь.
Выводы
Несколько советов для тех, кто всё-таки решится повторить описанную в статье конструкцию компьютера «Ленинград-3.1».
Не стоит начинать собирать компьютер не имея тестера микросхем мелкой логики. Качество советских микросхем, доступных простым смертным даже в то время оставляло желать лучшего. А уж через много десятилетий и говорить нечего. В моём случае выявилась только одна неисправная микросхема 555ТМ9. Да-да, без буквы «К» и с ромбиком. На фото видно. Вот вам и военная приёмка. При сборке других компьютеров отсеялось куда больше неисправных микросхем, которые добавили бы уйму головной боли при запуске.
Для прошивки микросхем ПЗУ понадобится соответствующий программатор. А для стирания — бактерицидная УФ лампа (UVC). Но можно использовать и аналогичные микросхемы ППЗУ, основанные на технологии FLASH. Тем более, что их можно добыть из старых материнских платах от компьютеров. Тут уже решать каждому. Лично мне приятнее заглянуть в душу микросхемы ПЗУ через кварцевое окошко.
В компьютере однозначно необходимо использовать в качестве DD34 мультиплексор КР1533КП16 (или К555КП16).
При подключении к телевизору необходимо учесть, что на плате у разъёма «Видео» (X5) перепутаны местами сигналы «Video» и «Green».
После сборки нужно быть готовым делать и описанные в статье доработки по модернизации формирователя синхроимпульсов и привязке к уровню чёрного. Сомнительно, что без этих доработок компьютер можно будет использовать.
Не стоит забывать и про отмывку печатной платы после пайки. Это необходимо делать сразу после окончания сборки, перед первой подачей питания. Я же это сделал уже после всех пуско-наладочных работ, что не совсем хорошо.
Компьютер «Ленинград-3.1» так и остался в виде платы, так как к моменту окончательной его отладки, мной уже был собран более продвинутый ZX-Spectrum совместимый компьютер «ZXM-Phoenix». Но это уже совсем другая история.