3.4. Цифровой компаратор (lpm_compare)

Параметризированный компаратор lpm_compare рекомендуется фирмой Altera для использования взамен всех других типов компараторов.

Прототип модуля lpm_compare:

function lpm_compare(dataa[lpm_width-1..0], datab[lpm_width-1..0], clock, aclr, clken)

with (lpm_width, lpm_representation, lpm_pipeline, chain_size, one_input_is_constant)

returns (alb, aeb, agb, ageb, aneb, aleb);

Входные порты модуля lpm_compare:

Имя порта

Необхо-

димость

Описание

Примечание

dataa[]

Да

Входные данные, сравниваемые с данными на входе datab[]

Разрядность определяется параметром lpm_width

datab[]

Да

Входные данные, сравниваемые с данными на входе dataa[]

Разрядность определяется параметром lpm_width

clock

Нет

Вход синхронизации для конвейерного режима

Обеспечивает синхронизацию при использовании конвейерного режима. Должен быть подключен при значении lpm_pipeline, отличном от 0 (значение по умолчанию)

clken

Нет

Вход разрешения синхронизации для конвейерного режима

Если не подключен, то значение по умолчанию 1

aclr

Нет

Вход асинхронного сброса для конвейерного режима

В конвейерном режиме устанавливает выходы в исходное для этого режима состояние: aeb=0, agb=0, ageb=0, alb=1, aleb=1, aneb=1

Выходные порты модуля lpm_compare:

Имя порта

Необхо-

димость

Описание

Примечание

alb

Нет

1 – если dataa[] < datab[]

Хотя бы один из выходов следует использовать

aeb

Нет

1 – если dataa[] = = datab[]

agb

Нет

1 – если dataa[] > datab[]

ageb

Нет

1 – если dataa[] >= datab[]

aneb

Нет

1 – если dataa[] != datab[]

aleb

Нет

1 – если dataa[] <= datab[]

Параметры модуля lpm_compare:

НЕ нашли? Не то? Что вы ищете?

Параметр

Тип

Необхо-димость

Описание

lpm_width

Число

Да

Разрядность портов dataa[] и datab[]

lpm_representation

Строка

Нет

Тип осуществляемого сравнения: "signed" (со знаком), "unsigned" (без знака) или "unused" (не используется). Представление чисел со знаком реализуется в дополнительном коде

lpm_pipeline

Число

Нет

Определяет число тактов синхронизации, по прошествии которых устанавливается действительное значение выходов. Значение по умолчанию 0, что означает не конвейерный (не синхронизируемый) режим. Если установлено значение 0, то вход clock не должен быть подключен

lpm_hint

Строка

Нет

Для применения в проектах на языке VHDL

lpm_type

Строка

Нет

Для применения в проектах на языке VHDL

chain_size

Число

Нет

Определяет максимальную длину цепочек переноса или каскадирования в семействах микросхем ACEX1K, APEX20K, APEX II, ARM-based Excalibur, FLEX6000, FLEX10K и Mercury. Значение по умолчанию 8. Значение параметра имеет более высокий приоритет, чем эта же величина, установленная с помощью переменных окружения компилятора Carry Chain Length и Cascade Chain Length. Для микросхем других семейств изменение значения обеспечивает различные соотношения параметров устройства размер и быстродействие: меньшее значение chain_size дает в результате большую скорость, но и больший объем, и наоборот

one_input_is_constant

Строка

Нет

Допустимые значения "yes", "no" и"unused". Обеспечивает лучшую оптимизацию, если один вход представлен константой. Значение по умолчанию "no"

Таблица истинности модуля lpm_compare:

Входы

Выходы

dataa[]

datab[]

alb

aeb

agb

ageb

aleb

aneb

a

b

a < b

a = = b

a > b

a >= b

a <= b

a!= b

Потребляемые модулем lpm_compare ресурсы: реализация 16-битного беззнакового компаратора на микросхемах семейства APEX20K может потребовать от 17 до 25 логических ячеек, в зависимости от типа оптимизации.

3.5. Двоичный дешифратор (lpm_decode)

Параметризированный двоичный дешифратор lpm_decode рекомендуется фирмой Altera для использования в случаях, когда размерность дешифрируемых данных не превышает 8. Кроме того, если в проекте используются лишь несколько отдельных выходов дешифратора, то рекомендуется применять компаратор lpm_compare с фиксированным значением на одном из входов.

Прототип модуля lpm_decode:

function lpm_decode(data[lpm_width-1..0], enable, clock, aclr, clken)

with (lpm_width, lpm_decodes, lpm_pipeline)

returns (eq[lpm_decodes-1..0]);

Входные порты модуля lpm_decode:

Имя порта

Необхо-

димость

Описание

Примечание

data[]

Да

Входные данные. Рассматриваются как двоичное число без знака

Разрядность определяется параметром lpm_width

enable

Нет

Разрешение работы дешифратора. Если неактивен, то на всех выходах устанавливается 0

Если не подключен, то значение по умолчанию 1 (активный)

clock

Нет

Вход синхронизации для конвейерного режима

Обеспечивает синхронизацию при использовании конвейерного режима. Должен быть подключен при значении lpm_pipeline отличном от 0 (значение по умолчанию)

aclr

Нет

Вход асинхронного сброса для конвейерного режима

В конвейерном режиме устанавливает все выходы в исходное состояние 0

clken

Нет

Вход разрешения синхронизации для конвейерного режима

Если не подключен, то значение по умолчанию 1

Выходные порты модуля lpm_decode:

Имя порта

Необхо-

димость

Описание

Примечание

eq[]

Да

Выходы дешифратора

Размерность определяется параметром

lpm_decodes. Если data[] >= lpm_decodes, то значения всех выходов равны 0

Параметры модуля lpm_decode:

Параметр

Тип

Необхо-димость

Описание

lpm_width

Число

Да

Разрядность входного порта data[] (разрядность дешифрируемых данных)

lpm_decodes

Число

Да

Количество выходов дешифратора. Необходимо выполнение условия lpm_decodes <= 2 ^ lpm_width

lpm_pipeline

Число

Нет

Определяет число тактов синхронизации, по прошествии которых устанавливается действительное значение выходов. Значение по умолчанию 0, что означает не конвейерный (не синхронизируемый) режим. Если установлено значение 0, то вход clock не должен быть подключен

lpm_hint

Строка

Нет

Для применения в проектах на языке VHDL

lpm_type

Строка

Нет

Для применения в проектах на языке VHDL

Таблица истинности модуля lpm_decode:

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9