Немного об основах цифровой микроэлектроники

Немного об основах цифровой микроэлектроники

Давайте посмотрим на логотип «Антивирусной школы». Попробуем разобраться, что здесь к чему. Щит — это защита, безопасность. Щит зеленого цвета — корпоративный цвет «Лаборатории Касперского». Но к чему в логотипе куски припоя и микросхемы? Почему их забыли соединить? Где разводка печатной платы? А это FPGA или ASIC? Где тестбенч с тестами верификации? Где шаблоны в формате GDSII для фотолитографии?

Пробежавшись поиском по сайту «Антивирусной школы» не нашел ничего о проектировании аппаратуры да и вообще о принципе её функционирования. Была лишь одна статья «Железные троянцы» Саши Адамова и новость Димы Красильникова «Концепт руткита для сетевой карты».

Ценность социальной сети определяется суммарным вкладом её участников. Поэтому, будем расширять экспертизу «Антивирусной школы» кроме безопасности и программирования, ещё и на область проектирования микроэлектроники.

Введение

Казалось бы, зачем нам, выпускникам филфака с отличием, нужно разбираться в микроэлектронике? Известно, что в постоянной битве вирусов против антивируса побеждает тот, кто окопался на более низком уровне в архитектурном стеке. Обычную троянскую программу легко удалить, просто выгрузив вредоносный процесс с помощью «Диспетчера задач». Но если мы имеем дело с руткитом — то обнаружить процесс уже не так просто. Антивирус должен сам обладать аналогичными технологиями низкого уровня, чтобы бороться с руткитами. А как бороться с буткитом, который получает контроль над компьютером задолго до загрузки операционной системы? Правильно — антивирусу нужно внедриться в более низкие архитектурные слои. Приведём пример. 10 февраля 2010 года «Лабораторией Касперского» получен патент на изобретение, суть которого как раз и есть защита от вредоносных программ на низком аппаратном уровне, а именно на канале данных, связывающий центральный процессор и винчестер (или любой другой накопитель). Президент Медведев в интервью польским СМИ 6 декабря 2010 года подчеркнул: «Наша экономика должна быть основана на инновациях, на новых технологиях. Благо для этого есть все условия — есть способности, есть желание этим заниматься». Аппаратный антивирус — это и есть инновация, новая технология, которая позволяет решить старую проблему качественно новым способом.

Ближе к делу

Все знают, как детки иногда друг с другом спорят: «А ты умеешь считать до десяти? А я до двадцати умею!». Десять, а тем более уж двадцать — это слишком избыточно для цифровой электроники. Цифровую электронику можно полюбить хотя бы за то, что здесь достаточно уметь считать от нуля до одного. Сигналы и ячейки памяти могут принимать только два значения: ноль или единица. Иногда ноль называют логическим нулём, «ложью» или сигналом низкого уровня, а единицу — логической единицей, «истиной» или сигналом высокого уровня. Любой артефакт на компьютере — документ, фотографию, программу, фильм — можно представить в виде комбинации нулей и единиц. А с помощью чего эти нолики и единички обрабатываются? Самое простое устройство, которое способно обрабатывать нули и единицы, называется логическим элементом.

Логические элементы — это атомы в мире цифровой электроники. На этом уровне абстракции эти элементы неделимы. Ниже — это уже уровень транзисторов, конденсаторов и резисторов. Но это всё из мира аналоговой электроники, туда мы пока лезть не будем.

Джорж Буль — изобрёл Булеву алгебру, на основании которой работают все современные цифровые устройства (источник фото).

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

Базовые логические элементы в двух начертаниях

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

Полный однобитный сумматор

Слева три однобитных аргумента: a, b и carry_in (перенос из предыдущего разряда). В этой схеме использован логический элемент «исключающее или» (он же xor, он же exclusive or, он же «сумма по модулю два», он же Атос, он же граф Оливье де ла Фер). Принцип работы этого элемента прост: при нечетном количестве единиц на его входах он выдаёт единичку, а при четном — ноль. Т. е. вот так:

Давайте попробуем что-нибудь сложить. Пусть, а = 0, b = 1, а переноса из младшего разряда нет. 0 + 1 = 0. На выходе суммы стоит единица, переноса в старший разряд нет, поэтому на выходе carry_out стоит ноль. На рисунке ниже можно посмотреть, как вычисляются промежуточные сигналы.

0 + 1 = 1

Тот же самый результат, только посчитанный «в столбик»:

Давайте попробуем подобрать такой пример, чтобы добиться переноса в старший разряд. а = 1, b = 1.

1 + 1 = 0

Ещё раз перепроверим в столбик. Точно так же как и складывая 5 + 5 в десятичной системе, при суммировании 1 + 1 у нас происходит перенос единички в старший разряд. Важно помнить, что в двоичной системе нет цифры «два», поэтому всё, что больше единицы — уже вызывает перенос.

Ну и давайте рассмотрим экстремальный случай, когда а = 1, b = 1 и есть перенос из предыдущего разряда carry_in = 1.

Перепроверяем в столбик. Всё верно: если сложить три единички, то мы получаем тройку (11 в двоичной системе):

Возникает закономерный вопрос: а какая польза от такого сумматора, который больше трёх единичек сложить не может? Действительно, сильно не разгонишься с такой ограниченной логической схемой. Но мы можем представить этот сумматор новым логическим элементом, у которого есть три входа и два выхода и назвать этот компонент «сумматор». Тогда на основании этого элемента составить, например, 4-битный сумматор. Для это лишь нужно соединить линии переноса соответствующим образом, как показано на рисунке ниже. Давайте сразу попробуем сложить два числа A = 6 (0110 в двоичной системе) и B = 5 (0101).

Композиция однобитных сумматоров в четырёхбитный.

Здесь каждый блок — однобитный сумматор, рассмотренный выше.

Перепроверяем в столбик:

Кто не верит, что наша логическая схема работает исправно, тот может самостоятельно перепроверить на калькуляторе.

Заключение

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

— достаточно лишь двух значений, чтобы производить вычисления;

— на основании элементарных логических функций «и», «или», «не» и им подобных можно создавать более сложные функции, например, сумматоры;

— из композиции однобитных устройств, можно делать функции, оперирующие 4-, 8-, 32-, 64-битными аргументами. Теоретически, сложность функций и разрядность аргументов ничем не ограничена.

Есть ещё много интересных тем, о которых можно было бы поговорить в будущем: языки описания аппаратуры, моделирование схем, методы проектирования цифровых устройств.


Карта сайта


Информационный сайт Webavtocat.ru