[DIY или Сделай сам] Однобитный компьютер
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Картинка для привлечения внимания:
Внимание! Под катом много картинок!В этой статье будет краткое описание проектирования и создания однобитного компьютера. Всем кто заинтересовался, добро пожаловать под кат:Нудная предыстория В юности, из разных источников, по телевизору, в журналах, я натыкался на информацию о том, что существуют некие машины, компьютеры. С их помощью можно было хранить различную информацию, подсчеты, рецепты, рассказы и многое другое. Можно было все это изменять, писать некие программы которые как то это все сортируют, меняют и что то еще. И самое яркое воспоминание - это игры. Хотя эта яркость обычно была ограничена яркостью монитора.Через какое то время, эти компьютеры стали появлятся у моих знакомых, и я уже мог пощупать это чудо. И вот случайно, я наткнулся на журнал ‘радио’, в котором была плата с разводкой, для создания простейшего компьютера...https://ru.wikipedia.org/wiki/Радио-86РКЭто все перевернуло в моей голове, повлияло на всю мою дальнейшую жизнь. Из устройства, которое работает на какой то магии, оно превратилось в устройство, очень сложное, но, теоретически реализуемое. К тому времени я уже паял вырванные провода из стационарных телефонов, и периодически натыкался на микросхемы серии К155. Мой неокрепший мозг, рисовал иллюзию того, что стоит побольше найти разных микросхем, поднабрать опыта и я исполню свою мечту и соберу себе компьютер. Движимый этим я начал изучать литературу по работе логических схем, работу ассемблера, записался в кружок - радиолюбитель, а позже, поступил в ПТУ на радиомонтажника.Но, чем больше я узнавал в этих областях, тем больше понимал, что создание компьютера, это очень сложно, к тому же, компьютер уже перестал быть диковинкой.Со временем, это вещь меня интересовала все меньше и меньше, так как я уже полностью погрузился в программирование игр (хобби), а через несколько лет мне очень повезло, я попал в геймдев! После этого я закопал свой старый паяльник, чтобы он меня больше не отвлекал и полностью посвятил себя разработке (программированию) игр.Переломный моментС самого начала у меня была какая то тактика и я ее придерживался. Но все изменило одно видео:Before you continue to YouTubeconsent.youtube.comПроцессор 6502! реализованный дискретными компонентами! Этот легендарный процессор использовался не только в NES (Денди), но и в роботах модели Bender "Сгибатель":
https://ru.wikipedia.org/wiki/MOS_Technology_6502Меня настолько задело это видео, и реальность создания процессора и компьютера, пусть и в более простом варианте, что я начал изучать эту тему, и наткнулся на следующий вариант:http://www.megaprocessor.com/ И передумал делать... Но, потом наткнулся на вариант компьютера без процессора, полностью на обычной логике:Извините, данный ресурс не поддреживается. :( И чаша весов снова перевесила в сторону создания компьютера. Кстати, пока я решал, буду я создавать или нет компьютер на дискретных компонентах, подразумевая какие либо транзисторы, наткнулся на серию видео, где автор создает компьютер на лампах и\или реле! Советую ознакомится, это что то с чем то )Это одно из видео, на самом канале все остальное:Before you continue to YouTubeconsent.youtube.comПроектированиеДля реализации проекта я выбрал самый простой вариант компьютера : 1-битный. Ввод данных с помощью выключателей, отображение результатов с помощью светодиодов. Из операций, решено сделать только сложение. Чтобы сложить два числа, необходимо 2 регистра для операндов. Чтобы результат не затирал исходные данные, необходимо еще 1 или 2 регистра для результатов. В первый регистр заносится результат сложения, во второй флаг переноса (переполнения), если результат оказался больше 1 бита. Чтобы уменьшить размер компьютера, я выбрал один регистр для результата сложения, а вот что в него заносится, результат или флаг переноса, будет определяться данными инструкции. Чтобы результат не затерся, его необходимо перенести в основную память. Основная память у нас будет из 2 ячеек, т.е. ширина шины адреса - 1 бит.Теперь посчитаем команды:
- Занести данные в первый регистр
- Занести данные во второй регистр
- Сложить и результат (или перенос) в третий регистр
- Перенести из третьего регистра в память
В принципе мы укладываемся в 2 бита команды + 1 бит данных. Но после этого данные невозможно никуда перенести. Наша оперативная память становится только для записи. Поэтому я решил сделать 3 битные команды + 1 бит данных, добавив дополнительные инструкции для перемещения из памяти в регистры и обратно. В итоге наш компьютер имеет следующий характеристики:
- 1-разрядный процессор
- Ширина шины данных : 1 бит
- Ширина шины адреса : 1 бит (адресация до 2 бит)
- 3 регистра общего назначения (A, B, C)
- Размер инструкции : 4 бита (3 бита команда + 1 бит данных)
- Время выполнения инструкций - 1 такт
- Тактовая частота ограничена скоростью нажатия оператора
- Питание : +5 вольт
Для проектирования логической схемы, я использовал бесплатный редактор logisim. Изначально планировал проектировать на уровне транзисторов, но почему то у меня постоянно залипала схема, поэтому, в итоге я все сделал на логических элементах.Вот общая схема:
Компьютер состоит из функциональных блоков:
- DecodeUnit - Это блок, который расшифровывает команду, и в зависимости от нее, включает или отключает какой либо блок или переводит его в какой либо режим, например чтение или запись
- Ram - Контроллер памяти, он включает нужную ячейку памяти, в зависимости от шины адреса
- Bus - Контроллер шины данных. Активные блоки просто пишут туда или читают оттуда данные
- Alu - Арифметико-логическое устройство. Блок, который может складывает два числа
- Cell 0, 1 - Ячейки памяти
- Register A, B, C - Регистры процессора
На схеме все выглядит очень компактно, но некоторые блоки содержат много логических элементов или вложенные блоки. Например регистр внутри выглядит вот так:
DecoderUnit внутри выглядит вот так:
Вот, приблизительно, как будет выглядеть, если все блоки развернуть до логических элементов:
После проверки работоспособности схемы, необходимо было ее перевести в транзисторы и снова проверить. Собирать схему я решил на полевых транзисторах, это упрощает схему. Схемы логических элементов взял по ссылке снизу: https://pastraiser.com/technology/nmos/basicnmosgates.html Там есть обычные варианты а также оптимизированные, это когда в схеме встречается некий паттерн логических элементов, и их можно выразить меньшим числом транзисторов.Для симуляции схемы я использовал бесплатный редактор circuitjs1. Он в реальном времени симулирует схему, но из за этого, все очень тормозит. Все что сложнее регистра, там собирать очень неудобно. Кстати, вот так выглядит наш регистр:
И вот теперь у нас есть работающий виртуальный компьютер! Теперь необходимо его спаять. Изначально я думал что соберу его на платах для прототипирования, это такие универсальные платы, с кучей дырочек и без дорожек, но потом все же решил попробовать спроектировать плату, развести ее и заказать. Совершенно случайно мне попался под руку сервис https://easyeda.com.Это полный цикл проектирования печатных плат, и заказ их в сервисах, например в https://jlcpcb.com. Но, позже оказалось, что бесплатная доставка там только для первого заказа, а потом полная и цена ее, ну, точно не для прототипирования своих маленьких проектов, мне кажется заказать у нас будет дешевле.Так как все это оказалось не очень дешево, решил не делать одну большую плату, а сделать каждый блок на отдельной плате, и соединять их как ардуино. Чтобы в случае ошибки на плате, не перезаказывать большую плату а только часть.Размеры плат при заказе кратны 100 на 100 мм, и цена соответственно увеличивается скачками, поэтому все блоки спроектировал в рамках этого квадрата.Минимальное количество плат одного типа - 5 штук, а у меня как раз 5 регистров, поэтому плату регистров сделал универсальную, с перемычками.Вот с такими данными и начал разводить платы, где то получилось просторно, где то было сильно впритык. Для простоты монтажа, все транзисторы смотрели в одну сторону.Схема регистра:
Разводка регистра:
Ну и плата которая ко мне приехала:
А вот и первые попытки спаять это все:
За качество извиняюсь, фоткал на свой предыдущий проект. Еще картинок
ПослесловиеТеперь можно подвести итоги, что было сделано, что потрачено, сколько это стоило:
- Сбывшаяся мечта - 1 штука
- Потраченное время - 1 месяц
- Инструменты и расходники, приблизительно - 6832 руб 12 копеек
- Электронные компоненты - 2140 руб
- Заказ плат - 1600 руб
- Доставка плат - 1601 руб
- Рекламная компания - 0 руб
Всем спасибо за внимание!
===========
Источник:
habr.com
===========
Похожие новости:
- [Научно-популярное, Мониторы и ТВ, DIY или Сделай сам, Будущее здесь] Я создал с электронную газету (перевод)
- [DIY или Сделай сам] Резервированное электроснабжение частного дома
- [JavaScript, Разработка под Arduino, Разработка на Raspberry Pi, DIY или Сделай сам] Умная квартира на JavaScript. От светодиода до распознавания лица в камере домофона
- [Настройка Linux, Работа с видео, IPTV, Видеотехника, DIY или Сделай сам] KODI: собираем удобный и функциональный медиацентр для дома. Часть 4. Архив IPTV
- [Python, Разработка робототехники, Разработка на Raspberry Pi, Робототехника] Сделать робота на raspberry pi, обновленный pi-tank. Часть 1. Железо
- [.NET, C#, Программирование микроконтроллеров, Интернет вещей, DIY или Сделай сам] .NET nanoFramework — платформа для разработки приложений на C# для микроконтроллеров
- [Серверное администрирование, Компьютерное железо, DIY или Сделай сам] Собрать сервер для глубокого обучения за пол ляма может и ребенок. Или нет?
- [Системное администрирование, Сетевые технологии, Сетевое оборудование, DIY или Сделай сам] На коленке: агрегация VPN, или Надежная связь на ненадежных каналах
- [Киберпанк, DIY или Сделай сам, Звук, Будущее здесь] От кнопок к струнам: умная гитара для всех
- [Схемотехника, Производство и разработка электроники, DIY или Сделай сам, Электроника для начинающих] Gyrators
Теги для поиска: #_diy_ili_sdelaj_sam (DIY или Сделай сам), #_diy, #_jumor (юмор), #_diy_ili_sdelaj_sam (
DIY или Сделай сам
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 17:28
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Картинка для привлечения внимания: Внимание! Под катом много картинок!В этой статье будет краткое описание проектирования и создания однобитного компьютера. Всем кто заинтересовался, добро пожаловать под кат:Нудная предыстория В юности, из разных источников, по телевизору, в журналах, я натыкался на информацию о том, что существуют некие машины, компьютеры. С их помощью можно было хранить различную информацию, подсчеты, рецепты, рассказы и многое другое. Можно было все это изменять, писать некие программы которые как то это все сортируют, меняют и что то еще. И самое яркое воспоминание - это игры. Хотя эта яркость обычно была ограничена яркостью монитора.Через какое то время, эти компьютеры стали появлятся у моих знакомых, и я уже мог пощупать это чудо. И вот случайно, я наткнулся на журнал ‘радио’, в котором была плата с разводкой, для создания простейшего компьютера...https://ru.wikipedia.org/wiki/Радио-86РКЭто все перевернуло в моей голове, повлияло на всю мою дальнейшую жизнь. Из устройства, которое работает на какой то магии, оно превратилось в устройство, очень сложное, но, теоретически реализуемое. К тому времени я уже паял вырванные провода из стационарных телефонов, и периодически натыкался на микросхемы серии К155. Мой неокрепший мозг, рисовал иллюзию того, что стоит побольше найти разных микросхем, поднабрать опыта и я исполню свою мечту и соберу себе компьютер. Движимый этим я начал изучать литературу по работе логических схем, работу ассемблера, записался в кружок - радиолюбитель, а позже, поступил в ПТУ на радиомонтажника.Но, чем больше я узнавал в этих областях, тем больше понимал, что создание компьютера, это очень сложно, к тому же, компьютер уже перестал быть диковинкой.Со временем, это вещь меня интересовала все меньше и меньше, так как я уже полностью погрузился в программирование игр (хобби), а через несколько лет мне очень повезло, я попал в геймдев! После этого я закопал свой старый паяльник, чтобы он меня больше не отвлекал и полностью посвятил себя разработке (программированию) игр.Переломный моментС самого начала у меня была какая то тактика и я ее придерживался. Но все изменило одно видео:Before you continue to YouTubeconsent.youtube.comПроцессор 6502! реализованный дискретными компонентами! Этот легендарный процессор использовался не только в NES (Денди), но и в роботах модели Bender "Сгибатель": https://ru.wikipedia.org/wiki/MOS_Technology_6502Меня настолько задело это видео, и реальность создания процессора и компьютера, пусть и в более простом варианте, что я начал изучать эту тему, и наткнулся на следующий вариант:http://www.megaprocessor.com/ И передумал делать... Но, потом наткнулся на вариант компьютера без процессора, полностью на обычной логике:Извините, данный ресурс не поддреживается. :( И чаша весов снова перевесила в сторону создания компьютера. Кстати, пока я решал, буду я создавать или нет компьютер на дискретных компонентах, подразумевая какие либо транзисторы, наткнулся на серию видео, где автор создает компьютер на лампах и\или реле! Советую ознакомится, это что то с чем то )Это одно из видео, на самом канале все остальное:Before you continue to YouTubeconsent.youtube.comПроектированиеДля реализации проекта я выбрал самый простой вариант компьютера : 1-битный. Ввод данных с помощью выключателей, отображение результатов с помощью светодиодов. Из операций, решено сделать только сложение. Чтобы сложить два числа, необходимо 2 регистра для операндов. Чтобы результат не затирал исходные данные, необходимо еще 1 или 2 регистра для результатов. В первый регистр заносится результат сложения, во второй флаг переноса (переполнения), если результат оказался больше 1 бита. Чтобы уменьшить размер компьютера, я выбрал один регистр для результата сложения, а вот что в него заносится, результат или флаг переноса, будет определяться данными инструкции. Чтобы результат не затерся, его необходимо перенести в основную память. Основная память у нас будет из 2 ячеек, т.е. ширина шины адреса - 1 бит.Теперь посчитаем команды:
Компьютер состоит из функциональных блоков:
DecoderUnit внутри выглядит вот так: Вот, приблизительно, как будет выглядеть, если все блоки развернуть до логических элементов: После проверки работоспособности схемы, необходимо было ее перевести в транзисторы и снова проверить. Собирать схему я решил на полевых транзисторах, это упрощает схему. Схемы логических элементов взял по ссылке снизу: https://pastraiser.com/technology/nmos/basicnmosgates.html Там есть обычные варианты а также оптимизированные, это когда в схеме встречается некий паттерн логических элементов, и их можно выразить меньшим числом транзисторов.Для симуляции схемы я использовал бесплатный редактор circuitjs1. Он в реальном времени симулирует схему, но из за этого, все очень тормозит. Все что сложнее регистра, там собирать очень неудобно. Кстати, вот так выглядит наш регистр: И вот теперь у нас есть работающий виртуальный компьютер! Теперь необходимо его спаять. Изначально я думал что соберу его на платах для прототипирования, это такие универсальные платы, с кучей дырочек и без дорожек, но потом все же решил попробовать спроектировать плату, развести ее и заказать. Совершенно случайно мне попался под руку сервис https://easyeda.com.Это полный цикл проектирования печатных плат, и заказ их в сервисах, например в https://jlcpcb.com. Но, позже оказалось, что бесплатная доставка там только для первого заказа, а потом полная и цена ее, ну, точно не для прототипирования своих маленьких проектов, мне кажется заказать у нас будет дешевле.Так как все это оказалось не очень дешево, решил не делать одну большую плату, а сделать каждый блок на отдельной плате, и соединять их как ардуино. Чтобы в случае ошибки на плате, не перезаказывать большую плату а только часть.Размеры плат при заказе кратны 100 на 100 мм, и цена соответственно увеличивается скачками, поэтому все блоки спроектировал в рамках этого квадрата.Минимальное количество плат одного типа - 5 штук, а у меня как раз 5 регистров, поэтому плату регистров сделал универсальную, с перемычками.Вот с такими данными и начал разводить платы, где то получилось просторно, где то было сильно впритык. Для простоты монтажа, все транзисторы смотрели в одну сторону.Схема регистра: Разводка регистра: Ну и плата которая ко мне приехала: А вот и первые попытки спаять это все: За качество извиняюсь, фоткал на свой предыдущий проект. Еще картинок ПослесловиеТеперь можно подвести итоги, что было сделано, что потрачено, сколько это стоило:
=========== Источник: habr.com =========== Похожие новости:
DIY или Сделай сам ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 17:28
Часовой пояс: UTC + 5