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

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

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

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

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

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

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

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

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

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

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

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

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

Вторую книгу тех же авторов, «Цифровая логика: принципы и практика», стоит брать, если вы переходите от чтения схем к их описанию на языке. Там систематически разобраны способы описать комбинационную и последовательную логику на HDL, VHDL и SystemVerilog, с акцентом на то, как один и тот же узел записывается по-разному. Если вы уже прошли уровни 30–43, эта книга вам ближе, чем предыдущая.

«Структура организации компьютера»: почему процессор устроен именно так

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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