Программирование на зыке VHDL: Конспект лекций, страница 5

Как использовать Arithmetic & Boolean functions с другими типами данных? Для этого можно использовать механизм Operator Overloading

Operator Overloading - определение арифметических и логических функций для иных типов данных

Оператор переопределяется путем объявления функции с таким же именем, как у исходного оператора

-  Поскольку имена оператора и функции одинаковы, имя функции следует заключать в кавычки, чтобы отличить ее от собственно оператора VHDL

-  Обычно функция объявляется в составе пакета, так что является глобально доступной в рамках всего проекта

3.1.7.1. Пакет переопределения операторов и функций (Operator Overloading Function/Package)

-  Пакеты, переопределяющие операторы с помощью функций, содержатся в библиотекеLIBRARY IEEE

-  Например, пакетstd_logic_unsignedобъявляет следующие функции:

3.1.7.2. Использование переопределения операторов и функций

3.1.8. Определение сигнала по условию - Conditional Signal Assignment


• Формат                                                                      • Пример:

3.1.9. Определение сигнала с помощью выбора варианта - Selected Signal Assignments

-  Должны быть рассмотрены ВСЕ возможные варианты

-  Выражение WHEN OTHERS охватывает все другие варианты помимо явно перечисленных

Пример:

3.1.9.1. Пример модели VHDL • Concurrent Signal Assignments

3.2. Процессы

3.2.1. Выражение Explicit Process

-  Process может подразумевать:

·  Implied processes – неявные процессы

·  Explicit processes – явно определенные процессы

-  Неявный процесс состоит из Implied process consist of

·  Конкурентных операторов определения значений сигналов - Concurrent signal assignment statements

·  Выражений компонентов - Component statements

·  Чувствительность процесса отображена в правой части выражения - Processes' sensitivity is read side of expression

-  Явный процесс:

·  Конкурентное выражение - Concurrent statement

·  Состоит только из последовательностных операторов - Consist of Sequential statements only

3.2.1.1. Выполнение выражения Process

1.  Выражение Process выполняется бесконечно, пока не будет прервано оператором WAIT или списком чувствительности (Sensitivity List)

2.  Список чувствительности неявно подразумевает оператор WAIT в конце процесса

3.  Process может иметь несколько операторов WAIT

4.  Process не может иметь одновременно Sensitivity List и оператор WAIT

5.  Примечание: при синтезе логических схем на WAIT и Sensitivity List накладываются дополнительные ограничения

3.2.1.2. Операторы Multi-Process

3.2.1.3. VHDL-модель  архитектуры с несколькими процессами

3.2.2. Определение задержек сигналов

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

-  Задание сигнала может содержать определение величины задержки.

-  Возможны два типа задержек:

·  Внутренняя задержка - Inertial Delay (Default)

§  Импульс, длительность которого мала по сравнению с величиной задержки, передан не будет

·  Задержка передачи сигнала - Transport Delay

§  Любой импульс будет передан независимо от его длительности

Примечание: в VHDL есть исключения из этого правила.

3.2.3. Моделирование процессов

Событие (Event) – изменение величины сигнала: from 0 to 1; or from X to 1, etc

-  Цикл моделирования - Simulation cycle

·  Граничное время - Wall clock time

·  Приращение - Delta

§  Фаза выполнения процесса - Process Execution Phase

§  Фаза записи значений сигнала - Signal Update Phase

-  Когда заканчивается цикл моделирования и начинается новый?

·  Когда:

§  Все процессы выполнены

§  Значения сигналов обновлены

-  Сигналы обновляются в конце процесса

3.2.4. Эквивалентность функций