
- •1. Введение
- •2. Базовые понятия
- •2.1 Что такое pld, fpga и asic
- •2.2 Принципиальная структура fpga
- •2.3 Что такое hdl. Распространенные hdl
- •2.4 Понятие уровней абстракции и иерархии в проектировании аппаратуры
- •2.4.1 Уровни абстракции
- •2.4.2 Понятие проекта. Составные части проекта. Иерархия проекта.
- •2.5 Маршрут проектирования цифровых схем для реализации на fpga
- •2.6 Функциональное тестирование
- •2.7 Процесс синтеза
- •2.8 Процесс имплементации и создания конфигурационного файла
- •2.9 Понятия «система на кристалле» и ip-ядро
- •3. Специфика проектирования цифровых устройств для fpga с использованием средств фирмы Xilinx
- •3.1 Обзор семейств fpga и средств проектирования фирмы Xilinx
- •3.1.1 Обзор семейств fpga фирмы Xilinx
- •3.2 Обзор семейства fpga Spartan 6
- •3.3 Структура логической ячейки fpga на примере семейства Spartan 6
- •3.4 Дополнительные ресурсы fpga фирмы Xilinx на примере семейства Spartan 6
- •3.4.1 Блочная память (Block ram)
- •3.4.2 Аппаратные блоки умножения
- •3.4.3 Контроллер памяти (Memory Controller Block)
- •3.4.4 Контроллер pci Express
- •3.4.5 Гигабитные приемопередатчики (Gigabit Transceiver)
- •3.4.6 Блоки ввода-вывода
- •3.5 Понятие глобальных временных ограничений
- •3.6 Генерация ip-блоков
- •3.7 Моделирование проектов. Обзор isim
- •3.8 Внутрисхемная отладка проектов. Обзор ChipScope
- •3.9 Обзор микроконтроллеров класса «soft-core»
- •4. Проектирование аппаратуры с использование языка Verilog hdl
- •4.1 Понятие модуля. Базовая структура модуля
- •4.1.1 Объявление портов ввода-вывода.
- •4.1.2. Объявление внутренних сигналов, параметров или переменных.
- •4.1.3. Тело модуля
- •4.2 Реализация комбинационных схем вентильного уровня
- •4.3 Реализация модульной структуры проекта
- •4.4 Конструкции для реализации комбинационных схем уровня rtl
- •4.4.1 Операторы
- •4.4.2 Блок always
- •4.5 Реализация комбинационных схем уровня rtl
- •4.5.1 Модифицированное описание 1-битного компаратора
- •4.5.2 Описание двоичного дешифратора
- •4.5.3 Описание блока алу
- •4.6 Конструкции для реализации последовательных схем уровня rtl
- •4.6.1 Триггер d-типа
- •4.6.2 Регистр
- •4.6.3 Регистровый файл
- •4.7 Реализация последовательных схем
- •4.7.1 Двоичный счетчик
- •4.7.2 Стек
- •4.8. Константы и параметры. Проектирование ip-блоков
- •4.8.1. Константы
- •4.8.2. Параметры
- •4.9 Конструкции для реализации конечных автоматов. Автоматы Мура и Мили
- •4.10. Реализация конечных автоматов
- •5. Функциональное тестирование аппаратуры средствами языка Verilog hdl
- •5.1 Базовая структура тестового окружения
- •5.2 Описание настроек моделирования
- •5.3 Тестовые последовательности и блок initial
- •5.4 Описание генератора тактового сигнала
- •5.5 Вспомогательные конструкции
- •5.5.2 Циклы
- •5.5.3 Ожидание событий и состояний
- •5.5.4 Системные функции
- •5.6 Реализация законченного тестового окружения
- •6. Лабораторные работы
- •6.1 Лабораторная работа №1 Создание проекта и выполнение всего маршрута проектирования в среде проектирования ise фирмы Xilinx
- •Введение
- •Описание задачи
- •Выполнение работы
- •Проекты для самостоятельной работы
- •Заключение
- •6.2 Лабораторная работа №2 Проектирование простых комбинационных схем. Моделирование проекта
- •Введение
- •Описание задачи
- •Выполнение работы
- •Проекты для самостоятельной работы
- •Заключение
- •6.3 Лабораторная работа №3 Проектирование простых последовательных схем. Реализация тактирования
- •Введение
- •Описание задачи
- •Выполнение работы
- •Проекты для самостоятельной работы
- •Заключение
- •6.4 Лабораторная работа №4 Проектирование конечных автоматов
- •Введение
- •Описание задачи
- •Выполнение работы
- •Проекты для самостоятельной работы
- •Заключение
- •6.5 Лабораторная работа №5 Проектирование устройств, содержащих ip-блоки
- •Введение
- •Описание задачи
- •Выполнение работы
- •Проекты для самостоятельной работы
- •Заключение
- •7. Приложение
- •7.1 Краткое описание лабораторного макета Atlys
- •8. Рекомендуемая литература
4.5 Реализация комбинационных схем уровня rtl
Ниже, будет представлен ряд примеров, основывающихся на предыдущем разделе. Эти примеры должны помочь вам получить наглядное представление о рассмотренных ранее конструкциях языка Verilog HDL.
4.5.1 Модифицированное описание 1-битного компаратора
На рисунке 4.5.1 представлено модифицированное описание 1-битного компаратора, рассмотренного в предыдущих разделах.
В данном случае мы используем более высокоуровневые конструкции языка, чтобы улучшить наглядность кода, такие как блок always, относительный и условный операторы. Тем не менее, в качестве результата мы получаем абсолютно аналогичный 1-битный компаратор.
Рисунок
4.5.1 — Модифицированное описание
1-битного компаратора
4.5.2 Описание двоичного дешифратора
В данном примере будет рассмотрено описание двоичного дешифратора, который осуществляет подсчет количества единиц в 4-х разрядном входном сигнале при наличии разрешающего сигнала enable.
Рисунок
4.5.2 — Описание схемы подсчета единиц
во входном сигнале
В этом примере, наряду с уже рассмотренными конструкциями, используется блок case и конкатенация.
4.5.3 Описание блока алу
Блок АЛУ (Арифметико-Логическое Устройство) является неотъемлемой частью любого процессора. Данный блок, в зависимости от реализации, принимает на вход несколько операндов и в зависимости от поданной команды, осуществляет некоторую операцию и выдает результат. В этом примере данный блок будет принимать два 32-х разрядных операнда и осуществлять некоторый базовый набор операций, такой как сложение, вычитание, поразрядное И, поразрядное ИЛИ, сдвиг вправо и влево на один разряд. Если в блок будет подана не существующая команда, то блок будет выдавать сигнал об ошибке. Один из возможных вариантов построения данного блока представлен на рисунке 4.5.3.
Рисунок
4.5.3 — Описание блока АЛУ
4.6 Конструкции для реализации последовательных схем уровня rtl
Последовательная цифровая схема представляет собой схему, содержащую память, которая формирует внутренние состояния. В отличие от комбинационных схем, в которых выходы являются лишь функциями входов, выходы последовательных схем являются функциями входов и внутренних состояний. Для проектирования на FPGA используется полностью синхронный подход к проектированию, т.е. все элементы памяти контролируются (синхронизируются) глобальным тактовым сигналом и данные выбираются и сохраняются по фронту или спаду тактового сигнала. Это позволяет проектировщику отделять логику работы системы от памяти, что значительно упрощает процесс разработки. Этот подход является одним из самых важных принципов построения сложных цифровых систем.
Основными элементами памяти в проектировании цифровой аппаратуры, поддерживаемыми внутренними ресурсами FPGA, являются:
Триггер D-типа (D Flip-flop);
Регистр;
Регистровый файл.
4.6.1 Триггер d-типа
Для триггеров данного типа, характерны два типа реализации: с асинхронным сбросом и без асинхронного сброса. Оба варианта представлены на рисунках 4.6.1 и 4.6.2.
Рисунок
4.6.1 — Описание триггера D-типа
Рисунок
4.6.2 — Описание триггера D-типа
с асинхронным сбросом
Анализируя оба примера, можно выделить две детали, отличающие описание последовательных схем от комбинационных:
Последовательные схемы всегда описываются с помощью блока always;
Лист чувствительности для последовательных схем не содержит в своем составе всех возможных сигналов (*). Это свойство характерно для последовательных схем, т.к. там блок always должен включаться при изменении любого сигнала, входящего в состав выражений блока always;
Для описания последовательных схем используется неблокирующее присваивание.