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

Обновлено: 01.07.2024

Введение

Все статьи цикла:

  • Микропроцессор своими руками. Часть 1.1.
  • Микропроцессор своими руками. Часть 1.2.
  • Микропроцессор своими руками. Часть 2.1.
  • Микропроцессор своими руками. Часть 2.2. Битовый процессор
  • Микропроцессор своими руками. Часть 3.1. Ассемблер и софт-симулятор
  • Микропроцессор своими руками. Часть 3.2. Ассемблер и софт-симулятор
  • Микропроцессор своими руками. Часть 4.1. Как отладить встроенный в FPGA микроконтроллер?
  • Микропроцессор своими руками. Часть 4.2. Как отладить встроенный в FPGA микроконтроллер?
  • Микропроцессор своими руками. Часть 4.3. Как отладить встроенный в FPGA микроконтроллер?
  • Микропроцессор своими руками. Часть 5.1. По поводу начала проекта встроенного в FPGA микроконтроллера
  • Микропроцессор своими руками. Часть 5.2. По поводу начала проекта встроенного в FPGA микроконтроллера
  • Микропроцессор своими руками. Часть 5.3. По поводу начала проекта встроенного в FPGA микроконтроллера
  • Микропроцессор своими руками. Часть 5.4. По поводу начала проекта встроенного в FPGA микроконтроллера

Введение для студентов

Вернемся в сегодняшний день. Многие из сегодняшних студентов просто не представляют, насколько стремительно меняется техника. Но в темпе изменения техники должны меняться и приоритеты для инженерного труда, и методики обучения. Так, как учились вчера, уже нельзя учиться сегодня. Сегодня молодой инженер, не умеющий пользоваться ORCAD’ом, PICAD’ом, симуляторами электрических цепей типа Electronics Workbench, не способный описать схему на VHDL и написать сотню строчек кода на С++, достоинтолько сожаления. Если вчера было модно программировать видеоигры, базы данных и бухгалтерские программы, то сегодня рынок уже поменялся.

Введения для профессионалов

Рост популярности того или иного направления можно оценить по количеству сайтов в Интернете, на которых отражаются интересы разработчиков.

Фирма Triscend предлагает 40-MHz 8051-ядро на кристалле, с FPGA, доступной пользователю. Аналогичный продукт есть и у фирмы Atmel Corp. — FPSLIC. Более подробное описание по предлагаемым продуктам приведено в Л3, 4.

Часть проекта фирмы Altera ™ по встроенным решениям, процессор Excalibur, а также его вариант реализации — программное ядро встроенного процессора Nios ™. Nios — это встраиваемый процессор общего назначения, с перестраиваемой конфигурацией, который легко вписывается в устройство Altera APEX ™, оставляя большинство логики, доступной для размещения там периферийных устройств и пользовательских функций.

Встраиваемое ядро процессора Nios — конвейерный RISC-процессор, в котором команды выполняются за один цикл частоты синхронизации. Более подробно об этом процессоре можно прочитать в Л5 — 13.

Что же касается российских разработчиков и разработчиков стран СНГ, то здесь несколько иная ситуация. Фирмы-производители микросхем имеют программу по поддержке партнеров-разработчиков ядер (мегафункций). Это и реклама, и сервис, и многое другое. Но для российских разработчиков попасть в партнеры пока еще практически невозможно, и это резко ограничивает их возможности.

Следующее преимущество — специализированные команды пользователя. Это значит, что проектируя микроконтроллер, пользователь может произвести предварительное программирование и определить в потоке команд, выполняемых процессором, группы наиболее часто повторяющихся команд. Если теперь группу таких команд объединить в одну специализированную команду, то быстродействие процессора для данного класса задач увеличится, а программировать его станет легче. Специализированные команды пользователя (см. например, описание команд процессора NIOS), могут быть однотактные или мгоготактные. Они могут выполняться в ALU микропроцессора или в дополнительном вычислительном блоке, подключаемом к ALU, например FFT, FIR и т. д.

И последнее, что необходимо отметить — микроконтроллер получает ту периферию и в таком количестве, как нужно пользователю.

Периферия же может быть самой экзотической: от простого UART’a и до контроллеров Ethernet MAC 10/100 или сопроцессоров DSP.

Среди библиотечных элементов, описывающих периферию для микропроцессора, доступны следующие:

  • универсальный Асинхронный Приемопередатчик (UART),
  • таймер,
  • параллельный ввод — вывод (PIO),
  • интерфейс SRAM,
  • SDRAM-контроллер,
  • интерфейс FLASH памяти,
  • последовательный периферийный интерфейс (SPI),
  • контроллер I2C,
  • модулятор ширины импульса (PWM),
  • IDE-контроллер диска,
  • контроллер Локальной сети 10/100 Ethernet (MAC),
  • контроллер USB.

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

У нас же есть конечный автомат, зачем нам что-то еще?

Чтобы сравнить микроконтроллер с конечным автоматом, необходимо сравнить трудоемкость следующих работ:

Команды, выполняемые микропроцессором, определены по времени выполнения и не зависят от программы, выполняемой на данном процессоре. Поэтому микропроцессор обычно выполняется с требуемым быстродействием, и это быстродействие не зависит от конкретного применения, от изменений илидоработок программы при отладке.

Здесь конец лирике и начало проекта

Материал, приведенный в данной статье, написан на основе реальной разработки, описанной в Л14. Упрощенная модель микропроцессора, описанная в данной статье, служит только примером для разработки или изучения. Но тем не менее, она может быть легко доработана для практического использования.

Методика разработки позволяет оценить трудоемкость, определить ресурс, необходимый для реализации микроконтроллера в FPGA. Весь процесс разработки будет состоять из следующих этапов:

  1. Разработка задания на проектирование.
  2. Разработка блок-схемы микропроцессора.
  3. Разработка полей кодов операций.
  4. Разработка кодов команд.
  5. Описание на AHDL блоков, входящих в микропроцессор.
  6. Описание микропроцессора на AHDL.
  7. Написание микропрограммы.
  8. Симуляция микропроцессора с микропрограммой.
  9. Выводы.

Что мы хотим получить?

  1. RISC-процессор, потому что не хочется делать разборку многословных команд. Пусть все наши команды выполняются за один такт синхрочастоты.
  2. Применим для процессора Гарвардскую структуру. Будем считать, что загрузка памяти команд нам не нужна и все команды будут храниться в памяти команд, что и происходит при инициализации микросхемы. Назовем память команд — Program Space (PS). Ограничим область адресов PS 16 битами. Далее возможна страничная адресация памяти, но для большинства случаев и этого уже будет достаточно. Для конкретной реализации микропроцессора введем параметр, описывающий разрядность шины адресов PS.
  3. Расположим память данных в отдельной области памяти. Назовем ее Data Space (DS). Ограничим область адресов DS также 16-ю битами. Для конкретной реализации микропроцессора введем параметр, описывающий разрядность шины адресов DS.
  4. Представим область ввода-вывода в виде набора регистров, дадим им номера 0..15.
  5. Для реализации режима реального времени потребуется вход запроса прерывания — IRQ.
  6. Чтобы отрабатывать прерывания и вызовы подпрограмм, нам будет необходим стек.
  7. Необходимо задать разрядность шины данных. Выберем для определенности разрядность, равную 16 битам.
  8. Будем считать, что системный сигнал СБРОС, действующий внутри кристалла, будет применяться и для нашего микропроцессора.

Построение ядра микропроцессора

Для упрощения положим, что:

  • аккумулятор/регистр общего назначения будет один,
  • область DS будет состоять из одного регистра,
  • область ввода-вывода тоже будет состоять из одного регистра,
  • применим самую простую структуру выборки данных из памяти, то есть асинхронную выборку и без конвейера команд,
  • будем считать, что вход запроса прерывания выставляется синхронно с тактовой частотой и длительность входа запроса — 1 такт синхрочастоты.

Данные упрощения сделаны только для сокращения текстов описаний, так как в рамках журнальной статьи приводить обширные описания довольно затруднительно. Тем не менее, счетчик адресов DS полностью аналогичен счетчику адресов PS. Увеличение количества регистров связано только с увеличением описания в области дешифратора управляющих сигналов, которые вырабатываются при операциях записи в эти регистры и с мультиплексором выходных шин от регистров на внутреннюю шину микропроцессора.

На основании задания и сделанных упрощений на микропроцессор получим архитектуру, показанную на рис. 1.

Микропроцессор состоит из набора следующих блоков:

Узел контроля для выработки управляющих воздействий на все блоки микропроцессора — ALU,

Счетчика адресов памяти программ — PS_CNT,

Блока памяти программ — PS,

Блока памяти данных — DS,

Регистров — Rg0 и Rg1.

На входы микропроцессора подадим сигнал синхрочастоты — CLK и сигнал запроса прерывания — IRQ.

Системный сигнал СБРОС подается на микропроцессор, так же как и на все остальные блоки системы (здесь он не показан).

Выходами микропроцессора будут сигналы с выходов регистров Rg0 и Rg1.

Счетчик команд, при загрузке микросхемы или при инициализации системы по сигналу СБРОС, устанавливается в состояние 0 и далее производит счет адресов памяти программ.

Адреса поступают на вход блока PS. Данные, хранящиеся в памяти программ, выбираются в соответствии с поступившим адресом.

Далее данные с выхода PS поступают в ALU.

Для ALU — это будут коды команд микропроцессора. Блоки DS, Stack, Rg0 и Rg1 обмениваютя сигналами с блоком ALU по одной внутренней шине данных.

Сигнал со входа IRQ поступает на ALU и дешифрируется в ALU как код команды, причем сигнал IRQ имеет приоритет в выполнении над кодом команды, поступившим в ALU от PS.

Выберем команды, отвечающие нашим задачам

Опишем группы команд, которые должен исполнять микропроцессор.

LDI Reg, Загрузка в регистр.приемник константы – (данных из памяти команд по текущему адресу )
MOV Reg, Reg Запись содержимого одного регистра в другой
MOV Reg, [Mem] Запись содержимого регистра в память
MOV [Mem], Reg Запись из памяти в регистр
JMP Addr Переход по абсолютному адресу
CALL Addr Вызов подпрограммы (с записью адреса возврата в стек)
RET Возврат из подпрограммы (по содержимому стека)

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

Определим поля команд

Чтобы определить поля команд необходимо определить наибольшее требуемое поле для выполнения заданных команд. Очевидно, что для данного набора команд самое большое поле требуется для команды MOV Reg, [Mem] и MOV [Mem], Reg. Поле [Mem] — имеет разрядность 16 бит, поле Reg — 4 бита (для 16 регистров). Поэтому выберем разрядность памяти PS — 24 бита. Тогда команда непосредственной записи из памяти в регистр будет выглядеть так:

Команда MOV Reg, Reg пересылки из регистра в регистр будет выглядеть так:

Команда LDI Reg — непосредственная загрузка в регистр-приемник данных из памяти команд по текущему адресу:

23….Коп – 4 бита…20 19…..Reg – 4 бита …16 15 …Const – 16 бит.. 0

Команда JMP Addr — команда безусловного перехода по абсолютному адресу будет выглядеть так:

Команда CALL Addr — команда безусловного вызова подпрограммы по абсолютному адресу будет выглядеть так:

Команда RET команда безусловного возврата из подпрограммы или из прерывания будет выглядеть так:

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

Определим коды операций команд

После того как поля команд определены, и мы знаем разрядность поля кодов операций, можно определить коды операций команд.

Примеры кодов команд

Команда NOP будет иметь код 000000, а JPM 1234 — команда безусловного перехода по адресу 1234 — будет иметь код команды — 101234, MOV 9, 5 — команда пересылки данных из регистра 5 в регистр 9 будет иметь вид 890005 и т. д.

Определим требования к стеку

Для данной задачи применим стек глубиной 8 вложений и разрядностью равной разрядности шине адресов PS. Реализуем стек в отдельной от PS и DS области — на массиве регистров.

Определим требования к прерываниям

Применим следующее решение: при поступлении запроса прерывания будем выполнять переход по фиксированному адресу с занесением адреса возврата в стек.

Определим требования к программному обеспечению

Одним из основных требований к разработке встроенного ПО для микроконтроллеров является требование о необходимости инструментального ПО, то есть нам будет, как минимум, необходим редактор и ассемблер. Для более сложных проектов могут потребоваться симуляторы работы программы, языки высокого уровня, операционные системы и т. д.

Для удобства написания программ можно также создать собственный ассемблер, что сейчас не является трудной задачей даже для среднего программиста. Такой ассемблер ставит в соответствие удобную для восприятия мнемонику с реальными командами микропроцессора.

Однако, и довольно часто, разработчики применяют систему команд тех микропроцессоров к которым они привыкли и к которым уже существуют инструментальные средства разработки ПО. Здесь на первом месте микропроцессоры с системой команд MCS-51, а на втором месте PICmicro. Для этих микропроцессоров имеются как средства разработки, так и огромные библиотеки разработанных программ.

Поскольку проект, описываемый здесь, посвящен только описанию микропроцессора, то дальнейшее описание требований к инструментальному ПО мы опускаем. Будем считать, что у нас есть ассемблер, который преобразует мнемонические коды команд в машинные коды и формирует файл инициализации памяти команд, совместимый с ПО MaxPlus.

Заключение по этапу разработки задания

Мы произвели разработку задания на микропроцессор, выполняющий основные функции, такие, как пересылки данных, ветвление программы, обработка прерываний.

3043090

Большинство современных процессоров основано на 64-х битной архитектуре. Это, по большей части, означает, что информация в системе передается блоками по 64 бита. Тем не менее, еще не ушли в мир иной и процессоры с иной архитектурой. Есть даже новые экземпляры — правда, их создают энтузиасты для каких-то своих целей. Ранее одним из наиболее известных восьмибитных процессоров был Intel 8008, появившийся в начале 1970-х.

На первый взгляд, разработка Константино выглядит, как скопище проводов (на второй взгляд тоже). Но в состав конструкции входят не только провода. Процессор смонтирован на монтажной плате, которая позволяет создавать макеты самых разных схем — от простейших до самхы сложных.

По словам Константино, он изначально разработал схему на бумаге, на это у него ушло два дня. Затем, приступив к монтажу, ему пришлось потратить около недели на работу.

В ходе монтажа он использовал разного рода переключатели для того, чтобы создаваемая схема работала, как реальный процессор.

Его процессор может воспроизводить тему из Mario, но вот программировать систему достаточно сложно. Проблема в том, что к системе не подключена клавиатура, поэтому все необходимо делать вручную. Спустя некоторое время разработчик планирует добавить клавиатуру, чтобы работать было удобнее. Тогда процессор сможет показать все, на что он способен.

В схеме использовано более 27000 транзисторов — это только для блока памяти. Общее же число транзисторов в этой системе свыше 40 тысяч. Масса процессора, который работает на частоте 20 килогерц — 500 килограммов.

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

Использовать процессор можно для самых разных целей, но инженер выбрал игру тетрис для того, чтобы показать принцип работы всей системы. Во время игры все процессы, которые происходят во время работы системы, показываются в режиме реального времени при помощи индикаторов. Количество самых разных соединений в системе превышает 100 000.

На свой проект Ньюман потратил без малого потратил около 40000 фунтов стерлингов. Сейчас, возможно, уже и больше, поскольку он постоянно продолжает совершенствовать систему.

Изначально инженеру казалось, что он сможет реализовать свой проект за год. Но пришлось потратить более пяти лет, при том, что Megaprocessor продолжает совершенствоваться.

Понравилась статья? Подпишитесь на канал, чтобы быть в курсе самых интересных материалов

ОБОЖЕ! Он создал компьютер, который дает ответ на главный вопрос жизни, вселенной и всего такого.

Ты сдул мой курсовик

я думал он денди собирает!


Код Программирование, IT, Компьютер, IT юмор

|______|
Мой код написанный в 1000 строчек


HTML уже 29 лет

HTML уже 29 лет IT, Компьютер, Twitter, Программист, IT юмор, Программирование

Спасите - помогите!!

Ситуация такова: сегодня 1 октября с утра, как всегда, решил зайти на Пикабу и меня встретила вот такая картинка:

Спасите - помогите!! Проблема, Компьютер, Хром, Браузер, Программирование, Ноутбук, Программное обеспечение, Текст

Так же при обращении к другим, некоторым сайтам появляется она.

Если захожу с другово (нового) компа или с телефона - всё нормально работает, понятно что дело именно в моей технике.

Поискал решение в интернете - опробовал практически всё что там описано (снижение уровня безопастности, отключение антивируса. там много чего понаписали) но ничего не помогло. Сейчас зашел на сайт (со старой техники) из под ТОР, но опять - таки не всегда пускает. смена цепочек неоднократная и не всегда помогает.

Браузер - Хром - на старой машине не пускает, на новой - без проблем.

Старый ноут (где проблема) - Вин7.

Другая, беспроблемная техника (чужая) - Вин10 и Андроид.

Вот теперь сижу, думаю - может это они там у себя что-то обновили в тихаря и это уже проблема "железа" на моем старом ноуте?

Пожалуйста, если кто знает - подскажите как это "починить".

Пс картинку поправил

Вон в чем дело, ахренеть. (((

Решение проблемы найдено. Большое спасибо Пикабушнику @Denis.NN - он "легким движением руки" помог мне разобраться с этой проблемой.))

Вот ветка с решением, таким "чайникам" как я может пригодится:

Как работает компьютер (для самых маленьких)

Как я не стала программистом

Когда-то давно, при царе Горохе, годков эдак в 10, мне - соплячке и сорвиголове - родители притащили комп.

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

Видимо, этим и был подарок обусловлен. Это было году в 92, наверное, точно не раньше.

Мне гордо притащили нечто. Как сейчас помню - это был компьютер Блиц, клон ZX Spectrum. И да, у него было аж 32 Кб ОЗУ!

Странная такая штука - резиновая серая клавиатура, пластиковая коробочка, и все это подключалось к маленькому ч/б телевизору, который мне отдали под это дело. Крошечный такой, переносной.

Это был единственный и первый компьютер на всю округу, мы тогда жили в поселке. Хз, в соседних городах компьютеры уже, наверное, у кого-то и были. Но тогда взрослые мужики приходили к отцу посмотреть на него, поцокать, потом сесть пить пиво.

А я честно пыталась разобраться. Он был куда менее практичен, чем моя приставка. На нем нельзя было ррраз - и играть. Непонятно вообще было, что с ним делать. Пока отец не приволок мне пару книг стремного вида (дешевый самиздат) - самоучители по Ассемблеру и Бейсику.

И вот в Бейсик я влюбилась. Сутками торчала , научилась рисовать красивые картинки, воспроизводить примитивные мелодии, мастерить жалкое подобие Акинатора (были примеры в журнале Радио, у нас этими журналами была завалена вся кладовка). Потом пошли игры. До сих пор помню свою первую игру - лыжник несется вниз по склону, и нужно объезжать ёлочки и ловить флажки. Это был пример из книги, немного доработанный. Очень хорошо помню, как сейчас, что за три пойманных подряд флажка очки утраивались - этого не было в книге, я сама это ввернула, и чуть не лопнула от гордости в то время.

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

А потом все упростилось - кассетник Весна, кассеты с играми, пердеж и хрип кассет, и свой код так же можно было записать.

Потом уже были IBM, и прочие. Программирование было забыто благополучно.

Ну разве что до сих пор пригождается небольшое знание php и всякого там по сайтам.

А недавно ребенок на днюху запросил себе книгу по Python. Хочу, говорит, программировать.

Да, к своим десяти он ловко ворочает в фотошопе и КорелДро, Скретч юзает с первого класса, но загорелся настоящим программированием.

И на днюху он таки получил книгу.

Вчера установила Пайтон, сегодня села с ним поразбирать, чо да как.

И блин, как нахлынуло - да все то же самое. Синтаксис отличается, возможности, сама техника.

А суть та же. Прошибло реально почти до слез. Вспомнила вмиг и своего лыжника с убогими ёлками, лично прорисованными. И торчание за компом ночами.

Как будто мне снова десять. Только комп другой, и книга в разы толще. И утром никто не приготовит омлет. Вернее приготовит - это я его теперь приготовлю.


Sammyuri/YouTube

реклама

Игроку Minecraft по имени "Sammyuri" потребовалось семь месяцев, чтобы создать процессор под названием Chungus 2 (Computation Humongous Unconventional Number and Graphics Unit). Согласно изданию Futurism, "получившийся виртуальный компьютер - при условии, что длина и высота каждого блока составляет метр - был бы высотой с 20-этажный дом, если бы его построили в реальной жизни".Процессор имеет тактовую частоту 1 ГГц, 256 байт оперативной памяти и экран 32×32.

Как осуществляется управление в игре? Ваш цифровой персонаж Minecraft прыгает по кнопкам величиной с блок. Sammyuri выложил на YouTube видео о том, как пользоваться компьютером.

Chungus 2 - очень мощный 1 Гц компьютер для Minecraft

"Возможно, мне следовало бы пояснить это в видео, но все показанные программы были ускорены от сотни до нескольких тысяч раз, чтобы сделать их действительно пригодными для воспроизведения / просмотра в реальном времени", - написал Саммиури в комментарии к своему видео на YouTube. "Хотя 1 Гц - это, безусловно, быстро для процессора [Minecraft], но это совсем не так быстро, как показано в ролике".

Игроки Minecraft постоянно, что-то строят и модернизируют, недавно они создали большой реалистичный город, или даже модель Земли в масштабе 1:1.

Земля в Minecraft в масштабе 1:1 . впервые в истории.

Minecraft - это интересная игра, которая позволяет пользователям проявлять всю свою фантазию и создавать невероятные объекты, которые восхищают и удивляют.

Читайте также: