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

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

Зело прельстиво. Пишите обо всём, я считаю.

Согласен, писать нужно про все. Классная работа

Хотелось бы чуть больше объяснений на пальцах для дилетантов, местами честно говоря нифига не понял. А вообще класс, знания автора и количество проделанной работы впечатляет !

Жду статью про инструкции и АСУ

Да, сложно написать о чем-то так, чтобы было всем понятно. Может быть, у вас есть какие-то конкретные вопросы, которые я мог бы прояснить?

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

По этой причине и хочу увидеть статью про АСУ, инструкции и прочих основах.

Могу посоветовать nandgame, возможно будет полезно если есть свободное время

Я же верно понял, что IR содержит текущий опкод? Было бы неплохо детальней пояснить в статье функцию IR, потому что на первый взгляд «регистр текущей инструкции» и «указатель инструкции» одно и то же.

Да, правильно. В статье про инструкции я напишу об этом.

Это прекрасно! Плюсанул бы, да не могу.((

Даёшь статью о видюхе!

+1 пишите про все

У меня не было никакой борьбы за частоту. Я ни разу не сталкивался с тем, чтобы что-то не работало из-за слишком высокой тактовой частоты. Мне кажется, можно даже немножко разогнать, но я не пробовал: не хочется отлаживать сложноуловимые случайные ошибки. Места, которые, как мне кажется, ограничивают частоту, это:

  • ПЗУ с программой. По спекам у нее задержка 150 нс, то есть 6.6 МГц. Было бы прикольно сделать переключаемую частоту: по умолчанию медленную, а когда программа прыгает в ОЗУ, увеличить.

  • Сумматор, выполненный по схеме с переносом через каждый бит. Если грубо оценить задержку, то должна быть в худшем случае тоже порядка пары сотен наносекунд.

  • И в одном месте у меня есть асинхронная задержка на RC-цепочке, которая фиксит неправильные тайминги доступа к памяти. Это можно исправить, переделав модуль управления.

У проекта Gigatron TTL компьютера тактовая частота 6,3МГц при однотактных командах.
На форуме проекта его разгоняли до ~12,5МГц (и вроде до 15МГц) но и потребление с заявленных ~500мА от 5В (2.5W, или 0.5W для 74HCT версии логических микросхем) возрастало существенно на логике другой серии.

P.S. Была статья на Хабре:
Гигатрон — самодельный микрокомпьютер без процессора

Форум Gigatron проекта
Gigatron на сайте https://hackaday.io

image
«Было бы прикольно сделать переключаемую частоту: по умолчанию медленную, а когда программа прыгает в ОЗУ, увеличить.»
А если сразу плавное управление частотой? Задолго до появления SpeedStep существовал процессор, частота которого подстраивалась под нагрузку.

используя только простые логические микросхемы 74 серии

A 74181 это уже читерство? :)

Да, читерство :) Да и ее не найти в продаже.

Да и ее не найти в продаже.

В Чип и Дип вроде можно заказать 74LS181, китайские за 350 рублей и Motorola / Fairchild за 1000+ рублей, но я не имею ни малейшего понятия откуда они их возьмут и возьмут ли вообще. Плюс, непонятно что придёт, особенно от китайцев.

Там есть 533/1533ИП3, правда по цене почти 500рэ. Читерство нынче недёшево.

pay2win

ну можно же реализовать ее на мелкой логике. логическая схема ее есть.

О, это первое на чём я познал как вообще это работает, ещё в планаре была, но быстро наскучило.

весьма впечатлён проделанной работой

Круть крутячая, хабр торт!

Обязательно пишите по всем пунктам!

Например, для регистра B нужно три микросхемы: собственно восьмибитный регистр 74HC273 и два выходных буфера 74HC244.

А почему не 74НС573? У неё есть встроенные буферы на выходе. Сброса нет, но по логике и блок-схеме он не нужен.

Блок-схема условная, там многое не обозначено, но сброс – это вторичное. Главная идея в том, что нужно два независимых выхода одного регистра на две разных шины. Поэтому и используется два отдельных буфера.

Кроме того, в 74HC573 входная защелка не по фронту, а по состоянию, это тоже критично.

Проделана большая работа, моё почтение! Голосовал за АЛУ.

Очень круто, всегда интересно читать про такие самоделки. Есть в планах новые доработки?

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

Пробегала статья, в которой несколько малинок были объединены в сеть при помощи единственного компорта.

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

Хотел написать, что для уарта есть SLIP и можно соорудить SLIP/WiFi gateway из малинки или ESP8266/ESP32 - но сообразил, что у этого компьютера нет уарта :). Тогда пожалуй проще всего подключить ту же ESP32 по параллельной шине, а внутри написать эмуляцию этой шины. Ну или прицепить честно RTL8019AS (бонусом кусочек SRAM внутри) или CS8900, это будет более в стиле "самодельного компьютера". Они обе умеют работать по 8-битной шине данных. Но это будет только проводная сеть, без Wi-Fi.

Да, можно много всего наподключать, можно ПЛИС подключить и на ней вообще любую периферию сделать, но это тоже читерство.

Ну вот мне кажется 10 Мбит NIC чип на 8-битной шине - это достаточно "нечитерский" вариант. Хотя 10Base-T достаточно простой протокол, наверное сетевушка на рассыпухе 74 серии теоретически возможна.

Был репитер 10 мегабит коаксиал, внутри почти под две сотни DIP14-16 74xx,74hxx///

Только сейчас посмотрел видео из статьи. Обратил внимание, как громко в начале видео работает тактовый генератор. ))

Ваш ассемблер очень похож на ассемблер для AVR. Не оттуда брали идеи и байт-код инструкций?

Лет десять назад я писал пару раз на ассемблере для AVR, но уже всё давно забыл. Может быть, какие-то идеи бессознательно проникли :)

Ранее находил одного человечка который собрал сумматор и назвал это компьтером.

Подумал что эта статья будет подобным клибейтом, но оказалось нет.

Даже больше скажу: теперь мне в голову засела мысль поиметь дома подобный экземпляр.

А теперь странный вопрос: как думаете насколько реально реализовать этот компьютер в Minecraft? (думаю вполне реально по всем параметрам кроме тактовой частоты)

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

Всегда восхищаюсь подобному энтузиазму, терпению, и умению довести проект до конца! В опросе не хватает вариантов "Обо всем" и "О себе".

Я бы это сделал на какой нибудь ПЛИС. Всё равно там внутри те же элементы на транзисторах, только намного меньше боли с припоем и проводами как тут https://www.megaprocessor.com

Это не спортивно.

Очень понравилась реализация 16-битных адресов. Пожалуй утащу её себе, если получится (всего два регистра, не считая IP и выбирать их нельзя, т.к. аргументов у инструкций тоже нет). А то у меня дальше #00FF прыгнуть можно, только непосредственно с #00FE или #00FF и только на #0100.

upd: Аргументы инструкциям таки придётся добавить.

Не могу не поделиться ссылкой на канал James Sharman который тоже делает что то подобное.

Автор, вы переизобрели zx-specrum на минималках с нуля!!

Это круть крутячая!!

Назовем этот регистр P. Так как адрес 16-битный, а данные 8-битные, разделим P на две части: PL и PH.

Для каждой пары регистров из P нужно восемь микросхем: четыре четырехбитных счетчика

А вы не могли бы пояснить зачем там нужны эти счётчики?

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

Счетчики именно этим и занимаются.

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

Четыре микросхемы связаны через перенос (TC-CET) в один 16-битный счетчик.

Схема

А можно обосновать, почему делая процессор "с нуля" он стал восмибитным? Потому что намертво заложенный в голове шаблон 8 или 16? Почему не 10 или 12 бит?

Потому что так проще. Шаблон не только в голове, но и в компонентах. Нет регистров или памяти на 10 бит.

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

Как-то я вас не понял. Зачем тогда вообще выбирать сложный путь?

Вы сами жалуетесь что вам нужно две команды на переход. И что из за этого код пухнет так, что надо много памяти чтобы его уместить. И чтобы по этому объёму памяти перемещаться - нужно две команды на переход....

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

Да нет у меня к вам никаких претензий! Могу даже извинится если чем-то обидел.

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

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

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

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

Впечатлён) Именно такие «очумельцы» и вернут нас к цивилизации после апокалипсиса… если что))

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

Отличный результат!!!

В опросе — типичная манипуляция. Пункт «Ни о чем» есть, а «Обо всём» — нет! А выбрать можно только один пункт…
Может у автора времени нет писать обо всём. Хотя подумать стоит, из песочницы сотню кармы не каждая статья автору даёт, а тут КМК Технотекст плачет по таким статьям, если всё подробно описать.
Когда-то наблюдал авиационный бортовой компьютер — собранные в брикет керамические подложки с бескорпусными микросхемами — очень напоминает описанный компьютер, только там микросхемы поплотнее стояли.
Может у автора времени нет писать обо всём.

Моя задача проголосовать, а уж как он будет выбирать о чём дальше писать — его дело)

Какой учебник посоветуете чтобы разобраться?

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

https://www.nand2tetris.org лучший бесплатный курс по теме на английском, но надеюсь это не помеха.

Можно систему комманд глянуть?)

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