Как сделать компьютер на транзисторах
Информационный портал по безопасности
Проектирование собственного компьютера. Часть 1
Автор: admin от 26-04-2013, 19:51, посмотрело: 2 645
Вступительная часть. «Наполеоновские планы»
Программное обеспечение
Для целей проектирования логических схем существует множество программ. Но для масштабного проектирования и отладки мои требования удовлетворили только две программы (наверное мои требования слишком суровы):
В этой и всех последующих постах при публикации логических схем я буду использовать Logisim ввиду того, что я недавно перешел на Ubuntu, хотя весь проект сделан на Logic Circuit.
План действий
Ключевой элемент всей цифровой электроники — транзистор
Из транзисторов состоят логические элементы. Из логических элементов создают триггеры, сумматоры, логические блоки, счетчики. Комбинируя все это правильным образом можно создать свой собственный компьютер (или ЕОМ).
Логические элементы, их виды
Технологии построения электронных схем или строим логические элементы на транзисторах
Первоначальной затеей было построить компьютер не на микросхемах 7400 серии, а на транзисторах. И начал я поиск технологий построения электронных схем. Существуют следующие:
Далее я прочитал для каждой преимуществанедостатки, и среди них выбрал резисторно-транзисторную логику. Выбор был очевиден ввиду того, что эта логика имеет конструктивную простоту и маленькую стоимость. А также к этой логике есть огромный выбор биполярных SMD транзисторов и SMD резисторов. Транзисторы я взял BC847C n-p-n и BC857C p-n-p.
Закрыв глаза на все недостатки, я на целый месяц погрузился в ресчеты логических элементов на транзисторах. Сделал несколько тестовых схем на макетке, применяя транзисторы BC547C. Результатами теоретической и практической частями был доволен.
Макетка:
Остался последный этап — проектирование схемы синхронного T-триггера на 847 транзисторах, проверка его работоспособности и анализ частотных характеристик. Тест работоспособности довольно простой — на вход «T» подается логическая «1», а на вход «C» — тактовые импульсы с генератора. На выходе я должен получить тактовые импульсы, частота которых вдвое меньше входной. Если все заработает на приемливой частоте — значит заработает и весь компьютер.
Спроектировал схему, которая состоит из 4-х T-триггеров. Сделал печатную плату фоторезистивным методом, нехитро запаял и в итоге получил вот такую красоту (ширина дорожек — 0,15мм):
Подключил к схеме источник питания на 5 вольт, подключил генератор на вход и осциллограф на выход. Начал тестирование на частоте 1 МГц, но схема не заработала. Потом понизил до 20 кГц — вуаля, схема заработала правильным образом. Манипулируя напряжением питания смог повысить рабочуюю частоту до 40 кГц…
Увы, но схема моих ожиданий не оправдала. К тому же только один Т-триггер заработал правильно на частоте до 40 кГц, а все остальные не могли переходить из высокого состояния в низкий, хотя внутринние RS-триггеры работали правильно.
Я провел еще некоторые эксперименты по построению логических элементов, только уже на полевых транзисторах. Результаты получились удовлетворительнимы, но появились некоторые проблемы:
Для себя я сделал хороший вывод: лучше покупать микросхемы 7400 серии с логическими элементами, чем делать логические элементы на транзисторах. А для очистки совести когда вся схема на микросхемах будет готова, можно заменить несколько ключевых микросхем на транзисторные схемы и подключать по-очереди и то, и другое для демонстрации того, что все микросхемы можно заменить на транзисторы 🙂
Законы де Моргана или как можно уменьшить количество вентилей
Законы де Моргана — это правила, которые связывают логические операторы (дизъюнкцию и конъюнкцию) с помощью логического отрицания. В формальной логике их можно записать так:
[img]http://chart.apis.google.com/chart?cht=tx&chl=overline < x wedge y >= overline x vee overline y[/img]
[img]http://chart.apis.google.com/chart?cht=tx&chl=overline < xvee y >= overline x wedge overline y[/img]
Рассмотрим пример использования этих правил в действии. Пусть мы имеем такую схему:
Используя законы де Моргана схему можно переделать на такую:
Как можно заметить по таблицам истинности, логика этих схем идентичная.
Теперь маленький постулат: для логических элементов (кроме логического НЕ) на КМОП логике с инверсным выходом (например, логическое 2И-НЕ) нужно на два транзистора менше, чем для логических элементов с не инверсным выходом (например, логическое 2И).
Тогда, для первой схемы нужно будет 18 транзисторов, а для второй — 12 транзисторов. Причем, вторая схема будет работать быстрее из-за того, что используется меншее количество вентилей и сигнал будет проходить на порядок быстрее.
Планы на будущее
В следующем посте я расскажу о триггерах и мы начнем проектировать АЛУ.
Британский инженер построил 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.
Проверки выполнялись постоянно, на каждом этапе проекта:
Каждая плата тестировалась перед установкой в модуль;
Каждый модуль тестировался по завершению работы над ним;
Каждый стенд тестировался после окончания работ по установке модулей;
После подключения каждого нового стенда тестировалась вся система.
Стоимость различных элементов конструкции:
Окраска и печать £900
Крепежи, фанера и т.п. £500
Затраты на электронные компоненты:
Чипы (для отладки) £850
«Остальное железо» £1100
Контактные терминалы 7,700
Контакты с пайкой 272,300
Одножильный провод 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%. В прошлую субботу я обнаружил неисправность на одной из плат. Случались проблемы при перемещении стендов и раньше. Поэтому я посчитал, что один раз из десяти во время движения стендов возникает неисправность. Если я погружу все в машину и установлю систему в новом доме, уверен, получу несколько неисправностей. Порядка десяти.
У вас есть какие-то задумки по новым проектам?
Первое, что я должен сделать — привести в порядок дом и сад. Они были заброшены на несколько лет. После этого я посмотрю, чем бы еще заняться.
Что вы можете посоветовать людям, которые планируют сделать что-то подобное?
Практический совет: работая над проектом такого масштаба, вы должны иметь четкое представление о том, что вы делаете. Вы должны быть профессионалом в своей области и профессионально относиться к каждому этапу. Разрабатывая что-то, вы должны быть уверены, что все созданные элементы будут совместимы друг с другом на этапе сборки.
Абстрактный совет: начать работу легко, сложно закончить. Почему вы хотите этим заняться? Как только вы начнете что-то делать, вы позже поймете, что это можно сделать лучше, и вы снова начнете выполнять этот этап. И снова, и снова. Два года назад я понял, что если буду все время все переделывать, то ничего не закончу. И я решил останавливаться на этапе с оценкой «неплохо», поскольку этот этап в большинстве случаев соответствует планам. Я знаю, что в проекте много ошибок и много того, что можно было сделать лучше. Но я все же закончил свой проект, и я счастлив.