
- •Вопрос 1 - Основные свойства цифровых устройств (цу) обработки сигнала. Элементная база цу. Классификация цу.
- •Вопрос 2 - Функциональный преобразователь (фп) на программируемой логической матрице (плм). Структурная схема и работа фп. Реализация контерма и переключательной функции на плм.
- •Вопрос 3 - Функциональный преобразователь (фп) на программируемой матрице логики (пмл). Структурная схема и работа фп. Реализация системы уравнений в нормальной дизъюнктивной форме (ндф) на пмл.
- •Вопрос 4 - Функциональный преобразователь (фп) табличный lut. Структурная схема и работа фп. Реализация переключательных функций на пзу.
- •Вопрос 5 - Функциональный преобразователь (фп) на мультиплексоре. Структурная схема и работа фп фирмы Actel. Реализация переключательных функций на мультиплексоре.
- •Вопрос 6 - Функциональный преобразователь (фп) на программируемом логическом устройстве (плу). Структурная схема и работа плу. Реализация секции цифрового автомата на плу.
- •Вопрос 7 - Семейство плис max 7000. Общая характеристика семейства. Структурная схема плис max 7000. Назначение элементов структурной схемы.
- •Вопрос 8 - Структурная схема макроячейки плис max 7000. Основные характеристики ячейки. Назначение логического и параллельного расширителей.
- •Вопрос 9 - Семейство flex10k. Общая характеристика семейства. Структурная схема плис семейства flex10k. Назначение элементов структурной схемы.
- •Вопрос 10 - Структурная схема логического блока и логического элемента плис семейства flex10k. Назначение элементов структурной схемы.
- •Вопрос 12 - Организация процесса обработки информации. Основные характеристики последовательного и потокового (конвейерного) стилей обработки.
- •Вопрос 13 - Трехстабильный порт. Назначение, область применения. Использование примитивы tri для проектирования трехстабильного порта.
- •Вопрос 14 - Двунаправленный порт. Назначение, область применения. Использование мегафункции lpm_bustri для проектирования двунаправленного порта.
- •Вопрос 15 - Реализация звена нерекурсивного фильтра типа tdf II с использованием мегафункции lpm_mult. Организация конвейерной обработки.
- •Вопрос 16 - Реализация звена рекурсивного фильтра типа tdf II с использованием мегафункции lpm_mult. Организация конвейерной обработки.
- •Вопрос 19 - Разработка иерархических проектов. Способы подключения к проекту модулей нижнего уровня. Способы использования модулей.
- •Вопрос 20 - Программирование и конфигурирование плис. Способы программирования и конфигурирования (конфигурационная микросхема, пассивная последовательная (ps) и jtag).
- •Вопрос 21 - Языки описания аппаратуры. Язык ahdl. Структура проекта текстового описания модуля. Алфавит языка. Строчные и блочные комментарии (назначение, синтаксис, применение).
- •Вопрос 22 - Имена (символические, модуля, вывода) в языке ahdl. Назначение, синтаксис, применение.
- •Вопрос 23 - Константы (литеральные, именованные, параметры) в языке ahdl. Назначение, синтаксис, применение.
- •Порты модуля
- •Порты модулей нижнего уровня
- •Вопрос 25 - Арифметические, логические операторы и операторы сравнения языка ahdl. Назначение, синтаксис, область применения в текстовом проекте.
- •Вопрос 26 - Логические выражения и уравнения языка ahdl. Логические уравнения управления. Назначение, синтаксис, применение.
- •Вопрос 27 - Условный оператор If Then. Назначение, синтаксис и применение оператора.
- •Вопрос 28 - Условный оператор If Generate. Назначение, синтаксис и применение оператора.
- •Вопрос 29 - Оператор выбора Case. Назначение, синтаксис и применение оператора.
- •Вопрос 30 - Таблица истинности Truth Table. Назначение, синтаксис и применение оператора.
- •Вопрос 31 - Оператор цикла For Generate. Назначение, синтаксис и применение оператора.
- •Вопрос 32 - Оператор объявления значения по умолчанию Defaults. Назначение, синтаксис и применение оператора.
- •Вопрос 33 - Оператор контроля Assert. Назначение, синтаксис и применение оператора.
- •Вопрос 34 - Операторы заголовка Title и задания опции Options. Назначение, синтаксис и применение операторов.
- •Вопрос 36 - Оператор задания константы Constant. Назначение, синтаксис и применение оператора.
- •Вопрос 37 - Оператор обозначения Define. Назначение, синтаксис и применение оператора.
- •Вопрос 38 - Оператор объявления параметра Parameters. Назначение, синтаксис и применение оператора.
- •Вопрос 39 - Оператор описания прототипа Function Prototype. Назначение и синтаксис оператора.
- •Вопрос 40 - Оператор непосредственного обращения к прототипу In-Line Logic Function Reference. Назначение, синтаксис и применение оператора. Позиционное и именное присвоение.
Вопрос 14 - Двунаправленный порт. Назначение, область применения. Использование мегафункции 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]);
Двунаправленный порт:
INCLUDE "lpm_bustri.inc";
CONSTANT wt = 8;
CONSTANT ewt = wt-1;
SUBDESIGN bustri
( in_en : INPUT = VCC;
out_en : INPUT = GND;
outdata[ewt..0] : INPUT;
indata[ewt..0] : OUTPUT;
in/out[ewt..0] : BIDIR;
)
--VARIABLE
--bidir_port : lpm_bustri WITH(LPM_WIDTH = wt);
BEGIN
(in/out[], indata[]) = lpm_bustri(outdata[],
in_en, out_en)
WITH(LPM_WIDTH = wt);
--bidir_port.data[] = outdata[];
--bidir_port.enabledt = out_en;
--bidir_port.enabletr = in_en;
--in/out[] = bidir_port.tridata[];
--indata[] = bidir_port.result[];
END;
Вопрос 15 - Реализация звена нерекурсивного фильтра типа tdf II с использованием мегафункции lpm_mult. Организация конвейерной обработки.
Параметризированная мегафункция lpm_mult:
FUNCTION lpm_mult
(
dataa[(LPM_WIDTHA - 1)..0], --входной порт множимого. Порт обязателен!
datab[(LPM_WIDTHB - 1)..0], --входной порт множителя. Порт обязателен!
sum[(LPM_WIDTHS - 1)..0], -- входной порт сумматора. Порт обязателен!
aclr, -- входной порт асинхронной очистки регистров конвейера. Порт не обязателен!
clock, -- входной порт тактовой частоты конвейера. Порт не обязателен!
clken -- входной порт разрешение тактовой частоты конвейера. Порт не обязателен!
)
WITH --Жирным шрифтом выделены параметры по-умолчанию
(
LPM_WIDTHA, --число разрядов шины dataa. Параметр обязателен!
LPM_WIDTHB, --число разрядов шины datab. Параметр обязателен!
LPM_WIDTHP, --число разрядов шины result. Параметр обязателен!
LPM_WIDTHS, --число разрядов шины sum. Параметр обязателен!
LPM_REPRESENTATION, --представление данных: "SIGNED", "UNSIGNED" или "UNUSED"
LATENCY, --то же, что и LPM_PIPELINE. НЕ ИСПОЛЬЗУЕТСЯ в новых проектах.
LPM_PIPELINE, --число тактов N задержки результата конвейером.N = 1, 2, 3, ..
INPUT_A_IS_CONSTANT, --на вход a подана константа. "YES", "NO“ или "UNUSED"
INPUT_B_IS_CONSTANT, --на вход b подана константа. "YES", "NO“ или "UNUSED"
USE_EAB, --использовать блоки памяти: "ON", "OFF” или "UNUSED"
MAXIMIZE_SPEED --обмен ресурсы-скорость. Целое число от 0 до 10. Установлено 6
) --(<6 – сокращение ресурсов, >6 – увеличение быстродействия)
RETURNS .
( result[(LPM_WIDTHP - 1)..0] ); --результат result[] = (dataa[] * datab[] + sum[]) * Z-N ;
-- Z-N - задержки результата конвейером на N тактов
Нерекурсивный
фильтр
с конечной импульсной характеристикой
(КИХ) :
INCLUDE "lpm_mult.inc";
PARAMETERS
( widthx = 8, --число разрядов шины xn[]
widthy = 8, --число разрядов шины yn[]
widthc = 10, --число разрядов коэффициентов
widthp = 18, --число разрядов шины result[]
an = 100, --коэффициент an знаменателя ( изменить знак !!)
bn = 100 --коэффициент bn числителя
);
CONSTANT widths= widthp;
SUBDESIGN mult_b
( xn[widthx-1..0] : INPUT;
yn[widthy-1..0] : INPUT;
sum[widths-1..0] : INPUT;
clock : INPUT;
clken : INPUT = VCC;
result[widthp-1..0] : OUTPUT;
)
VARIABLE
mult_x : lpm_mult WITH (
LPM_WIDTHA = widthx,
LPM_WIDTHB = widthc,
LPM_WIDTHP = widthp,
LPM_WIDTHS = widths,
INPUT_B_IS_CONSTANT = "YES",
LPM_REPRESENTATION = "SIGNED",
USE_EAB = "OFF",
LPM_PIPELINE = 1,
MAXIMIZE_SPEED = 6);
mult_y : lpm_mult WITH (
LPM_WIDTHA = widthy,
LPM_WIDTHB = widthc,
LPM_WIDTHP = widthp,
LPM_WIDTHS = widths,
INPUT_B_IS_CONSTANT = "YES",
LPM_REPRESENTATION = "SIGNED",
USE_EAB = "OFF",
--LPM_PIPELINE = 1,
MAXIMIZE_SPEED = 6);
BEGIN
mult_x.(clock, clken, aclr) = (clock, clken, aclr);
result[] = mult_x.result[];
mult_x.dataa[] = xn[];
mult_x.datab[] = bn;
mult_x.sum[] = mult_y.result[];
mult_y.dataa[] = yn[];
mult_y.datab[] = an;
mult_y.sum[] = sum[];
END;