Проектируем свой компьютер. 

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

Строим логику на танзисторах

by FPGA


Posted on четверг июн 15, 2017 at 12:37AM in Как работает компьютер


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


Начнем с простого логического элемента NOT или инвертор. Этот логический элемент, как мы помним, имеет один вход и один выход. И в терминах двоичной логики на выходе НЕ то что на входе.


Возможных способов построения логики очень много, как на полевых, так и на биполярных транзисторах. Делая долгий путь коротким, рассмотрим вариант, который используется в настоящее время. Кто-то слышал, кто-то нет о CMOS процессе. Дело в том, что раньше логика строилась на nMOS транзисторах. Почему? nMOS это транзистор, в котором в качестве носителей используются электроны. Мобильность (легкость движения) электронов выше чем дырок, поэтому nMOS транзистор меньше своего pMOS аналога, т.к. для обеспечения одинакового сопротивления, канал у nMOS можно сделать уже. Но проблемой nMOS и pMOS является то, что через транзистор идет ток, даже если его состояние сохраняется. Эта проблема стала критичной в 1989 году, когда количество транзисторов достигло такого количества, что дальнейшее их увеличение становилось невозможным из-за энергопотребления и тепловыделения. Тогда на смену пришел гениальный CMOS - одновременное использование nMOS и pMOS. Это был не простой шаг, т.к. он требовал изменения процессов, но преимущества которые давал переход окупили необходимые затраты. Так чем же замечателен CMOS? Самое время вернуться к инвертору.


cmos_inverter.jpg


Если напряжение на входе 0, то  включается только pMOS транзистор, а nMOS выключен, обеспечивая на выходе Vdd. Если напряжение на входе 1 то все ровно наоборот, pMOS выключен, а nMOS открыт, обеспечивая на выходе 0. При этом не забываем, что управление полевым транзистором происходит напряжением, т.е. ток через транзистор не течет только в момент переключения. Просто гениально! В этом сила CMOS. На самом деле всегда присутствуют токи утечки, и с уменьшением размера транзистора они растут. С этим борятся понижением напряжения, переходя от 5В к 3.3 далее 2, 1.5. Но такой переход тоже ограничен шумами которые составляют около 50 мВ. Кроме того, с повышением частоты увеличивается количество включений и выключений, а следовательно и энергопотребление. Именно этот фактор ограничивает частоту процессоров около 2-3 ГГц и заставляет производителей идти по пути многоядерной архитектуры. 


Красота. А теперь сделаем инвертор самостоятельно. У меня в качестве nMOS и pMOS оказались мощные полевые транзисторы IRF530 и IRF9530. Не то чтобы это самый оптимальный путь построения инвертора, но для демонстрации более чем. 


Особенностью использованных транзисторов является наличие диода между стоком и истоком, поэтому следим за контактами. Сток nMOS идет на землю, сток pMOS на Vdd (+5 В). Затворы обоих транзисторов соединяем, это у нас будет вход. Истоки обоих транзисторов так же соединен, а место соединения является выходом инвертора. Для удобства добавляем кнопку. При нажатии на вход поступает 5В при отпускании, хм...висит в воздухе, поэтому не забываем повесить вход на землю через резистор большого номинала. В моем случае 10кОм, в этом случае при отпущенной кнопке на входе будет 0.


Inverter.PNG

Схема включения светодиода

Для наглядности вход и выход визуализируем светодиодами. Катод (короткий контакт) светодиодов идет на землю через резистор 220 Ом. Анода входном светодиоде соединен с контактом №2 на кнопке, при нажатии кнопки на нем будет +. Катод выходного светодиода соединен с выходом инвертора. Входной светодиод не горит, выходной горит. Нажимаем кнопку, входной зажигается, выходной гаснет. Красота.


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


CMOS_nand.png



Сделайте этот логический элемент недалеко от предыдущего, используя новые транзисторы. Для этого нам потребуется 2 pMOS и 2 nMOS транзистора. Как это все работает...Верхние pMOS транзисторы как всегда открыты когда на них подан 0, а нижние когда 1. Таким образом верхние транзисторы обеспечивают на выходе Vdd если вход A или B нулевой. И только в случае когда на обоих входах 1 верхние транзисторы закрыты, т.е. не дают контакты на Vdd. А нижние, наоборот, открыты только в случае когда оба входа 1. Значит на выходе нашего элемента будет всегда 1, кроме случая, когда оба входа одновременно не нулевые.


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


А теперь выход нашего Nand соединим с входом инвертора, который мы собрали ранее. И у нас получился элемент И. Вот так вот мы сделали 3 логических элемента за раз. И их вполне достаточно, чтобы собрать процессор. Но советую вам самостоятельно, в качестве домашней работы, собрать элемент ИЛИ. Результатами делитесь в комментариях. Если что-то не получилось, давайте разберемся и доделаем вместе.


А вот видео как работает инвертор, NAND и логический элемент И













No one has commented yet.

Leave a Comment

HTML Syntax: Отключен