Это третья часть цикла посвященная программируемой логике и среде разработки Quartus компании Altera.
Ссылки на предыдущие части:
ПЛИС Altera. Часть 1: установка и настройка среды разработки.
ПЛИС Altera. Часть 2: проектирование цифровой схемы.
В первой части рассказывалось о загрузке и установке Quartus, создании пустого проекта с помощью мастера.
Во второй части рассматривалось проектирование цифровой схемы, определялась последовательность шагов для создания конфигурации ПЛИС. Напоминаю, что процесс создания конфигурации предусматривает следующие этапы:
-
проектирование цифровой схемы;
-
анализ созданной схемы на наличие ошибок;
-
привязка входов и выходов схемы к конкретным выводам ПЛИС;
-
компиляция проекта и создание двоичных файлов для конфигурирования ПЛИС;
-
конфигурирование ПЛИС посредством USB Blaster.
Первый этап освещен во второй части. Содержание второго этапа раскрывается ниже.
Шаг 2. Анализ созданной схемы на наличие ошибок
Анализ схемы выполняется при компиляции проекта. Но прежде чем приступить к компиляции необходимо указать главный модуль проекта. Смысл и назначение главного модуля раскрывались в первой части, при описании работы мастера создания проекта. Коротко, главный модуль — это ключевой элемент иерархии проекта. Проект без главного модуля невозможно откомпилировать.
Главный модуль проекта
Главный модуль указывается в окне «Project Navigator» среды Quartus. «Project Navigator» предназначен для управления файлами и иерархией проекта. Его окно располагается в левой части основного окна среды разработки. С помощью этого инструмента можно просмотреть список модулей и файлов включенных в проект.
Окно «Project Navigator» содержит несколько вкладок. На вкладке «Hierarchy» выводятся модули проекта сгруппированные в иерархический список. Корнем списка является выбранный чип Altera, следом идет главный модуль.
Список всех добавленных к проекту файлов выводится на вкладке «Files». Эти файлы можно открывать для редактирования выполнив двойной клик на одном из них. Кроме того здесь можно и удалить файл из проекта. Но файл не удаляется с диска физически, а просто исключается из проекта. На этой же кладке можно выбрать файл, который будет главным модулем проекта.
Для определения одного из файлов проекта в качестве главного необходимо переключиться на вкладку «Files». Выбрать этот файл в представленном списке и указать действие «Set as Top-Level Entity» из контекстного меню файла. Описанная последовательность приведена на рисунке выше.
По умолчанию главным модулем проекта считается файл, имя которого совпадает с именем «Top-Level Entity» указанном при создании проекта. С помощью «Project Navigator» можно проверить корректность настройки главного модуля. Для этого необходимо закрыть все файлы проекта. Выбрать вкладку «Hierarchy» в навигаторе и произвести двойной клик на имени главного модуля в иерархии. Должна открыться Ваша схема. Если схема не открылась, то необходимо задать главный модуль вручную.
После настройки главного модуля можно переходить к компиляции проекта.
Первая компиляция: анализ и синтез схемы
Процесс компиляции построенной схемы в конфигурацию ПЛИС включает в себя множество этапов. Ключевыми этапами являются: «Analysis & Synthesis», «Fitter (Place & Route)», «Assembler», «TimeQuest Timing Analysis». Все они выполняются при каждой компиляции, но независимо друг от друга. То есть, если критичные ошибки будут выявлены на этапе «Analysis & Synthesis», то процесс не прервется, а будет продолжаться до завершения всех оставшихся этапов. Для ускорения процесса отладки проекта каждый этап можно выполнять отдельно с помощью меню Processing → Start. Самые важные из них также вынесены на панель инструментов «Standart» среды Quartus.
Анализ и синтез схемы («Analysis & Synthesis») — это первый и наиболее важный из всех этапов. Здесь выявляются ошибки на уровне проектирования, а также выполняется трансляция созданной схемы в блоки физически реализованные в выбранной микросхеме Altera. При обнаружении ошибок на данном этапе дальнейшее выполнение компиляции не имеет смысла.
Запустить анализ и синтез схемы можно с помощью кнопки «Start Analysis & Synthesis» расположенной на стандартной панели инструментов. Данная кнопка выделена на следующем рисунке.
При нажатии на указанную кнопку запустится процесс анализа и синтеза, прогресс выполнения которого в процентах будет указан в строке «Analysis & Synthesis» окна «Tasks». Окно «Tasks» располагается под окном «Project Navigator».
По окончании процесса компиляции в центральной части окна Quartus откроется новая вкладка под названием «Compilation Report – firstproject».
Вкладка «Compilation Report – firstproject» содержит полный отчет о результатах выполнения анализа и синтеза. Этот отчет чрезвычайно подробный. В нем приводятся не только обобщенный результат анализа и синтеза, раздел «Flow Summary», но и параметры с которыми выполнялась компиляция, время ее выполнения и детальные результаты синтеза. Помимо данной информации последними пунктами идет полный лог сообщений, которые выводились в процессе компиляции. Это пункты «Messages» и «Flow Messages». Разница между ними в том, что Analysis & Synthesis → Messages содержит только те сообщения, что были выведены при выполнении анализа и синтеза. Раздел «Flow Messages» включает в себя сообщения всех этапов, которые были выполнены при данной компиляции. Так как сейчас был выполнен только один этап, то содержание «Flow Messages» полностью повторяет Analysis & Synthesis → Messages.
Из всей информации приведенной в отчете о компиляции, в первую очередь необходимо ознакомиться с содержанием разделов «Flow Summary» и «Flow messages».
Вид раздела «Flow Summary» представлен на предыдущем рисунке. В разделе «Flow Summary» в первой же строке «Flow Status» выводится обобщенный результат компиляции: «Successful» — успешно, или «Flow Failed» в случае ошибки. Так как первая схема очень проста, то и первая компиляция наверняка будет успешной. В противном случае необходимо будет перейти к разделу «Flow Messages» и изучить приведенные там сообщения.
Содержание раздела «Flow Messages» оформлено в виде окна, изображение которого представлено на рисунке ниже.
На этом рисунке представлен возможный вид окна в случае возникновения ошибки компиляции.
Все сообщения выводимые в окне «Flow Messages» можно разделить на четыре группы, сообщения каждой группы окрашены в свой цвет.
Зеленым цветом обозначаются информационные сообщения, которые выводятся во время любой компиляции.
Синим цветом обозначаются предупреждения («Warnings»). Сюда, в основном, выводятся сообщения о проблемах возникших во время компиляции. Данные проблемы не являются настолько серьезными чтобы помешать успешной компиляции, но они могу влиять как на производительность самого процесса компиляции, так и на производительность результирующей конфигурации. В частности, бесплатная версия Quartus будет постоянно выводить сообщение о не работающей параллельной компиляции: «Parallel compilation is not licensed and has been disabled». Параллельная компиляция доступна только в платных редакциях Quartus. Поэтому данное сообщение можно игнорировать.
На приведенном выше рисунке помимо предупреждения связанного с параллельной компиляцией присутствует предупреждение о не подключенном выводе схемы: «Pin «input2_or» not connected». Строго говоря эта ошибка может быть и незначительной. Так как на схеме мог остаться лишний вывод, который просто забыли удалить. Но так как компиляция завершилась с ошибкой, то это первая подсказка где ее нужно искать.
Красным цветом выделяются сообщения об ошибках («Errors»). Ошибки — это все события, которые препятствуют успешному выполнению компиляции. В примере выше присутствуют два сообщения об ошибках. Первое: «Node «inst1» is missing source». Эта ошибка сообщает о сути проблемы: у блока с именем «inst1», на схеме представленной ниже это логический элемент «OR2», один из входов ни к чему не подключен. С учетом предыдущего предупреждения о выводе «input2_or» можно сделать вывод, что на схеме необходимо исправить связь между данным выводом схемы и соответствующим входом логического элемента. Вторая ошибка не является ошибкой самой по себе. Это сообщение о результате компиляции. Статус — «unsuccessful». И число ошибок и предупреждений выведенных в процессе.
Синим цветом также выделяются критические предупреждения («Critical Warnings»). Данные предупреждения принципиально отличаются от обычных тем, что вызываются ошибками, которые уже могут серьезно повлиять на работу итоговой схемы. Они не являются непреодолимыми для ПО Quartus и устраняются автоматически, но результат работы автоматики может сильно отличаться от ожидаемого. Поэтому все такие предупреждения требуют к себе более внимательного отношения. В рассмотренном примере подобные ошибки отсутствуют.
Каждый тип сообщений, помимо цвета, обозначается еще и собственной пиктограммой. Этими же пиктограммами обозначены кнопки фильтра сообщений расположенного в левом верхнем углу окна «Flow Messages». Эти кнопки выделены на изображении окна представленном выше. Количество сообщений каждого типа дополнительно обозначается числом на соответствующей кнопке фильтра сообщений. С помощью фильтра можно включать отображение сообщений только одного конкретного типа или нескольких типов одновременно. Назначение кнопок по порядку:
-
«All» отключает все остальные кнопки;
-
«Error Messages»;
-
«Critical Warnings»;
-
«Warnings»;
-
«Flagged Messages» — этот фильтр выводит только те сообщения, которые были помечены пользователем с помощью контекстного меню Flag → Flag Message.
Справа от кнопок расположено поле ввода текстового фильтра, который ограничивает вывод строками частично совпадающими с введенным текстом.
Сообщения из окна «Flow Messages» также дублируются в окне «Messages», которое по умолчанию располагается в нижней части основного окна среды Quartus. Принципиальное отличие «Messages» от «Flow Messages» в том, что оно содержит две вкладки: «Processing» и «System». Эти вкладки располагаются в левой нижней части окна. Они обозначены на рисунке ниже. Содержимое «Processing» ничем не отличается от одноименной вкладки окна «Flow Messages». Вкладка «System» предназначена для вывода сообщений связанных с изменением настроек проекта в целом или с работой самой среды Quartus.
С успешным выполнением анализа и синтеза схемы завершается третья часть серии статей о ПЛИС Altera. В четвертой части освещается работа над схемотехнической частью проекта. Уже завершена разработка внутренней, реализованной в ПЛИС части схемы. Теперь нужно будет разработать схему подключаемую к ПЛИС извне. Что будет невозможно сделать не зная устройства используемой в проекте платы «CTRL-CPLD-EPM570».