Как стать автором
Обновить

Собираем 8-битный компьютер

Время на прочтение 16 мин
Количество просмотров 42K
Всего голосов 74: ↑73 и ↓1 +72
Комментарии 54

Комментарии 54

$400 кажется многовато для такого набора деталей?

НЛО прилетело и опубликовало эту надпись здесь
$80 за доставку из Америки, магазин Jameco (в Украине просто нет даже половины необходимых деталей, а под заказ ждать до месяца).

$120 за 14 макетных плат (BB830, очень хорошего качества).

Понятно, спасибо.

Ради любопытства, а чего вы не нашли в Украине? Насколько я понял, схема ведь состоит из обычно рассыпной TTL-логики, которая в изобилии есть в любом радиомагазине, хоть онлайновом, хоть физическом. Ну разве что флешка на 2 Кб сейчас достаточно редкий гость, это из старых запасов надо искать.

Там примерно полсотни корпусов, как я вижу. И в принципе, все эти 74LS173, LS245 и иже с ними стоят примерно по 10 грн/шт в розницу. Соответственно, стоить оно должно ну баксов 40 с учётом флешки и других компонент (кроме макетки, конечно).

Я изначально пытался все заказывать в Украине, но я действительно наткнулся на много болей:

1) Каких-то микросхем просто нет. Я не записывал, но вот, например, LS00, LS283, LS107.
2) Все детали нельзя купить в одном месте, они разбросаны по разным магазинам в разных городах страны. Иногда это какие-то частники на сайтах типа Avito. Все надо заказывать отдельно, оплачивать доставку, ждать, менеджить.

Когда я увидел, что есть такой сайт как Jameco, меня это поразило: любой товар в любом количестве, нормальный UI/UX.

Да, доставка в $80 кусается, не спорю.

но вот, например, LS00, LS283, LS107

а, так 00 - это ЛА3, 283 - ИМ6(тут согласен, может быть редок), 107 - ТВ6 (в ЕС-ках не встречал)

1) Каких-то микросхем просто нет. Я не записывал, но вот, например, LS00, LS283, LS107.

Я сейчас глянул Космодром и Радиомаг, там те или иные их вариации все в наличии есть, некоторые позиции под заказ, но срок доставки 1-2 недели, в принципе и из Штатов оно не быстрее доедет. Ну и насчёт вариаций, это немаловажно и существенно упрощает подбор компонент в одном месте. ТТЛ серия LS полностью совместима с серией ALS и советскими 555 и 1533. И с небольшими нюансами (касаемо нагрузочной способности) совместима с куда более доступной и распространённой КМОП-серией HC. Вообще, предпочтительней использовать ALS/1533, т.к. эти серии имеют меньшее энергопотребление, выше надёжность и быстродействие. Или вообще всё делать на HC

Тот же Радиомаг, я хотел заказать у них микросхему, пришлось бы ждать пару недель. Я позвонил заказать, а они ответили, что не доставят это в принципе. Видимо, им невыгодно пару штук везде из Европы или США.

Мне очень нравится серия 74HC. Мне кажется, она быстрее 74LS и кушает меньше тока. И найти 74HC00/74HC283 - нет проблем. chipdip.ru, promelec.ru, aliexpress.ru

Собственно, я прям сейчас пытаюсь повторить Ваш путь на базе 74HC** ;)

$400 на все компоненты и их доставку

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

Вы как-то экстраполировали на всю страну...

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

Много "для большинства"? Ну и в США далеко не каждый может себе позволить выложить 400 баксов на хобби за один раз.

Учитывая, что средная зарплата миддла-программиста по Украине даже за пределами Киева составляет $2000, а сеньора в $3500, потратить $400 на ИТшное же хобби - это отнюдь не очень много.

В моём городе больше 400 у.е. зарабатывает не более 10% населения, в регионе и того меньше. Программистов знакомых нет.

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

В Украине даже средняя официальная заработная плата сейчас порядка 500 у.е. Если брать, например, областные центры, то смело умножайте эту цифру на 2. Поэтому если так, то тут дело больше в вашем городе. У меня, например, среди одноклассников программистов всего двое. Остальные занимаются кто чем - один платья продаёт, другой преподаёт в университете, третья медпредставитель, четвертая репетитор английского и так далее. Я в кошельки им не заглядывал, но так или иначе, у всех есть квартиры, машины и регулярный отдых в Турции (по крайней мере, до карантина), так что явно не 500 у.е. зарабатывают, а в несколько раз больше.

В Украине даже средняя официальная заработная плата сейчас порядка 500 у.е.

На моём прежнем предприятии средняя официальная заработная плата составляла примерно в два с лишним раза больше чем мы получали на руки, это при том, что наша с коллегами зарплата была одной из лучших. Я засомневался от вашей уверенности и опросил коллег по поводу средней по городу зарплаты (пенсии и доходы бизнеса не трогаем), средняя порядка 7000 гривень (на руки, после высчетов), это 250 у.е., и это почти вдвое меньше, чем у меня сейчас. Кременчуг не областной центр, но зарплаты на том же уровне. В целом по области намного меньше, так что откуда 500 у.е?

А если бы я опросил одноклассников, то цифры были бы намного больше, но это уже не средняя по городу. (По результатам опроса в интернете 100% опрошенных пользуются интернетом- шутка из начала двухтысячных).

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

Налоги — это 19.5% от зарплаты (18% НДФЛ + 1.5% ВС). Как вы можете получать в два с лишним раза меньше от официальной зарплаты (ну, кроме случаев, когда вас как-то обманывают или просто должны, но не платят)?
средняя порядка 7000 гривень

Я не знаю ситуацию в Кременчуге, хотя на том же КВСЗ средняя зарплата тыщ 20 грязными, насколько я понимаю. И, например, я знаю, что оклад грузчика Новой почты — 12.5 тыс грн грязными, т.е. на руки он получает более 10К гривен (по крайней мере, в крупных городах. Ставки у НП тоже учитывают местные реалии каждого города).
Ну и опять же таки, все эти старые ex-советские предприятия — это совершенно другой мир. Где и правда людям не платят нихрена.

Очень уважаемо, снимаю шляпу.

Я бы, правда, побоялся собирать такое на бредборде, чтобы не запутаться в проводах и плохих контактах.

А вы видели Gigatron-TTL? Очень похожая концепция: компьютер на микросхемах стандартной логики. Но у них довольно забавная программная архитектура с виртуализацией и VGA

Спасибо!

Это мой первый проект такого рода и страх перед горой перемычек и контактов тоже был. Что-то не работает — надо все проверять. Пару раз попадался брак, и не такой, что что-то вообще не работает, а такой, что работает криво — тратил много времени.

Gigatron-TTL не видел. Прикольно, что они запарились и продаю как kit. Но это более высокоуровнево, а хотелось разобраться прям без абстракций.
Это не перевод, я собрал почти точно такой же компьютер как в видео, вдохновившись им. В статье, в заключении, я как раз даю ссылку на Ben Eater'a и другие полезные материалы.

Большая работа! После просмотра этого цикла, ко мне пришло на сколько просто устроен процессор: он просто берёт сигналы с одних ног, и по их значениям устанавливает сигналы на других ногах. Никакой памяти, никакой сложной логики (в каноне).

При всём моём уважении, но ещё в ленте, увидев знакомое изображение, я начал вовсю искать плашку "перевод" и не нашёл. Вы упоминаете ссылку на Ben Eater в заключении, но на момент этого комментария статья не содержит заключения (последнее что мне видно это "Регистр ввода-вывода и дисплей". у вас не работает навигация по статье, кстати говоря).

Поэтому мысль о переводе или плагиате и всплыла первым делом
Кошмар. Половина статьи пропала. А я писал ее только в WYSIWYG и нигде не забекапил. Там еще 4 раздела было. :(

Написал в поддержку и сделал UPD в начале статьи.

Извините.
Кеш Яндекса выручил — ссылка.

Восстановил материал.
Это действительно плагиат. Даже некоторые картинки нагло сворованы с сайта и из видео Бена.

Вся конструкция повторяет конструкцию Бена Итера практически один в один.

А я подумал соберут какой-нить ЮТ-88, как я пытался так же, проводочками. А тут вона что.

Я помогал товарищу настраивать "Специалист" на навесном монтаже. К сожалению, он вместо сборки по модулям (питание, тактовая, видео и т.д.) - просто паял все подряд, поэтому разбираться в этом было очень сложно и долго. В конце концов - была куплена на рынке печатная плата и все пересобрано на ней.

да, "Специалист" получился самый первый. На плате, конечно.

Похоже на копипаст из какого-то ворда — часть форматирования и чего-то вроде длинного тире потеряно при переносе. Не пробовали писать багрепорт разработчикам хабровского WYSIWYG'a?

Я писал сразу в WYSIWYG, ниоткуда не переносил. Мне прислали в диалоги слипшийся текст типа «разрешениеназапись» — видимо, это оно.

А WYSIWYG действительно еще сыроват, я много багов находил и где можно было бы улучшить что-то. Напишу в поддержку об этом, спасибо, что напомнили.

Прочитал восстановленный материал — понял, что сразу не заметил отсутствия половины работы. Но ма-ма, программировать семисегментный дисплей через чтение из ПЗУ?! Это реально как забивать гвозди микроскопом. И таки интересно было бы почитать про "сложный" вариант решения. Надеюсь, там все-таки будет хотя бы деление на 10, если не сдвиг на 3 и выдача ответа в восьмизначной системе ;)

НЛО прилетело и опубликовало эту надпись здесь
Это, все-таки, нечто большее и одновременное меньшее, нежели «DIY-компьютер». DIY-компьютер собирается на трех-четырех микросхемах (CPU, SRAM и системный контроллер) и может гонять какое-то полезное ПО, например, MS-BASIC на терминале (google:Z80-MCB2).

Здесь же собран DIY-процессор (что очень круто), но лишь c зачатками остальных компонентов системы (памяти, устройств ввода-вывода) и без софта.
Спасибо за объяснение, убрал этот тег.
Да, нет. Я не имел ввиду, что это не DIY-компьютер, наоборот, это нечто большее чем просто DIY.
Вернул, спасибо.

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

восьмибитный — это нормально, но вот однобитный, способный управлять станком ЧПУ, вот про него б хотелось бы узнать… ни за что б не поверил, если б не не ковырялся в нем, правда слишком мало времени, чтоб во всём разобраться…

С одной стороны интересно, так вот проводочками кропотливо отлаживать схему АЛУ, ПЗУ и т.д.

С другой стороны - как-то не очень эффективно что-ли, не понятно, ради чего все это...

Я же в свое время начинал сразу с микроконтроллера AVR AT90S2313. Такая маленькая микросхемка в корпусе DIP-20. И меня вводило в полный восторг осознание того, что внутри этой микросхемки те самые АЛУ, ПЗУ, RAM. Только спаяно это все не проводками, работает надежно, потребляет мизер. Процесс программирования - на ассемблере. Полностью погружаешься во все эти регистры, флаги процессора, стараясь запихнуть свою программу в доступные 2К памяти.

Так можно было пойти и дальше — не заморачиваться с микроконтроллером, сразу комп купить… Только вот тогда потеряется ясное понимание как же этот процессор на самом деле работает…

Особенно удались анимашки со светодиодами:)

Интересная тема, но мне кажется, в статье есть некоторые моменты, которые затрудняют понимание или отвлекают.


Первый момент — это названия управляющих сигналов вроде MI или SO. Они ничего не говорят и при чтении непонятно, о чем речь. Мне кажется, лучше бы подошли более длинные названия вида: LOAD_A (или WRITE_A) — загрузить данные с шины в регистр A, PC_OUT — выдать значение из счетчика команд на шину данных, итд. То есть такие названия, которые сразу очевидны.


Второй момент — это отвлекающиеся моменты в объяснениях. Например, вначале у вас на рисунке к АЛУ подсоединены переключатели, а потом оказывается, что оно подсоединено к регистрам. Зачем же тогда сбивать с толку читателя? Нужно с самого начала было писать про регистры.


Мне кажется, рисунки с кнопками не нужны, можно просто написать что-то вроде "при подаче единицы на вход X происходит Y".


Или в объяснении про декодирование чисел для семисегментного индикатора — опять же, мне кажется, незачем приводить пример программы на Питоне, так как Питон тут не имеет никакого отношения, а если читатель с ним незнаком, то ему еще труднее понять, что к чему. Правильнее было бы без лирических отступлений сразу написать: я использую ROM для преобразования чисел в коды управления сегментами.


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


Есть много решений этой задачи, в проекте используется сложный, но менее затратный по ресурсам (нужно меньше чипов). О сложном решении рассказать текстом не просто

Хабр это технический ресурс, тут можно было бы рассказать и о сложном способе.


Также, в статье почему-то не описана система команд процессора. Или вы решили ограничиться только тремя командами ADD, LD и OUT?


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




Еще у меня возникла мысль: не проще ли выбирать адрес обращения к памяти мультиплексором на 2 входа? К одному входу подключить счетчик команд, ко второму — регистр адреса памяти. Тогда можно было бы уже в первом такте выдать адрес из счетчика команд и сразу же прочитать значение из памяти.


Ну и еще, если кто-то захочет повторить эту схему, то, возможно, стоит использовать отечественные микросхемы серии КР1533. Они легко доступны и стоят 20-30 рублей за штуку.




Также, если кому-то интересно узнать, какие еще бывают самодельные процессоры, я бы хотел порекомендовать такие (тщательно отобранные) ссылки на самые интересные конструкции:


  • японский процессор TD-4: 4 бита, из арифметики только инструкция сложения, вместо ROM используется 16 DIP-switches, в которые вбивается программа (то есть, память составляет 16 байт). Используется всего 13 микросхем, схема: https://github.com/wuxx/TD4-4BIT-CPU/blob/master/doc/cpu_td4.jpg Самая простая схема из всех приведенных.


  • Gigatron: 8-битный процессор, 16-битные команды, около 40 микросхем серии 74HCT, частота 6,25 Мгц (за 1 такт выполняется 1 команда), 32 Кб RAM, 128 Кб ROM, есть сложение, вычитание, AND/OR/XOR и есть вывод VGA-видео и звука программным способом (без видеокарты), есть видеоигры: https://gigatron.io/?page_id=482


  • PISC (Pathetic Instruction Set Computer): процессор, в основе которого лежит всего 2 группы микросхем: АЛУ и 3-портовый регистровый файл. Схема удивляет своей простотой. Процессор 16-битный и в нем отсутствует декодер команд: биты команды напрямую управляют устройствами процесссора. https://bradrodriguez.com/papers/piscedu2.htm При этом команды довольно продвинутые, и он, например, умеет одновременно читать значение из памяти и увеличивать регистр, который используется как адрес.


  • CSCvon8: очень маленький 8-битный процессор из 17 микросхем (такая экономия достигается за счет использования нескольких ПЗУ). Вместо АЛУ используется ПЗУ, что позволяет реализовать умножение, деление и сдвиги на произвольное число бит: https://github.com/DoctorWkt/CSCvon8/blob/master/Docs/CSCvon8_design.md


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

Спасибо за список, пару из них я не знал!

Еще один DIY-процессор — Scott CPU, он описан в книге «But how do it know ?» (http://www.buthowdoitknow.com/; и отчасти — в ролике «See How a CPU Works» на YT).

Хотя Scott CPU это лишь заготовка процессора — он недоразработан функционально (отсутствуют косвенные переходы и адресации), и использует упрощенную схемотехнику, требующую серьезной коррекции на практике. Но автор конструирует свой процессор буквально из транзисторов (блоков ИЛИ-НЕ (NOR)).
К сожалению, это не самостоятельная конструкция и не имплементация принципов описаных в указанной книге.
Это прямая копипаста 8-мибитного компьютера за авторством Бена Итера.

а есть полная принципиальная схема вашей конструкции и спецификация? у вас заработала данная схема?

"Собираем 8-битный компьютер"
Сразу хочется задать вопрос: А зачем? Тем более - взрослому бородатому мужику да ещё и Senior Software Engineer at Rocket....

Помнится, когда я был лет 13-14 - учась в радио-кружке - собирал московский вариант ZX Spectrum.

Пока паял микросхемы - научился их паять без всяких соплей и "палева" - на уровне заводского автомата. Также многочасовые корпения над принципиальной электрической схемой - на всю жизнь отразились на моём понимании цифровой схемотехники. Но, мне тогда было, повторюсь - 13-14 лет, а сколько сейчас бородатому сеньору? К тому же, как тут уже успели заметить многие в комментах - и сама схемотехника и сумма в $400 - вызывают немало вопросов - что хотел показать своим "творением" автор.

Зачем? Потому, что нравится. Собрать комп из рассыпухи, сесть на мотоцикл, поиграть в настолки, выехать на природу с семьёй или самому, и т.д. Жизнь есть и за пределами "Senior Software Engineer at Rocket.... ", "... мы должны иметь некоторый гражданский отдых".

что хотел показать своим «творением» автор.

Just for Fun. Кто-то собирает марки, кто-то выращивает фиалки, а кто-то собирает ПК из рассыпухи. :)

Теперь надо на нем Doom запустить )

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

Публикации

Истории