Введение в стандарт IEEE. Справочное руководство по языку VHDL (Пересмотр стандарта IEEE. 1076-1987), страница 21

     Dff определяет единственный бит, определяющий D триггер, dff_v - векторизованный D триггер. Dff не имеет никаких входов предварительных установки или очистки, dffc содержит возбуждаемый высоким уровнем сигнала вход асинхронной очистки (устанавливает q в '0'), dffp содержит возбуждаемый высоким уровнем сигнала асинхронный вход предварительной установки (устанавливает q в '1'), и dffpc имеет, и входы предварительной установки и очистки. Если есть утверждения предварительной установки и очистки, q не определен. Все входы и вход часов запускаются высоко активным положительным фронтом. Для векторизованного dffs, число триггеров, которым будут приписаны значения определяемые размерами входа (d) и выхода (q) реализуемого вектора dff#_v. (Размер d и q векторов должен быть одинаковым.)

     Если q - порт VHDL объекта, это должно быть объявлено как порт INOUT, так как q используется двунаправлено в каждой из этих функций.

Защелки.

dlatch[_v](data, enable, q)

dlatchc[_v](data, clear, enable, q)

dlatchp[_v](data, preset, enable, q)

dlatchpc[_v](data, preset, clear, enable, q)

     Они определяют уровень чувствительности защелки D-типа. Защелка доступна (прозрачна), когда разрешающий вход 1, и заблокирован когда вход - 0. Dlatch не имеет никакой предварительно установки или возможности очистки, dlatchc имеет асинхронный возбуждаемый высоким уровнем сигнала (устанавливает q в '0') вход очистки, dlatchp имеет асинхронный возбуждаемый высоким уровнем сигнала вход предварительной установки (устанавливает q в '1'), и dlatchpc оба этих входа. Если входы предварительной установки и очистки утверждены, q не определен. Dlatch_v создает векторные эквивалентные процедуры, чтобы генерировать защелки на регистрах D-типа.

Шины с тремя состояниями

     Когда сигнал назначен в множественных параллельных инструкциях, выполнение синтеза требует, чтобы в каждой инструкции сигнал был определен как 'Z'  или по крайней мере в одном условии. Логический элемент с тремя состояниями созданный в этом случае, имеет доступ из логического элемента к соответствующему инверсному состоянию, где 'Z' назначен в модели. Это - единственный случай, который позволяет множественные назначения сигнала в различных параллельных инструкциях.

     Это также возможно для пользователя, чтобы определить, что делать в случае, где ни один из драйверов шины не доступен. Чтобы адресовать эту ситуацию, объявляются три предопределенных процедуры, для  обработки трех стандартных состояний шины с тремя состояниями: PULLUP, PULLDN и TRSTMEM. Они управляют неуправляемой шиной иначе чем значениями 1, 0, или соответственно сохраняют текущее значение. Только одна из этих функций может быть определена для данной шины. Инструментальные средства синтеза будут формировать соответствующую логику, чтобы осуществить указанную функцию. Если технология включает, перемещаемые вверх или вниз резисторы или ячейки повторителя на внутренних шинах, они будут использоваться. Если они не доступны, будут использовать дополнительные логические элементы с тремя состояниями, которые доступны: это НЕ-ИЛИ чей вход является VCC или GND чтобы осуществить указанную функцию. Инструментальные средства синтеза также знают заданное по умолчанию состояние для входной шины, и если это соответствует указанной функции, никакая дополнительная логика не создается. Если никакое завершение не определено, то его неуправляемое значение зависит от используемой технологии.

Пакет синтеза Synopsys VHDL.

Функции STD_LOGIC_ARITH

     Пакет std_logic_arith определяет набор функций, которые часто используются в VHDL для синтеза. Он включает наборы: арифметический, преобразования, и функций сравнения для ЗНАКОВЫХ, БЕЗ ЗНАКОВЫХ, SMALL_INT, ЦЕЛЫХ ЧИСЕЛ, STD_ULOGIC, STD_LOGIC, и STD_LOGIC_VECTOR.

Типы данных

Пакет std_logic_arith обеспечивает два типа данных, которые упрощают VHDL арифметику. Типы, без знака и типы с знаком  - неограниченные массивы элементов типа std_logic. Как правило, знаковый тип представляет двоичные числа со знаком, в то время как тип без знака представляет величины без знака. Так как оба типа неограниченные, диапазон числа определяется числом битов используемых для объявления. Тип small_int - целое число находящееся в диапазоне от 0 до 1.