Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Цифровой синтез: практический курс

Покупка
Артикул: 748350.01.99
Доступ онлайн
1 299 ₽
В корзину
Книга представляет собой расширенный практический курс, ориентированный на язык Verilog и обеспечивающий возможность выполнения практических задач на дешевых отладочных платах. Этот практикум дополняет и объединяет теоретические курсы по цифровой логике, языкам описания аппаратуры, компьютерной архитектуре и микроархитектуре, а также подготавливает студентов к работе с промышленными процессорными ядрами, к созданию специализированных вычислителей (например, ускорителей нейросетей) и курсов VLSI по проектированию массовых микросхем ASIC. Материал каждой главы можно изучать автономно. В конце глав приводятся вопросы и упражнения, позволяющие преподавателям встраивать данный материал в любой учебный курс, а читателям книги - закрепить новые знания, самостоятельно выполнив предлагаемые задания. Издание предназначено для студентов технических вузов, разработчиков аппаратно-программных систем, а также специалистов в области прикладной математики, интересующихся алгоритмами САПР.
Цифровой синтез: практический курс : учебник / под. ред. А. Ю. Романова, Ю. В. Панчула. - Москва : ДМК Пресс, 2020. - 556 с. - ISBN 978-5-97060-850-0. - Текст : электронный. - URL: https://znanium.com/catalog/product/1210695 (дата обращения: 29.03.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
www.дмк.рф

Интернет-магазин www.dmkpress.com

Оптовая продажа: КТК «Галактика»
books@alians-kniga.ru

Под общей редакцией 
А. Ю. Романова, Ю. В. Панчула

В настоящем издании представлен практикум по проектированию
на языке Verilog, расширяющий и дополняющий теоретический
материал, изложенный в книге Д. Харриса и С. Харрис «Цифровая
схемотехника и архитектура компьютера».

Преимущество книги состоит в том, что изучение Verilog построено 
не на традиционном академическом заучивании инструкций и команд языка, а на знакомстве с основными элементами цифровой 
электроники и подробными примерами того, как их описывать; при 
этом представленный материал сопровождается исчерпывающим 
набором презентаций и готовых примеров кода на сайте издательства, которые могут быть запущены на любой популярной 
отладочной плате с ПЛИС.

Предлагаемое издание отражает богатый опыт работы международного авторского коллектива специалистов из ведущих университетов и ИТ-компаний, что делает его не только отличным учебным пособием для изучения в вузе, но и полезной книгой для 
самообразования.

Цифровой синтез

Цифровой синтез

9 785970 608500

ISBN 978-5-97060-850-0

Практический курс

Под общей редакцией А. Ю. Романова, Ю. В. Панчула

Цифровой синтез: 
практический курс

Москва, 2020

УДК 004.01
ББК 32.972

Р69

Коллектив авторов
Антонов А. А.,  Барабанов А. В., Данчек Ч. Т., Жельнио С. Л.,  
Иванец С. А., Кудрявцев И. А.,  Панчул Ю. В., Романов А. Ю., 
Романова И. И., Телятников А. А., Шуплецов М. С.

Р69
Цифровой синтез: практический курс / под общ. ред. А. Ю. Романова, 
Ю. В. Панчула. – М.: ДМК Пресс, 2020.– 556 с.

ISBN 978-5-97060-850-0

Книга представляет собой расширенный практический курс, ориентированный на язык Verilog и обеспечивающий возможность выполнения практических задач на дешевых отладочных платах. Этот практикум дополняет 
и объединяет теоретические курсы по цифровой логике, языкам описания 
аппаратуры, компьютерной архитектуре и микроархитектуре, а также подготавливает студентов к работе с промышленными процессорными ядрами, к созданию специализированных вычислителей (например, ускорителей нейросетей) и курсов VLSI по проектированию массовых микросхем 
ASIC.

Материал каждой главы можно изучать автономно. В конце глав приводятся вопросы и упражнения, позволяющие преподавателям встраивать 
данный материал в любой учебный курс, а читателям книги – закрепить 
новые знания, самостоятельно выполнив предлагаемые задания.

Издание предназначено для студентов технических вузов, разработчиков 
аппаратно-программных систем, а также специалистов в области прикладной математики, интересующихся алгоритмами САПР.

УДК 004.01
ББК 32.972

Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав.

Материал, изложенный в данной книге, многократно проверен. Но, поскольку вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи 
с этим издательство не несет ответственности за возможные ошибки, связанные 
с использованием книги.

ISBN 978-5-97060-850-0
© Оформление, издание, ДМК Пресс, 2020.

Оглавление

Введение
0-1

Глава 1.
Основы комбинационной логики.  
Маршрут разработки цифровых схем
1-1

Глава 2.
Основы последовательностной логики.  
Управление энергопотреблением цифровой схемы
2-1

Глава 3.
Шифраторы и дешифраторы.  
Скорость работы комбинационных блоков
3-1

Глава 4.
Мультиплексор, демультиплексор и селектор.  
Построение иерархических модулей
4-1

Глава 5.
Сумматор, компаратор, устройство сдвига и АЛУ.  
Повышение скорости арифметических операций
5-1

Глава 6.
Последовательная логика. Счетчики и сдвиговые регистры
6-1

Глава 7.
Память: регистровый файл и стек
7-1

Глава 8.
Конечные автоматы: основы
8-1

Глава 9.
Использование конечных автоматов для связи 
с периферийными устройствами
9-1

Глава 10. Конвейерная обработка данных
10-1

Глава 11. Софт-процессор: основы микроархитектуры
11-1

Приложение A. Путь вперед: от устройств на базе FPGA 
к массовому рынку ASIC для популярных гаджетов
А-1

Приложение Б. История успеха победы российской команды 
на международном конкурсе Innovate FPGA от Intel
Б-1

Цифровой синтез: 
практический курс

Введение

Введение

0-2

Verilog – не просто один из редких языков, а обязательный 
инструмент современного разработчика электроники

До сих пор встречаются люди, которые считают, что Verilog – просто один из 
редких языков программирования, а ПЛИС – устройство для очень специальных 
применений вроде обработки сигнала с радиотелескопа. В действительности же 
Verilog и ПЛИС – вход во всю современную цифровую электронику. Это так, поскольку подавляющее большинство цифровых микросхем, разработанных за последние 25 лет, использует технологию компиляции (синтеза) схем из языков 
описания аппаратуры, главный из которых – Verilog. Огромное число инженеров, 
которые сейчас разрабатывают микросхемы в Apple, Intel и других электронных 
компаниях, во время учебы в таких университетах, как Беркли и MIT, прошли через лабораторные работы с использованием учебных отладочных плат на ПЛИС. 
Такого рода практические занятия позволяют наработать опыт в технологии проектирования на уровне регистровых передач (Register Transfer Level, RTL), которая используется для создания массовых микросхем внутри популярных цифровых устройств вроде Apple iPhone.

Данный учебник – важный шаг на пути построения  экосистемы разработки современной электроники в России и в других странах бывшего СССР. России предстоит пройти тот же путь, который прошли Япония, Южная Корея, Тайвань и который сейчас проходит Китайская Народная Республика. На этом пути необходимо 
создать большое количество групп разработчиков разной специализации, готовых слаженно работать вместе. Таких разработчиков необходимо выращивать из 
сегодняшних студентов: 

• Некоторые из студентов после окончания университета будут специализироваться в разработке микроархитектуры процессоров, сетевых устройств и других логически сложных блоков. Они будут или сами использовать Verilog, или 
создавать модели устройств, основываясь на понимании того, как работает 
технология RTL.

• Другие студенты будут специализироваться на физическом уровне проектирования. Им придется решать проблемы физического уровня, возникающие при 
превращении логического графа схемы в план расположения дорожек и транзисторов на пластине кремния при ее фабричном производстве. Хотя эти инженеры не будут писать на Verilog сами, им нужно понимать основы того, как 
работает в пространстве и времени граф, который они раскладывают. 

• Третья группа студентов будет специализироваться на создании программ 
автоматизированного проектирования (САПР), которые помогают работать 
разработчикам аппаратуры. Компании, разрабатывающие такие программы, образуют целую небольшую индустрию автоматизации проектирования 
(Electronic Design Automation, EDA). В этой индустрии востребованы математически мыслящие инженеры, умеющие решать алгоритмически сложные 
задачи, которые возникают в программах синтеза, размещения и трассировки 
схем, автоматического доказательства их свойств и проверки их эквивалентности высокоуровневым моделям. Этим инженерам также необходимо пони
Введение

0-3

мать основы цифрового синтеза и программирования на языках проектирования аппаратуры (HDL).

• Знать основы логического проектирования электроники необходимо и создателям аппаратно-программных систем. В компьютерах и встраиваемых системах
XX века аппаратура и программы были довольно сильно разделены. В XXI веке, 
когда повышение скорости процессоров за счет простого уменьшения размера
транзисторов зашло в тупик, началось быстрое развитие специализированных
вычислителей. Сначала появились графические процессоры для вычислений
трехмерной графики, сейчас бурно развиваются ускорители нейронных сетей, 
чипы для машинного зрения и даже специализированные вычислители криптовалют. Создателям всех этих устройств необходимо понимать и программную, 
и аппаратную стороны вычислений.

Обоснования для создания этой книги

Данная книга – «Цифровой синтез: практический курс» – создана совместными 
усилиями преподавателей и инженеров из нескольких университетов и компаний не только из России, но и из Украины и США. Этот практикум – один из нескольких образовательных проектов, нацеленных на подъем электроники в странах постсоветского пространства, которые все вместе можно уже рассматривать 
как осознанную стратегию. 

К таким проектам относятся, например:

• Симулятор MIPT-MIPS1, созданный базовой кафедрой Intel в МФТИ.

• Совместный курс компьютерной архитектуры и ПЛИС, созданный ВМК МГУ
в партнерстве с европейскими университетами.

• Курс по интернету вещей, созданный в российском отделении Samsung в парт
нерстве с российскими университетами.

• Учебное софт-процессорное MIPS ядро schoolMIPS2, разработанное Станиславом Жельнио из IVA Technologies.

Предтечами создания практикума стали три проекта: 

• Перевод вводного учебника Дэвида Харриса и Сары Харрис «Цифровая схемотехника и архитектура компьютера». Этот перевод сделала в 2015 году группа
из сорока с лишним преподавателей российских и украинских университетов,
русских сотрудников компаний в Silicon Valley (включая MIPS, AMD, Synopsys,
Apple и NVidia) и российских компаний (включая НИИСИ, МЦСТ, Модуль). Начинание поддержали британская компания Imagination Technologies, образовательное отделение РОСНАНО, а также российское издательство «ДМК-Пресс».
Эта книга закрыла брешь в теоретической части преподавания языков описания аппаратуры и микроархитектуры, связала их с основами цифровой логики
и программированием. Данный практикум можно рассматривать как расши
1 https://mipt-ilab.github.io/mipt-mips/.
2 https://github.com/MIPSfpga/schoolMIPS.

Введение

0-4

ренное продолжение и дополнение к этому курсу, ориентированное на практическое применение.

• Семинары MIPSfpga, организованные в 2015–2017 годах Imagination Techno
logies в партнерстве с российскими, украинскими и казахскими университетами (МГУ, НИУ ВШЭ (МИЭМ), МИФИ, МФТИ, МИЭТ, ИТМО, Самарский университет, Томский ТГУ, украинские КПИ и КНУ, казахский AlmaU). MIPSfpga – это
базовая конфигурация разработанного на Verilog промышленного процессора MIPS interAptiv UP, различные варианты которого используют такие компании, как Microchip Technology, Broadcom и Байкал Электроникс. Проекты, где
студенты соединяют с MIPSfpga свои собственные блоки и синтезируют для
ПЛИС простые системы на кристалле, позволяют им работать с тем же кодом,
с которым работают инженеры в промышленности. К сожалению, MIPSfpga
слишком сложен для начальной демонстрации основных принципов микроархитектуры. Данный практикум содержит целую главу, посвященную проекту
schoolMIPS, который значительно проще, чем MIPSfpga. При этом schoolMIPS
позволяет студенту понять базовое устройство процессоров, работу процессорного конвейера и прерываний.

• Цикл популярных семинаров Nanometer ASIC, организованный РОСНАНО,
МИСиС, КПИ и Imagination Technologies, состоялся в 2016 году. Автор этих материалов – Чарльз Данчек, преподаватель Университета Калифорнии Санта-Круз и бывший инженер Intel. Мистер Данчек написал приложение к данному практикуму. В нем рассказано, как студент, выполнивший упражнения
на ПЛИС, сможет в будущем перейти к разработке заказных микросхем (ASIC, 
Application Specific Integrated Circuits). К ASIC относятся практически все
микросхемы, которые применяются в массовых электронных устройствах.

Юрий Панчул, 
разработчик процессорных ядер MIPS и ускорителя нейросетей Wave, 
Саннивейл, Калифорния

Введение

0-5

История создания данной книги

История создания книги «Цифровой синтез: практический курс» традиционно 
для таких проектов не проста. После успеха переводной версии учебника «Цифровая схемотехника и архитектура компьютера» на русском языке стало ясно, что 
необходимо его продолжение в виде расширенного практического курса, ориентированного на Verilog и обеспечивающего возможность выполнения практических задач на дешевых отладочных платах. Ясно было также и то, что одному человеку (и даже коллективу университетской кафедры) создать такой 
курс – непосильная задача, при том что издание книги требовало финансирования. У истоков идеи написания данной книги стоял Юрий Панчул, сумевший объединить для ее воплощения множество преподавателей и инженеров из России, 
Украины и США. Второй фактор, который помог появиться книге, – это знакомство Юрия Панчула (в рамках семинаров Nanometer ASIC) со мной, Александром 
Романовым, руководителем Учебной лаборатории Систем автоматизированного 
проектирования Московского института электроники и математики Национального университета «Высшая школа экономики» (УЛ САПР НИУ ВШЭ). Несмотря 
на экономический уклон НИУ ВШЭ, МИЭМ в прошлом был отдельным техническим вузом, готовившим студентов в области электроники и математики. Сейчас же, опираясь на необходимые технические и людские ресурсы, МИЭМ является одним из ведущих центров компетенций, в том числе и по цифровому синтезу. 
Идея создания учебника получила поддержку на уровне руководства в лице Евгения Аврамовича Крука, после чего началась работа по написанию книги, сбору 
и редактированию глав от разных авторов, рецензированию и разработке дополнительных материалов. 

Чем эта книга отличается от других?

Особенность данной книги в том, что во всех главах каждый пример кода сопровождается листингом и тестбенчем, которые находятся в дополнительных материалах к книге (https://github.com/RomeoMe5/DDLM). Это позволяет читателю 
легко использовать уже готовые исходные коды, проводить моделирование, прототипирование на учебной плате с ПЛИС и модифицировать работающие примеры программ. 

Немного про отладочные платы: поскольку команда, разрабатывавшая книгу, находилась территориально в разных местах, одна из целей курса состояла в том, 
чтобы сделать его максимально доступным для людей разного достатка. Изначально книга ориентирована на плату De10-Lite от компании Terasic на основе 
ПЛИС MAX 10K производства Intel FPGA (в прошлом – компания Altera). Выбор 
платы обусловлен ее относительно небольшой стоимостью (около $55 по академической цене) и доступностью, а также тем, что она обладает достаточной периферией, функционалом, емкостью ресурсов и даже может быть интег рирована 
с платформой Arduino. Платы на основе ПЛИС Intel FPGA (Altera) популярны 
в России и ближнем зарубежье и имеются во многих академических организациях. При этом исходные коды примеров могут быть легко перенесены и на 
другие платы. Поскольку данный проект ориентирован на широкое сообщество, в ближайшее время планируется миграция примеров кодов на другие попу
Введение

0-6

лярные отладочные платы на основе ПЛИС: Марсоход, Terasic De1-SoC, Terasic 
De10-Standard, Digilent Nexys 3/4 и др. Для выполнения работ не требуется какого-либо платного программного обеспечения, так как Quartus Prime Lite Edition 
+ Modelsim / GTKWave распространяются свободно. Таким образом, чтобы приступить к изучению цифрового синтеза, достаточно иметь только эту книгу; при 
желании увидеть результаты не только моделирования, но и прототипирования 
понадобится какая-либо отладочная плата на основе ПЛИС.

Содержание книги

Еще одна особенность книги – то, что авторы представили ее главы в виде отдельных независимых разделов. То есть можно изучать тот раздел, который необходим сейчас, и обращаться к другим главам по необходимости. Каждую главу 
в основном писали один-два автора, после чего редактировали и рецензировали 
другие люди. Вот почему каждая глава имеет свой неповторимый оригинальный 
стиль, приведенный, впрочем, к единому оформлению и терминологии. Таким 
образом, в случае если одна глава воспринимается читателем тяжело, то, возможно, другая будет читаться им намного легче. 

Поскольку книга задумана как практикум, ее подразделы сопровождаются заданиями для самостоятельной проработки. В конце каждой главы приводятся вопросы и упражнения, позволяющие преподавателям встраивать данный 
материал в любой учебный курс, а читателям книги – закрепить новые знания, 
самостоятельно выполнив предлагаемые задания.

Рассмотрим кратко по главам содержание книги:

Глава 1. Основы комбинационной логики. Маршрут разработки цифровых 
схем
Глава знакомит читателя с типичным циклом разработки цифровой системы на 
примере проектирования простой комбинационной схемы, которая содержит 
всего несколько логических вентилей. Сначала демонстрируется, как описать 
цифровую схему с помощью графического редактора. Далее та же схема проектируется с использованием языка описания аппаратуры. После этого демонстрируются этапы моделирования и прототипирования.

Глава 2. Основы последовательностной логики. Управление 
энергопотреблением цифровой схемы
Данная глава посвящена разработке последовательностных устройств. Рассматриваются защелки и триггеры на примерах их различных реализаций на языке Verilog. Глава позволяет понять, чем комбинационная логика отличается от 
последовательностной и как можно управлять энергопотреблением цифровых 
устройств на этапе их проектирования.

Глава 3. Шифраторы и дешифраторы. Скорость работы комбинационных 
блоков
В этой главе приводятся примеры реализаций таких важных комбинационных 
блоков, как шифраторы и дешифраторы, а также дается методика оценки временных характеристик цифровых блоков и их оптимизации.

Введение

0-7

Глава 4. Мультиплексор, демультиплексор и селектор. Построение 
иерархических модулей
В главе на примере разработки различных вариантов реализаций таких комбинационных блоков, как мультиплексор, демультиплексор и селектор, демонстрируется иерархический подход к проектированию цифровых устройств. Также вводятся понятие параметризации модулей и конструкция generate. В конце главы 
демонстрируются некоторые приемы использования мультиплексоров на практических примерах.

Глава 5. Сумматор, компаратор, устройство сдвига и АЛУ. Повышение 
скорости арифметических операций
В главе рассматриваются примеры всевозможных реализаций комбинационной 
арифметики (сумматоров, компараторов, устройств сдвига и АЛУ на их основе). 
Отдельный раздел посвящен повышению скорости арифметических блоков на 
этапе их проектирования.

Глава 6. Последовательностная логика. Счетчики и сдвиговые регистры
В данной главе изложение возвращается к последовательностной логике и особенностям ее разработки на Verilog (блокирующие/неблокирующие присвоения, понятие защелок и т. д.) на примере разработки счетчиков и сдвиговых регистров. В конце главы даны примеры организации взаимодействия цифровых 
систем с простыми периферийными модулями.

Глава 7. Память: регистровый файл и стек
Эта глава посвящена различным вариантам реализации памяти: регистровая 
память, однопортовая/многопортовая память, стек, очередь и т. д. В конце главы приводится небольшой пример проектирования на HDL памяти с привязкой 
к библиотекам фабрик-производителей ASIC.

Глава 8. Конечные автоматы: основы
В главе приводятся основные понятия и приемы для проектирования конечных 
автоматов. Иллюстрируются особенности проектирования конечных автоматов 
Мили и Мура и рассматриваются наиболее оптимальные случаи их использования. Также демонстрируется использование специальных инструментов для проектирования и анализа конечных автоматов.

Глава 9. Использование конечных автоматов для связи с периферийными 
устройствами
Эта глава расширяет тему проектирования конечных автоматов путем формализации академического подхода к проектированию автоматов; также демонстрируются и другие автоматы, например на основе счетчика. Глава обосновывает применение конечных автоматов в проектировании цифровых устройств как 
ключевого блока управления ими.

Глава 10. Конвейерная обработка данных
Глава посвящена описанию конвейерного подхода к обработке данных и особенностям разработки на Verilog. Приводится сравнение комбинационного, многотактного и конвейерного подходов на примере разработки арифметического 

Доступ онлайн
1 299 ₽
В корзину