Этот проект продолжался более года, прежде чем он был добавлен сюда, поэтому в дополнение к общему дизайну здесь я объединю все, что было сделано до сих пор, в первый журнал, а не пытаюсь разделить все, как это произошло.
Несколько лет назад был ряд очень интересных руководств по созданию 8-битного компьютера на макетных платах, выпущенных Ben Eater. Раньше я занимался электроникой (в основном для школы), это был мой первый крупномасштабный проект, который. С помощью этих руководств я смог собрать его сам:
Этот компьютер использует микросхемы 74LSxx почти для всего, за исключением таймеров 555 для тактовых импульсов и EEPROM AT28C16 в качестве настраиваемой логики, чтобы некоторые детали не стали слишком большими. Хотя я мог его запустить, у него всего 16 байт памяти, и для его программирования вам нужно установить каждый байт индивидуально. Во-первых, это не так много памяти, чтобы что-то делать, а во-вторых, плохо масштабируется даже с расширенной памятью. Это тоже был не совсем мой проект, поскольку я только что прошел обучение. Поэтому я решил создать свою лучшую, большую и, как оказалось, очень проблемную версию. Вот несколько соображений по дизайну, которые я установил в качестве правил:
Компьютер будет использовать 16-битное слово
В компьютере в основном используются чипы 74LSxx.
Мне было разрешено использовать более сложные микросхемы для ОЗУ и снова использовать EEPROM для настраиваемой логики, когда размер выйдет из-под контроля
Используйте печатные платы, а не макеты, чтобы сделать его более долговечным
Уметь сохранять программу в микросхемах EEPROM, а не вводить ее вручную
Иметь столько ОЗУ, сколько возможно для размера слова (64К слов)
Уметь добавлять новые модули для будущего расширения
Сохраните такой же грубый дизайн, как компьютер Ben Eater
Светодиоды, много светодиодов
Компьютер имеет такую общую конструкцию:
Часы: синхронизация компьютера как в режиме свободного хода с переменной частотой, так и в пошаговом режиме
Программный счетчик (ПК): сохраняет адрес текущей инструкции.
Адрес памяти (MAR): хранит адрес значения для выборки из ОЗУ.
RAM: хранит все переменные данные во время выполнения
Регистр: хранит текущее рабочее значение и результат ALU.
Регистр B: сохраняет вторичное значение для ALU для выполнения вычислений.
ALU: выполняет некоторые вычисления с использованием регистров A и B, по крайней мере, для сложения и вычитания.
Регистр X: индексный регистр, который можно увеличивать с помощью одной инструкции, не затрагивая регистр A
Адрес программной памяти (PMAR): хранит адрес значения для извлечения из программной памяти.
Память программ: сохраняет программу в EEPROM
Выходной регистр: сохраняет значение для отображения.
Дисплей вывода: отображает 16-битное значение как десятичное.
Регистр ввода: Позволяет пользователю вводить некоторую форму, должен позволять как ожидание ввода, так и чтение текущего значения
Регистр текущей инструкции (IR): хранит текущую используемую инструкцию, должен быть 16 бит плюс размер кода операции (вероятно, просто используйте регистр на 2 слова)
Логика управления: декодирует то, что находится в ИК-диапазоне, для генерации управляющих сигналов для остальной части компьютера, а также обрабатывает флаги и сбрасывает
ToDo: Напишите о выборе RAM и EEPROM и некоторых других конструктивных элементах (здесь или в журнале)
Когда все спроектировано, полный компьютер выглядит так:
К сожалению, компьютер не работает полностью. Все отдельные модули были протестированы, но все работает некорректно. Необходимо решить несколько проблем:
Тактовая частота не имеет достаточно высокой скорости нарастания для работы с логикой 74LSxx.
Они были временно заменены часами оригинального компьютера Ben Eater.
Логика управления EEPROM 4 выводит высокий уровень на каждом бите, независимо от того, запрограммирован (и проверен) все они равны 0x00. На самом деле это не проблема, поскольку это расширение управляющего слова, и никакие биты не используются.
Формируются грубые управляющие сигналы. Это приводит к тому, что модули не работают правильно, в основном считывая значения при чтении другого регистра. ЭТО ГЛАВНАЯ ПРОБЛЕМА.
Кажется, что добавление конденсатора 10 нФ к земле на линиях управления несколько помогает с некоторыми модулями. Это не было проверено для всех затронутых контрольных линий и не устраняет проблему полностью.
Судя по тому, как далеко я продвинулся, в дизайн внесен ряд изменений, которые значительно улучшили бы его (но не требуются для «завершения»):
Микросхемы 74LSxx не совсем идеальны для такого большого компьютера, на самом деле мне следовало использовать какую-то другую версию 74xx (возможно, версию CMOS)
Светодиоды слишком яркие, я могу это изменить, но для этого потребуется перепаять несколько сотен резисторов.
Другой метод соединения между модулями, в настоящее время они довольно беспорядочные и подвержены проблемам
Можно рассмотреть возможность использования компонентов для поверхностного монтажа (и печатных плат с большим количеством слоев) для уменьшения общего размера.
Вероятно, ряд других вещей