3.2. Регистр-защелка (lpm_latch)
Altera рекомендует применять модуль lpm_latch только в случае необходимости использования порта aset. В остальных случаях следует применять примитив latch, обеспечивающий более простую реализацию устройства и уменьшающий время компиляции проекта.
Прототип модуля lpm_latch:
function lpm_latch(data[lpm_width-1..0], gate, aclr, aset, aconst)
with (lpm_width, lpm_avalue)
returns (q[lpm_width-1..0]);
Порт aconst помещен в список для совместимости с предыдущими версиями САПР и в новых проектах не должен подключаться.
Входные порты модуля lpm_latch:
Имя порта | Необходимость | Описание | Примечание |
data[] | Нет | Входные данные для защелкивания | Разрядность определяется параметром lpm_width. Если не подключен, то, по крайней мере, один из следующих портов должен быть подключен: aset, aclr |
gate | Да | Вход сигнала защелкивания. Высокий уровень – регистр "прозрачен"; низкий – данные защелкнуты | |
aclr | Нет | Вход асинхронного сброса | Значение по умолчанию 0. Устанавливает на всех выходах защелки низкий уровень. Если подключены порты aset и aclr и оба активизированы, то превалирует aclr |
aset | Нет | Вход асинхронной установки | Значение по умолчанию 0. Устанавливает на выходах q значения, определенные параметром lpm_avalue, если он инициализирован, и значения 1 в противном случае. Если подключены порты aset и aclr и оба активизированы, то превалирует aclr |
Выходные порты модуля lpm_latch:
Имя порта | Необходимость | Описание | Примечание |
q[] | Да | Выходы регистра-защелки | Разрядность определяется параметром lpm_width |
Параметры модуля lpm_latch:
Параметр | Тип | Необходимость | Описание |
lpm_width | Число | Да | Разрядность портов data[] и q[] |
lpm_avalue | Число | Нет | Числовая константа, которая загружается в регистр, когда на вход aset подан высокий уровень. Если параметр опущен, то загружаются единицы. Разрядность параметра ограничена 32 битами. Altera рекомендует в AHDL проектах определять эту величину в виде десятичного числа |
lpm_hint | Строка | Нет | Для применения в проектах на языке VHDL |
lpm_type | Строка | Нет | Для применения в проектах на языке VHDL |
Таблица истинности модуля lpm_latch:
Входы | Выходы | ||
aclr | aset | gate | q[lpm_width-1..0] |
1 | x | x | |
0 | 1 | x | or lpm_avalue |
0 | 0 | 1 | data[lpm_width-1..0] |
0 | 0 | 0 | q[lpm_width-1..0] |
Потребляемые модулем lpm_latch ресурсы: одна логическая ячейка на разряд.
3.3. Двунаправленный буфер с тремя состояниями (lpm_bustri)
Altera рекомендует применять примитив tri вместо lpm_bustri для обеспечения более простой реализации проекта и снижения времени компиляции. Однако lpm_bustri может оказаться полезным при управлении однонаправленными и двунаправленными шинами ввода/вывода.
Прототип модуля lpm_bustri:
function lpm_bustri(data[lpm_width-1..0], enabletr, enabledt)
with (lpm_width)
returns (tridata[lpm_width-1..0], result[lpm_width-1..0]);
Входные порты модуля lpm_bustri:
Имя порта | Необходимость | Описание | Примечание |
data[] | Да | Входные данные для шины tridata[] | Разрядность определяется параметром lpm_width. Должна быть подключена или шина data[], или шина result[]. Могут быть подключены обе шины |
enabletr | Нет | Высокий уровень обеспечивает прохождение сигнала с шины tridata[] на шину result[] | Требуется, если шина result[] подключена. Значение по умолчанию 0 |
enabledt | Нет | Высокий уровень обеспечивает прохождение сигнала с шины data[] на шину tridata[] | Требуется, если шина data[] подключена. Значение по умолчанию 0 |
Выходные порты модуля lpm_bustri:
Имя порта | Необходимость | Описание | Примечание |
result[] | Нет | Выходы шины tridata[] | Разрядность определяется параметром lpm_width. Должна быть подключена или шина data[], или шина result[]. Могут быть подключены обе шины |
Двунаправленные порты модуля lpm_bustri:
Имя порта | Необходимость | Описание | Примечание |
tridata[] | Да | Выводы двунаправленной шины | Разрядность определяется параметром lpm_width |
Параметры модуля lpm_bustri:
Параметр | Тип | Необхоимость | Описание |
lpm_width | Число | Да | Разрядность портов data[], result[] и tridata[] |
lpm_hint | Строка | Нет | Для применения в проектах на языке VHDL |
lpm_type | Строка | Нет | Для применения в проектах на языке VHDL |
1. Подключены входная шина data[lpm_width-1..0], входной порт enabledt и выходная шина tridata[lpm_width-1..0].
2. Подключены входная шина tridata[lpm_width-1..0], входной порт enabletr и выходная шина result[lpm_width-1..0].
3. Подключены все порты: входная шина data[lpm_width-1..0], входной порт enabledt, входной порт enabletr, выходная шина result[lpm_width-1..0] и двунаправленная шина tridata[lpm_width-1..0].
Таблицы истинности модуля lpm_bustri:
Вход | Выход |
enabletr | result[lpm_width-1..0] |
0 | Z |
1 | tridata[lpm_width-1..0] |
Вход | Выход |
enabledt | tridata[lpm_width-1..0] |
0 | Z |
1 | data[lpm_width-1..0] |
Входы | Двунаправленная шина | Выход | |
enabledt | enabletr | tridata[lpm_width-1..0] | result[lpm_width-1..0] |
0 | 0 | Z (вход) | Z |
0 | 1 | Z (вход) | tridata[lpm_width-1..0] |
1 | 0 | data[lpm_width-1..0] | Z |
1 | 1 | data[lpm_width-1..0] | data[lpm_width-1..0] |
Потребляемые модулем lpm_bustri ресурсы: одна ячейка ввода/вывода или одна логическая ячейка на разряд.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 |


