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