Содержание руководства

Введение
Пример проекта
Инфраструктура
Запуск 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 являются:

 

Запуск 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 позволяет ввести название нового проекта и название каталога, в котором будут размещены файлы проекта.

 

  1. В поле Type the design name наберите Training .
  2. Выберите расположение папки проекта в соответствующем поле.
  3. Кликните кнопку Next для продвижения к следующей странице.
    Кликните кнопку
    Cancel, для того чтобы выйти из New Design Wizard без сохранения изменений.

Определение содержания проекта

Следующий диалог позволит вам определить содержание создаваемого вами проекта.
Вы можете:

 

  1. Выберите опцию Create new source files now.
  2. Кликните кнопу Back, для того чтобы изменить название проекта и каталог.
    Кликните кнопку
    Next для продвижения к следующей странице.
    Кликните кнопку
    Cancel для выхода.

Создание прообраза исходного файла

В следующем диалоге вы можете добавить компоненты, из которых должен состоять проект.

  1. Кликните кнопку New, после чего введите название объекта. 
  2. Столбец Source Type позволяет вам выбрать текстовое описание VHDL объекта, или графическое описание при помощи редактора Finite State Machine.
  3. Наберите Counter в качестве типа элемента и нажмите кнопку Ports.

Теперь введите описание выводов, используя New Design Wizard.

Визард выводов

Визард проекта также полезный инструмент для назначения выводов. Он создает шаблон исходного кода VHDL, основываясь на введенных обозначениях выводов.
Все что вам нужно сделать – это кликнуть кнопку
New и набрать название вывода в поле Name.
Вы можете определить направление порта, используя директивы
Port direction (направление вывода).
Если вы хотите ввести шину, вы можете выбрать ее ширину в поле
Array Indexes.

 

  1. Добавьте 3 вывода:
  1. После добавления вывода, выберите его и кликните кнопку Type. Это позволит поднять диалог, позволяющий вам выбрать тип выбранного порта.

 

  1. Выберите опцию STD_LOGIC для одиночных выводов STD_LOGIC_VECTOR для шин. Это заставит сгенерированный шаблон иметь библиотеку IEEE и объявления пакетов.
  2. Кликните кнопку OK в диалоге Port Type, и, затем кликните кнопку Next для перехода на последнюю страницу.

Принятие свойств проекта

Последний диалог – это диалог подтверждения, показывающий свойства вашего проекта.
Если все в порядке, кликните кнопку
Finish для завершения создания проекта.
Используйте кнопку
Back, если установки не верны.
Используйте кнопку
Cancel, если вы не хотите создавать новый проект.

Следующий параграф представляет Design Browser (Подсистему просмотра проекта).

 

Подсистема просмотра проекта

Design Browser – это окно, показывающее содержимое проекта. Оно состоит из трех таблиц:

В качестве результата предыдущих операций вы получите следующее окно:

 

  1. Выберите файл Counter.vhd в Design Browser для подсветки имени исходного файла.
  2. Выберите Compile из меню Design и просмотрите изменения в окне Design Browser.
  3. Кликните знак "+" для увеличения размера просматриваемой области. Окно показывает архитектурно-зависимые пары.

 

  1. Дважды кликните по значку Counter.vhd для вызова редактора HDL.

 

Редактирование кода

Редактор HDL

Редактор HDL – это текстовый редактор с подсветкой синтаксиса VHDL и стандартными возможностями редактора.

 

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

Language Assistant (Помощник по языку)

Давайте опишем структуру “счетчика”.

  1. В пункте меню Tools, посмотрите на значок Language Assistant. Если он не отмечен, кликните значок. Появится следующее окно:

 

  1. Разверните значок Tutorial (руководство). Появятся следующие пункты:

 

  1. Кликните значок Counter.

 

В окне сверху показано VHDL описание двоично-десятичного счетчика.
Сейчас мы вставим шаблон в код.

  1. Посмотрите на окно HDL Editor содержащее Counter.vhd и найдите в коде операторы begin.
  2. Поместите курсор в следующую линию после оператора begin в блоке архитектуры.
  3. Выберите значок Counter из дерева шаблонов Language Assistant.
  4. Кликните правой кнопкой мыши и выберите Use из сокращенного меню. Шаблон мгновенно появится в VHDL коде, в месте выбранном при выполнении пункта 2.
  5. Закройте окно Language Assistant.

Добавление библиотек

Редактированный код требует добавления некоторых дополнительных библиотек.
Следующая строка должна быть добавлена после строки
use IEEE.std_logic_1164.all:

use IEEE.std_logic_unsigned.all;

В результате получается:

 

Вы только что отредактировали модуль счетчика "Counter".

 

Проверка Синтаксиса

Откройте окно Design Browser, выберите значок Counter.vhd и кликните по нему правой кнопкой мыши. В полученном меню Compile.

 

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

 

Перенаберите букву, для того, чтобы возвратится в предыдущее безошибочное состояние. 

Компиляция

Перед проведением любого моделирования, проект должен быть откомпилирован.
Если вы хотите скомпилировать только один файл, вы можете отметить его и выбрать опцию
Compile из краткого меню, вызываемого нажатием правой кнопки мыши.
Если вы хотите откомпилировать несколько файлов одновременно, выберите опцию
Compile All in Folder.

Так как ваш проект содержит только один исходный файл, выберите Compile из краткого меню. Компиляция необходима, поскольку вы только что отредактировали файл из предыдущего параграфа.

Просмотр структуры проекта

Далее, вам нужно указать объект верхнего уровня.

  1. В окне Design Browser, нажмите кнопку вызова падающих списков для того, чтобы увидеть доступные архитектурно-зависимые пары. Выберите значок "counter (счетчик)".
  2. Перейдите в Design Browser и выберите ярлык Structure. Кликните знак "+".

Замечание: Для того, что бы определить объект верхнего уровня, вы также можете произвести следующие действия:

 

 

Ярлык Structure показывает структуру проекта.
Counter является объектом верхнего уровня, на что указывает значок Root на компоненте Counter.
Как показано на рисунке, компонент
Counter имеет один сопутствующий процесс, по умолчанию называемый line_19. Также показаны все используемые модули.

Каждый разрабатываемый узел может содержать выводы, сигналы и переменные. Active-VHDL позволяет легко просматривать описание узла.
Если вы кликните по компоненту в окне
Structure, в нижней панели окна будут показаны локальные данные этого компонента.

Давайте проверим наш проект.

 

Менеджер Библиотеки

Каждый исходный файл VHDL скомпилирован в отдельную библиотеку.
По умолчанию, библиотека для файлов проекта имеет то же название, что и файл проекта, которое показывается в меню
Files окна Design Browser, в иерархическом дереве.

 

Файлы VHDL можно скомпилировать в любую существующую библиотеку, которая может быть выбрана посредством диалога File Properties. Для того чтобы открыть этот диалог, кликните правой кнопкой мыши выбранный файл VHDL, и, затем, выберите пункт Properties из появляющегося меню.

 

Для изменения имени компилируемой библиотеки, переключитесь к окну Compile.
С тех пор, как язык VHDL стал поддерживать модули, каждый из них можно скомпилировать в отдельную библиотеку.
Вы можете просмотреть содержимое библиотек, используя окно
Library Manager, которое открывается при выборе опции Library Manager из меню View.

Перейдите в меню View и выберите пункт Library Manager. Откроется следующее окно:

Image1529.gif (8362 bytes)

Выберите значок IEEE и переключитесь на закладку Contents (содержание)

Image1530.gif (6537 bytes)

Это окно содержит список модулей, скомпилированных в библиотеку и доступных для пользователя.
Выберите
Library Manager. (Менеджер библиотеки)

 

Моделирование

Запуск моделирования

Для того чтобы начать моделирование, сначала необходимо инициализировать программу моделирования (симулятор), используя опцию Initialize Simulation из меню Simulation.
После инициализации моделирования, и клика по кнопке
New Waveform ., на панели инструментов, должно открыться новое окно временной диаграммы. Так же это окно можно открыть, используя подменю New -> Waveform из меню File.

 

Вы можете переключаться между окнами, используя закладки, расположенные в левом нижнем углу каждого окна.

Изначально окно новой временной диаграммы пусто. Вам нужно добавить сигналы, временные диаграммы которых вас интересуют. Вы можете добавить эти сигналы, используя drag and drop. На закладке Structure, Design Browser, выберите компонент, поведение которого вы хотите проанализировать, и, просто прижав левую кнопку мыши, переместите его в левую секцию окна временной диаграммы, и там отпустите левую кнопку мыши (типичная операция drag-and-drop). То же самое вы можете сделать и с отдельными сигналами, перечисленными в нижней панели закладки Structure.

Если вы хотите удалить сигнал, отметьте его и нажмите правую кнопку мыши. Возникающее окно содержит поле Delete (удалить). Выберите эту опцию для удаления сигнала. Так же вы можете добавить сигналы посредством меню, которое вызывается кликом правой кнопки мыши в левой части окна Waveform.

 

Назначение имитаторов

  1. Перейдите на левую панель Waveform Viewer и выберите сигнал CLK. Для вызова контекстного меню нажмите правую кнопку мыши.

 

  1. Выберите пункт Stimulators. Появится следующее окно:

 

  1. Из списочного окна Stimulator type выберите Clock.

 

  1. Переместите указатель мыши во внутрь поля Frequency (частота) и дважды кликните, для того чтобы переключится в режим редактирования. Введите значение частоты 50 MHz.
  2. Кликните кнопку Apply для подтверждения ввода, после чего нажмите Close.
  3. Далее, выберите сигнал RESET, выберите Stimulators из контекстного меню, и выберите Formula из списочного окна Stimulator type.

 

Описание формулы имеет следующий синтаксис:
<значение> <время>,.....,<значение> <время> <-r период>
Мы не будем использовать ключ –r, так как он предназначен для периодических сигналов.
  1. Наберите следующую формулу в окне Enter formula: 1 0, 0 10000
Введенная формула работает следующим образом:
  1. Нажмите кнопку Apply, после чего закройте окно Stimulators.

Давайте моделировать!

Для отладки исходного кода, вы можете выполнять пошаговое моделирование. Однако для анализа проекта и сравнения результатов применяется последовательное моделирование.

Смотрите рисунок снизу:

 

Выполните несколько шагов, нажимая кнопку Trace Over.
Так же вы можете кликнуть кнопку
Run For, что позволит провести моделирование работы в промежутке времени, обозначенном в окне справа от кнопки Run For.
Вы получите следующие результаты:

 

Шина Q была развернута с помощью значка "+" расположенного возле метки.

Изменение формы сигналов

Вы можете изменить формат показываемых сигналов, при помощи диалога свойств сигнала Properties.

Для того чтобы открыть этот диалог, выберите пункт Properties из меню для предварительно выбранного сигнала Q.
Опции сгруппированы по полям
Format и Colors (формат и цвет), что позволяет вам изменить способ отображения сигнала.
Сигнал – это вектор, а векторы всегда показываются в численном виде. С помощью соответствующей опции, измените систему счисления на двоичную.

 

Проверка исходного кода

Active-VHDL позволяет легко отлаживать исходный код в режиме пошагового моделирования. Режим пошагового моделирования включается автоматически, после нажатия любой из кнопок трассировки (Trace). В режиме пошагового моделирования текущий оператор автоматически подсвечивается желтым цветом. Для того чтобы проверить текущие значения сигналов и переменных, откройте окно Watch, посредством выбора пункта Watch из меню View. Добавить сигналы в окно Watch можно посредством соответствующего пункта меню. Так же вы можете выбрать пункт Processes из View для того, чтобы открыть окно Processes, в котором показывается текущее состояние процессов разработки.

 

Если окно редактора HDL спрятано, кликните по закладке Counter.vhd. Желтая полоса будет перемещаться соответственно режиму отладки Trace In, Trace Over or Trace Out. Значение сигналов, отображаемых в окне Watch, будет изменяться в соответствии с исполняемыми операторами.

Проведите несколько шагов моделирования, используя кнопку Trace Over.

Установка прерываний

Если вы хотите, чтобы непрерывное моделирование остановилось в указанном месте исходного кода, вы можете определить прерывание.

  1. Перейдите к исходному коду Counter.vhd и найдите Qint:=’"0000" после команды else.
  2. Поместите курсор в начало строки

 

  1. Выберите опцию Toggle breakpoint (установка прерывания) из меню Simulation. Посмотрите на исходный код:

 

Включение прерываний

Для подготовки автоматического показа исходного кода в момент достижения прерывания:

  1. Выберите Preferences (свойства) из меню Tools, и кликните закладку Debug.
  2. Отметьте чек-бокс Bring active source window to top, и кликните OK.

 

  1. Выберите закладку Waveform для того, чтобы видеть окно Waveform.
    Несколько раз кликните кнопку
    Run For.

    Когда счетчик достигнет "0", появится окно, содержащее исходный код и желтая полоса будет указывать на строку, в которой установлено прерывание.
    Если вы кликните кнопку
    Run For еще раз, моделирование будет продолжаться.

Окно таблицы значений

Окно Waveform содержит данные моделирования в виде графических сигналов, однако, часто требуется иметь список событий для более детальной проверки разработки. Это особенно важно для обнаружения проблем и точного измерения задержек. Использование таблиц значений (List windows) в Active-VHDL, описано ниже.

  1. Для активизирования таблицы значений (List window), кликните кнопку панели управления New List Viewer .

 

  1. Перетащите сигналы как описано ранее для окна Waveform, и посмотрите, как изменилось содержание таблицы значений.

 

  1. Проведите несколько шагов моделирования, и вы увидите следующие результаты:

 

Временные значения могут быть другими, так как они зависят от процесса моделирования.

  1. Когда вы закончите моделирование, закройте окна Waveform и List (сохранять их нет нужды), и выберите End Simulation из меню Simulation.

 

Добавление файлов в проект

Вы можете добавить новые файлы в ваш проект, посредством клика иконки Add New File в закладке Files, Design Browser’а. Откроется диалог Add New File.

 

  1. Выберите опцию Create State Diagram File using Wizard (создание файла диаграммы состояний, используя визард), после чего откроется New Source File Wizard. (визард нового исходного файла)

 

  1. В первом диалоге визарда, проверьте, что чек-бокс Add the generated file to the design отмечен и просто нажмите Next, после чего появится следующее окно.

 

  1. Наберите Control в строке Type the name of the source file to create.
    Кликните
    Next для продвижения к следующей странице.

 

Этот диалог позволяет вам определить выводы.

  1. Введите названия выводов, как показано ниже, используя ту же процедуру, что и при создании файла Counter.VHD.
  1. После того, как вы определили выводы, кликните Finish для создания файла.

Вы только что создали шаблон конечного автомата, который показан ниже.

 

 

Редактор конечного автомата

Введение

Окно конечного автомата разделено на 2 части: заголовок описаний и рабочее пространство конечного автомата.

 

Заголовок может содержать следующие иконки:

Вход

Выход

Двунаправленный вывод

Вывод синхронизации

Именованный выход

Внутренний сигнал (переменная)

Эти иконки представляют порты и сигналы модуля.
Рабочее пространство конечного автомата – это место, где редактируется диаграмма состояний конечного автомата.

Редактирование портов конечного автомата

В связи с тем, что конечные автоматы синхронны, они всегда имеют источник синхронизации. В редакторе конечного автомата (State Machine Editor (FSM)) в качестве синхросигнала может использоваться только один сигнал. В этом параграфе показано, как задать источник синхронизации конечного автомата.

 

  1. Выберите иконку CLK и кликните по ней правой кнопкой мышки. Выберите опцию Properties из контекстного меню. Появится диалог Port Properties (свойства вывода):

 

  1. Выберите Clock, как показано на рисунке сверху, и кликните OK.
  2. Выберите иконку Detected в документе FSM. Активизируйте диалог Port Properties как описано ранее:

 

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

 

Установка кружков состояний

Кружок состояния показывает состояние конечного автомата.
Так как наш модуль может находиться в трех состояниях, мы разместим три кружка состояния на диаграмме FSM.

Для размещения кружка состояния произведите следующие действия:

  1. Кликните кнопку State на панели инструментов.
    Курсор изменит свою форму, и вы сможете поместить кружок состояния на рабочем пространстве конечного автомата.
  2. Кликните левой кнопкой мыши в области рабочего пространства, и кружок будет размещен.
  3. Повторите эту операцию трижды.

Вы должны получить следующий рисунок:

 

Редактирование кружка состояния

Каждый кружок состояния должен иметь уникальное имя. По умолчанию, FSM генерирует имена, начинающиеся с буквы "S", после которой следует число. Однако пользователь может изменить название, цвет и размер кружка в любой время.

  1. Выберите кружок, который называется S1, и кликните правую кнопку мыши.

 

  1. Выберите опцию Properties в появившемся диалоге:

 

  1. Наберите Start в графе Name (название), и кликните кнопку OK.
    После проведения всех операций, рабочее поле
    Active-VHDL должно выглядеть следующим образом:

 

Для изменения названий состояний S1 и S2:

  1. Выберите название состояния, кликнув в центр круга, прямо по названию S2.

 

  1. Вы должны увидеть следующее:

 

  1. Теперь вы можете редактировать название круга S2. Пожалуйста, измените его на StateA.

 

  1. Ту же операцию произведите с S3, изменив его название на StateB.

Для того чтобы изменить размер круга, кликните внутри него, но за пределами его названия. Вокруг круга появится 8 маленьких прямоугольников. Кликните по одному из четырех прямоугольников, размещенных в углах, и переместите его в нужное месторасположение. Если вы произведете ту же операцию над одним из оставшихся прямоугольников, вы измените форму круга.

 

Круг можно переместить с помощью правой кнопки мышки. Название круга можно переместить аналогичным образом.

Вы должны получить следующие результаты:

 

Вы можете добавлять, удалять и редактировать порты с помощью кнопок Input port (вход) и Output port (выход) , расположенных на панели инструментов.

Всякий раз, после проведения изменений, вам следует сохранить файл, используя опцию Save из меню File, Однако не забудьте активизировать окно FSM с помощью клика в районе диаграммы состояний.

Добавление переходов

Линии переходов описывают переходы состояний конечного автомата. Линии переходов показывают изменение состояния машины, при наступлении соответствующего переходного условия. Они указывают направление изменения из текущего состояния в следующее.

  1. Для помещения линии перехода кликните кнопку панели инструментов Transition (переход) .
    После того, как курсор изменит свою форму, программа будет готова для размещения линии перехода.
  2. Кликните состояние, которое будет начальным состоянием перехода, и переместите курсор к точке конечного состояния.
  3. Кликните конечное состояние для того, чтобы нарисовать линию перехода.

 

Если вы хотите, чтобы автомат оставался в том же состоянии, вы можете нарисовать переход, у которого начальным и конечным состоянием будет один и тот же круг.

 

Редактирование переходов

Каждый переход может быть отредактирован в любое время. Вам необходимо выделить переход и нажать правую кнопку мышки для показа контекстного меню.
Выделенный переход можно переместить и изменить его размер с помощью перемещения маленьких прямоугольников на его концах.

 

Для искривления линии перехода вам нужно переместить маленькие прямоугольники, размещенные в середине линии.
Для удаления линии перехода, выделите ее и нажмите клавишу
DEL.

Примечание: Если вы видите следующий перечеркнутый круг, это означает что переход не соединен с состоянием:

Для соединения перехода, переместите круг к кругу состояния.

Разместите 8 линий переходов, как показано на следующем рисунке:

 

Изогните линии переходов для лучшего восприятия.

Добавление условий переходов

Обычно переключения конечного автомата зависят от его входов.
В предыдущих секциях мы нарисовали переходы, которые, безусловно, переключают состояния автомата при каждом такте синхронизации.
Для моделирования поведения конечного автомата в зависимости от входных условий мы должны добавить условия переходов.

  1. Для добавления условия кликните кнопку панели инструментов Condition (условие) .
  2. После изменения формы курсора, кликните требуемый переход. Появится окно редактирования:

 

  1. Введите условие: A=’0’
  2. После окончания ввода условия нажмите клавишу ENTER.

 

Для перемещения условия выделите его и переместите в требуемое положение.

 

Если отметить условие, оно начинает мигать, кроме того, появляется серая линия, указывающая на переход. С ее помощью FSM показывает, к какому переходу относится данное условие.
Если вы хотите изменить условие, отметьте его и кликните левую кнопку мыши еще раз. Появится окно редактирования.
Для того чтобы удалить условие, отметьте его и нажмите клавишу
DEL.

Замечание: Все условия переходов соответствуют синтаксису VHDL.

  1. На вашей диаграмме состояний укажите следующие условия:

 

Добавление действий

Каждый блок управления должен иметь выводы. Выводы управляются "действиями".
Поддерживаются следующие действия:

Теперь, вы поместите действие состояния для перехода в начальное состояние.

  1. Нажмите кнопку State Action (действие состояния). Курсор изменит свою форму.
  2. Переместите точку курсора во внутрь круга и нажмите левую кнопку мыши. Появится окно редактирования:

 

  1. Наберите следующий оператор:

 

  1. После окончания ввода, нажмите клавишу ENTER.

 

Для перемещения условия отметьте его и переместите в требуемое положение.
Если вы хотите изменить условие, отметьте его, и кликните левую кнопку мыши еще раз. Появиться окно редактирования.
Для удаления условия, отметьте его и нажмите клавишу
DEL.

  1. Установите то же действие для StateA.

 

Примечание: Все действия соответствуют синтаксису VHDL.

Далее, мы добавим действия перехода. Если объект прошел через оба детектора, мы должны сгенерировать сигнал синхронизации, который увеличит показания счетчика.
Мы можем сделать это, добавляя дополнительное состояние, которое управляет сигналом
DETECTED, или мы можем добавить действие которое выполняется только тогда, когда A=’0’ и B=’0’ и текущее состояние автомата есть StateB.
Действие перехода типично для автоматов Мили, в которых состояние выходное состояние может зависеть от входов автомата.

  1. Для того чтобы поместить действие перехода, нажмите кнопку панели инструментов Transition Action (действие перехода) , и, когда курсор изменится, кликните по линии перехода.

  1. В окне редактирования, введите оператор действия DETECTED<=’1’ (ОБНАРУЖЕНО <=1).
  2. Для окончания ввода, кликните на любой пустой части документа.
  3. Выделите введенное действие и переместите его, как показано ниже.
  4. Проведите ту же операцию для перехода из состояния StateA в StateB, но введите действие DETECTED<=’0’ .

 

Примечание: Все действия имеют синтаксис VHDL.

Определение свойств конечного автомата

  1. Переместите курсор на прямоугольник вокруг рабочей области, Кликните левой кнопкой мыши, для того чтобы выделить этот блок и кликните правую кнопку.

 

Появится следующее меню:

 

  1. Выберите опцию Properties, откроется диалог Machine Properties (свойства конечного автомата).

 

  1. В строке Name, замените Sreg0 на Control. Эта опция изменяет видимое название конечного автомата и внутреннее (невидимое) название регистра состояний.
  2. Для того чтобы определить синхронизацию автомата:
Эти действия позволяют добавить сигнал CLK, в качестве синхронизирующего сигнала конечного автомата.
  1. Выберите закладку Reset.

 

  1. В строке Name выберите сигнал RESET.
  2. Выберите Asynchronous (асинхронный) тип, Active Level (активный уровень) установите в High (высокий) и отметьте состояние Start в списке State (состояние).
    При этих установках, при появлении сигнала
    RESET автомат будет немедленно (асинхронно) переходить в начальное состояние.
    Это гарантирует нам, что автомат начнет работу из установленного стояния.
  3. Кликните кнопку OK для подтверждения изменений.

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

 

Автомат должен выглядеть примерно так:

 

Создание исходного кода VHDL

  1. Сохраните FSM файл, после чего кликните кнопку панели инструментов Generate vhdl code (создание кода VHDL) для создания VHDL эквивалента диаграммы состояний.
  2. Разверните метку Control в окне просмотра проекта.
  3. Для просмотра сгенерированного кода дважды кликните по файлу Control.vhd . Исходный код VHDL будет показан в окне редактора HDL.

 

 

Создание файла верхнего уровня

  1. Кликните кнопку панели инструментов New для создания нового пустого файла VHDL.
  2. Перейдите к Language Assistant и найдите метку Top_2 в секции Tutorial.
  3. Отметьте метку Top_2.
  4. Отметьте Use из контекстного меню для того, чтобы поместить шаблон в исходный файл.
  5. Закройте окно Language Assistant.
  6. Кликните в области редактора HDL для того, чтобы активизировать HDL Editor
  7. Перейдите к меню File и выберите опцию Save As.
  8. Сохраните файл под именем Top.vhd.
  9. Перейдите к Design Browser, кликните правой кнопкой мыши над пустой областью на закладке Files, и выберите Add Files to Design (добавить файлы к проекту), для того чтобы добавить файл Top.vhd к вашему проекту.

 

Содержание Design Browser (окна просмотра проекта) показано ниже.

 

  1. Дважды кликните по метке Top в окне Design Browser и просмотрите содержание файла Top.vhd.

 

 

Полная компиляция проекта

  1. Кликните кнопку панели инструментов Compile All .
    После окончания процесса компиляции, все иконки должны стать зелеными.
  2. Выберите Settings из меню Design, и переключитесь на закладку Top-level Selection диалога Design Settings.

 

  1. Выберите объект Top, и кликните OK для того, чтобы закрыть диалог Design Settings.
  2. Разверните метку Top.vhd. Окно просмотра проекта покажет новый выбор верхнего уровня.

 

 

Моделирование проекта

  1. Инициализируйте симулятор. Active-VHDL переключится на закладку Structure окна Design Browser.
  2. Откройте окно Waveform.
  3. Выберите метку Root.
  4. Переместите в окно Waveform следующие сигналы:
  1. Назначьте соответствующим сигналам следующие формулы:

Active-VHDL имеет мощное средство отладки с имитатором конечного автомата. Так как оно обеспечивает анимацию проекта, вы можете наблюдать, как различные входные сигналы воздействуют на работу конечного автомата. Текущее состояние подсвечивается, и все переходы из одного состояния в другое ясно видимы. По мере прохождения моделирования, подачи различных сигналов, подсвечиваются другие состояния конечного автомата.
Так же, можно моделировать конечный автомат, используя сгенерированный исходный код VHDL.

  1. Используя опцию Trace Over, моделируйте работу конечного автомата, до тех пор, пока вы не увидите следующее окно:

 

Желтый цвет указывает на текущее состояние.

  1. Нажмите кнопку Run for несколько раз, и вы сможете пронаблюдать изменение цвета кругов состояния, в зависимости от статуса проекта.

 

 

Выводы

Этот учебный курс показал, каким удобным и полезным средством является Active-VHDL.
Проект был промоделирован и проверен не только на уровне VHDL, но и на уровне конечного автомата. Это свойство делает Active-VHDL особенно подходящим для новичков.
Эта программа также является хорошим решением и для более опытных пользователей, потому что она содержит имитатор с развитыми функциями отладки.

Спасибо вам за использование Active-VHDL!