Система Excalibur - средство разработки SoC-решений фирмы AL

Система Excalibur - средство разработки SoC-решений фирмы ALTERA. Часть 3. САПР Quartus

С. Хуторной

Система Excalibur - средство разработки SoC-решений фирмы ALTERA. Часть 3. САПР Quartus

При реализации любых SoPC-решений в пакете Excalibur все необходимые настройки системы, конфигурация процессора Nios, разработка, функциональное и временное моделирование дополнительной логики, программирование кристалла ПЛИС и отладка всей системы проводятся в САПР Quartus. Компоненты будущей SoPC разрабатываются отдельно и хранятся в виде файлов проектных модулей. Затем они объединяются в единый проект. Каждый модуль может быть использован повторно в виде пользовательского библиотечного элемента. Ряд библиотечных функциональных модулей образуют класс мегафункций. Процессор Nios также является одной из библиотечных настраиваемых мегафункций проекта. Процесс настройки мегафункции (или подсистемы) Nios был рассмотрен в предыдущей части цикла. В данной части цикла Вашему вниманию предлагается знакомство с САПР Quartus.

Процесс разработки SoC, как и разработки любой другой системы, подчин╦н ряду принципов. Согласно [1], сложные системы можно характеризовать пятью основными признаками:

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

Эти принципы описывают стратегию нисходящего проектирования. Проектируемая система подвергается структурной и алгоритмической декомпозиции, в результате чего проект разбивается на отдельные модули. Каждый из них может быть подвергнут функциональному и временному моделированию, и каждый из них может быть разбит на отдельные модули. Таким образом процедура повторится заново, и мы получим иерархическую структуру проекта. Каждый уровень иерархии и каждый е╦ узел представлен отдельным файлом проекта, или Design File. В САПР Quartus ввод описания модуля или проекта в целом можно производить различными средствами. Это может быть редактор блоков (*.bdf), который используется для схемного ввода или текстовый редактор, в котором можно производить ввод описания проекта на одном из специальных языков высокого уровня (VHDL, Verilog HDL, AHDL).

Следующие три принципа сложной системы скорее относятся к процессу проектирования и отладки, нежели к какой-либо из идеологий:

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

Проектируемая система состоит в основном из стандартных компонентов более низкого уровня интеграции - макрофункции, мегафункции - вплоть до примитивных элементов. Библиотека элементов САПР довольно разнообразна, поэтому в построении сложной системы "с нуля", а точнее, на примитивах, нет необходимости. В основном потребности разработчика полностью удовлетворяются элементами стандартной библиотеки компонентов, из которых можно создавать новые подсистемы оригинального типа. Процесс проектирования системы можно условно разделить на этапы (рис. 1).

Рисунок 1. Этапы проектирования сложной системы

После выдачи технического задания производится алгоритмическая и структурная декомпозиции проекта, с тем чтобы распределить реализацию отдельных модулей проекта между разработчиками системы. Каждый элемент или модуль проходит этап верификации и моделирования. Отдельные модули проекта, описанные различными способами, объединяются в единую библиотеку проекта. Здесь не имеет значения, как описан тот или иной модуль. В библиотеке находятся символы или файлы включения каждого модуля, которые далее можно использовать либо в графическом виде, либо как отдельные включаемые функции в текстовом редакторе. На этом этапе модуль процессора Nios включается в общий проект как стандартная параметризируемая мегафункция. Ввиду того, что система в целом может иметь довольно сложную структуру, произвести е╦ функциональное и временное моделирование порой не представляется возможным. Поэтому основная нагрузка ложится на этап отладки системы в целевом устройстве с использованием встроенных и внешних средств.

Отдельные модули общего проекта могут быть организованы тремя способами. Каждому модулю может быть отведена отдельная папка, создан отдельный независимый проект описанным выше способом. Потом при организации с помощью New Project Wizard основного проекта проекты модулей могут быть подключены как библиотечные элементы. Второй способ заключается в том, что вначале организуется основной проект, далее в редакторе блоков формируется его структурная схема, в которой создаются "каркасы" используемых модулей (блоков) с необходимыми выводами, но пока без функционального наполнения. Получившаяся таким образом функциональная схема представляет собой файл верхнего уровня в иерархии проекта. Далее производится наполнение каждого блока необходимыми функциями и логикой. Оба эти способа имеют право на существование, а выбор оста╦тся за разработчиком системы. Существует и третий способ, объединяющий первые два. То есть имеются наработки, которые нужно использовать, и в тоже время необходимо создать что-то новое.

При описании конфигурации процессора Nios описывались предварительные мероприятия по созданию проекта, а именно: определения директории проекта, имени проекта и логического объекта верхнего уровня при помощи мастера создания проектов New Project Wizard. Любой проект, создаваемый в САПР Quartus, впрочем, как и в любой другой САПР, имеет иерархическую структуру. Как правило, логический элемент верхнего уровня, если он один, имеет название самого проекта. New Project Wizard состоит из тр╦х страниц - тр╦х этапов подготовки. На первом этапе (page, в терминологии Altera) выбирается директория проекта (по умолчанию создаваемые проекты размещаются в директории qdesigns┘) и его имя, а также имя логического объекта верхнего уровня. Далее производится подключение всех необходимых пользовательских библиотек. После того, как пройден предварительный этап, наступает непо-средственно проектирование. При описании конфигурации процессора Nios мы уже пользовались мастером создания проекта New Project Wizard: была создана директория "qdesignsmy_sys", выбрано имя проекта и имя логического объекта верхнего уровня, создан проект-ный файл my_sys.bdf (Block Diagram/Schematic File) с тем же именем. В этом файле уже был создан и сконфигурирован процессор Nios.

Проектируя ту или иную систему, необходимо иметь представление о наборе элементов, из которых предполагается е╦ строить - библиотеку элементов и функций. Поэтому, прежде чем начать построение системы, необходимо произвести настройку этой библиотеки. Стандартная библиотека элементов Quartus содержит элементы разной степени сложности. Это примитивы (primitives) - простые логические функции типа многовходовых элементов OR, AND, XOR, буферные элементы, различного рода триггеры и т.п. Для специалистов, которые привыкли иметь дело с серией 74ХХX, имеется широкий набор функций, объедин╦нных одним названием maxplus2 (имеется в виду macrofunction). Для тех, кто уже имел опыт работы с системами фирмы Altera и привык пользоваться параметрическими мегафункциями, имеется и их набор. Выбор набора элементов всегда оста╦тся за проектировщиком. Помимо стандартной библиотеки, к любому проекту может быть подключена библиотека, состоящая из ранее наработанных файлов проекта. Для активизации этих файлов в меню ProjectGeneral Settings на вкладке User Libraries необходимо в окне Library name выбрать (или вписать) путь к файлу проекта, который предполагается использовать.

После выбора меню Insert Symbol, в появившемся окне Symbol появится элемент carrier_dco. На рис. 2 показан внешний вид окна General Settings, где в качестве пользовательской библиотеки выбран файл "E:ProjectQuartus correlatorcarrier_dco carrier_dco.bdf". Кроме того, здесь же присутствует ранее введ╦нный элемент процессора my_nios и вся стандартная библиотека (рис. 3).

Рисунок 2. Подключение дополнительной библиотеки элементов

Рисунок 3. Окно Symbol с библиотекой элементов проекта

Для описания процедуры создания модуля или проекта, что, в принципе, одно и то же, рассмотрим уже созданный и работающий проект carrier_dco.bdf. В рамках одной статьи трудно описать все возможности САПР Quartus, поэтому, не останавливаясь на подробном описании различных функций графического и текстового редакторов САПР, перейд╦м непосредственно к процедуре создания файла проекта. На рис. 4 показано окно графического редактора системы. При нажатии правой кнопки мыши на свободном поле редактора появляется меню, изображ╦нное в центре рисунка. В отличие от аналогичной САПР Max+plusII, в системе Quartus библиотечные элементы могут иметь вид символов или блоков. В любом случае, при этом открывается окно Symbol (рис. 3), в котором можно выбрать имеющийся в наличии библиотечный символ. Помимо этого, в проект можно вставить блок (кнопка слева "вставка блока"), который, в отличие от вышеописанной процедуры, не будет иметь логического наполнения - пустой элемент.

Рисунок 4. Общий вид графического редактора САПР Quartus

В свойствах этого блока можно задать его имя, названия всех входных и выходных выводов. На рис. 5 показан внешний вид такого элемента (sin_cos_table) с окном свойств, где указаны все входные и выходные выводы. Таким образом, из этих элементов и их взаимных соединений можно создать принципиальную схему, которая может быть файлом верхнего уровня в иерархии данного проекта.

Рисунок 5. Блок sin_cos_table с окном свойств

Выбором в меню Tools опции Create Design File from Selected Block созда╦тся логическое наполнение каждого блока. Это могут быть файлы AHDL, VHDL, Verilog HDL либо Schematic File. В директории проекта появится файл с расширением использованного редактора и с именем блока. После того, как файл логического наполнения создан и отредактирован, его можно откомпилировать. Для этого в меню Processing необходимо выбрать подменю Set Compilation Focus to Current Entity, после чего, нажав на среднюю кнопку управления режимом компиляции (рис. 4), произвести компиляцию файла проекта данного блока (в нашем случае, блока sin_cos_table.tdf). В результате компиляции будут созданы различного рода файлы отч╦та, которые можно просмотреть в окне Compilation Report. На рис. 6 показано окно Quartus после компиляции файла проекта sin_cos_table.tdf. При компиляции отдельных блоков/модулей нет необходимости в прохождении этапа разводки "схема в кристалл", поэтому этот режим можно отключить. Это целесообразно делать, когда блок имеет сложную внутреннюю структуру, и компилятор тратит много времени на этап разводки. Отключить данную опцию можно в меню ProcessinngCompiler SettingMode пут╦м переключения в поле Compilation Level с опции Full Compilation... на Netlist extraction and synthesis only.

Рисунок 6. Окно САПР Quartus после компиляции файла проекта sin_cos_table.tdf

В этом же окне можно настроить различные опции компилятора (рис. 7). Некоторые из них приведены ниже:

Рисунок 7. Опции настройки компилятора

Общие опции компилятора:

Compilation Focus (какой проектный файл следует компилировать); Current Compiler Setting(название файла настройки компилятора); Available Compiler Setting(выбор из уже имеющихся файлов настройки компилятора). Chips Device: Family(выбор семейства ПЛИС); Target Device (автоматический выбор кристалла ПЛИС (Auto device selected┘) либо выбор из списка); Available device(список доступных кристаллов); Package(выбор корпуса); Pin count(число выводов); Speed grade(класс быстродействия). Mode (режим компиляции): Compilation Level(уровень компиляции); Compilation speed/disk usage tradeoff(выбор между нормальной компиляцией "Normal compilation" с меньшими затратами дискового пространства и разв╦рнутой "Smart", когда при первой компиляции проекта на диске сохраняются промежуточные данные, с тем чтобы при последующих компиляциях не тратить время на генерацию необходимых файлов). Synthesis Fitting

(Оптимизация задержек: вход√выход и внутренних).

Verification

(Автоматический запуск симулятора и временного анализатора после компиляции).

Аналогичные настройки можно проводить с помощью Compilation Settings Wizard в меню Processing.

После успешной компиляции проекта система Quartus позволяет провести проверку работы того или иного блока в режиме симуляции (Simulate mode). Для этого необходимо создать файл источник входных векторов sin_cos_table.vwf (Vector Waveform File) для симулятора, в котором будут обозначены входные параметры модели. В меню FileNew необходимо выбрать Other Files, а в н╦м Vector Waveform File. Получим пустую форму векторного файла. В не╦ необходимо вставить входные и выходные выводы блока, вызвав окно Node Finder (горячие клавиши Alt+1). В окне Node Finder при нажатии кнопки Start, Quartus покажет все доступные выводы проекта. "Перетащив" их в окно Waveform Editor, получим шаблон источника входных данных симулятора. Для входных выводов необходимо сформировать данные, поступающие на вход блока при симуляции, в нашем случае, для шины in_value (рис. 8).

Рисунок 8. Окно Waveform Editor с файлом источника входных векторов симулятора

На рис. 8) показано окно Waveform Editor с готовым файлом данных для симулятора. В режиме симуляции (ProcessingSimulation Mode) необходимо произвести настройку симулятора. Для этого в окне Simulator Setting необходимо настроить следующие опции (рис. 9)):

Рисунок 9. Настройка опций симулятора проекта

General: Simulation Focus(выбрать sin_cos_table). Time/Vector: Start time(в нашем случае 0, nc); End time(обычно выбирается режим "Run simulation until all vector┘" при котором время окончания симуляции заложено в файле входных данных, в нашем случае, 10 мкс); Vector(выбор векторного файла, выбираем ранее созданный файл E:ProjectsQuartuscorrelator carrier_dco sin_cos_table.vwf). Mode:

Выбирается режим функционального (Functional) или временного (Timing) симулирования.

Запуск симулятора производится через меню ProcessingRun Simulation, после чего выходные данные симулятора будут иметь вид, показанный на рис. 10.

Рисунок 10. Результат симуляции проекта sin_cos_table

После того, как процесс симуляции блока sin_cos_table успешно закончен, можно провести временной анализ, для чего в настройках Simulation Setting (рис. 9)) в опции Mode необходимо выбрать параметр Timing.

Аналогичным образом можно создать и проверить все блоки проекта carrier_dco.bdf. На рис. 11) показана схема этого проекта. Помимо ранее рассмотренного блока sin_cos_table, здесь присутствуют элементы стандартной библиотеки мегафункций, такие как LPM_DFF (параметризируемый D-триггер), LPM_COUNTER (параметризируемый сч╦тчик), LPM_ADD_SUB (параметризируемый сумматор-вычитатель), ранее созданный пользовательский элемент clock_generator и набор примитивов.

Рисунок 11. Общий вид проекта carrier_dco.bdf в графическом редакторе

Выделив один из входов/выходов схемы, в меню ToolsAssignment Organizer можно выбрать необходимые настройки выводов кристалла ПЛИС. Наиболее часто используемые настройки - присвоение номера вывода (рис. 12). Окно Assignment Organizer может меняться, в зависимости от типа корпуса кристалла.

Рисунок 12. Окно Assignment Organizer и процедура присвоения номера вывода кристалла ПЛИС

Следующий шаг - программирование кристалла ПЛИС. Для этого в меню FileNew необходимо выбрать Other Files, а в н╦м - Chain Description File. В окне программатора необходимо выбрать файл прошивки кристалла (для EP20K200 это файл carrier_dco.sof), выставить флаг Program/Configure и нажать на кнопку Start, предварительно подсоединив и сконфигурировав программатор (в нашем случае, ByteBlasterMV).

В рамках одной ознакомительной статьи невозможно рассмотреть все свойства и характеристики САПР Quartus, поэтому здесь не были рассмотрены такие мощные средства, как Floorplan Editor, Quartus Command Console [3] и SignalTap [4].

Литература

Объектно-ориентированный анализ и проектирование с примерами приложений на С++ / Пер. с англ. М.: "издательство Бином", 1999. Quartus, Programmable Logic Development System. Tutorial. October 1999. Scripting with Tcl in the Quartus Software. November 1999. Quartus. SignalTap User Guide. Altera Corporation. November 1999.







Рекомендуемый контент




Copyright © 2010-2018 housea.ru. Контакты: info@housea.ru При использовании материалов веб-сайта Домашнее Радио, гиперссылка на источник обязательна.