- 8-битный компьютер с BASIC и VGA-выходом на Arduino
- 1. Подключаем основной Arduino с интерпритатором TinyBasic и с PS/2 клавиатурой
- 2. Подключаем PS/2 клавиатуру к основному Arduino
- 3. Загружаем библиотеку VGAx и код во второй Arduino, и соединяем его с основным
- Строим декоративный транзисторный компьютер — шаг 1
- Подстановка задачи и архитектура
- Энтузиаст компьютерного дела собрал 8-битный процессор из подручных материалов
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-битный компьютер готов!
Источник
Строим декоративный транзисторный компьютер — шаг 1
Недавно на хабре была статья о проектировании собственного компьютера, где автор хотел сначала строить компьютер из транзисторов, но затем решил продолжить на микросхемах 7400-серии из-за того, что на транзисторах ему это показалось слишком сложным и дорогим занятием.
Похожая задача интересовала и меня последние 3 года — но от изначальной идеи строить на транзисторах я не отказался, и сейчас могу рассказать свои соображения и показать текущие наработки, а также — хочу спросить вашего мнения о том, каким на ваш взгляд должен быть _серийный_ транзисторный декоративный компьютер. Но сразу нужно заметить, что работы впереди еще на пару лет 🙂
Главный вопрос — зачем все это нужно, если есть FPGA и всякие Raspberry Pi?
Ответ простой:
1) Мне интересно этим заниматься в свободное время и
2) Декоративный компьютер (декоративный — это вопрос отношения к компьютеру, а не его внешности) — он как декоративные домашние животные: мопс не отгрызет ногу грабителю, а персидский котик не победит в бою метрокрысу. Но с ними интересно играть и показывать гостям — даже если в области вычислений, охраны и охоты они сильно уступают «боевым» аналогам.
Подстановка задачи и архитектура
Какие будут у нас требования к декоративному компьютеру?
- Разработка под автоматизированную сборку. Руками паять по 5000 деталей на компьютер — поседеть можно.
- Производительность — не существенна, главное чтобы 100тыс+ операций в секунду было (на уровне Радио-86РК). Даже 100тыс оп/с позволит решать очень многие задачи.
- Практика показывает, что 64 КиБ памяти — реалистичный минимальный объем памяти. В 1-4 КиБ многое не влезет, потому уменьшать шину адреса меньше 16 бит не стоит.
- Программирование — на C. Нельзя заставлять людей тратить своё свободное время на ассемблер (но если желание есть — то все карты в руки).
- В базовой модели — из транзисторов сделан только сам процессор. Память и обвязка — может быть из микросхем. Полностью транзисторный вариант возможен в будущем, но это уже будет дальнейшее развитие (со своими ограничениями — более 1-2 КиБ памяти иметь будет затруднительно)
- В процессоре — отключаемые светодиоды показывают состояние внутренних регистров (IP, аккумулятор, запись/чтение из памяти. )
- Не слишком высокая цена. Себестоимость одного транзистора с обвязкой и автоматическим монтажом — около 2 рублей, соответственно, использовать больше 1000 транзисторов не желательно для серийного продукта. Это означает, что схема должна быть проще, чем i8080 (4500 транзисторов), i4004 (2300 транзисторов), и MT15 (
3000 транзисторов), не смотря на требование 16-и битной шины адреса.
Взаимодействие с пользователем: Классическая реализация — это клавиатура + вывод на телевизор или VGA-монитор. Сделать удобную «свою» клавиатуру слишком сложно — нужно использовать стандартные PS/2 или USB. PS/2 клавиатуры уже редкость — а USB в транзисторном компьютере поддержать — будет затруднительно, без использования грязных хаков (вроде микроконтроллера).
Вероятно, оптимальным и простым решением может быть терминальный интерфейс — когда компьютер общается с внешним миром через последовательный порт (RS232), таким же образом можно загружать программы. Т.е. в простейшем случае транзисторный компьютер подключается к настольному компьютеру (или специализированному терминалу) через USB<>COM адаптер, и в любой программе-терминале (например Putty) можно с ним работать.
Также, нужна и возможность подключать внешние устройства через GPIO-пины.
Последовательный или параллельный ALU? 8 или 16 бит?: Поскольку количество транзисторов очень ограничено (
Схему для симуляции в LTspice IV можно скачать тут.
Принцип работы следующий: т.к. порядок слагаемых не имеет значения, мы их просто аналогово смешиваем, и точно подбирая пороговое напряжение сдвоенного инвертора — сразу получаем перенос. Затем вычитая на транзисторе Q3 из аналоговой суммы перенос — получаем сумму. Конечно, все это требует точного подбора уровней срабатывания, и симуляции с учетом температуры. Диоды Шоттки — для предотвращения входа транзисторов в глубокое насыщение, что резко снижает скорость работы.
Использование полевых транзисторов возможно, и обеспечивает лучшую температурную стабильность, главное чтобы у них было достаточно низкое пороговое напряжение.
Сдвиговой регистр — самая ответственная часть этого транзисторного компьютера. Классическая реализация на синхронных D-триггерах — требует чудовищного количества транзисторов на бит.
У меня получилось уместиться в 2 транзистора на бит, со следующими особенностями:
1) Регистры — основаны на конденсаторах, и если их «не двигать» — то со временем данные пропадут. Но с полевым транзистором время хранения достаточно большое.
2) Передача данных на следующую ступень — биполярным транзистором. В половине случаев он работает в обратном, нестандартном режиме — пробивное напряжение намного меньше (но 3.3В должно держать), и коэффициент усиления намного ниже прямого включения (но я надеюсь будет достаточно).
3) Каждая следующая ступень — инвертирует сигнал, это не проблема когда нужен только последовательный доступ (например в случае регистров процессора). Если же будет нужен не инвертированный параллельный выход — нужно будет добавить 8 инверторов (т.е. 16-и битный сдвиговой регистр потребует 40 транзисторов, а не 32).
4) Остается проблема с насыщением биполярного транзистора.
График работы:
С этими компактными реализациями цифровых схем — уложиться в 1000 транзисторов думаю будет вполне реально.
На этом пока все — меня же ждет впереди чудовищно много работы
А теперь — несколько вопросов к читателям: Какие варианты кажутся вам приемлемыми?
Источник
Энтузиаст компьютерного дела собрал 8-битный процессор из подручных материалов
Большинство современных процессоров основано на 64-х битной архитектуре. Это, по большей части, означает, что информация в системе передается блоками по 64 бита. Тем не менее, еще не ушли в мир иной и процессоры с иной архитектурой. Есть даже новые экземпляры — правда, их создают энтузиасты для каких-то своих целей. Ранее одним из наиболее известных восьмибитных процессоров был Intel 8008, появившийся в начале 1970-х.
Конечно, те процессоры достаточно примитивны по сравнению с современными, но свою работу они выполняли на «отлично». На днях в сеть попала информация о собранном из подручных материалов 8-битном процессоре, который функционирует без проблем, хотя и смотрится несколько странно. Его создал пользователь YouTube Пауло Константино (Paulo Constantino).
На первый взгляд, разработка Константино выглядит, как скопище проводов (на второй взгляд тоже). Но в состав конструкции входят не только провода. Процессор смонтирован на монтажной плате, которая позволяет создавать макеты самых разных схем — от простейших до самхы сложных.
По словам Константино, он изначально разработал схему на бумаге, на это у него ушло два дня. Затем, приступив к монтажу, ему пришлось потратить около недели на работу. В ходе монтажа он использовал разного рода переключатели для того, чтобы создаваемая схема работала, как реальный процессор.
Его процессор может воспроизводить тему из Mario, но вот программировать систему достаточно сложно. Проблема в том, что к системе не подключена клавиатура, поэтому все необходимо делать вручную. Спустя некоторое время разработчик планирует добавить клавиатуру, чтобы работать было удобнее. Тогда процессор сможет показать все, на что он способен.
8-битный процессор — интересный проект, но наиболее масштабная работа такого рода — Megaprocessor. Он представляет собой 16-ти битный процессор с четырьмя регистрами общего назначения. На отдельных панелях размещаются схемы различного назначения, включая память, арифметический блок, ввод/вывод и некоторые другие. В этой системе используется 16-ти разрядный блок АЛУ и 16-ти разрядный сумматор. Megaprocessor оснащен 10 000 светодиодов, мигание которых демонстрирует каждый этап процесса вычислений, показывая направление движение данных по схеме. Объем памяти составляет 256 байт.
В схеме использовано более 27000 транзисторов — это только для блока памяти. Общее же число транзисторов в этой системе свыше 40 тысяч. Масса процессора, который работает на частоте 20 килогерц — 500 килограммов.
Автор этой разработки — инженер-электронщик из Великобритании. Его зовут Джеймс Ньюман. Как-то он захотел разобраться в мельчайших подробностях в принципе работы процесса. Ну и лучший из способов сделать это — собрать процессор своими руками.
«Компьютеры непрозрачны. Смотря на них, нельзя понять, как они работают. Что я хотел сделать — это забраться внутрь и понять, что происходит. Проблема в том, что это невозможно осуществить с процессорами обычного размера. Но мы можем построить большой процессор своими руками — и тогда будет понятно, что происходит внутри. Для отображения потоков данных стоит добавить еще и светодиоды — что и было сделано», — говорит Джеймс Ньюман. Теперь за работой Megaprocessor можно наблюдать в режиме реального времени, и любой человек может понять, из каких элементов состоит процессор и как работает каждый блок.
Использовать процессор можно для самых разных целей, но инженер выбрал игру тетрис для того, чтобы показать принцип работы всей системы. Во время игры все процессы, которые происходят во время работы системы, показываются в режиме реального времени при помощи индикаторов. Количество самых разных соединений в системе превышает 100 000.
На свой проект Ньюман потратил без малого потратил около 40000 фунтов стерлингов. Сейчас, возможно, уже и больше, поскольку он постоянно продолжает совершенствовать систему.
Изначально инженеру казалось, что он сможет реализовать свой проект за год. Но пришлось потратить более пяти лет, при том, что Megaprocessor продолжает совершенствоваться.
Источник