Содержание руководства
Введение
Пример проекта
Инфраструктура
Запуск Active-VHDL
Cоздание нового проекта
Подсистема просмотра проекта
Редактирование Кода
Проверка Синтаксиса
Компиляция
Просмотр структуры проекта
Менеджер Библиотеки
Моделирование
Добавление файлов в проект
Редактор конечного автомата
Создание файла верхнего уровня
Полная компиляция проекта
Моделирование проекта
Выводы
Новейший продукт ALDEC - симулятор Active-VHDL приветствует Вас. Руководство проведет Вас сквозь удивительный мир интегрированных инструментов Active VHDL. Это руководство требует знания основ VHDL. Если Вы не знакомы с VHDL, хорошим началом будет ALDEC EVITA InterActive-VHDL Tutorial with Applications. Его ограниченная версия доступна на сайте http://www.aldec.com
Проект, над которым вы будете работать с этим руководством - это простое устройство, которое подсчитывает количество объектов, проходящих сквозь шлюз. Оно состоит из десятичного счетчика и устройства управления.
Шлюз:
Проходящий объект сначала активизирует детектор А, а затем детектор В.
Допустим что:
Устройство управления сканирует детекторы, и, в соответствующие моменты, генерирует импульс, который передается счетчику.
Описание возможных комбинаций:
Инфраструктура
Active-VHDL основана на стандартном GUI. Все окна могут стыковаться, пересекаться или выполняться как отдельные приложения.
Основными частями Active-VHDL являются:
Для того чтобы начать работать с программой, перейдите в группу
Start->Programs->Active-VHDL и кликните метку Active-VHDL. Active-VHDL должен начать загружаться.
Выберите опцию
Create new design (создание нового проекта), и кликните кнопку OK.
Ввод названия проекта
Active-VHDL
имеет легкий в использовании New Design Wizard (визард нового проекта), вызываемый посредством выбора опции Create new Design (создание нового проекта) в окне Active-VHDL Welcome. Первый диалог New Design Wizard позволяет ввести название нового проекта и название каталога, в котором будут размещены файлы проекта.
Определение содержания проекта
Следующий диалог позволит вам определить содержание создаваемого вами проекта.
Вы можете:
Создание прообраза исходного файла
В следующем диалоге вы можете добавить компоненты, из которых должен состоять проект.
Теперь введите описание выводов, используя
New Design Wizard.Визард выводов
Визард проекта также полезный инструмент для назначения выводов. Он создает шаблон исходного кода VHDL, основываясь на введенных обозначениях выводов.
Все что вам нужно сделать – это кликнуть кнопку
Принятие свойств проекта
Последний диалог – это диалог подтверждения, показывающий свойства вашего проекта.
Если все в порядке, кликните кнопку
Следующий параграф представляет
Design Browser (Подсистему просмотра проекта).
Design Browser
– это окно, показывающее содержимое проекта. Оно состоит из трех таблиц:В качестве результата предыдущих операций вы получите следующее окно:
Редактор HDL
Редактор
HDL – это текстовый редактор с подсветкой синтаксиса VHDL и стандартными возможностями редактора.
Если вы следовали всем указаниям, то увидите окно, такое же, как показано сверху.
Сгенерированный код – это шаблон, основанный на ваших установках выводов.
Language Assistant (Помощник по языку)
Давайте опишем структуру “счетчика”.
В окне сверху показано VHDL описание двоично-десятичного счетчика.
Сейчас мы вставим шаблон в код.
Добавление библиотек
Редактированный код требует добавления некоторых дополнительных библиотек.
Следующая строка должна быть добавлена после строки
use IEEE.std_logic_unsigned.all;
В результате получается:
Вы только что отредактировали модуль счетчика "Counter".
Откройте окно
Design Browser, выберите значок Counter.vhd и кликните по нему правой кнопкой мыши. В полученном меню Compile.
В случае обнаружения ошибок, иконка изменит цвет на желтый, ошибочная строка подчеркивается и окно консоли VHDL будет содержать описание ошибки.
Если вы хотите увидеть, как показываются ошибки, удалите первую букву из описания библиотеки и проведите проверку синтаксиса.
Перенаберите букву, для того, чтобы возвратится в предыдущее безошибочное состояние.
Перед проведением любого моделирования, проект должен быть откомпилирован.
Если вы хотите скомпилировать только один файл, вы можете отметить его и выбрать опцию
Так как ваш проект содержит только один исходный файл, выберите
Compile из краткого меню. Компиляция необходима, поскольку вы только что отредактировали файл из предыдущего параграфа.Далее, вам нужно указать объект верхнего уровня.
Замечание:
Для того, что бы определить объект верхнего уровня, вы также можете произвести следующие действия:
Ярлык
Structure показывает структуру проекта.Каждый разрабатываемый узел может содержать выводы, сигналы и переменные.
Active-VHDL позволяет легко просматривать описание узла.Давайте проверим наш проект.
Каждый исходный файл VHDL скомпилирован в отдельную библиотеку.
По умолчанию, библиотека для файлов проекта имеет то же название, что и файл проекта, которое показывается в меню
Файлы VHDL можно скомпилировать в любую существующую библиотеку, которая может быть выбрана посредством диалога
File Properties. Для того чтобы открыть этот диалог, кликните правой кнопкой мыши выбранный файл VHDL, и, затем, выберите пункт Properties из появляющегося меню.
Для изменения имени компилируемой библиотеки, переключитесь к окну
Compile.Перейдите в меню
View и выберите пункт Library Manager. Откроется следующее окно:Выберите значок
IEEE и переключитесь на закладку Contents (содержание)Это окно содержит список модулей, скомпилированных в библиотеку и доступных для пользователя.
Выберите
Запуск моделирования
Для того чтобы начать моделирование, сначала необходимо инициализировать программу моделирования (симулятор), используя опцию
Initialize Simulation из меню Simulation.
Вы можете переключаться между окнами, используя закладки, расположенные в левом нижнем углу каждого окна.
Изначально окно новой временной диаграммы пусто. Вам нужно добавить сигналы, временные диаграммы которых вас интересуют. Вы можете добавить эти сигналы, используя drag and drop. На закладке
Structure, Design Browser, выберите компонент, поведение которого вы хотите проанализировать, и, просто прижав левую кнопку мыши, переместите его в левую секцию окна временной диаграммы, и там отпустите левую кнопку мыши (типичная операция drag-and-drop). То же самое вы можете сделать и с отдельными сигналами, перечисленными в нижней панели закладки Structure.Если вы хотите удалить сигнал, отметьте его и нажмите правую кнопку мыши. Возникающее окно содержит поле
Delete (удалить). Выберите эту опцию для удаления сигнала. Так же вы можете добавить сигналы посредством меню, которое вызывается кликом правой кнопки мыши в левой части окна Waveform.
Назначение имитаторов
Описание формулы имеет следующий синтаксис:
<значение> <время>,.....,<значение> <время> <-r период>
Мы не будем использовать ключ–r, так как он предназначен для периодических сигналов.
Введенная формула работает следующим образом:
- Высокий уровень на протяжении10 нс., начиная с 0 нс. –
0 10000 в выраженииПосле 10 нс. (10000 пс) подаются сигнал низкого уровня –
Давайте моделировать!
Для отладки исходного кода, вы можете выполнять пошаговое моделирование. Однако для анализа проекта и сравнения результатов применяется последовательное моделирование.
Смотрите рисунок снизу:
Выполните несколько шагов, нажимая кнопку
Trace Over.
Шина
Q была развернута с помощью значка "+" расположенного возле метки.Изменение формы сигналов
Вы можете изменить формат показываемых сигналов, при помощи диалога свойств сигнала
Properties.Для того чтобы открыть этот диалог, выберите пункт
Properties из меню для предварительно выбранного сигнала Q.
Проверка исходного кода
Active-VHDL
позволяет легко отлаживать исходный код в режиме пошагового моделирования. Режим пошагового моделирования включается автоматически, после нажатия любой из кнопок трассировки (Trace). В режиме пошагового моделирования текущий оператор автоматически подсвечивается желтым цветом. Для того чтобы проверить текущие значения сигналов и переменных, откройте окно Watch, посредством выбора пункта Watch из меню View. Добавить сигналы в окно Watch можно посредством соответствующего пункта меню. Так же вы можете выбрать пункт Processes из View для того, чтобы открыть окно Processes, в котором показывается текущее состояние процессов разработки.
Если окно редактора HDL спрятано, кликните по закладке
Counter.vhd. Желтая полоса будет перемещаться соответственно режиму отладки Trace In, Trace Over or Trace Out. Значение сигналов, отображаемых в окне Watch, будет изменяться в соответствии с исполняемыми операторами.Проведите несколько шагов моделирования, используя кнопку
Trace Over.Установка прерываний
Если вы хотите, чтобы непрерывное моделирование остановилось в указанном месте исходного кода, вы можете определить прерывание.
Включение прерываний
Для подготовки автоматического показа исходного кода в момент достижения прерывания:
Окно таблицы значений
Окно
Waveform содержит данные моделирования в виде графических сигналов, однако, часто требуется иметь список событий для более детальной проверки разработки. Это особенно важно для обнаружения проблем и точного измерения задержек. Использование таблиц значений (List windows) в Active-VHDL, описано ниже.
Временные значения могут быть другими, так как они зависят от процесса моделирования.
Вы можете добавить новые файлы в ваш проект, посредством клика иконки
Add New File
Этот диалог позволяет вам определить выводы.
- CLK input, STD_LOGIC
- RESET input, STD_LOGIC
- A input, STD_LOGIC
- B input, STD_LOGIC
- DETECTED output, STD_LOGIC
Вы только что создали шаблон конечного автомата, который показан ниже.
Введение
Окно конечного автомата разделено на 2 части: заголовок описаний и рабочее пространство конечного автомата.
Заголовок может содержать следующие иконки:
Вход |
|
Выход |
|
Двунаправленный вывод |
|
Вывод синхронизации |
|
Именованный выход |
|
Внутренний сигнал (переменная) |
|
Эти иконки представляют порты и сигналы модуля.
Рабочее пространство конечного автомата – это место, где редактируется диаграмма состояний конечного автомата.
Редактирование портов конечного автомата
В связи с тем, что конечные автоматы синхронны, они всегда имеют источник синхронизации. В редакторе конечного автомата (
State Machine Editor (FSM)) в качестве синхросигнала может использоваться только один сигнал. В этом параграфе показано, как задать источник синхронизации конечного автомата.
Установка кружков состояний
Кружок состояния показывает состояние конечного автомата.
Так как наш модуль может находиться в трех состояниях, мы разместим три кружка состояния на диаграмме FSM.
Для размещения кружка состояния произведите следующие действия:
Вы должны получить следующий рисунок:
Редактирование кружка состояния
Каждый кружок состояния должен иметь уникальное имя. По умолчанию,
FSM генерирует имена, начинающиеся с буквы "S", после которой следует число. Однако пользователь может изменить название, цвет и размер кружка в любой время.
Для изменения названий состояний
S1 и S2:
Для того чтобы изменить размер круга, кликните внутри него, но за пределами его названия. Вокруг круга появится 8 маленьких прямоугольников. Кликните по одному из четырех прямоугольников, размещенных в углах, и переместите его в нужное месторасположение. Если вы произведете
ту же операцию над одним из оставшихся прямоугольников, вы измените форму круга.
Круг можно переместить с помощью правой кнопки мышки. Название круга можно переместить аналогичным образом.
Вы должны получить следующие результаты:
Вы можете добавлять, удалять и редактировать порты с помощью кнопок
Input port (вход)Всякий раз, после проведения изменений, вам следует сохранить файл, используя опцию
Save из меню File, Однако не забудьте активизировать окно FSM с помощью клика в районе диаграммы состояний.Добавление переходов
Линии переходов описывают переходы состояний конечного автомата. Линии переходов показывают изменение состояния машины, при наступлении соответствующего переходного условия. Они указывают направление изменения из текущего состояния в следующее.
Если вы хотите, чтобы автомат оставался в том же состоянии, вы можете нарисовать переход, у которого начальным и конечным состоянием будет один и тот же круг.
Редактирование переходов
Каждый переход может быть отредактирован в любое время. Вам необходимо выделить переход и нажать правую кнопку мышки для показа контекстного меню.
Выделенный переход можно переместить и изменить его размер с помощью перемещения маленьких прямоугольников на его концах.
Для искривления линии перехода вам нужно переместить маленькие прямоугольники, размещенные в середине линии.
Для удаления линии перехода, выделите ее и нажмите клавишу
Примечание:
Если вы видите следующий перечеркнутый круг, это означает что переход не соединен с состоянием:Для соединения перехода, переместите круг к кругу состояния.
Разместите 8 линий переходов, как показано на следующем рисунке:
Изогните линии переходов для лучшего восприятия.
Добавление условий переходов
Обычно переключения конечного автомата зависят от его входов.
В предыдущих секциях мы нарисовали переходы, которые, безусловно, переключают состояния автомата при каждом такте синхронизации.
Для моделирования поведения конечного автомата в зависимости от входных условий мы должны добавить условия переходов.
Для перемещения условия выделите его и переместите в требуемое положение.
Если отметить условие, оно начинает мигать, кроме того, появляется серая линия, указывающая на переход. С ее помощью FSM показывает, к какому переходу относится данное условие.
Если вы хотите изменить условие, отметьте его и кликните левую кнопку мыши еще раз. Появится окно редактирования.
Для того чтобы удалить условие, отметьте его и нажмите клавишу
Замечание:
Все условия переходов соответствуют синтаксису VHDL.
Добавление действий
Каждый блок управления должен иметь выводы. Выводы управляются "действиями".
Поддерживаются следующие действия:
Теперь, вы поместите действие состояния для перехода в начальное состояние.
Для перемещения условия отметьте его и переместите в требуемое положение.
Если вы хотите изменить условие, отметьте его, и кликните левую кнопку мыши еще раз. Появиться окно редактирования.
Для удаления условия, отметьте его и нажмите клавишу
Примечание: Все действия соответствуют синтаксису VHDL.
Далее, мы добавим действия перехода. Если объект прошел через оба детектора, мы должны сгенерировать сигнал синхронизации, который увеличит показания счетчика.
Мы можем сделать это, добавляя дополнительное состояние, которое управляет сигналом
Примечание: Все действия имеют синтаксис VHDL.
Определение свойств конечного автомата
Появится следующее меню:
Clock- Разверните опускающийся список
CLK- Выберите сигнал
Rising- Проверьте, отмечена ли опция
Эти действия позволяют добавить сигналCLK, в качестве синхронизирующего сигнала конечного автомата.
Сигнал сброс показывается с помощью треугольника с линией перехода, указывающей на начальное состояние.
Автомат должен выглядеть примерно так:
Создание исходного кода VHDL
Создание файла верхнего уровня
Содержание
Design Browser (окна просмотра проекта) показано ниже.
RESET
A
B
Count
Active-VHDL имеет мощное средство отладки с имитатором конечного автомата. Так как оно обеспечивает анимацию проекта, вы можете наблюдать, как различные входные сигналы воздействуют на работу конечного автомата. Текущее состояние подсвечивается, и все переходы из одного состояния в другое ясно видимы. По мере прохождения моделирования, подачи различных сигналов, подсвечиваются другие состояния конечного автомата.
Так же, можно моделировать конечный автомат, используя сгенерированный исходный код VHDL.
Желтый цвет указывает на текущее состояние.
Этот учебный курс показал, каким удобным и полезным средством является
Active-VHDL.Спасибо вам за использование Active-VHDL!