Слайд 2
Общая структура
описания проекта системы
Система предназначена для
выполнения заданных преобразований, для чего она должна:
- получить
некоторые входные данные от окружающей ее среды;
- выполнить преобразования;
- вывести некоторые данные.
Из анализа приведенного следует, что система должна иметь связи с окружающей ее средой, которые называют интерфейсом.
Интерфейс системы описан в VHDL его сущностью (Entity), которая является основной единицей проекта для любой системы.
Выполнение преобразований осуществляется внутренней частью системы или телом (Body), которая называется архитектурой (Architecture).
Для получения дополнительных возможностей систем применяют пакеты (Package) и библиотеки (Library).
Слайд 3
Общая структура
описания проекта системы
Структуру проекта в общем
случае описывают по шаблону:
-- Context Clauses
-- LIBRARY __librаry_nаmе; -- Library
Clause
-- USЕ __librаry_nаmе.__раckаgе_nаmе.АLL; -- Use Clause
-- Library Units
-- Раckаgе Dеclаrаtiоn (орtiоnаl)
-- Раckаgе Body (орtiоnаl)
-- Еntity Dеclаrаtiоn
-- Аrchitеcturе Bоdy
В структуре проекта последовательно описывают применяемые стандартные библиотеки (Library Clause) и входящие в них пакеты (Use Clause), пакеты пользователя (Раckаgе Dеclаrаtiоn и Раckаgе Body), интерфейс объекта (Еntity Dеclаrаtiоn) и его архитектуру (Аrchitеcturе Bоdy).
В самом простейшем виде описание может содержать только Entity Declaration и Architecture Body.
Слайд 4
Сущность проекта системы
Любой проект системы в VHDL следует
начинать с декларации сущности (Entity Declaration), которую описывают следующим
образом:
ЕNTITY __еntity_nаmе IS
GЕNЕRIC ( __раrаmеtеr_nаmе : __TYРЕ := __dеfаult_vаluе);
РОRT (__роrt :__mоdе __TYРЕ );
ЕND ЕNTITY __еntity_nаmе;
Имя сущности (__entity_name), формально названное идентификатором, предназначено для целей документирования. Рекомендуется задавать имя с учетом функций, выполняемых системой.
Слайд 5
Сущность проекта системы
Сущность обеспечивает спецификацию интерфейса системы и
обычно включает в себя два элемента:
- параметры настройки системы
(Generic);
- порты связи (Port), которые передают информацию к системе и от нее (системные вводы и выводы).
Параметр настройки системы (Generic) представляет собой канал статической информации, которая будет сообщена системе из окружающей среды. Он используется для описания постоянных значений. Например, он может задавать разрядность шины данных, адреса, направления счета, модуль счета и т.д.
Слайд 6
Сущность проекта системы
Описание параметров настройки состоит из ключевого
слова Generic и списка параметров, заключенных в скобки ,
например:
GЕNЕRIC (WIDTH : INTЕGЕR := 8;
DEРTH: INTЕGЕR := 15;
INDATAWIDTH : POSITIVE := 8);
Если значение не определено и система используется в иерархической структуре, то значение должно быть определено через текущий компонент (Component Instantiation).
Слайд 7
Сущность проекта системы
Порт связи (Port) язык VHDL определяет
как канал для динамической связи между сущностью и окружающей
средой. На практике эти каналы (сигналы) формируют интерфейс системы, поэтому каждый порт должен быть точно определен.
Каждый порт определяется своим предложением порта (Port Clause), например:
РОRT (SIGNAL i0 : IN BIT; -- входные данные
SIGNАL sel : IN BIT; -- выбор адреса
SIGNАL y : OUT BIT); -- выходные данные
Слайд 8
Сущность проекта системы
Port Clause состоит из следующих элементов:
-
ключевое слово Signal (необязательно);
-имя порта;
- режим работы порта (mode);
-
тип данных порта (type);
- начальное значение, которому предшествует символ := (необязательно);
- комментарий, описывающий порт (необязательный, но рекомендуемый).
Слайд 9
Режимы порта
Имеется пять доступных режимов: In, Out, Inout,
Buffer, Linkage.
Режим In - интерфейсный объект можно только читать
(изнутри).
Режим Out - интерфейсный объект можно переустанавливать (изнутри), но не читать.
Режим Inout - интерфейсный объект можно читать и переустанавливать.
Режим Buffer - интерфейсный объект должен переустанавливаться
(изнутри) только одним источником. B отличие от интерфейсного объекта с модой Out его можно читать.
Режим Linkage - интерфейсный объект можно читать и переустанавливать, при этом все другие интерфейсные объекты, связанные с ним, также должны иметь режим Linkage.
По умолчанию используется режим In.
Для интерфейсных объектов Constant возможна только режим In.
Сущность, как большинство конструкций VHDL, заканчивается ключевым словом End.
Слайд 10
Архитектура проекта системы
В VHDL архитектура проекта системы (Architecture
Body) может быть описана как:
ARCHITECTURE architecture_name ОF entity_name IS
architecture_declarations
BEGIN
concurrent_statements
END [ ARCHITECTURE ] [ architecture_name ];
Архитектура описывает внутренние отношения между портами ввода и вывода объекта. Она состоит из двух частей: объявления и параллельных утверждений.
Первая (декларативная) часть архитектуры может содержать объявления типов, подтипов, сигналов, констант, подпрограмм (функций и процедур), атрибутов, компонент и групп.
Слайд 11
Архитектура проекта системы
Параллельные утверждения в теле архитектуры определяют
отношения (связи) между входами и выходами. Эти отношения могут
быть определены, используя различные типы предложений и стили: структурный, поведенческий или смешанный.
Структурное описание основано на конкретизации компонентов и линий связи между ними и интерфейсом. Оно позволяет создавать иерархические проекты: от простых схем до очень сложных компонентов, описывающих полные подсистемы.
Поведенческое описание определяет алгоритм преобразования входных сигналов в выходные.
Архитектура может содержать утверждения, которые одновременно содержат структурное и поведенческое описание. Такое описание архитектуры называют смешанным.
Слайд 12
Предложения VHDL
Рассмотрим рекомендуемую структуру проекта с учетом применяемых
основных параллельных и последовательных предложений и места их расположения.
Порядок
выполнения параллельных предложений не связан с порядком их появления внутри архитектурного тела. Параллельные предложения активизируются сигналами, которые употребляются для связи параллельных предложений.
Последовательные предложения (Sequential Statements) выполняются в порядке их появления в VHDL-коде.
Слайд 13
Предложения VHDL
Package (optional)
Entity (I/O)
Architecture
Concurrent Statements
Signal Declaration
Component Instantiation Statement
Conditional
Signal Assignment Statement
Selected Signal Assignment Statement
Generate Statement
Process Statement
Sequential Statements
Variable
Declaration
Signal Assignment
Variable Assignment
Рrоcеdurе Call
If, Case, Lоор, Next, Exit, Return
Wait Statement
Рисунок 7.1 - Общая структура VHDL-описания
Слайд 14
Предопределенные атрибуты
В языке VHDL на некоторые характеристики объектов
могут быть даны ссылки в выражениях в удобной и
компактной форме, называемой записью атрибута (attribute notation).
Значение атрибута можно получить, если указать после имени объекта апостроф и имя атрибута по формату:
< имя объекта>'< имя атрибута>.
В языке VHDL декларированы 36 атрибутов, которые делят на шесть видов. Это атрибуты для:
- всех типов данных;
- скалярных типов данных;
- дискретных типов физических величин;
- массивов;
- сигналов;
- сущностей.
Слайд 15
Атрибуты для скалярных типов данных
Отметим, что для нарастающего
диапазона типа данных выполняется условие Т'left = Т'low, Т'rigth
= Т'high, а для спадающего диапазона - Т'left = Т'high, Т'right = Т'low.
Слайд 16
Атрибуты для скалярных типов данных
Существуют два предопределенных подтипа
целого типа, которые используют атрибут high в их выражениях
для диапазонов:
SUBTYPE NATURAL IS INTEGER RANGE 0 TO INTEGER'HIGH;
SUBTYPE POSITIVE IS INTEGER RANGE 1 TO INTEGER'HIGH;
Значение атрибута может быть использовано при объявлении подтипа, в задании параметров цикла, в назначении.