Рекомендуем

Ключевые слова:
FPGASystemVerilogVERILOGVHDLПЛИС
Язык SystemVerilog для моделированияСоловьев В.В. Язык SystemVerilog для моделирования
Архитектуры ПЛИС фирмы Xilinx: CPLD и FPGA 7-й серииСоловьев В.В. Архитектуры ПЛИС фирмы Xilinx: CPLD и FPGA 7-й серии
Systemview 6.0 (SystemVue).Системное проектирование радиоэлектронных устройствЗлатин И.Л. Systemview 6.0 (SystemVue).Системное проектирование радиоэлектронных устройств

Книга

Проектирование конечных автоматов. Теория и практика

360 стр.
Формат 70x100/16 (170x240 мм)
Исполнение: в твердом переплете
ISBN 978-5-9912-1092-8
ББК 32.85
УДК 658.512:519.87:004.3'12
Аннотация
Конечные автоматы (Finite State Machines – FSMs) занимают важное место в разработке цифровой аппаратуры, поскольку в каждом устройстве их приходиться проектировать всякий раз заново. Показано место конечных автоматов в методике проектирования цифровых устройств. При этом внимание концентрируется на проблемах, с которыми сталкивается инженер при разработке устройств управления. Рассмотрены способы представления конечных автоматов, которые наиболее часто используются на практике. Освещена современная элементная база цифровых систем (CPLD, FPGA, SoC). Особое внимание уделено реализации конечных автоматов в программируемых логических интегральных схемах (ПЛИС – FPGA). Дан обзор методов синтеза, реализованных в средствах проектирования (Quartus). Подробно рассмотрены стили и способы представления конечных автоматов на языках описания аппаратуры (Verilog, SystemVerilog, VHDL). Представлены популярные коды, используемые для кодирования состояний конечных автоматов. Особо отмечены моменты, когда используемое кодирование состояний конечного автомата не соответствует ожидаемому результату. Продемонстрировано использование значений входных и выходных переменных конечного автомата для кодирования состояний. Излагаемый материал сопровождается большим количеством примеров, листингов кодов конечных автоматов и рисунков с результатами синтеза и моделирования. Для специалистов в области разработки цифровых систем – инженеров-практиков, научных работников, аспирантов, преподавателей и студентов соответствующих специальностей.

Оглавление

Предисловие

Глава 1. Введение
1.1. Комбинационные и последовательные схемы, конечные автоматы
1.2. Элементы теории конечных автоматов
1.3. Традиционная структурная модель конечных автоматов Мил и и Мура
1.4. Совмещенная модель конечных автоматов Мили и Мура
1.5. Сравнение конечных автоматов Мили и Мура
1.6. Базовые структурные модели конечных автоматов
1.7. Традиционная методика проектирования цифровых устройств на примере последовательного умножителя
1.7.1. Операционные и управляющие устройства
1.7.2. Алгоритм функционирования последовательного умножителя
перационного управляющего устройства
1.8. Проектирование операционного устройства
1.9. Методика проектирования конечных автоматов по граф-схеме алгоритма
1.10. Граф-схемы алгоритмов
1.11. Построение конечных автоматов по ГСА
1.11.1. Проблемы построения конечных автоматов по ГСА
1.11.2. Разметка ГСА для синтеза МПА Мура
1.11.3. Разметка ГСА для синтеза МПА Мили
1.11.4. Примеры разметки ГСА для синтеза автоматов Мили и Мура
1.12. Место конечных автоматов в структуре цифрового устройства или цифровой системы
1.13. Выводы

Глава 2. Представление конечных автоматов
2.1. Графы автоматов
2.2. Входные и выходные переменные, входной и выходной алфавит конечного автомата
2.3. Абстрактные и структурные конечные автоматы, полностью и неполностью определенные конечные автоматы
2.4. Таблицы переходов и выходов
2.5. Представление конечных автоматов в виде списков переходов
2.5.1. Списки переходов
2.5.2. Структурные списки переходов
2.5.3. Построение логических уравнений комбинационной части конечного автомата
2.5.4. Использование JK- и T-триггеров в качестве элементов памяти конечных автоматов
2.6. Язык ASM
2.6.1. Определение языка ASM
2.6.2. Методика построения ASM
2.6.2. Пример построения ASM для автомата Мура
2.6.4. Пример построения ASM для автомата Мили
2.6.5. Описание с помощью ASM совмещенных моделей автоматов Мили и Мура
2.7. Формат KIS2
2.8. Анализ различных способов представления конечных автоматов
2.9. Пример конечного автомата, используемый в описаниях на языках проектирования
2.10. Выводы

Глава 3. Элементная база конечных автоматов
3.1. Основные электронные компоненты
3.2. Архитектура электронных компонентов
3.2.1. Архитектуры PLD
3.2.2. Архитектура CPLD
3.2.3. Архитектура FPGA
3.2.4. Архитектура SoC
3.3. Память электронных компонентов
3.3.1. Память цифровых систем
3.3.2. Блоки встроенной памяти FPGA
3.4. Реализация конечных автоматов в блоках памяти FPGA
3.5. Выводы

Глава 4. Методы синтеза, реализованные в промышленных средствах проектирования цифровых систем
4.1. Обобщенная методика реализации цифровых устройств с помощью средств проектирования
4.2. Логический синтез конечных автоматов
4.3. Методы логического синтеза
4.3.1. Двухуровневый логический синтез
4.3.2. Многоуровневый логический синтез
4.4. Декомпозиция булевых функций
4.5. Физический синтез
4.5.1. Основные этапы физического синтеза
4.5.2. Размещение
4.5.3. Трассировка
4.6. Методы физического синтеза
4.6.1. Дублирование регистров
4.6.2. Объединение регистров
4.6.3. Ретайминг регистров
4.6.4. Декомпозиция и объединение LUT
4.6.5. Оптимизация критических ячеек
4.7. Выводы

Глава 5. Конструкции языка Verilog для описания конечных автоматов
5.1. Общая структура кода в языке Verilog
5.2. Заголовок модуля
5.2.1. Объявление параметров модуля
5.2.2. Объявление портов модуля
5.3. Декларативная часть
5.3.1. Объявление локальных параметров
5.3.2. Основные типы данных
5.3.3. Объявление переменных
5.3.4. Объявление задач и функций
5.3.5. Константные функции
5.4. Операторная часть
5.4.1. Оператор always и блоки always
5.4.2. Процедурные операторы блокирующего (=) и неблокирующего (<=) назначения
5.4.3. Оператор непрерывного назначения assign
5.4.4. Оператор if
5.4.5. Оператор case
5.4.6. Атрибуты full case и parallel case
5.4.7. Атрибут keep
5.4.8. Другие операторы процедурного программирования
5.4.9. Вызовы задач и функций, инстанция модулей
5.5. Выводы

Глава 6. Описание конечных автоматов на языке Verilog
6.1. Описание конечного автомата Мили с тремя процессами
6.1.1. Код проекта конечного автомата Мили с тремя процессами
6.1.2. Синтез проекта автомата Мили с тремя процессами
6.1.3. Моделирование проекта автомата Мили с тремя процессами
6.2. Описание конечного автомата Мура с тремя процессами
6.2.1. Код проекта автомата Мура с тремя процессами
6.2.2. Синтез проекта автомата Мура с тремя процессами
6.2.3. Моделирование проекта автомата Мура с тремя процессами
6.3. Сравнение результатов функционального моделирования автоматов Мили и Мура
6.4. Описание конечных автоматов Мили с двумя процессами
6.5. Описание конечных автоматов Мура с двумя процессами
6.6. Описание конечных автоматов Мили с одним процессом
6.7. Описание конечных автоматов Мура с одним процессом
6.8. Анализ временных диаграмм проектов конечных автоматов
6.9. Оценка площади, быстродействия и числа строк исходного кода описания конечных автоматов
6.10. Выводы

Глава 7. Описание конечных автоматов на языке SystemVerilog
7.1. Конструкции языка SystemVerilog для описания конечных автоматов
7.1.1. Тип logic
7.1.2. Назначения `0, `1, `x и `z
7.1.3. Процедурные блоки always comb и always ff
7.1.4. Имена процедурных блоков
7.1.5. Перечисляемые и пользовательские типы
7.1.6. Квалификаторы unique и priority
7.2. Описание конечных автоматов Мили на языке SystemVerilog
7.2.1. Традиционное описание конечного автомата Мили на языке SystemVerilog
7.2.2. Указание кодов состояний в коде проекта
7.2.3. Использование пользовательского типа для объявления переменных состояния
7.2.4. Использование квалификаторов unique и priority в описании конечных автоматов
7.2.5. Описание конечных автоматов с абстрактными именами
7.2.6. Использование имен процедурных блоков
7.2.7. Использование нотации `x для описания недопустимых состояний и ошибочных выходных векторов
7.2.8. Анализ различных описаний конечного автомата Мили на языке SystemVerilog
7.3. Описание конечных автоматов Мура на языке SystemVerilog
7.3.1. Традиционное описание конечного автомата Мура на языке SystemVerilog
7.3.2. Другие способы описания конечного автомата Мура на языке SystemVerilog
7.4. Выводы

Глава 8. Стили и способы описания конечных автоматов на языках Verilog и SystemVerilog
8.1. Описание конечных автоматов с регистрами на выходах
8.2. Использование оператора case в описании конечных автоматов
8.3. Описание надежных конечных автоматов
8.4. Раздельная и векторная проверка значений входных сигналов
8.5. Раздельное и векторное определение значений выходных сигналов
8.6. Определение значения по умолчанию для состояния перехода
8.7. Определение значений по умолчанию выходных сигналов
8.8. Определение значений по умолчанию для состояния перехода и выходных сигналов
8.9. Анализ рассмотренных способов описания конечных автоматов на языках Verilog и SystemVerilog
8.10. Выводы

Глава 9. Конструкции языка VHDL для описания конечных автоматов
9.1. Идентификаторы и ключевые слова
9.2. Комментарии
9.3. Литералы
9.4. Типы
9.5. Подтипы
9.6. Перечисляемые типы
9.7. Тип STD LOGIC
9.8. Массивы
9.9. Константы
9.10. Переменные
9.11. Сигналы
9.12. Объект
9.13. Архитектура
9.14. Атрибуты
9.15. Имена
9.16. Операции
9.17. Последовательные операторы
9.17.1. Оператор присвоения значения переменной
9.17.2. Оператор присвоения значения сигналу
9.17.3. Оператор if
9.17.4. Оператор case
9.18. Параллельные операторы
9.18.1. Оператор процесса
9.18.2. Оператор условного назначения сигнала
9.18.3. Оператор выборочного назначения сигнала
9.19. Выводы

Глава 10. Описание конечных автоматов на языке VHDL
10.1. Описание конечных автоматов Мили
10.1.1. Описание конечных автоматов Мили с тремя процессами
10.1.2. Описание конечных автоматов Мили с двумя процессами
10.1.3. Описание конечных автоматов Мили с одним процессом
10.2. Описание конечных автоматов Мура
10.2.1. Описание конечных автоматов Мура с тремя процессами
10.2.2. Описание конечных автоматов Мура с двумя процессами
10.2.3. Описание конечных автоматов Мура с одним процессом
10.3. Указание кодов состояний в коде проекта
10.4. Описание надежных конечных автоматов
10.5. Определение значений по умолчанию
10.5.1. Определение значения по умолчанию для состояния перехода
10.5.2. Определение значения по умолчанию для выходных сигналов
10.5.3. Определение значений по умолчанию для состояния перехода и для выходных сигналов
10.6. Использование оператора case в описании конечных автоматов
10.7. Анализ различных описаний конечных автоматов на языке VHDL
10.7.1. Анализ описаний конечных автоматов Мили на языке VHDL
10.7.2. Анализ описаний конечных автоматов Мура на языке VHDL
10.8. Выводы
10.9. Рекомендации по практическому применению стилей и способов описания конечных автоматов

Глава 11. Кодирование состояний конечных автоматов
11.1. Сложность задачи кодирования состояний конечных автоматов
11.2. Коды для кодирования состояний конечных автоматов
11.3. Кодирование состояний конечных автоматов в системе Quartus
11.3.1. Кодирование состояний автомата Мура
11.3.2. Кодирование состояний автомата Мили
11.4. Анализ результатов кодирования конечных автоматов
11.4.1. Анализ результатов кодирования автомата Мура
11.4.2. Анализ результатов кодирования автомата Мили
11.5. Методы и алгоритмы кодирования состояний конечных автоматов
11.5.1. Разнообразие подходов к решению задачи кодирования состояний конечных автоматов
11.5.2. Методы кодирования состояний, используемые для проектирования конечных автоматов
11.5.3. Алгоритм кодирования состояний конечных автоматов для минимизации площади
11.6. Выводы

Глава 12. Использование значений входных и выходных переменных конечных автоматов для кодирования состояний
12.1. Синтез конечных автоматов класса C
12.2. Синтез конечных автоматов класса D
12.3. Синтез конечных автоматов класса D без расщепления состояний
12.4. Синтез конечных автоматов класса E
12.5. Синтез конечных автоматов класса E без расщепления состояний
12.6. Синтез конечных автоматов класса F
12.7. Синтез конечных автоматов класса F без расщепления состояний
12.8. Начало функционирования конечных автоматов классов C–F
12.9. Оценка стоимости реализации структурных моделей конечных автоматов
12.9.1. Нижняя граница стоимости реализации структурных моделей конечных автоматов
12.9.2. Верхняя граница стоимости реализации структурных моделей конечных автоматов
12.10. Анализ конечных автоматов классов A–F
12.10.1. Анализ структурных моделей автомата Мили
12.10.2. Анализ структурных моделей автомата Мура
12.11. Выводы
12.12. Анализ рассмотренных методов проектирования конечных автоматов

Заключение

Литература

Обозначения, принятые в этой книге

Список сокращений

Предметный указатель