Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Объявление регистровых выходов
Вы можете объявить регистровые выходы TDF файла путем объявления выходных портов как триггеров в разделе Variable. Файл reg_out.tdf, приведенный ниже, имеет туже самую функциональность, что и файл bur_reg.tdf, но обладает регистровыми выходами.
SUBDESIGN reg_out ( clk, load, d[7..0]: INPUT; q[7..0]: OUTPUT; ) VARIABLE q[7..0]: DFFE; % также объявлены как регистровые % BEGIN q[].clk = clk; q[].ena = load; q[] = d[]; END; Когда Вы присваиваете значение регистровым выходам в разделе Logic, то значение с d входов направляется в регистр. Выходы регистра не изменяются до тех пор, пока не появится возрастающий фронт сигнала Clock. Для определения тактового входа регистра используйте конструкцию <имя регистра>.clk в разделе Logic. Вы можете реализовать глобальный тактовый сигнал Clock, используя примитив GLOBAL с помощью логической опции Global Signal в диалоговом окне Individual Logic Options, которое Вы можете открыть из окна Logic Options (меню Assign), или с помощью опции Automatic Global Clock из диалогового окна Global Project Logic Synthesis (меню Assign). В файле, приведенном ниже, каждый DFFE триггер, объявленный в разделе Variable, запитывает выход с тем же именем, поэтому Вы можете обратиться к выходам q триггеров без использования порта q. В TDF файле высокого уровня выходные порты синхронизируются с выходными выводами. Когда Вы объявляете одинаковое имя для выходного порта и регистра, присваивания опций probe и logic применяются к выводу, а не регистру (за исключением логической опции Fast I/O). Поэтому, если Вы хотите протестировать регистр или использовать специфические для регистра логические опции, Вы должны по разному назвать регистры и порты. Создание счетчиков Счетчики можно определить с помощью D триггеров (DFF и DFFE) и операторов If Then или с помощью функции lpm_counter. Файл ahdlcnt.tdf, приведенный ниже, реализует 16-битный суммирующий счетчик с загрузкой, который можно сбросить в ноль.
SUBDESIGN ahdlcnt ( clk, load, ena, clr, d[15..0]: INPUT; q[15..0]: OUTPUT; ) VARIABLE count[15..0]: DFF; BEGIN count[].clk = clk; count[].clrn =!clr;
IF load THEN count[].d = d[]; ELSIF ena THEN count[].d = count[].q + 1; ELSE count[].d = count[].q; END IF;
q[] = count[]; END;
В этом файле в разделе Variable объявляется 16 триггеров с имена count0 по count15. Оператор If Then определяет значение, которое загружается в триггеры на возрастающем фронте Clock. Файл lpm_cnt.tdf, приведенный ниже, использует функцию lpm_counter для реализации той же функциональности, что и файл ahdlcnt.tdf.
INCLUDE "lpm_counter.inc"; SUBDESIGN lpm_cnt ( clk, load, ena, clr, d[15..0]: INPUT; q[15..0]: OUTPUT; ) VARIABLE my_cntr: lpm_counter WITH (LPM_WIDTH=16);
BEGIN my_cntr.clock = clk; my_cntr.aload = load; my_cntr.cnt_en = ena; my_cntr.aclr = clr; my_cntr.data[] = d[]; q[] = my_cntr.q[]; END; Конечные автоматы В языке AHDL конечные автоматы реализуются также легко как таблицы истинности и булевы уравнения. Язык структурирован настолько, что Вы можете или сами присвоить значения состояниям или позволить компилятору MAX+PLUS II сделать эту работу за Вас. Компилятор использует усовершенствованные эвристические алгоритмы автоматического присваивания состояний, которые минимизируют логические ресурсы, требующиеся для реализации конечных автоматов. От Вас просто требуется нарисовать диаграмму состояний и построить таблицу следующих состояний. Затем компилятор автоматически выполнит следующие функции:
· назначит биты, выбирая или T или D триггер (TFF или DFF) для каждого бита · присвоит значения состояниям · применит сложную технику логического синтеза для получения уравнений возбуждения
Для определения конечного автомата на языке AHDL, необходимо включить следующие элементы в TDF файл:
· объявление конечного автомата (раздел Variable) · булевы уравнения управления (раздел Logic) · переходы между состояниями в операторе Table или Case (раздел Logic)
Также Вы можете импортировать и экспортировать конечные автоматы между TDF файлами и другими файлами проекта, определяя входные и выходные сигналы как автоматные порты в разделе Subdesign.
|
|||||
Последнее изменение этой страницы: 2017-02-05; просмотров: 70; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.15.147.215 (0.005 с.) |