- Артикул:00-01040507
- Автор: Харрис Д.М., Харрис С.Л.
- ISBN: 978-5-97060-570-7
- Тираж: 100 экз.
- Обложка: Твердый переплет
- Издательство: ДМК пресс (все книги издательства)
- Город: Москва
- Страниц: 792
- Формат: 70х100 1/16
- Год: 2018
- Вес: 2125 г
- Серия: Учебное пособие для ВУЗов (все книги серии)
В книге представлен уникальный и современный подход к разработке цифровых устройств.
Авторы начинают с цифровых логических элементов, переходят к разработке комбинационных и последовательных схем, а затем используют эти базовые блоки как основу для самого сложного: проектирования настоящего процессора MIPS.
По всему тексту приводятся примеры на языках SystemVerilog и VHDL, иллюстрирующие методы и способы проектирования схем с помощью САПР.
Изучив эту книгу, читатели смогут разработать свой собственный микропроцессор и получат полное понимание того, как он работает. В книге объединен привлекательный и юмористический стиль изложения с развитым и практичным подходом к разработке цифровых устройств.
Во второе англоязычное издание вошли новые материалы о системах ввода/вывода применительно к процессорам общего назначения как для ПК, так и для микроконтроллеров.
Приведены практические примеры интерфейсов периферийных устройств с применением RS-232, SPI, управления двигателями, прерываний, беспроводной связи и аналого-цифрового преобразования. Представлено высокоуровневое описание интерфейсов, включая USB, SDRAM, WiFi, PCI Express и другие.
Издание будет полезно студентам, инженерам, а также широкому кругу читателей, интересующихся современной схемотехникой.
Оглавление
Похвальные отзывы на книгу
«Цифровая схемотехника и архитектура компьютера»
Об авторах
Предисловие к изданию на русском языке
Благодарности участникам проекта
Предисловие
Особенности книги
Материалы в Интернете
Как использовать программный инструментарий в учебном курсе
Опечатки
Признательность за поддержку
Глава 1 От нуля до единицы
1.1. План игры
1.2. Искусство управления сложностью
1.2.1. Абстракция
1.2.2. Конструкторская дисциплина
1.2.3. Три базовых принципа
1.3. Цифровая абстракция
1.4. Системы счисления
1.4.1. Десятичная система счисления
1.4.2. Двоичная система счисления
1.4.3. Шестнадцатеричная система счисления
1.4.4. Байт, полубайт и «весь этот джаз»
1.4.5. Сложение двоичных чисел
1.4.6. Знак двоичных чисел
1.5. Логические элементы
1.5.1. Логический вентиль НЕ
1.5.2. Буфер
1.5.3. Логический вентиль И
1.5.4. Логический вентиль ИЛИ
1.5.5. Другие логические элементы с двумя входными сигналами
1.5.6. Логические элементы с количеством входов больше двух
1.6. За пределами цифровой абстракции
1.6.1. Напряжение питания
1.6.2. Логические уровни
1.6.3. Допускаемые уровни шумов
1.6.4. Передаточная характеристика
1.6.5. Статическая дисциплина
1.7. КМОП-транзисторы
1.7.1. Полупроводники
1.7.2. Диоды
1.7.3. Конденсаторы
1.7.4. n-МОП- и р-МОП-транзисторы
1.7.5. Логический вентиль НЕ на КМОП-транзисторах
1.7.6. Другие логические вентили на КМОП-транзисторах
1.7.7. Передаточный логический вентиль
1.7.8. Псевдо n-МОП-логика
1.8. Потребляемая мощность
1.9. Краткий обзор главы 1 и того, что нас ждет впереди
Упражнения
Вопросы для собеседования
Глава 2 Проектирование комбинационной логики
2.1. Введение
2.2. Булевы уравнения
2.2.1. Терминология
2.2.2. Дизъюнктивная форма
2.2.3. Конъюнктивная форма
2.3. Булева алгебра
2.3.1. Аксиомы
2.3.2. Теоремы одной переменной
2.3.3. Теоремы с несколькими переменными
2.3.4. Правда обо всем этом
2.3.5. Упрощение уравнений
2.4. От логики к логическим элементам
2.5. Многоуровневая комбинационная логика
2.5.1. Минимизация аппаратуры
2.5.2. Перемещение инверсии
2.6. Что за X и Z?
2.6.1. Недопустимое значение: Х
2.6.2. Третье состояние: Z
2.7. Карты Карно
2.7.1. Думайте об овалах
2.7.2. Логическая минимизация на картах Карно
2.7.3. Безразличные переменные
2.7.4. Подводя итоги
2.8. Базовые комбинационные блоки
2.8.1. Мультиплексоры
2.8.2. Дешифраторы
2.9. Временные характеристики
2.9.1. Задержка распространения и задержка реакции
2.9.2. Импульсные помехи
2.10. Резюме
Упражнения
Вопросы для собеседования
Глава 3 Проектирование последовательной логики
3.1. Введение
3.2. Защелки и триггеры
3.2.1. RS-триггер
3.2.2. D-защелка
3.2.3. D-Триггер
3.2.4. Регистр
3.2.5. Триггер с функцией разрешения
3.2.6. Триггер с функцией сброса
3.2.7. Проектирование триггеров и защелок на транзисторном уровне
3.2.8. Общий обзор
3.3. Проектирование синхронных логических схем
3.3.1. Некоторые проблемные схемы
3.3.2. Синхронные последовательные схемы
3.3.3. Синхронные и асинхронные схемы
3.4. Конечные автоматы
3.4.1. Пример проектирования конечного автомата
3.4.2. Кодирование состояний
3.4.3. Автоматы Мура и Мили
3.4.4. Декомпозиция конечных автоматов
3.4.5. Восстановление конечных автоматов по электрической схеме
3.4.6. Обзор конечных автоматов
3.5. Синхронизация последовательных схем
3.5.1. Динамическая дисциплина
3.5.2. Временные характеристики системы
3.5.3. Расфазировка тактовых сигналов
3.5.4. Метастабильность
3.5.5. Синхронизаторы
3.5.6. Вычисление времени разрешения
3.6. Параллелизм
3.7. Резюме
Упражнения
Вопросы для собеседования
Глава 4 Языки описания аппаратуры
4.1. Введение
4.1.1. Модули
4.1.2. Происхождение языков SystemVerilog и VHDL
4.1.3. Симуляция и Синтез
4.2. Комбинационная логика
4.2.1. Битовые операторы
4.2.2. Комментарии и пробелы
4.2.3. Операторы сокращения
4.2.4. Условное присваивание
4.2.5. Внутренние переменные
4.2.6. Приоритет
4.2.7. Числа
4.2.8. Z-состояние и X-состояние
4.2.9. Манипуляция битами
4.2.10. Задержки
4.3. Структурное моделирование
4.4. Последовательная логика
4.4.1. Регистры
4.4.2. Регистры со сбросом
4.4.3. Регистры с сигналом разрешения
4.4.4. Группы регистров
4.4.5. Защелки
4.5. И снова комбинационная логика
4.5.1. Операторы case
4.5.2. Операторы if
4.5.3. Таблицы истинности с незначащими битами
4.5.4. Блокирующие и неблокирующие присваивания
4.6. Конечные автоматы
4.7. Типы данных
4.7.1. SystemVerilog
4.7.2. VHDL
4.8. Параметризованные модули
4.9. Среда тестирования
4.10. Резюме
Упражнения
Вопросы для собеседования
Глава 5 Цифровые функциональные узлы
5.1. Введение
5.2. Арифметические схемы
5.2.1. Сложение
5.2.2. Вычитание
5.2.3. Компараторы
5.2.4. АЛУ
5.2.5. Схемы сдвига и циклического сдвига
5.2.6. Умножение
5.2.7. Деление
5.2.8. Дополнительная литература
5.3. Представление чисел
5.3.1. Числа с фиксированной точкой
5.3.2. Числа с плавающей точкой
5.4. Функциональные узлы последовательной логики
5.4.1. Счетчики
5.4.2. Сдвигающие регистры
5.5. Матрицы памяти
5.5.1. Обзор
5.5.2. Динамическое ОЗУ (DRAM)
5.5.3. Статическое ОЗУ (SRAM)
5.5.4. Площадь и задержки
5.5.5. Регистровые файлы
5.5.6. Постоянное запоминающее устройство
5.5.7. Реализация логических функций с использованием матриц памяти
5.5.8. Языки описания аппаратуры и память
5.6. Матрицы логических элементов
5.6.1. Программируемые логические матрицы
5.6.2. Программируемые пользователем вентильные матрицы
5.6.3. Схемотехника матриц
5.7. Резюме
Упражнения
Вопросы для собеседования
Глава 6 Архитектура
6.1. Предисловие
6.2. Язык ассемблера
6.2.1. Инструкции
6.2.2. Операнды: регистры, память и константы
6.3. Машинный язык
6.3.1. Инструкции типа R
6.3.2. Инструкции типа I
6.3.3. Инструкции типа J
6.3.4. Расшифровываем машинные коды
6.3.5. Могущество хранимой программы
6.4. Программирование
6.4.1. Арифметические/логические инструкции
6.4.2. Переходы
6.4.3. Условные операторы
6.4.4. Зацикливаемся
6.4.5. Массивы
6.4.6. Вызовы функций
6.5. Режимы адресации
6.6. Камера, мотор! Компилируем, ассемблируем и загружаем
6.6.1. Карта памяти
6.6.2. Трансляция и запуск программы
6.7. Добавочные сведения
6.7.1. Псевдокоманды
6.7.2. Исключения
6.7.3. Команды для чисел со знаком и без знака
6.7.4. Команды для работы с числами с плавающей точкой
6.8. Живой пример: архитектура х86
6.8.1. Регистры x86
6.8.2. Операнды x86
6.8.3. Флаги состояния
6.8.4. Команды х86
6.8.5. Кодировка команд х86
6.8.6. Другие особенности х86
6.8.7. Оглядываясь назад
6.9. Резюме
Упражнения
Вопросы для собеседования
Глава 7 Микроархитектура
7.1. Введение
7.1.1. Архитектурное состояние и система команд
7.1.2. Процесс разработки
7.1.3. Микроархитектуры MIPS
7.2. Анализ производительности
7.3. Однотактный процессор
7.3.1. Однотактный тракт данных
7.3.2. Однотактное устройство управления
7.3.3. Дополнительные команды
7.3.4. Анализ производительности
7.4. Многотактный процессор
7.4.1. Многотактный тракт данных
7.4.2. Многотактное устройство управления
7.4.3. Дополнительные команды
7.4.4. Анализ производительности
7.5. Конвейерный процессор
7.5.1. Конвейерный тракт данных
7.5.2. Конвейерное устройство управления
7.5.3. Конфликты
7.5.4. Дополнительные команды
7.5.5. Анализ производительности
7.6. Пишем процессор на HDL
7.6.1. Однотактный процессор
7.6.2. Универсальные строительные блоки
7.6.3. Тестовое окружение
7.7. Исключения
7.8. Улучшенные микроархитектуры
7.8.1. Длинные конвейеры
7.8.2. Предсказание условных переходов
7.8.3. Суперскалярный процессор
7.8.4. Процессор с внеочередным выполнением команд
7.8.5. Переименование регистров
7.8.6. SIMD
7.8.7. Многопоточность
7.8.8. Симметричные мультипроцессоры
7.8.9. Гетерогенные мультипроцессоры
7.9. Живой пример: микроархитектура x86
7.10. Резюме
Упражнения
Вопросы для собеседования
Глава 8 Иерархия памяти и подсистема ввода-вывода
8.1. Введение
8.2. Анализ производительности систем памяти
8.3. Кэш-память
8.3.1. Какие данные хранятся в кэш-памяти?
8.3.2. Как найти данные в кэш-памяти?
8.3.3. Какие данные заместить в кэш-памяти?
8.3.4. Улучшенная кэш-память
8.3.5. Эволюция кэш-памяти процессоров MIPS
8.4. Виртуальная память
8.4.1. Трансляция адресов
8.4.2. Таблица страниц
8.4.3. Буфер ассоциативной трансляции
8.4.4. Защита памяти
8.4.5. Стратегии замещения страниц
8.4.6. Многоуровневые таблицы страниц
8.5. Системы ввода-вывода
8.6. Ввод-вывод во встроенных системах
8.6.1. Микроконтроллер PIC32MX675F512H
8.6.2. Цифровой ввод-вывод общего назначения
8.6.3. Последовательный ввод-вывод
8.6.4. Таймеры
8.6.5. Прерывания
8.6.6. Аналоговый ввод-вывод
8.6.7. Другие внешние устройства микроконтроллера
8.7. Интерфейсы ввода-вывода персональных компьютеров
8.7.1. USB
8.7.2. PCI и PCI Express
8.7.3. Память DDR3
8.7.4. Сеть
8.7.5. SATA
8.7.6. Подключения к ПК
8.8. Живой пример: системы памяти и ввода-вывода семейства х86
8.8.1. Системы кэш-памяти процессоров семейства х86
8.8.2. Виртуальная память х86
8.8.3. Программируемый ввод-вывод х86
8.9. Резюме
Эпилог
Упражнения
Вопросы для собеседования
Приложение А. Реализация цифровых систем
А.1. Введение
А.2. Логические микросхемы серии 74xx
А.2.1. Логические элементы
А.2.2. Другие логические функции
А.3. Программируемая логика
А.3.1. PROM
А.3.2. Блоки PLA
А.3.3. FPGA
А.4. Заказные специализированные интегральные схемы
А.5. Работа с документацией
А.6. Семейства логических элементов
А.7. Корпуса и монтаж интегральных схем
А.8. Линии передачи
A.8.1. Согласованная нагрузка
A.8.2. Нагрузка холостого хода
A.8.3. Нагрузка короткого замыкания
A.8.4. Рассогласованная нагрузка
A.8.5. Когда нужно применять модели линии передачи
A.8.6. Правильное подключение нагрузки к линии передачи
A.8.7. Вывод формулы для Z0
A.8.8. Вывод формулы для коэффициента отражения
A.8.9. Подводя итог
A.9. Экономика
Приложение B. Инструкции архитектуры MIPS
Приложение C. Программирование на языке Си
C.1. Введение
C.2. Добро пожаловать в язык Си
C.2.1. Структура программы на языке Си
C.2.2. Запуск Си-программы
C.3. Компиляция
C.3.1. Комментарии
C.3.2. #define
C.3.3. #include
C.4. Переменные
C.4.1. Базовые типы данных
C.4.2. Глобальные и локальные переменные
C.4.3. Инициализация переменных
C.5. Операции
C.6. Вызовы функций
C.7. Управление последовательностью выполнения действий
C.7.1. Условные операторы
C.7.2. Циклы
C.8. Другие типы данных
C.8.1. Указатели
C.8.2. Массивы
C.8.3. Символы
C.8.4. Строки символов
C.8.5. Структуры
C.8.6. Оператор typedef
C.8.7. Динамическое распределение памяти
C.8.8. Связные списки
C.9. Стандартная библиотека языка
C.9.1. stdio
C.9.2. stdlib
C.9.3. math
C.9.4. string
C.10. Компилятор и опции командной строки
C.10.1. Компиляция нескольких исходных файлов
C.10.2. Опции компилятора
C.10.3. Аргументы командной строки
C.11. Типичные ошибки
Литература для дальнейшего изучения
Дополнительная информация
Предметный указатель
Артикул 00-01037813