Как сделать процессор своими руками


Процессор своими руками

Сколько я себя помню, всегда мечтал сделать процессор. Наконец, вчера я его сделал. Не бог весть что: 8 бит, RISC, текущая рабочая частота — 4 кГц, но он работает. Пока что в программе моделирования логических цепей, но все мы знаем: «сегодня — на модели, завтра — на деле!». Под катом несколько анимаций, краткое введение в двоичную логику для самых маленьких, короткий рассказ про основные микросхемы логики процессора и, собственно, схема.

Двоичная логика

Двоичная система счисления (для тех, кто не в курсе) — это такая система счисления, в которой нет цифр больше единицы. Такое определение многих сбивает с толку, пока они не вспомнят, что в десятичной системе счисления нет цифр больше девятки. 

Двоичная система используется в компьютерах потому, что числа в ней легко кодировать напряжением: есть напряжение — значит, единица; нет напряжения — значит, ноль. Кроме того, «ноль» и «один» легко можно понимать как «ложно» и «истинно». Более того, большая часть устройств, работающих в двоичной системе счисления, обычно относится к числам как к массиву «истинностей» и «ложностей», то есть оперирует с числами как с логическими величинами. Для самых маленьких и тех, кто не в курсе, я расскажу и покажу, как работают простейшие элементы двоичной логики.

Элемент «Буфер»

Представьте, что вы сидите в своей комнате, а ваш друг — на кухне. Вы кричите ему: «Друг, скажи, в коридоре горит свет?». Друг отвечает: «Да, горит!» или «Нет, не горит». Ваш друг — буфер между источником сигнала (лампочкой в коридоре) и приемником (вами). Более того, ваш друг — не какой-нибудь там обычный буфер, а буфер управляемый. Он был бы обычным буфером, если бы постоянно кричал: «Лампочка светится» или «Лампочка не светится». 

Элемент «Не» — NOT

А теперь представьте, что ваш друг — шутник, который всегда говорит неправду. И если лампочка в коридоре светится, то он скажет вам «Нет, в коридоре совсем-совсем темно», а если не светится — то «Да, в коридоре свет горит». Если у вас есть такой друг на самом деле, значит, он воплощение элемента «Не». 

Элемент «Или» — OR

Для объяснения сути элемента «Или» одной лампочки и одного друга, к сожалению, не хватит. Нужно две лампочки. Итак, у вас в коридоре две лампочки — торшер, к примеру, и люстра. Вы кричите: «Друг, скажи, хотя бы одна лампочка в коридоре светит?», и ваш друг отвечает «Да» или «Нет». Очевидно, что для ответа «Нет» все лампочки обязательно должны быть выключены. 

Элемент «И» — AND

Та же самая квартира, вы, друг на кухне, торшер и люстра в коридоре. На ваш вопрос «В коридоре обе лампочки горят?» вы получаете ответ «Да» или «Нет». Поздравляю, теперь ваш друг — это элемент «И». 

Элемент «Исключающее Или» — XOR

Повторим еще раз эксперимент для элемента «Или», но переформулируем свой вопрос к другу: «Друг, скажи, в коридоре только одна лампочка светит?». Честный друг ответит на такой вопрос «Да» только в том случае, если в коридоре действительно горит только одна лампочка. 

Сумматоры

Четвертьсумматором называют элемент «Исключающее Или». Почему? Давайте разберемся. Составим таблицу сложения для двух чисел в двоичной системе счисления: 0+0= 0 0+1= 1 1+0= 1 1+1= 10 Теперь запишем таблицу истинности элемента «Исключающее Или». Для этого обозначим светящуюся лампочку за 1, потухшую — за 0, и ответы друга «Да»/«Нет» как 1 и 0 соответственно. 0 XOR 0 = 0 0 XOR 1 = 1 1 XOR 0 = 1 1 XOR 1 = 0

Очень похоже, не так ли? Таблица сложения и таблица истинности «Исключающего Или» совпадают полностью, кроме одного-единственного случая. И этот случай называется «Переполнение».

Полусумматор

При переполнении результат сложения уже не помещается в столько же разрядов, во сколько помещались слагаемые. Слагаемые — два однозначных числа (одна значащая цифра, понимаете?), а сумма — уже двузначное (две значащих цифры). Две цифры одной лампочкой («Светится»/«Не светится») уже не передать. Нужно две лампочки. Нужно — сделаем! 

Кроме XOR, для сумматора нам потребуется элемент «И» (AND). 0 XOR 0 = 0 0 AND 0 = 0 0 XOR 1 = 1 0 AND 1 = 0 1 XOR 0 = 1 1 AND 0 = 0 1 XOR 1 = 0 1 AND 1 = 1 Тадам!  0+0= 00 0+1= 01 1+0= 01 1+1= 10

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

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

Более сложные элементы

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

Мультплексоры состоят обычно только из сочетаний элементов «И», «Или» и «Не». У одноразрядного мультиплексора один вход называется «выбор адреса», два входа с общим названием «входной сигнал» и один выход, который так и называется: «выходной сигнал». 

Когда на «выбор адреса» подается 0, то «выходной сигнал» становится таким же, как первый «входной сигнал». Соответственно, когда на «выбор» подается 1, то «выходной сигнал» становится равным второму «входному сигналу».

Демультиплексор

А вот эта штучка работает с точностью до наоборот. На «выбор адреса» даем адрес, на «вход данных» даем данные, на выходе с номером «адрес» имеем данные со входа.

Счетчик

Для понимания работы счетчика вам опять понадобится ваш друг. Позовите его из кухни (надеюсь, он не сильно там скучал, и, главное, не съел всю вашу еду), и попросите делать вот что: пусть он запомнит число 0. Каждый раз, когда вы будете прикасаться к нему, он должен прибавить единицу к тому числу, которое помнит, сказать результат и запомнить его. Когда результат будет равен (допустим) 3, он должен выкрикнуть «Абракадабра!» и отвечать при следующем прикосновении, что сейчас он помнит число 0. Немного сложно? Смотрите: Вы прикасаетесь к другу. Друг говорит «Один». Вы прикасаетесь к другу. Друг говорит «Два».

Вы прикасаетесь к другу. Друг говорит «Три». Друг выкрикивает «Хабрахабр!». Критическая атака! Вы временно парализованы и не можете двигаться. 

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

Память

Давайте продолжим издеваться над вашим несчастным (возможно, даже воображаемым) другом. Пусть теперь он запомнит число ноль. Когда вы касаетесь его левой руки, он должен запоминать число ноль, а когда правой — число один. При вопросе «Какое число ты помнишь?» друг должен всегда отвечать то число, которое запоминал — ноль или один. 

Простейшей запоминающей ячейкой является RS-триггер («триггер» значит «переключатель»). RS-триггер может хранить в себе один бит данных («ноль»/«один»), и имеет два входа. Вход Set/Установка (совсем как левая рука вашего друга) записывает в триггер «один», а вход Reset/Сброс (соответственно, правая рука) — «ноль». 

Регистр

Немного сложнее устроен регистр. Ваш друг превращается в регистр тогда, когда вы просите его что-нибудь запомнить, а потом говорите «Эй, напомни мне, что я говорил тебе запомнить?», и друг правильно отвечает.

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

Сдвиговый регистр

Вы когда-нибудь стояли в очередях? Наверняка стояли. Значит, вы представляете, каково быть данными в сдвиговом регистре. Люди приходят и становятся в конец очереди. Первый человек в очереди заходит в кабинет к большой шишке. Тот, кто был вторым в очереди, становится первым, а тот, кто был третьим — теперь второй, и так далее. Очередь — это такой хитрый сдвиговый регистр, из которого «данные» (ну, то есть люди) могут убегать по делам, предварительно предупредив соседей по очереди. В настоящем сдвиговом регистре, разумеется, «данные» из очереди сбегать не могут.  Итак, у сдвигового регистра есть вход данных (через него данные попадают в «очередь») и выход данных (из которого можно прочитать самую первую запись в «очереди»). Еще у сдвигового регистра есть вход «сдвинуть регистр». Как только на этот вход приходит «логическая единица», вся очередь сдвигается.

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

Оперативная память

Если много-много триггеров объединить в регистры, а много-много регистров объединить в одной микросхеме, то получится микросхема оперативной памяти. У микросхемы памяти обычно есть вход адреса, двунаправленный вход данных (то есть в этот вход можно записывать, и с него же можно считывать) и вход разрешения записи. На вход адреса подаем какое-нибудь число, и это число выберет определенную ячейку памяти. После этого на входе/выходе данных мы можем прочитать то, что записано в эту самую ячейку.  Теперь мы одновременно подадим на вход/выход данных то, что хотим в эту ячейку записать, а на вход разрешения записи — «логическую единицу». Результат немного предсказуем, не так ли?

Процессор

Процессоры иногда делят на CISC — те, которые умеют выполнять много разных команд, и RISC — те, которые умеют выполнять мало команд, но выполняют их хорошо. Одним прекрасным вечером мне подумалось: а было бы здорово, если бы можно было сделать полноценный процессор, который умеет выполнять всего одну команду. Вскоре я узнал, что существует целый класс однокомандных процессоров — OISC, чаще всего они используют команду Subleq (вычесть, и если меньше или равно нулю, то перейти) или Subeq (вычесть, и если равно нулю, то перейти). Изучая различные варианты OISC-процессоров, я нашел в сети сайт Олега Мазонки, который разработал простейший однокомандный язык BitBitJump. Единственная команда этого языка так и называется — BitBitJump (скопировать бит и перейти по адресу). Этот, безусловно эзотерический, язык является полным по Тьюрингу — то есть на нем можно реализовать любой компьютерный алгоритм. 

Подробное описание BitBitJump и ассемблер для этого языка можно найти на сайте разработчика. Для описания алгоритма работы процессора достаточно знать следующее:

1. При включении процессора в регистрах PC, A и B записаны 0 2. Считываем ячейку памяти с адресом PC и сохраняем прочитанное в регистр A 3. Увеличиваем PC 4. Считываем ячейку памяти с адресом PC и сохраняем прочитанное в регистр B 5. Увеличиваем PC 6. Записываем в ячейку с адресом, записанным в регистре B, содержимое бита с адресом А. 7. Считываем ячейку памяти с адресом PC и сохраняем прочитанное в регистр B 8. Записываем в регистр PC содержимое регистра B 9. Переходим к пункту 2 нашего плана

10. PROFIT!!!

К сожалению, алгоритм бесконечный, и потому PROFIT достигнут не будет.

Собственно, схема

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

1. Ввести программу в ОЗУ 2. Нажать на включатель 3. Установить счетчик в положение 4 (это можно делать и аппаратно, но схема стала бы еще более громоздкой) 4. Включить тактовый генератор Как видите, использованы один регистр, один сдвиговый регистр, одна микросхема ОЗУ, два двоичных счетчика, один демультиплексор (представленный компараторами), два мультиплексора и немного чистой логики.

Можете скачать схему в формате circ для программы Logisim, и поиграться.

Что дальше?

Во-первых, можно увеличить разрядность процессора — заменив 8-битные элементы на 16-битные. Во-вторых, можно вынести ОЗУ из процессора, и добавить несложную схему, которая будет приостанавливать процессор, изменять ОЗУ и снова включать процессор. Такая схема будет выполнять функции простого контроллера ввода-вывода. Тогда можно будет сделать на базе этого процессора калькулятор, контроллер или еще какую-нибудь забавную бесполезную штуку. В-третьих, можно воплотить всю эту схему в железе. Что я собираюсь сделать. Как только сделаю — обязательно расскажу и покажу. Спасибо всем за внимание!  P.S. Ссылки (для тех, кому лень читать):

1. Процессоры URISC — ru.wikipedia.org/wiki/Urisc

2. Сайт языка BitBitJump — mazonka.com/bbj/index.html 3. Программа для моделирования логических схем Logisim — http://ozark.hendrix.edu/~burch/logisim/ 4. Самодельный URISC (ORISC) процессор для Logisim — narod.ru/disk/31367690001/oo.circ.html

Источник: HabraHabr

robo-hunter.com

Сделай сам: Процессор своими руками

Никому не известный инженер Стив Чемберлин решил изменить общепринятое мнение о том, что процессор своими руками создать невозможно. Точнее, процессор достаточно сложного ПК, который смог бы дублировать функции 8-битных вычислительных устройств, получивших распространение в начале 80-х. Вначале это было небольшой проект, который со временем вырос в нечто большее…

Сейчас BMOW 1 представляет собой полноценный ПК на основе самодельного процессора, который запускает программы, имеет клавиатуру, VGA-видео, аудио-систему. Программная среда для BMOW 1 — Basic.

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

Стив поставил перед собой несколько целей, все из которых были выполнены:

— создать процессор из простых элементов, были использованы чипы 7400 серии, без компонентов серий 6502, Z-80 и т.д.;— свести сложность аппаратной части к минимуму;— компьютер должен был запускать «реальные» программы, не являясь чисто «игрушкой»;— процессор должен стать элементом системы полноценного ПК;

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

Сама идея возникла у Стива в ноябре 2007, а к реализации инженер приступил в феврале 2008 года. В апреле 2008 система BMOW 1 запустилась в первый раз, чему наш создатель был несказанно рад.

Постепенно были добавлены VGA-видео, аудио-система, BASIC, бутлоадер, который позволял взаимодействовать с подключенным ПК. Через некоторое время BMOW 1 стал достаточно сложным, чтобы обеспечивать работу непростых программ. Основные работы по созданию BMOW 1 были завершены в феврале 2009 года, ПК дорабатывался до настоящего времени.

Вот некоторые подробности о конфигурации устройства:

— текущая частота работы процессора около 2 МГц. Процессор может быть «разогнан» до 3 МГц (теоретически, пока не проверено);

— 512 КБ RAM, 512 КБ ROM;— потребление энергии 10 Ватт, 2А при 5В;— картинка на «выходе» имеет разрешение 512*480, два цвета, или же 128*240 — 256 цветов;— аудио — трехканальный звуковой генератор;— обычная клавиатура с PS\2-коннектором;— дополнительный дисплей для вывода текста, 24*2 символа;

— 1250 проволочных проводника, т.е. около 2500 соединений;

Другие подробности — на сайте автора.

www.softmixer.com

Энтузиаст сделал самодельный процессор - «Хакер»

Рекомендуем почитать:
  • Содержание выпуска
  • Подписка на «Хакер»

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

Стив Чамберлин (Steve Chamberlin) из Калифорнии начал работу над проектом BMOW (Big Mess O' Wires) в ноябре 2007. И хотя он является разработчиком игр, поставил перед собой задачу создать процессор с нуля, используя лишь логические элементы. При этом планировалось разработать не игрушку, а полноценный 8-битный процессор, способный выполнять реальные программы, соединяться с обычным компьютером и достаточно быстро работать. Надо сказать, что эти задачи были значительно превзойдены.

Так как Стив не является инженером, то решил действовать по-простому методу и соединял все элементы на плате вручную, для чего потребовалось более 1250 проводов. Тем не менее, процессор отлично функционирует на частоте 2 МГц и теоретически может работать на 3 МГц, но это пока что не тестировалось. Шина данных имеет ширину 8 бит, а шина адреса - 24 бита, что позволяет работать с 16 Мб оперативной памяти. Для начала энтузиаст использовал 512 Кб ROM для загрузчика и основного меню и 512 Кб RAM для программ.

Для подключения к компьютеру используется специальный чип - переходник с USB на TTL-логику. Кроме того, подключается стандартная клавиатура по PS/2 и текстовый LCD экранчик с выводом 24x2 символа. Также производится вывод на обычный VGA монитор с максимальным разрешением 512 x 480, а трехголосый программируемый генератор обеспечивает воспроизведение музыки и звуков.

xakep.ru

Строим декоративный транзисторный компьютер — шаг 1

Недавно на хабре была статья о проектировании собственного компьютера, где автор хотел сначала строить компьютер из транзисторов, но затем решил продолжить на микросхемах 7400-серии из-за того, что на транзисторах ему это показалось слишком сложным и дорогим занятием. Похожая задача интересовала и меня последние 3 года — но от изначальной идеи строить на транзисторах я не отказался, и сейчас могу рассказать свои соображения и показать текущие наработки, а также — хочу спросить вашего мнения о том, каким на ваш взгляд должен быть _серийный_ транзисторный декоративный компьютер. Но сразу нужно заметить, что работы впереди еще на пару лет :-)

Главный вопрос — зачем все это нужно, если есть FPGA и всякие Raspberry Pi?

Ответ простой: 1) Мне интересно этим заниматься в свободное время и

2) Декоративный компьютер (декоративный — это вопрос отношения к компьютеру, а не его внешности) — он как декоративные домашние животные: мопс не отгрызет ногу грабителю, а персидский котик не победит в бою метрокрысу. Но с ними интересно играть и показывать гостям — даже если в области вычислений, охраны и охоты они сильно уступают «боевым» аналогам.

Подстановка задачи и архитектура

Какие будут у нас требования к декоративному компьютеру?
  • Разработка под автоматизированную сборку. Руками паять по 5000 деталей на компьютер — поседеть можно.
  • Производительность — не существенна, главное чтобы 100тыс+ операций в секунду было (на уровне Радио-86РК). Даже 100тыс оп/с позволит решать очень многие задачи.
  • Практика показывает, что 64 КиБ памяти — реалистичный минимальный объем памяти. В 1-4 КиБ многое не влезет, потому уменьшать шину адреса меньше 16 бит не стоит.
  • Программирование — на C. Нельзя заставлять людей тратить своё свободное время на ассемблер (но если желание есть — то все карты в руки).
  • В базовой модели — из транзисторов сделан только сам процессор. Память и обвязка — может быть из микросхем. Полностью транзисторный вариант возможен в будущем, но это уже будет дальнейшее развитие (со своими ограничениями — более 1-2 КиБ памяти иметь будет затруднительно)
  • В процессоре — отключаемые светодиоды показывают состояние внутренних регистров (IP, аккумулятор, запись/чтение из памяти...)
  • Не слишком высокая цена. Себестоимость одного транзистора с обвязкой и автоматическим монтажом — около 2 рублей, соответственно, использовать больше 1000 транзисторов не желательно для серийного продукта. Это означает, что схема должна быть проще, чем i8080 (4500 транзисторов), i4004 (2300 транзисторов), и MT15 (~3000 транзисторов), не смотря на требование 16-и битной шины адреса.
  • uCLinux? Даже без виртуальной памяти, было бы очень желательно иметь 24-32 бита. Конечно, это существенно повысило бы интерес, но потребует по меньшей мере удвоения количества транзисторов (=удвоения цены). Также, с ростом разрядности — пропорционально падает и скорость последовательного компьютера.
  • Аппаратная поддержка прерываний — не требуется, т.к. очень уж много за собой тянет (микрокод, аппаратный стек, и проч.), и обойтись без неё можно.

Взаимодействие с пользователем: Классическая реализация — это клавиатура + вывод на телевизор или VGA-монитор. Сделать удобную «свою» клавиатуру слишком сложно — нужно использовать стандартные PS/2 или USB. PS/2 клавиатуры уже редкость — а USB в транзисторном компьютере поддержать — будет затруднительно, без использования грязных хаков (вроде микроконтроллера).

Вероятно, оптимальным и простым решением может быть терминальный интерфейс — когда компьютер общается с внешним миром через последовательный порт (RS232), таким же образом можно загружать программы. Т.е. в простейшем случае транзисторный компьютер подключается к настольному компьютеру (или специализированному терминалу) через USBCOM адаптер, и в любой программе-терминале (например Putty) можно с ним работать. Также, нужна и возможность подключать внешние устройства через GPIO-пины.

Последовательный или параллельный ALU? 8 или 16 бит?: Поскольку количество транзисторов очень ограничено (

habr.com

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

Megaprocessor — это 16-битный процессор с четырьмя регистрами общего назначения. На отдельных панелях размещены схемы различного назначения, включая память, арифметический блок, ввод/вывод и другие. В системе используется 16-разрядный блок АЛУ и 16-разрядный сумматор. Megaprocessor оснащен 10 000 светодиодов, мигание которых демонстрирует каждый этап процесса вычислений, показывая направление движение данных по схеме. Объем памяти составляет 256 байт. Блок памяти включает 27000 транзисторов. Общее число транзисторов в системе превышает 40 тысяч. Масса процессора — 500 кг. Процессор работает на частоте 20 килогерц.

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

«Компьютеры непрозрачны. Смотря на них, нельзя понять, как они работают. Что я хотел сделать — это забраться внутрь и понять, что происходит. Проблема в том, что это невозможно осуществить с процессорами обычного размера. Но мы можем построить большой процессор своими руками — и тогда будет понятно, что происходит внутри. Для отображения потоков данных стоит добавить еще и светодиоды — что и было сделано», — говорит Джеймс Ньюман. Теперь за работой Megaprocessor можно наблюдать в режиме реального времени, и любой человек может понять, из каких элементов состоит процессор и как работает каждый блок.

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

Для демонстрации вычислительных возможностей процессора инженер решил выбрать игру тетрис. Элементы игры отображаются на большом светодиодном табло с разрешением 32*64 светодиода. Во время игры в режиме реального времени видно все, что происходит внутри процессора.

«Ваш компьютер может быть в миллион раз быстрее той системы, что я построил, но она намного привлекательнее… Я не думаю, что смогу когда-нибудь продать свой проект, но мне хочется, чтобы Megaprocessor был представлен в качестве экспоната в музее или образовательном учреждении», — говорит Ньюман.

Сборка системы

Megaprocessor состоит из большого числа элементов, которые собираются в блоки. Отдельные блоки размещаются на стендах. Высота стенда — 2 метра. Ширина — от 1,2 до 1,6 метров. На каждом стенде монтируется небольшое количество модулей — от 2 до 4. Стенд служит как местом для размещения модулей, так и их защитой. Каждый модуль выполняет определенный набор функций. Например, есть модуль АЛУ, декодер и другие. Модули составляются из отдельных плат.

Стенды

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

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

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

У каждой сервисной платы две функции. Первая — соединение и мониторинг линий питания. Вторая — обеспечение доступа к зажимам питания. Всего в системе 7 стендов.

Модули

Megaprocessor разделен на ряд модулей. Вот модуль управляющего автомата:

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

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

Соединение всех элементов проводами занимает очень много времени.

Платы

C самого начала я решил, что в проекте будут использоваться печатные платы. Без них создать нечто сложное было бы невозможно, ведь только соединений в системе свыше 100 000. Большинство средств проекта ушло на платы. Изначально мне хотелось сделать большие платы, но это оказалось безумно сложно, поэтому позже я решил разделить все на мелкие платы, что и было сделано. Для проектирования я использовал CadSoft Eagle.

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

Проверка

Проверки выполнялись постоянно, на каждом этапе проекта:

Каждая плата тестировалась перед установкой в модуль;Каждый модуль тестировался по завершению работы над ним;Каждый стенд тестировался после окончания работ по установке модулей;

После подключения каждого нового стенда тестировалась вся система.

Финансовая составляющая

Всего Ньюман потратил около 40000 фунтов стерлингов. По текущему курсу (после референдума о выходе из ЕС курс фунта упал на 30% по отношению к доллару) это $53071.

Стоимость различных элементов конструкции:

Электроника £19,000

Платы £14,000

Алюминий £3,500

Инструменты £2,000

Гравировка £900

Окраска и печать £900

Крепежи, фанера и т.п. £500

Затраты на электронные компоненты:

Транзисторы £2000

Кабели £1800

Коннекторы £5000

Чипы (для отладки) £850

Резисторы £370

Питание £800

светодиоды £1300

Припой £370

«Остальное железо» £1100

Общая статистика

Some stats:

Транзисторы 42,400

Резисторы 50,500

Светодиоды 10,500

Соединители 770

Контактные терминалы 7,700

Контакты с пайкой 272,300

Вес припоя 4.25 кг

Вес свинца 2.5 кг

Одножильный провод 1,500 м

20-контактный шлейф 420 м

Общая длина проводников 9.9 км

Платы, использованные в проекте

Основные проблемы

Транзисторы, установленные неправильно

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

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

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

Коннекторы

Подключение при помощи коннекторов — простая задача. Но если таких соединений около 500, есть высокая вероятность ошибки. И Джеймс ошибался несколько раз.

Перекошеный кабель

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

Изогнутые зубья

Есть и такой тип соединения, как IDC (Insulation Displacement Connector). Между острыми зубьями продевается кабель, чья изоляция прорезается при вставке, и кабель соединяется с зубьями. Все просто. В одном из случаев «зуб» контакта изогнулся и касался соседнего, замкнув схему. Найти проблему было очень непросто.

И еще одна проблема схожего характера. Только в этом случае гнутый «зуб» не обеспечивал должного контакта с проводом. 

Кабели

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

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

Замыкание контактов

Замыкание на корпус

Здесь две платы, одна из которых работала не так, как нужно. Как оказалось, причина была в том, что Джеймс отверткой повредил плату и её замкнуло на крепеж, а тот — на весь стенд. Заметить такое невооруженным глазом практически невозможно.

Припой

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

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

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

И еще пайка

А здесь Джеймс по какой-то причине просто забыл припаять контакты. Целый ряд ножек транзисторов оказался «голым», ни к чему не присоединенным. Эту проблему удалось быстро обнаружить и решить.

Дефект транзистора

Это была одна из наиболее серьезных проблем. Тразисторов в схеме много тысяч. И выход только одного транзистора из строя означает нерабочий Megaprocessor. Во избежание проблемы Джеймс проверял каждый транзистор до пайки. Потом — после пайки. Потом — все транзисторы на схеме. И все равно оказывалось, что какие-то платы не работают, и виной тому — дефектный транзистор. Причиной повреждения обычно становился электростатический разряд. Транзисторы типа 2N7000 очень чувствительны к такому типу воздействия.

Причем если плата вчера работала, то сегодня она могла уже не работать. Почему? Причина оказалась необычной. Это… пылесос по имени Генри.

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

Другие проблемы

Их было огромное количество. Ньюман работал над проектом пять лет, и конечно, почти каждый день что-то случалось. Ошибки, технические неисправности, короткие замыкания, некорректное моделирование и многое другое — это только малая толика проблем. Описать все это в рамках одной статьи не представляется возможным. Лучше почитать то, что пишет сам Джеймс о проблемах в ходе реализации проекта.

Интервью с Джеймсом Ньюманом

Я не мог просто написать об этом грандиозном проекте, не задав несколько вопросов автору. Джеймс сразу согласился рассказать немного о своем проекте для читателей Geektimes.

Как вам пришла в голову идея создать этот проект?

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

Сколько времени прошло между появлением идеи и началом реализации проекта?

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

А насколько велико расхождение между начальным планом и фактическим сроком реализации проекта?

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

Какие вы можете назвать большие или мелкие проблемы, возникавшие во время работы? Какие из них были критичными?

Главная проблема, которая остановила работу на некоторое время — разработка мультиплексора. Я некоторое время работал над решением вопроса эффекта паразитного диода, который актуален для МОП-тразисторов (Подавляющее большинство приборов по МОП технологии выполняется так, что исток транзистора подключен к полупроводниковой «подложке» структуры. При этом образуется так называемый паразитный диод между истоком и стоком. Избавление от этого диода сопряжено со значительными технологическими трудностями, поэтому с ним научились мириться и даже использовать в схемотехнических решениях. — Прим. ред.). В результате я разработал платы, которые снимали проблему, но они были большего размера, чем я рассчитывал.Еще одна проблема — сложность создания стоек, их конструкция оказалась слишком сложной. У меня не слишком хорошее пространственное воображение.Ну и кроме этого постоянно приходилось решать мелкие вопросы, их было просто огромное количество как в ходе проектирования, так и в ходе реализации намеченного плана.

Если бы вы знали обо всех этих проблемах, стали бы вы работать над проектом?

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

У вас были мысли прекратить работу уже в ходе реализации проекта?

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

Ваш проект стал очень известным. Есть ли коммерческие предложения? Может быть вы уже приняли решение отдать Megaprocessor в какой-нибудь музей или университет?

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

Нужен ли системе какой-либо специальный уход?

Нет, ничего такого не требуется. Нужна лишь осторожность. Особенно это касается статического электричества — небольшой заряд может вывести что-то из строя.

Как вы вводите данные в систему?

Сейчас я использую модифицированную версию «Venom Arcade Stick». Сначала я планировал использовать последовательный интерфейс, позволивший бы использовать ПК. Интерфейс я разработал, изготовил, но еще не тестировал.

Какое энергопотребление у системы?

Я думаю, около 300 Вт. Большая часть уходит на светодиоды.

Ломалось ли что-нибудь в системе уже после готовности Megaprocessor?

Единственная проблема, с которой я столкнулся — это более медленная работа системы, чем изначально планировалось. Как оказаллось, причина в неправильно выбранном номинале подтягивающих резисторов. Нужно было выбрать резисторы номиналом не 10k, а всего 470. Еще одно — это не проблема, а скорее, мое желание. Я хотел бы обеспечить возможность настройки яркости дисплея. Но сейчас об этом уже поздно думать.

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

Очень хороший вопрос. И пугающий. Я думаю, что если не двигать и не трогать электронные компоненты всю систему — все будет хорошо. Но проблема в том, что Megaprocessor размещается в моей гостиной, и мне приходится двигать стенды. Каждый раз, когда я этим занимаюсь, есть вероятность повреждения соединения. Вероятность небольшая. Может быть, 10%. В прошлую субботу я обнаружил неисправность на одной из плат. Случались проблемы при перемещении стендов и раньше. Поэтому я посчитал, что один раз из десяти во время движения стендов возникает неисправность. Если я погружу все в машину и установлю систему в новом доме, уверен, получу несколько неисправностей. Порядка десяти.

У вас есть какие-то задумки по новым проектам?

Первое, что я должен сделать — привести в порядок дом и сад. Они были заброшены на несколько лет. После этого я посмотрю, чем бы еще заняться.

Что вы можете посоветовать людям, которые планируют сделать что-то подобное?

Практический совет: работая над проектом такого масштаба, вы должны иметь четкое представление о том, что вы делаете. Вы должны быть профессионалом в своей области и профессионально относиться к каждому этапу. Разрабатывая что-то, вы должны быть уверены, что все созданные элементы будут совместимы друг с другом на этапе сборки.Абстрактный совет: начать работу легко, сложно закончить. Почему вы хотите этим заняться? Как только вы начнете что-то делать, вы позже поймете, что это можно сделать лучше, и вы снова начнете выполнять этот этап. И снова, и снова. Два года назад я понял, что если буду все время все переделывать, то ничего не закончу. И я решил останавливаться на этапе с оценкой «неплохо», поскольку этот этап в большинстве случаев соответствует планам. Я знаю, что в проекте много ошибок и много того, что можно было сделать лучше. Но я все же закончил свой проект, и я счастлив.

Автор - marks

pikabu.ru

От песка до процессора

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

habr.com


Смотрите также