- •САПР Xilinx Foundation Series
- •ВХОД В СИСТЕМУ
- •Открытие нового проекта
- •ВВОД И РЕДАКТИРОВАНИЕ СХЕМЫ
- •Как задать размер листа и присвоить ему имя
- •ОСНОВНЫЕ ОПЕРАЦИИ
- •Выбор элемента
- •Перемещение элемента или фрагмента схемы
- •Удаление элемента
- •Присвоение имени элементу
- •Рисование цепи
- •Перемещение цепи
- •Удаление цепи
- •Присвоение имени цепи
- •Переименование цепи
- •Удаление имени цепи
- •Задание констант 0 и 1
- •ШИННЫЕ СОЕДИНЕНИЯ
- •Пример простого шинного соединения
- •Шинные контакты элемента
- •Правила соединений
- •Простые и сложные шины
- •Примеры шинных соединений
- •Редактирование изображения шины
- •Контроль соединений
- •Сохранение схемы
- •ФОРМИРОВАНИЕ СОБСТВЕННОЙ БИБЛИОТЕКИ МОДЕЛЕЙ ЭЛЕМЕНТОВ
- •СОЗДАНИЕ МАКРОЭЛЕМЕНТА НА ОСНОВЕ БАЗОВЫХ ЭЛЕМЕНТОВ
- •Создание макроэлемента
- •Выбор макроэлемента из библиотеки
- •Редактирование УГО макроэлемента
- •ВВОД И ОТЛАДКА МАКРОЭЛЕМЕНТА НА VHDL
- •Ввод описания макроэлемента
- •Ввод описания архитектуры объекта с использованием Language Assistant
- •Сохранение документа
- •Проверка синтаксиса
- •Редактирование текста описания
- •Синтез макроэлемента
- •Создание VHDL-макроса
- •Выбор макроса из библиотеки
- •Редактирование УГО макроэлемента
- •Коррекция VHDL-описания макроэлемента
- •Автоматическое создание модели памяти
- •Редактирование начального состояния памяти
- •ФУНКЦИОНАЛЬНОЕ МОДЕЛИРОВАНИЕ СХЕМЫ
- •Окно моделирования схемы
- •Выбор контрольных точек схемы
- •Удаление контрольных точек из окна моделирования
- •Изменение порядка имен в окне моделирования
- •Задание входных воздействий
- •Задание синхросигналов
- •Как отсоединить генератор от внешнего входа схемы
- •Задание входных воздействий в окне моделирования
- •Выполнение моделирования схемы
- •Сохранение результатов моделирования
- •Моделирование макроэлемента
- •РЕАЛИЗАЦИЯ ПРОЕКТА НА ПЛИС
- •ПОДГОТОВКА СХЕМЫ ДЛЯ РАЗМЕЩЕНИЯ ЕЁ НА ПЛИС
- •Универсальный лабораторный стенд
- •Макроэлементы органов управления стенда
- •Подключение макроэлементов стенда к проекту
- •РАЗМЕЩЕНИЕ СХЕМЫ НА КРИСТАЛЛЕ
- •ВРЕМЕННОЕ МОДЕЛИРОВАНИЕ СХЕМЫ
- •Измерение задержек на временной диаграмме
- •ЗАГРУЗКА ПРОЕКТА В ПЛИС
- •ПРОСМОТР РЕЗУЛЬТАТОВ РАЗМЕЩЕНИЯ СХЕМЫ
- •ВВЕДЕНИЕ В ЯЗЫК VHDL
- •ВЫБРАННЫЕ МЕСТА ИЗ ОПИСАНИЯ ЯЗЫКА VHDL
- •Структура описания объекта проекта
- •Интерфейс объекта проекта
- •Синтаксис
- •Тип сигнала
- •О правилах записи программы
- •Описание архитектуры объекта
- •Синтаксис
- •Параллельные операторы
- •Стили описаний архитектур
- •Элементы потокового проектирования
- •Элементы поведенческого проектирования
- •VHDL-стандарты IEEE
- •Пакеты std_logic_arith, std_logic_signed u std_logic_unsigned
- •Библиотеки и пакеты
- •Логические элементы
- •Триггеры
- •Мультиплексоры
- •Дешифратор
- •Сумматоры
- •Счетчики
- •Регистры
- •Исходные данные
- •Составление программной модели АЛУ
- •СПИСОК ЛИТЕРАТУРЫ
Определяемые пользователем идентификаторы начинаются с буквы и содержат буквы, цифры и подчеркивания. Символ подчеркивания не может следовать за другим символом подчеркивания и не может быть последним символом идентификатора. Например, идентификаторами являются MUU_125, R, CLK, KOP, SNO, F, Y, P,
CS, SKO, TPO.
Зарезервированные слова и идентификаторы не чувствительны к регистру.
Очём можно не беспокоиться
Очем не стоит беспокоиться, так это о необходимости запоминания синтаксиса объявления объекта. Встроенный в Xilinx Foundation редактор HDL Editor содержит замечательное средство Design Wizard, использование которого полностью автоматизирует процесс создания объявления объекта, избавляя пользователя от записи требуемых конструкций языка. На долю пользователя остается только задание имен внешних контактов объекта и выбор типа. В завершении Design Wizard создает синтаксически правильный текст объявления объекта.
Описание архитектуры объекта
Синтаксис
В языке VHDL под описанием архитектуры понимают описание функционирования специфицируемого объекта. Если декларативная часть описания объекта определяет его внешнее представление, задает интерфейсную спецификацию объекта, вводит имя объекта и входы/выходы («порты», в терминах VHDL), то описание архитектуры задает его содержательное наполнение, спецификацию функциональной и временной работы описываемого объекта.
Внутренняя работа объекта задается его определением архитектуры (architecture definition), синтаксис которого в общем случае имеет вид, указанный в листинге 5.
107
Листинг 5. Синтаксис определения архитектуры
architecture architecture-name of entity-name is type declarations
signal declarations constant declarations function definitions procedure definitions component declarations
begin concurrent-statement
. . .
concurrent-statement end architecture-name;
Имя объекта (entity-name) в этом определении должно быть таким же, какое раньше было присвоено объекту в объявлении объекта. Этим самым связывается декларативная и архитектурная части описания объекта.
Имя архитектуры (architecture-name) — это выбираемый поль-
зователем идентификатор, обычно так или иначе связанный с именем объекта; при желании имя архитектуры может быть тем же самым, что и имя объекта.
У архитектуры могут быть также сигналы и другие объявления, являющиеся для нее локальными, подобно тому, как это имеет место в других языках высокого уровня.
В данном пособии будем рассматривать только объявление сиг-
нала (signal declaration). Объявление сигнала сообщает ту же самую информацию о сигнале, какую содержит объявление порта, за исключением того, что вид сигнала (in, out, buffer, inout) не задается:
signal signal-names : signal-type;
В архитектуре может быть объявлено любое число сигналов, начиная с нуля, и они приблизительно соответствуют поименованным соединениям в схеме. Их можно считывать и записывать внутри определения архитектуры и, подобно другим локальным элементам, на них можно ссылаться только в пределах данного определении архитектуры.
108
Сигналы внешнего интерфейса архитектуры (порты) наследуются от той части объявления соответствующего объекта, где объявляются порты.
После ключевого слова begin следуют параллельные операторы (concurrent statements), задающие функционирование описываемой архитектуры объекта.
Завершается описание архитектуры объекта ключевым словом end, за которым указывается идентификатор (architecture-name) описанной архитектуры объекта.
Параллельные операторы
В формате описания архитектуры объекта, секция параллельных операторов {concurrent_statement} содержит один или несколько параллельно выполняющихся операторов, с помощью которых задают зависимость выходных сигналов от входных.
Параллельные операторы это такие, каждый из которых выполняется при любом изменении сигналов, используемых в качестве его исходных данных. Результаты исполнения параллельного оператора доступны для других параллельных операторов не ранее, чем будут выполнены все операторы, инициализированные общим событием. Исполнение параллельных операторов инициируется не по последовательному, а по событийному принципу, т.е. они исполняются тогда, когда реализация других операторов программы создала условия для их исполнения. Таким образом, правило моделирования состоит в том, что в случае, когда последним оператором в теле VHDL-архитектуры изменяется сигнал, используемый в первом параллельном операторе данной архитектуры, программа должна вернуться назад к первому оператору и скорректировать его результаты, приведя их в соответствие с только что изменившимся сигналом. Такой режим исполнения заметно отличается от последовательного выполнения операторов в программном обеспечении, написанном на одном из обычных языков программирования.
Параллельные операторы представляют части алгоритма, которые в реальной системе могут исполняться одновременно. Эти части взаимодействуют между собой и с окружением проектируемой системы.
109
Последовательность записи параллельных операторов в теле архитектурного описания значения не имеет. Порядок выполнения (или, как говорят обычно, в параллельных вычислениях — порядок срабатывания параллельных операторов) определяется не порядком текстуальной записи операторов между begin и end, а другими правилами. Основным принципом здесь является управление от потока изменений сигналов, входных для параллельного оператора. Изменение значения сигнала, являющегося входным для параллельного оператора, запускает срабатывание данного оператора (т.е. акт выполнения оператора).
VHDL — язык «программирования» аппаратуры, аппаратно реализуемых алгоритмов, параллельных по своей природе конструкций. Программируя на VHDL, мы должны «видеть» за программными конструкциями языка параллельно работающие компоненты, множество параллельно существующих и меняющихся сигналов в схеме.
В языке VHDL есть несколько параллельных операторов, а также механизм связывания в один узел набора последовательных операторов с тем, чтобы они исполнялись, как один параллельный оператор (их описание дано в разделах «Элементы потокового проектирования» и «Элементы поведенческого проектирования»). Различное использование параллельных операторов привело к возникновению различных стилей проектирования и описания схем.
Стили описаний архитектур
Понятие стиля VHDL-описаний не является формальным. В понятие стиль вкладывается определенный подход к проектированию и написанию VHDL-кодов. Выделяют следующие стили проектирования и описания схем:
•структурный;
•потоковый;
•поведенческий;
•смешанный.
Структурный стиль характеризуется тем, что описание объекта явным образом отражает структуру синтезируемой схемы устройства. Основным параллельным оператором (concurrent statement), который используется при структурном описании, является опера-
110
тор component. Структура объекта представляется как состоящая из некоторых других объектов (компонентов) с указанием их перечня и связей между ними. VHDL-архитектуру, в которой используются компоненты, часто называют структурным описанием
(structural description) или структурной моделью (structural design),
поскольку ею задается реализующая данный объект точная конфигурация соединений, по которым сигналы передаются от одного элемента к другому. В этом отношении ясное структурное описание эквивалентно схеме устройства или списку соединений в нем.
Например, для структурного описания местного устройства управления необходимо располагать принципиальной схемой МУУ и иметь (или создать) в качестве компонентов элементы данной принципиальной схемы. Конечно, такое механическое преобразование существующих устройств в эквивалент в виде списка соединений в первую очередь убивает желание пользоваться языком VHDL.
В дальнейшем структурное описание объекта в контексте поставленной задачи не рассматривается. Заметим, что структурная модель является естественным способом создания сложных проектов, описание которых целесообразно выполнить по иерархическому принципу.
Если бы операторы component были единственными параллельными операторами языка VHDL, то он лишь немногим отличался бы от простого иерархического языка описания соединений со строгим соблюдением типов. Несколько дополнительных параллельных операторов языка VHDL позволяют описывать схемы в терминах потока данных и выполняемых схемой операций над этими данными. Такой подход носит название потокового описания (dataflow description) или потокового проектирования (dataflow design). Поток данных (data flow) характеризуется тем, что используют назначения сигналов, логические и арифметические операторы. Значения сигналов определяют из выражений и передают один другому операторами назначения сигналов — образуется «поток данных».
Описание, отражающее объект проектирования в алгоритмической форме преобразования входных данных в выходные, называется поведенческим описанием архитектуры объекта. Внутренняя структура описываемого объекта при этом не специфицируется.
Смешанный стиль — комбинация любых двух (либо трех) предыдущих стилей. Язык VHDL допускает смешанный стиль, что является весьма удобным при проектировании.
111
