Компьютер 8 бит своими руками

OtherMedia

Информация должна принадлежать людям

Как собрать 8-битный домашний компьютер на 5 чипах

Комбинируя старые хаки, типа побочных цветов NTSC, с современным оборудованием, можно собрать удивительно мощную машину

Есть что-то привлекательное в 8-битных компьютерах. Можно собрать самодостаточную систему, которая достаточно мощная для того, чтобы быть дружественной к пользователю, но достаточно простая, чтобы её можно было собрать и запрограммировать самостоятельно. Большая часть 8-битных машин, собранных любителями, работает на классических CPU героической эпохи домашних компьютеров 80-х, в то время, когда миллионы лишних телевизоров были превращены в мониторы. Я и сам собрал такой, на базе Motorola 6809. Я пытался использовать минимальное количество чипов, однако всё равно мне потребовалось 13 вспомогательных ИС для обработки таких вещей, как RAM или последовательный интерфейс. И я задумался: что, если отказаться от классического CPU в пользу чего-то более современного, но всё же 8-битного? Насколько сильно можно сократить количество используемых чипов?

Так появился Amethyst. Как и у классического домашнего компьютера, у него встроенная клавиатура, и он может выдавать аудио и видео. У него есть встроенный язык программирования высокого уровня, чтобы пользователи могли писать свои программы. И он использует всего шесть чипов – один ATMEGA1284P CPU, интерфейс USB и четыре простых ИС.

ATMEGA1284P (или 1284P), появившийся в 2008 году, есть 128 Кб флэш-памяти для хранения программ и 16 Кб RAM. Он работает на частотах до 20 МГц, у него есть встроенные контроллеры на последовательном интерфейсе и 32 цифровых контакта ввода-вывода.

Благодаря встроенной памяти и последовательным интерфейсам я мог отказаться от целого ряда вспомогательных чипов. Я мог выдавать базовые звуки, просто включая I/O контакт с разной частотой, выдавая определённые ноты, хотя и с характерной резкостью квадратной волны. А что насчёт выдачи аналогового видеосигнала? Для этого наверняка же потребуется специальное оборудование?

А потом в конце 2018 года я наткнулся на хак, который в 1970-х использовал Стив Возняк, чтобы обеспечить Apple II вывод цветов. Он известен, как побочные цвета NTSC, и полагался на тот факт, что само цветное телевидение в США было своего рода хаком, родом ещё с 1950-х.

Изначально телевещание в США было чёрно-белым, и использовало относительно простой стандарт NTSC (National Television System Committee). Электронно-лучевые трубки обводили лучом поверхность экрана, ряд за рядом. Амплитуда получаемого видеосигнала задавала яркость луча в каждой конкретной точке ряда. Затем в 1953 году NTSC обновили для поддержки цветного телевидения, так, чтобы система оставалась совместимой с чёрно-белыми телевизорами.

Совместимость достигли путём кодирования информации о цвете в виде синусоиды высокой частоты. Фаза сигнала в определённый момент относительно референсного сигнала («сигнала цифровой синхронизации»), передаваемого перед началом каждого ряда, определяла базовый оттенок цвета. Амплитуда определяла насыщенность. Этот высокочастотный сигнал затем добавлялся к относительно низкочастотному сигналу яркости, создавая т.н. композитное видео, которое по сей день используется на входе множества телевизоров и дешёвых дисплеев для самоделок.


Хитрости телевидения: аналоговый композитный цветной видеосигнал, используемый в телевизорах США (слева вверху) совместим с чёрно-белыми телеприёмниками поскольку высокочастотный синусоидальный цветовой сигнал накладывается на сигнал яркости (пунктиром), определяющий яркость строки развёртки. Фильтрующие элементы отделяют сигналы внутри телевизора. Фаза цветового сигнала по отношению к сигналу цифровой синхронизации определяет оттенок цвета на экране. При достаточно высокой частоте цифровой сигнал (слева внизу) отделяется так, будто это аналоговый сигнал, а различные последовательности битов будут давать различные цвета. В данном примере на один пиксель приходится по два бита, и можно выдавать шесть цветов (видно четыре), но увеличение скорости передачи битов увеличивает возможное количество цветов.

Читайте также:  Кровельные материалы своими руками

На чёрно-белом телевизоре цветовой сигнал выглядит как шум, и по большей части игнорируется. Но цветной телевизор может разделять сигнал цвета от сигнала яркости при помощи фильтрующей схемы.

В 1970-х инженеры поняли, что эту фильтрующую схему можно с большой пользой применить в потребительских компьютерах, поскольку цифровой сигнал с квадратной волной мог воспроизводить большую часть возможностей композитного сигнала. Поток нулей, отправляемый компьютером на телевизор во время прохода луча ЭЛТ по горизонтали телевизор будет интерпретировать как постоянное низкое аналоговое напряжение, обозначающее чёрный цвет. Поток единиц будет выглядеть как постоянно высокое напряжение, белый цвет. Увеличив битовую частоту можно отправлять более сложные двоичные последовательности, на основе которых фильтрующая схема будет выдавать цветовой сигнал. Такой трюк позволил Apple II показывать до 16 цветов.

Сначала я думал очень быстро переключать I/O контакт, чтобы напрямую генерировать видеосигнал. Но вскоре понял, что мой 1284P, работающий с тактовой частотой 14,318 МГц, не сможет работать достаточно быстро для того, чтобы выводить больше четырёх цветов – у встроенных последовательных интерфейсов уходит по два такта на отправку одного бита, что ограничивает мою частоту величиной 7,159 МГц. Apple II использовал быстрый прямой доступ к памяти, чтобы объединить чип внешней памяти с видеовыходом, пока процессор обрабатывал свои данные, однако у моего компьютера RAM интегрирована в чип, поэтому такой подход бы не сработал.

Я порылся у себя в шкафу и нашёл четыре чипа 7400 – два мультиплексора и два параллельно-последовательных сдвиговых регистра. Я мог настроить восемь контактов 1284P на параллельную работу и одновременно отправлять данные на мультиплексоры и сдвиговые регистры, что превратило бы их в высокоскоростной последовательный поток битов. Таким образом я мог генерировать биты достаточно быстро, чтобы выдавать на экран 215 различных цветов. Однако ценой этого стала большая загрузка процессора – свободными остаются порядка 25% его мощностей.


Amethyst – одноплатный компьютер. Он использует шесть встроенных интерфейсов — CPU, USB, четыре чипа 7400, обеспечивающих графику из 215 цветов. Клавиатурные переключатели припаяны прямо к плате, которая также поддерживает аудио и четыре последовательных I/O порта для периферии, типа игровых контроллеров или устройств хранения. Встроенная виртуальная машина на Forth обеспечивает среду программирования.

Следовательно, мне потребовалось легковесное программное окружение для пользователей, из-за чего я предпочёл стандартному Basic язык Forth. Это старый язык для встроенных систем, и его плюс в том, что он как предоставляет интерактивность, так и эффективно компилирует код. Можно сделать очень многое в очень ограниченных рамках. Поскольку 1284P не позволяет исполнять скомпилированный машинный код напрямую в памяти, код пользователя компилируется в промежуточный байткод. Затем он в виде данных поступает в виртуальную машину, запущенную с флэш-памяти 1284P. Код виртуальной машины написан на ассемблере и настроен для максимально быстрой работы.

Я работаю инженером в Glowforge, и у меня есть доступ к передовым лазерным резакам, поэтому спроектировать и собрать деревянный корпус для компьютера было просто (получился своего рода кивок в сторону деревянной отделки Atari 2600). Механические клавиатурные переключатели припаяны прямо к плате; у клавиатуры есть странность в виде отсутствия длинного пробела, эта клавиша расположена над кнопкой Enter.

Все схемы, файлы для PCB, системный код я выложил на GitHub – вы можете собрать свой Amethyst или улучшить мою систему. Получится ли у вас уменьшить количество используемых чипов?

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

Для отправки комментария вам необходимо авторизоваться.

Источник

8-битный компьютер с BASIC и VGA-выходом на Arduino

C помощью Arduino можно собрать 8-битный ретро-компьютер с Basic (похожий на ZX Spectrum) с выводом цветного изображения на VGA-монитор.

Читайте также:  Кукольный театр звери своими руками

Кроме того, этот проект можно использовать как простой способ вывода текстовых сообщений на монитор.

Сама по себе, идея использовать Arduino для создания компьютера с BASIC не нова, но насколько я знаю, все они не поддерживают вывод цветного изображения. В некоторых проектах использовались LCD-мониторы, а в других — библиотека TVout, которая выводит чёрно-белое изображение. Кроме того, многие из этих проектов требуют дополнительные модули и специальные платы расширения. Тут же нужно всего-то иметь два Arduino, несколько резисторов, плюс разъёмы для PS/2 клавиатуры и VGA-монитора.

Для проекта нужно две платы Arduino: один будет основным (или «мастером»), в нём работает интерпретатор Tiny Basic Plus (это порт Tiny Basic на языке Си, адаптированный для поддержки Arduino). Также этот Arduino управляет PS/2 клавиатурой. Вывод из первого Arduino через последовательный порт отправляется на второй Arduino, который с помощью библиотеки VGAx генерирует VGA-сигнал.

Программу на языке BASIC в собранный нами компьютер можно будет ввести с помощью PS/2 клавиатуры, а результат можно будет посмотреть на VGA-мониторе: разрешение получившегося изображения 24 столбца на 10 строк, размер символов — 5х6 пикселей, доступно 4 цвета.
После введения программы, её можно будет сохранить в энергонезависимой памяти самого Arduino, а также код программы предусматривает управление I/O пинами Arduino.

1. Подключаем основной Arduino с интерпритатором TinyBasic и с PS/2 клавиатурой

TinyBasic Plus и библиотека VGAx работают с Arduino IDE 1.6.4.
Если у вас уже установлена более новая версия, то лучшее решение — загрузить эту версию с официального сайта в формате .zip, и распаковать в отдельную папку. Здесь можно загрузить эту версию для Windows.

Потом нам понадобится библиотека PS2keyboard, её можно загрузить отсюда. После скачивания просто распакуйте архив, и скопируйте его содержимое в «arduino-1.6.4\libraries».

Дальше, загрузите файл TinyBasicPlus_PS2_VGAx.ino, и прошейте его в основной Arduino.
Это версия обычного TinyBasic Plus, где была добавлена поддержка библиотеки PS/2.

Больше информации о TiniBasic Plus и руководства (на английском языке) можно найти тут.

Если на этом этапе нет проблем (в том числе, проблем с совместимостью), то Tiny Basic будет автоматически запущен при включении Arduino. И его можно будет протестировать с помощью последовательного порта на вашем ПК. Для этих целей я использую PuTTY, но вы можете использовать и другую подобную программу, по вашему вкусу.

В настройках нужно правильно установить COM-порт (тот же, что используется в Arduino), и скорость передачи = 4800.

И тут уже можно протестировать нашу систему, набрав какую-нибудь программу на Basic с клавиатуры вашего ПК (позже мы подключим PS/2 клавиатуру напрямую к Arduino).

Для примера, можно набрать:

Прервать бесконечный цикл этой программы можно с помощью комбинации клавиш Ctrl+C (это не сработает, если мы будем делать это с клавиатуры PS/2).

Теперь подключим PS/2 клавиатуру.

2. Подключаем PS/2 клавиатуру к основному Arduino

Информация и библиотека были взяты из этого материала.

По существу, вам нужно соединить следующие четыре контакта:
Data клавиатуры к Arduino pin 8,
IRQ (clock) клавиатуры к Arduino pin 3;
а также подключить землю (GND) и питание +5V, соответственно.

Я использовал PS/2 разъём cо старой нерабочей материнской платы, его можно легко сдуть с помощью фена.

Распиновка PS/2 разъема есть на рисунке:

3. Загружаем библиотеку VGAx и код во второй Arduino, и соединяем его с основным

Для начала, загрузите код VGAx-PC.ino и скопируйте его к себе на компьютер в папку с таким же именем.

Потом — загрузите с GitHub бибилиотеку VGAx. Её нужно поместить в подпапку «libraries» Arduino IDE.

ВАЖНО! Эта бибилиотека работает с Arduno IDE 1.6.4 и может быть не совместима с другими, более новыми версиями.

Теперь загрузите VGAx-PC.ino во второй Arduino (я тестировал на Arduino Nano, но с Arduino Uno тоже не должно быть проблем).

Предупреждение, что мало доступной памяти — это нормально для нашего случая. Если других ошибок нет, то всё в порядке — и можно сделать ещё пару шагов, чтобы получить свой собственный 8-битный ретро-компьютер.

Читайте также:  Крылья бабочки своими руками пошагово

Для этого нужно:

  • два Arduino Uno Rev.3, или два Arduino Nano 3.x (на основе ATmega328)
  • разъем DSUB15, т.е. гнездо VGA или кабель с таким гнездом, который не жалко отрезать
  • резисторы: 2 на 68 Ом и 2 на 470 Ом
  • разъем PS2
  • провода
  • необязательно: макетная плата

Осталось всё соединить по схеме на рисунке, и наш 8-битный компьютер готов!

Источник

Гигатрон — самодельный микрокомпьютер без процессора

Микрокомпьютер Gigatron — это минималистичный 8-битный ретро-компьютер построенный по необычному дизайну: в нём нет никаких сложных логических интегральных схем, нет даже микропроцессора! Его CPU построен на классических логических элементах серии 7400, также известных как микросхемы на ТТЛ-логике. По сути все элементы компьютера разом и есть процессор. Эти простые чипы не только формируют CPU, но ещё и выполняют все задачи, которые обычно требуют дополнительной периферии. Несмотря на простую и компактную конструкцию, Gigatron работает как 8-битный одноплатный микрокомпьютер, на котором можно играть в видеоигры.

Гигатрон — хобби-проект Уолтера Белгера, хакера, специалиста по информационной безопасности и ныне директора по информационной безопасности компании Philips. В этот понедельник 9 сентября Уолтер приезжает в наш Хакспейс, где будет рассказывать об устройстве Гигатрона, истории создания проекта и покажет его живьем.

Под катом подробнее про Гигатрон и анонс встречи с создателем в Москве.

Немного теории

Транзисторно-транзисторная логика — разновидность цифровых логических схем, построенных на основе биполярных транзисторов и резисторов. Название транзисторно-транзисторный возникло из-за того, что транзисторы используются как для выполнения логических функций (например, И, ИЛИ), так и для усиления выходного сигнала (в отличие от резисторно-транзисторной и диодно-транзисторной логики(ДТЛ)).


Упрощённая схема элемента 2И-НЕ

В основе ТТЛ-элемента лежит многоэмиттерный биполярный транзистор. Если хотя бы на один из его эмиттеров подано напряжение 0В — транзистор будет находиться в режиме насыщения и на его коллекторе будет присутствовать логическая единица. В зависимости от схемы входного и выходного каскадов, мы получим ту или иную логическую операцию нашего элемента.


Старый TTL-чип SN7400 выпущенный в 70-х годах

В 80-х годах на ТТЛ-чипах было произведено много игровых автоматов, а также некоторые бытовые компьютеры. Наиболее известных из них Apple I, над которым трудился Стив Возняк.

Пример такого компьютер Apple 1, он тоже сделан на TTL логике, но все же имеет микропоцессор.


Компьютер Apple I частично построен на TTL-логике но имеет микропроцессор

История создания

Автор изначального концепта — Marcel van Kervinck. Он собрал первый прототип Гигатрона на макетной плате. Весь процесс от разработки до конечного проекта зафиксирован здесь: hackaday.io/project/20781/logs

Компьютер работает на тактовой частоте 6.25 MHz и выполняет одну 8-битную операцию за цикл.

Первая версия гигатрона собранная на макетной плате

Почему такие старые чипы?

Из интереса, и чтобы лучше понимать базовую архитектуру компьютера. А также чтобы поковыряться с железом которое у нас было на тот момент. В декабре 2016 нас забавляла идея собрать компьютер на ТТЛ-чипах, который будет достаточно мощный для игры в крестики-нолики на LED-экране 8×8. В конце концов, нечто подобное должен сделать каждый инженер хотя бы раз в жизни.

Зачем все это нужно?

На гигатроне можно изучать фундаментальные принципы работы современных компьютеров и процессоров. Из-за того что все элементы компьютера достаточно примитивны, принцип их работы может понять даже начинающий инженер. К тому же это просто весело!

Что можно запускать?

Попробовать компьютер в работе можно на программном эмуляторе gigatron.io/emu

В стандартной прошивке доступны:

  • Игра змейка
  • Игра racer
  • Игра крестики-нолики
  • Игра тетрис
  • Множество Мандельброта — программа для рисования фракталов
  • Программа для просмотра изображений
  • Загрузчик для программ
  • Среда BASIC
  • WozMon — классический редактор памяти и монитор памяти Стива Возняка для Apple I

Обзор от EEVblog

Источник

Оцените статью
Своими руками