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:

Входы

Выходы

enable

data[lpm_width-1 .. 0]

eq[lpm_decodes-1 .. 0]

0

x

0

1

lpm_decodes-1

1

1

lpm_decodes-2

0

. . .

. . .

. . .

1

1

0

1

0

0

Дешифратор нормально функционирует при неподключенном входе enable.

Потребляемые модулем lpm_decode ресурсы: одна логическая ячейка на один выход при количестве выходов до 16 и две логические ячейки на один выход при большем количестве выходов.

4. Контрольная работа

Задачей контрольной работы является разработать на ПЛИС операционный (решающий) модуль схемотехнического устройства для обработки информации.

4.1. Общая схема вычислительной системы

На рис.15 представлена общая блок-схема вычислительной системы.

 

Операционный или решающий модуль преобразует данные, поступающие из устройства ввода данных, и передает их для дальнейшего использования в устройство вывода данных.

Устройством ввода данных может служить любое устройство формирующее данные в формате пригодном для использования Операционным модулем. Им могут быть: клавиатура, аналого-цифровой преобразователь, модем линий связи. В нашем случае им является реальное или виртуальное устройство считывания кода ключа (ридер ключа).

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

4.2. Задание на контрольную работу

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

Задание

1. Подготовить проект встраиваемого в ПЛИС модуля для вычисления заданной логической функции Y=Y(A, B,C, D), где A, B, C, D – биты вырабатываемые устройством считывания кода 4-х битового ключа, Y – сигнал управления исполнительным механизмом замка.

2. Осуществить компиляцию проекта в применении к микросхеме EP2C8Q208N8 семейства CYCLONE. Сформировать список цепей для функционального моделирования.

3. Подготовить файл временных диаграмм для моделирования, обеспечивающий демонстрацию 16-ти состояний 4-х битового ключа. Осуществить функциональное и временное моделирование контроллера кодового замка, построить «Таблицу истинности» для функции Y.

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

Вопросы для защиты

1. Основные классы электронных приборов, предназначенных для разработки цифровых устройств. Особенности различных классов.

2. Особенности архитектур ПЛИС (CPLD, FPGA, SOPC).

3. Архитектура логической ячейки FPGA на примере CYCLONE.

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

5. Примитивы логических функций САПР Quartus II (названия, условные обозначения, отечественные обозначения, функционирование).

6. Примитивы выводов САПР Quartus II (названия, условные обозначения, назначение, особенности применения).

7. Операторы языка AHDL.

8. Структура текстового описания модуля на языке AHDL.

4.3. Варианты индивидуальных заданий

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

N =НЗК mod 20, где N – номер варианта, НЗК – номер зачетной книжки.

Вариант

Функция

0

Y=A*D*C+(A*D+A+(B+A*D*#C))+(B+A*D*C)

1

Y=D*C*B+(D*C+D+(A+D*#C*#B))$(A+D+D*C*B)

2

Y=B*A*D+(B+B+(C+B*A*D))$(#C+B+B*A*D)

3

Y=D*C*B+(D*C+D+(A+D*#C*#B))$(A+D+D*C*B)

4

Y=C*B+(C*B+C+(D+#C*#B))$(D+C+C*B)

5

Y=A*D*C+(A*D+A+(B+A*D*#C))$(B+A*D*C)

6

Y=D*C*B+(D*C+D+(A+D*#C*#B))$(A+D+D*C*B)

7

Y=B*A*D+(B+B+(C+B*A*D))$(#C+B+B*A*D)

8

Y=A*D*C+(A*D+A+(B+A*D*#C))$(B+A*D*C)

9

Y=C*B+(C*B+C+(D+#C*#B))$(D+C+C*B)

10

Y=B*A*D+(B+B+(C+B*A*D))$(#C+B+B*A*D)

11

Y=D*C*B+(D*C+D+(A+D*#C*#B))+(A+D+D*C*B)

12

Y=C*B+(C*B+C+(D+#C*#B))+(D+C+C*B)

13

Y=A*D*C+(A*D+A+(B+A*D*#C))+(B+A*D*C)

14

Y=C*B+(C*B+C+(D+#C*#B))+(D+C+C*B)

15

Y=B*A*D+(B+B+(C+B*A*D))+(#C+B+B*A*D)

16

Y=D*C*B+(D*C+D+(A+D*#C*#B))+(A+D+D*C*B)

17

Y=C*B+(C*B+C+(D+#C*#B))+(D+C+C*B)

18

Y=A*D*C+(A*D+A+(B+A*D*#C))+(B+A*D*C)

19

Y=D*C*B+(D*C+D+(A+D*#C*#B))+(A+D+D*C*B)

Библиографический список

1.  Глухих схемотехника. Технология внутрисхемного программирования. –Иркутск: Изд-во ИрГТУ,2001. –160 с.

2.  Антонов описания цифровых устройств AlteraHDL: Практический курс. – М.: ИП РадиоСофт, 2001. –224 с.

3.  Амосов и средства проектирования цифровых устройств. – СПб.: БХВ-Петербург, 2007. – 560с.

4.  , , Филиппов автоматизированного проектирования фирмы Altera MAX+plus II и Quartus II: Краткое описание и самоучитель. – М.: ИП РадилСофт, 2002 – 352с.

5.  ПЛИС фирмы «Altera»: элементная база, система проектирования и языки описания аппаратуры. – М.: Изд. дом «Додэка-XXI», 2002. – 576с.

6.  , Глухих автоматы. –Иркутск: Изд-во ИрГТУ,2003. –71 с.

7.  Бибило языка VHDL. М.: СОЛОН-Р, 20с.

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