Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 586; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.137.166.61 (0.012 с.) |