Книги по схемотехнике: пять учебников по логике и цифровым схемам

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

Как вообще выбирать

Ответ на вопрос «какая книга лучшая» почти всегда сводится к трём проверкам. Хотите ли вы понимать физику компонента, или вам достаточно правил проектирования? Собираетесь ли вы когда-нибудь дойти до микросхемы целиком, или задача — уровни и сумматоры? И на каком языке вы готовы читать: английский технический текст сильно меняет скорость.

КнигаГодГлавный предметКому подойдёт
Хоровиц, Хилл. «Искусство схемотехники»1980, 2005, 2015Реальные компоненты: резисторы, транзисторы, питание, шумТем, кто хочет проектировать железо, а не только логику
Харрис, Харрис. «Цифровая логика и архитектура компьютера»2006, 2009, 2021От вентиля к процессору: автоматы, конвейер, памятьСтудентам, которым нужен один связный курс по цифровой схемотехнике
Уэйкерли. «Проектирование цифровых устройств: принципы и практика»1990–2006Классический курс цифрового проектирования, включая описание схем на HDLТем, кому нужен второй систематический курс по цифровой схемотехнике
Таненбаум, Остин. «Архитектура компьютера»2013, шестое изданиеАрхитектура: процессор, память, ввод-вывод, система командТем, кому важно, почему процессор устроен именно так
Нисан, Шокен. «Элементы вычислительных систем»2006Полный маршрут: от вентиля NAND до операционной системыТем, кто хочет построить вычислитель целиком и понимает каждый шаг

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

«Элементы вычислительных систем»: маршрут от NAND до системы

Ноам Нисан и Шимон Шокен написали учебник с необычной драматургией: он проводит читателя через весь путь вычислительной машины и не пропускает ни одного звена. Сначала базовый примитив NAND и построение из него всех остальных вентилей, мультиплексоров и АЛУ, потом архитектура процессора и система команд, потом ассемблер, потом виртуальная машина и компилятор, потом операционная система. Каждая глава опирается на результат предыдущей, и к концу у вас есть работающая машина, а не набор разрозненных знаний.

Главная причина, по которой эту книгу советуют именно здесь, — совпадение маршрута с курсом. Курс «Компьютер Ершова» идёт тем же путём, но короткими шагами и с симулятором вместо пайки. Книга объясняет то, что симулятор показал, но не объяснил: почему архитектура Гарварда удобна, что такое конвейер и почему кэш решает проблему, а не маскирует её.

вентиль процессор ассемблер язык HDL система уровни 1–7 уровни 8–19 уровни 18–29 уровни 30–43 уровни 44–47 Каждая ступень опирается на предыдущую — пропуск здесь ломает следующую
Маршрут, по которому идут все пять книг, и уровни курса, которые закрывают те же ступени

«Цифровая логика и архитектура компьютера»: один связный курс

Дэйв Харрис и Сара Харрис написали учебник, который чаще всего рекомендуют студентам, потому что он закрывает обе половины предмета: и логику, и архитектуру. Первая часть книги разбирает комбинационную логику, булеву алгебру, карты Карно и синтез схем. Вторая — последовательную логику, конечные автоматы, синхронный сброс и проектирование автоматов. Третья и четвёртая — блоки: пути данных, память, арифметика, конвейер, кэш, система команд и ввод-вывод.

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

Если вам нужен второй систематический курс по цифровому проектированию, возьмите «Проектирование цифровых устройств: принципы и практика» Джона Уэйкерли. Это классический учебник, где логика, автоматы и память разобраны с инженерной точки зрения, а в поздних изданиях добавлено описание схем на языке описания аппаратуры. Если вы уже прошли уровни 30–43, эта книга вам ближе, чем предыдущая.

«Архитектура компьютера»: почему процессор устроен именно так

Эндрю Таненбаум и Моррис Остин написали книгу с другой установкой: не «как спроектировать», а «как устроено и почему именно так». На русском она выходит под названием «Архитектура компьютера» (в оригинале — Structured Computer Organization). В ней процессор разобран по слоям: конвейер, суперскалярность, иерархия кэша, виртуальная память, прерывания, система ввода-вывода. Отсюда и привычка студентов старших курсов называть её «книгой про архитектуру».

Читать её целиком ради симулятора логических схем смысла нет. Но когда вы дойдёте до гарвардской архитектуры и до счётчика команд, вопрос «а как это выглядит в настоящем процессоре» появляется сам, и именно эта книга на него отвечает лучше других.

Бесплатные и легальные пути

Пяти платных книг есть достойная замена и по цене, и по доступу. Курс Nand2Tetris Нисана и Шокена выкладывает материалы и инструменты в открытый доступ: симулятор, ассемблер, компилятор языка и пошаговые задания, плюс дешёвая версия книги от самих авторов. Курс MIT OpenCourseWare 6.004 Computation Structures выложен целиком, с лекциями и заданиями. Тренировка Verilog есть на HDLbits, а нарисовать схему и посмотреть, что получится, можно в браузерном Falstad Circuit Simulator.

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

С какой главы начать

Практический ответ, если нет времени на споры: берите «Элементы вычислительных систем», если хотите построить полную машину; «Цифровую логику и архитектуру компьютера», если нужен академически строгий курс логики; «Искусство схемотехники» (разбор здесь), если планируете иметь дело с реальным железом. Дальше — по вкусу. Чтение двух книг параллельно работает лучше, чем пять по очереди: теория логики и архитектура отвечают друг другу, и непонятные места закрываются из второй книги.

С какой книги по схемотехнике лучше начать?

С той, где до процессора доходят за 200 страниц. Для практики это «Элементы вычислительных систем» Нисана и Шокена, для строгой теории логики — «Цифровая логика и архитектура компьютера» Харриса и Харриса, для понимания того, как устроена машина целиком, — «Архитектура компьютера» Таненбаума и Остина. Подробный разбор каждой — в статье.

Зачем нужен и Хоровиц с Хиллом, и Харрис с Харрисом?

Это разные слои. Хоровиц и Хилл объясняют, как устроен и ведёт себя реальный компонент: транзистор, операционный усилитель, источник питания. Харрис и Харрис объясняют, как из таких компонентов составить систему: логика, конечные автоматы, конвейер, память. Сначала одно, потом другое, хотя бы по диагонали.

Стоит ли читать книги по логике, если есть симулятор?

Симулятор отвечает на вопрос «работает ли схема», книга — на вопрос «почему она должна работать и что будет, если напряжение просядет». Одно без другого оставляет пробел: собрав рабочую схему, вы не сможете объяснить её работу постороннему.

Где взять эти книги?

Университетские библиотеки и их электронные каталоги, каталоги издателей, обычные книжные магазины. Отдельно стоит отметить курс Nand2Tetris: его инструменты, симулятор и материалы авторы Нисан и Шокен распространяют бесплатно, а книгу продают по цене заметно ниже рыночной.

Проверьте себя

Чем карты Карно отличаются от таблицы истинности?

Таблица истинности перечисляет все 2n комбинаций входов, карта Карно раскладывает те же комбинации в сетку, где соседние ячейки отличаются одним входным битом. Благодаря этому группы единиц, которые можно объединить в импликанту, видны сразу, и минимизация получается почти механической. Подробно — в статье про карты Карно.

Что такое конечный автомат и зачем он в цифровой схеме?

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

Зачем учить язык описания железа, если есть язык программирования?

Потому что HDL описывает не последовательность действий, а параллельную структуру железа: каждый сигнал существует всё время, порядок строк не значит порядок вычислений. Сколько тактов занимает схема, решается на этапе компиляции, а не во время выполнения. Разница между программированием и проектированием железа разобрана в статье почему Verilog — это не программирование.

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

Попробовать в симуляторе →