![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Вопрос 13 - Трехстабильный порт. Назначение, область применения. Использование примитивы TRI для проектирования трехстабильного порта.Содержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
FUNCTION TRI (in, oe) RETURNS (out);
Примитивы TRI, которые управляют портами OUTPUT или BIDIR, имеют вход разрешения выхода (Output Enable), который переводит выход в высокоимпедансное состояние. Вы можете создать тристабильную шину путем соединения примитивов TRI и портов OUTPUT или BIDIR вместе с помощью узла TRI_STATE_NODE типа. Схема управления должна обеспечивать разрешение не более одного выхода в одно и тоже время. Файл tri_bus.tdf, приведенный ниже, реализует тристабильную шину, используя узел TRI_STATE_NODE типа, созданный в объявлении Node.
SUBDESIGN tri_bus ( in[3..1], oe[3..1]: INPUT; out1: OUTPUT; )
VARIABLE tnode: TRI_STATE_NODE; BEGIN tnode = TRI(in1, oe1); tnode = TRI(in2, oe2); tnode = TRI(in3, oe3); out1 = tnode; END;
В этом примере несколько присваиваний узлу tnode, связывают сигналы вместе. Для реализации тристабильной шины требуется тип TRI_STATE_NODE, вместо типа NODE: для типа NODE сигналы связываются вместе с помощью проводного И или проводного ИЛИ, тогда как для типа TRI_STATE_NODE сигналы соединяются с тем же самым узлом. Однако, если только одна переменная присваивается узлу TRI_STATE_NODE, то она трактуется как переменная обычного типа NODE.
Вопрос 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;
Вопрос 16 - Реализация звена рекурсивного фильтра типа TDF II с использованием мегафункции LPM_MULT. Организация конвейерной обработки. Рекурсивный фильтр с бесконечной импульсной характеристикой (БИХ):
Вопрос 17 - Цифровые автоматы Мура. Структурная схема автомата. Описание работы автомата с помощью ориентированного граф состояний. Объявление обыкновенного и вырожденного автомата Мура в секции VARIABLE. Проблема неиспользуемых состояний и ее решение. Описание логики работы автомата.
Если выходы конечного автомата зависят только от состояний автомата, Вы можете определить его выходы в предложении WITH STATES объявления конечного автомата. Файл moore1.tdf, приведенный ниже, реализует автомат Мура на четыре состояния.
SUBDESIGN moore1 ( clk: INPUT; reset: INPUT; y: INPUT; z: OUTPUT; ) VARIABLE ss: MACHINE OF BITS (z) WITH STATES (s0 = 0, s1 = 1, s2 = 1, s3 = 0); BEGIN ss.clk = clk; ss.reset = reset;
TABLE % текущее текущий следующее % % состояние вход состояние % ss, y => ss; s0, 0 => s0; s0, 1 => s2; s1, 0 => s0; s1, 1 => s2; s2, 0 => s2; s2, 1 => s3; s3, 0 => s3; s3, 1 => s1; END TABLE; END;
Этот пример определяет состояния конечного автомата с помощью объявления конечного автомата. Переходы между состояниями определены в таблице переходов, которая реализована с помощью оператора Table. В этом примере автомат ss имеет 4 состояния, но только один бит состояния (z). Компилятор автоматически добавляет другой бит и создает соответствующие присваивания для синтезированной переменной для представления автомата на 4 состояния. Этот автомат требует не менее 2 битов. Когда значения состояний используются в качестве выходов, как в файле moore1.tdf, проект может использовать несколько логических ячеек, но логические ячейки могут требовать дополнительной логики для управления входами их триггеров. В этом случае модуль логического синтеза компилятора не сможет полностью минимизировать конечный автомат. Другим способом проектирования конечного автомата с синхронными выходами является опускание присваиваний значений состояниям и точное объявление выходных триггеров. Файл moore2.tdf, приведенный ниже, иллюстрирует этот альтернативный метод.
SUBDESIGN moore2 ( clk: INPUT; reset: INPUT; y: INPUT; z: OUTPUT; ) VARIABLE ss: MACHINE WITH STATES (s0, s1, s2, s3); zd: NODE; BEGIN ss.clk = clk; ss.reset = reset; z = DFF(zd, clk, VCC, VCC); TABLE % состояние вход состояние выход % ss, y => ss, zd; s0, 0 => s0, 0; s0, 1 => s2, 1; s1, 0 => s0, 0; s1, 1 => s2, 1; s2, 0 => s2, 1; s2, 1 => s3, 0; s3, 0 => s3, 0; s3, 1 => s1, 1; END TABLE; END;
Вместо определения выхода с помощью присваиваний значений состояниям в объявлении конечного автомата, этот пример включает столбец ‘‘ следующий выход ’’, после столбца ‘‘ следующее состояние ’’ в операторе Table. Этот метод использует D триггер (DFF), вызванный с помощью ссылки, для синхронизации выходов с тактовой частотой.
Вопрос 18 - Цифровые автоматы Мили. Структурная схема автомата. Описание работы автомата с помощью ориентированного граф состояний. Объявление автомата в секции VARIABLE. Проблема неиспользуемых состояний и ее решение. Описание логики работы автомата Мили.
AHDL поддерживает реализацию конечных автоматов с асинхронными выходами. Выходы этих типов конечных автоматов могут изменяться при изменении входов, несмотря на переходы сигнала Clock. Файл mealy.tdf, приведенный ниже, реализует автомат Мили на 4 состояния с асинхронными выходами.
SUBDESIGN mealy ( clk: INPUT; reset: INPUT; y: INPUT; z: OUTPUT; ) VARIABLE ss: MACHINE WITH STATES (s0, s1, s2, s3); BEGIN ss.clk = clk; ss.reset = reset;
TABLE % состояние вход выход состояние % ss, y => z, ss; s0, 0 => 0, s0; s0, 1 => 1, s1; s1, 0 => 1, s1; s1, 1 => 0, s2; s2, 0 => 0, s2; s2, 1 => 1, s3; s3, 0 => 0, s3; s3, 1 => 1, s0; END TABLE; END;
|
|||||||
Последнее изменение этой страницы: 2016-08-16; просмотров: 591; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.137.174.186 (0.011 с.) |