Transputer – уникальная серия микропроцессоров от компании Inmos, которая на рубеже 80-х и 90-х годов прошлого века оказала значительное влияние на развитие параллельных вычислений и программирования. Несмотря на то, что технология transputer оказалась относительно узкоспециализированной, сегодня энтузиасты ретро-электроники и разработчики любят возвращаться к ней, испытывая собственные возможности аппаратного обеспечения прошлого на современных ПК. Один из таких опытов – создание специально разработанной платы Transputer ISA, совместимой с популярным модулем Inmos B004, позволившей запускать старые программы и компиляторы на современной базе. В этом материале я подробно расскажу о ключевых этапах проектирования, разработке, изготовлении и тестировании подобной платы, а также о сложностях и достижениях, с которыми пришлось столкнуться в процессе работы. Начало проекта было вдохновлено моими прошлыми школьными и студенческими разработками программного обеспечения для transputer, выполнявшимися в период с 1993 по 1996 год.
Тогда я занимался компиляторами на языке Pascal и некоторыми экспериментальными программами вроде трассировки лучей. Недавно я создал эмулятор transputer на Javascript, который дал мне возможность изучить систему с нового ракурса, а затем возникла идея попробовать запустить реально существующие программы непосредственно на железе, подключенном к современному компьютеру. У меня оказалось несколько материнских плат с ISA-слотами, что положило начало самостоятельной разработке аппаратной части, способной работать с транспутерами. Целью стало создание карты, максимально совместимой с Inmos B004 – единой платой для тестирования микропроцессорного модуля transputer типа TRAM. Удача сопутствовала, и на eBay были приобретены два рабочих модуля TRAM с процессором Inmos T805, работающие на частоте 30 МГц, всего за 25 долларов каждый.
Зная адреса портов для взаимодействия с процессором из документации и сборников, таких как Geekdot, я разработал схему дешифратора на базе логических элементов TTL. Эта схема позволяла через стандартные порты ISA адресовать соответствующие регистры и управление платой. Tranputer модуль содержит сам процессор и его память и подключается к ISA-плате через специализированный контроллер Inmos C011, который сериализует и десериализует коммуникационный поток. Управление ведётся через порты 0150H-0153H, где читаются и записываются данные и статус. Дополнительно мной была добавлена схема с 5 МГц генератором тактового сигнала, два триггера для управления сбросом и режимом анализа транзитора, а также выход для чтения сигнала ошибки.
Поначалу я строил плату экспериментально, используя макетную плату и размещая компоненты с обратной стороны плат, что стало одной из причин проблем с питанием и даже выходом из строя нескольких микросхем из-за переполюсовки питания и неправильного монтажа. Этот опыт научил меня очень внимательно подходить к планированию физической сборки и разводке. В итоге удалось добиться стабильной работы и запустить старые программы, включая мой Pascal-компилятор и софт для трассировки лучей. После первого успешного эксперимента пришло время перейти к разработке полноценной печатной платы (PCB). Для этого я решил освоить KiCAD 9 – современный свободный инструмент для проектирования электроники, знакомый мне лишь поверхностно после прошлых экспериментов с OrCAD.
KiCAD уже включал компонент модели ISA шины, что значительно облегчило разметку интерфейса платы. Кроме того, мне пришлось добавить специализированные компоненты, такие как Inmos C011 и TRAM, которые были представлены в виде собственных библиотек с соответствующим выводом. Создание новых компонентов и назначение пинов позволило быстро собрать полнофункциональную схему. Процесс перехода от схемы к печатной плате был очень наглядным и увлекательным: достаточно было перенести компоненты из схемы в редактор PCB, расставить их по полю, и приступить к маршрутизации проводников. Для упрощения я использовал встроенный автороутер Freerouter, запускаемый через плагин KiCAD.
Некоторое время ушло на подготовку внешних ограничений, исправление ошибок проектирования, и тщательное соблюдение правил дизайна платы (DRC). После подготовки Gerber-файлов я воспользовался сервисом PCBWay, через который отправил дизайн на производственную площадку в Шэньчжэне. Возможность получить готовый комплект плат с цветной маской по демократичной цене и с бесплатной доставкой была на руку, так как у меня не было необходимости использовать сложные технологии изготовления или дорогостоящие сервисы. Первая партия плат оказалась работоспособной, но выявила интересные нюансы. В схеме оказались некоторый неверно размеченные компоненты, например, пины Reset и Analyse были перепутаны из-за ошибки в дизайне footprint.
Также возникла проблема с шириной силовых дорожек — 7 милов, хоть и достаточные для 1 ампера, не обеспечивали необходимую надежность и запас по току. После нескольких итераций и проверки с помощью 3D-модели платы в KiCAD, я сделал необходимые коррекции и подготовил улучшенную версию. Кроме того, возникла проблема с тем, что конфигурационные линии платы были жестко замкнуты на землю, что усложняло использование режимов с разной скоростью передачи данных. Поэтому добавил дополнительные джамперы для выбора скорости и конфигурации порта, чтобы можно было одновременно использовать две платы на одном ПК для экспериментов с параллелизмом. Правда, в данном режиме подобная работа не будет совместима с оригинальным ПО Inmos.
Вторая ревизия платы была изготовлена в красном цвете и получила ряд улучшений, однако всё же была обнаружена критическая ошибка с незамеченной в схеме частью цепи, где связь между линиями данных и адреса была нарушена, из-за чего плата замораживала материнскую плату при установке. Благодаря аккуратному обследованию и вскрытию неисправностей удалось модифицировать дорожки вручную, разрезав их в нескольких местах и восстановив соединения проводами. Все это доказывает, что даже современные CAD-системы не гарантируют полной автоматизации и требуют внимательной проверки на каждом этапе. Последний, финальный вариант платы, выполненный с использованием KiCAD и отправленный на производство в синем исполнении, был успешно собран и проверен. С его помощью мне удалось запустить дополнительные программы, включая демонстрации вычислений множества Мандельброта, а также оригинальный компилятор Occam от Inmos.
Хотя установка и запуск этих инструментов требовали погружения в менеджмент классических DOS-конфигураций CONFIG.SYS и AUTOEXEC.BAT, в итоге результат превзошел ожидания. Особое внимание было уделено правильной логике сигнала ошибок (NotError). Оказалось, что для совместимости необходимо использовать микросхему 74LS367, а не 74LS368, так как первая не инвертирует выходной сигнал, что требует ПО для корректного считывания статуса состояния устройства.
Все схемы и исходные файлы проектов доступны в открытом репозитории на GitHub, где можно не только ознакомиться с готовыми материалами, но и использовать их для собственных разработок или обучения. Файлы для печати плат подготовлены в стандартных формата Gerber и Excellon, что позволяет легко заказать производство через сервисы типа PCBWay или других локальных производителей. Для желающих приобрести изготовленные и протестированные платы я предоставляю возможность заказать комплект по доступной цене, при этом требуется собственный модуль TRAM с transputer – популярный и относительно доступный в ретро-сообществе компонент. Проектная история разработки Transputer ISA-платы иллюстрирует не только технические возможности возрождения классической архитектуры, но и важность тщательного проектирования, проверки и адаптации к современным стандартам изготовления электроники. Благодаря современным инструментам типа KiCAD и удобным сервисам по производству печатных плат стало возможным быстро и эффективно воплощать даже сложные аппаратные проекты.
Для фанатов ретро-вычислительной техники и тех, кто интересуется параллельными архитектурами, этот проект открывает двери к изучению и практическому опыту работы с уникальными технологиями, которые формировали фундамент многих современных систем. Восстановление и совершенствование плат transputer с использованием современных средств не просто возвращает прошлое, но и подчеркивает универсальность и устойчивость инженерных идей конца двадцатого века.