- •1) Как организовать последовательное выполнение двух явно заданных процессов?
- •2) Какие конструкции языка позволяют реализовать генератор с легко изменяемыми периодом генерации и соотношением длительностей низкого и высокого уровней?
- •3) Почему описание содержащее два процесса для генерации сигнала clk (один для инициализации и второй для периодического изменения) не работоспособно?
- •4) Чем будет отличаться выполнение двух нижеприведённых конструкций модели?
- •5) Каким образом реализуются функции rising_edge и falling_edge для типа std_logic?
- •6) Как с использованием атрибутов сигналов задать условие фронта для типа bit, для типа std_logic? Чем обуславливается разница этих условий?
- •7) Поясните на примерах работу функции вычисления resolved для типа std_logic.
- •8) По каким принципам строится таблица вычисления для монтажного и для типа std_logic?
- •9) В чём различия между строго структурным, поведенческим и потоковым описаниями моделей?
- •10) Как отсоединить источник от сигнала не используя состояние ’z’ типа std_logic?
9) В чём различия между строго структурным, поведенческим и потоковым описаниями моделей?
В VHDL существуют два основных уровня описания архитектуры объектов — поведенческий и структурный.
На поведенческом уровне описание объектов проекта представляется в VHDL в виде набора параллельных процессов. Организация процессов обеспечивается введением оператора процесса и оператора параллельного присваивания сигналов, также представляющего процессы. Это определяет две формы описания объектов на поведенческом уровне — потоковую и процессную.
Потоковое описание (data-flow description) - архитектура представляется в виде множества параллельных регистровых операций, каждая из которых управляется вентильными сигналами. Потоковое описание соответствует стилю описания, используемому в языках регистровых передач. Для сигналов вводятся специальные операторы параллельного присваивания "<=", являющиеся эквивалентами операторов присваивания ":=" для простых переменных, но имитирующие параллельные процессы с сигналами.
В процессной форме описание объекта производится при помощи процессов. Процесс в VHDL определяет независимую повторяющуюся последовательность операторов и представляет поведение некоторой части проекта.
Поведенческий уровень описания объектов проекта является базовым, поскольку любые схемы, по крайней мере на самом нижнем уровне, представлены элементами, реализация которых выполнена на уровне поведения.
Структурный уровень описания объектов проекта. На структурном уровне объект представлен в виде иерархии связанных компонентов, на низшем уровне компоненты реализуются при помощи поведенческого описания.
10) Как отсоединить источник от сигнала не используя состояние ’z’ типа std_logic?
«1»Использование GUARD сигнала и функции DISCONNECT;
DISCONNECT I: STD_LOGIC AFTER 3 ns;
«2» Присвоение нулевого сигнала:
I: std_logic;
I<=null;
1.
Синтаксис оператора if. Условный паралел и послед оператор
2.
Синтаксис оператора
case. Выбора паралел и послед оператор
3.
Синтаксис оператора process. Процесс параралел
4.
Синтаксис оператора break. Пауза
5.
Синтаксис модуля library.
6.
Синтаксис модуля entity.
Следующие простые типы являются предопределенными:
BOOLEAN (логический) – объекты данного типа могут принимать значения FALSE (ложь) и TRUE (истина).
INTEGER (целый) – значения данного типа представляют собой 32-разрядные числа со знаком. Объекты типа INTEGER могут содержать значения из диапазона –(231–1)…231–1 (-2147483647 … 2147483647).
BIT (битовый) – представляет один логический бит. Объекты данного типа могут содержать значение '0' или '1'.
STD_LOGIC (битовый) – представляет один бит данных. Объекты данного типа могут принимать 9 состояний. Данный тип определен стандартом IEEE 1164 для замены типа BIT.
STD_ULOGIC (битовый) – представляет один бит данных. Объекты данного типа могут принимать 9 состояний. Данный тип определен стандартом IEEE 1164 для замены типа BIT (см. Примечание).
ENUMERATED (перечислимый) – используется для задания пользовательских типов.
SEVERITY_LEVEL – перечислимый тип, используется только в операторе ASSERT.
CHARACTER – символьный тип.
|
Описание |
Wait until condition;
|
Приостанавливает выполнение процесса, содержащего данный оператор до момента выполнения условия. |
Signal <= expression
|
Оператор присваивания сигнала устанавливает его значение равным выражению справа. |
Variable := expression
|
Оператор присваивания устанавливает значение переменной равным выражению справа. |
Procedure_name ( parameter { , parameter } )
|
Оператор вызова процедуры состоит из имени процедуры и списка фактических параметров.
|
If condition then Sequence_of_statements { Elsif condition then Sequence_of_statements } [ else sequence_of_statements ] end if ; |
Оператор if используется для ветвления алгоритма по различным условиям. |
Case expression is When choices_list => sequence_of_statements; { When choices_list => sequence_of_statements; } When others => sequence_of_statements; End case;
|
Оператор case подобно оператору if задает ветвление алгоритма. Значения в списках разделяются символом «|». Когда значение выражения встречается в одном из списков значений, выполняется соответствующая последовательность операторов. Если значение выражения не присутствует ни в одном из списков, то выполняется список операторов, соответствующий ветви when others.
|
[ loop_label : ] for loop_index_variable in range loop sequence_of_statements end loop [ loop_label ] ;
|
Оператор цикла позволяет многократно выполнить последовательность операторов. Диапазон значений задается в виде value1 to value2 или value1 downto value2. Переменная цикла последовательно принимает значения из заданного диапазона. Количество итераций равно количеству значений в диапазоне.
|
Return expression ;
|
Этот оператор возвращает значение из функции.
|
Null
|
Пустой оператор, не выполняет никаких действий.
|
Entity <name> is Port (<names of ports>: in <type>;<names of ports>: <type>); End <name>.
|
Интерфейс описывается в объявлении объекта entity declaration и определяет входы и выходы объекта, его входные и выходные порты ports и параметры настройки generic. Параметры настройки отражают тот факт, что некоторые объекты могут иметь управляющие входы, с помощью которых может производиться настройка экземпляров объектов в частности, задаться временем задержки.
|
assert |
Средством отображения информации о запрещенных ситуациях в языке VHDL является оператор утверждения (оператор контроля, оператор аномалии) assert. В нем помимо контролируемого условия, которое не должно быть нарушено, т. е. должно быть истинным, записывается сообщение report о нарушении и уровень серьезности ошибки severity.
|
package |
Описание пакета VHDL задается ключевым словом package и используется, чтобы собирать часто используемые элементы конструкции для использования глобально в других проектах. Пакет можно рассматривать как общую область хранения, используемую, чтобы хранить такие вещи как описания типов, констант, и глобальные подпрограммы. Объекты, определенные в пределах пакета можно использовать в любом другом проекте на VHDL, и можно откомпилировать в библиотеки для дальнейшего повторного использования.
|
port map |
Карта портов port map определяет соответствие карту портов как разъем, на который приходят сигналы и в который вставляется объект-компонента.
Имя: тип связи (сигнал, порт).
|
=, /=, <, <=, >, >= |
Операторы отношения |
AND, OR, NAND, NOR, XOR и NOT |
Логические операции |
+, –, ABS, *, /, MOD, REM |
Арифметические операторы
|
