Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PROGRAMMIRUEMYE_TsIFROVYE_USTROJSTVA.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.86 Mб
Скачать
  1. Синхронные и асинхронные процессы и их описание на языке vhdl.

  2. Способы описания комбинационной логики на языке vhdl.

  3. Описание триггерных схем на языке vhdl.

Для описания триггерных схем в VHDL используются операторы wait и if вместе с процессом, использующим аттрибуты переднего или заднего фронтов синхроимпульса.

Ниже приведены примеры создания описаний срабатывания по фронту:

(clk'event and clk='1') –аттрибут срабатывания по переднему фронту

(clk'event and clk='0') -- аттрибут срабатывания по заднему фронту

rising_edge(clock) –вызов функции по переднему фронту

falling_edge(clock) -- вызов функции по заднему фронту

В этих примерах иллюстрируется применение аттрибута переднего фронта (rising edge 'event attribute). Использование аттрибутов следует рекомендовать в тех случаях, когда система проектирования не поддерживает вызов функции по событию. Однако , использование функций позволяет избежать коллизий, связанных с переходом из неопределенного состояния, поскольку функция определяет только переходы уровней (из 0 в 1 или из 1 в 0), не не переход из неопределенного состояния в 1 или 0. Это становиться достаточно важным в случае использования многозначных типов данных, например std_logic, который имеет 9 возможных значений(U, X, 0, 1, Z, W, L, H, -).

  1. Описание регистровых схем на языке vhdl.

  2. Вычисляемые сигналы языка vhdl.

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

Описание вычисляемого сигнала имеет следующий синтаксис:

signal name: [resolution_function_name] type_mark

[range (range_attribute_name |

sinmple_expression (to | downto} simple_expression)|

(discrete range {,...})]

Здесь:

  • идентификатор type_mark задает имя типа для определяемого сигнала;

  • идентификатор resolution_function_name — имя функции, используемой для вычисляемого сигнала.

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

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]