Объявление регистровых выходов 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Объявление регистровых выходов



Вы можете объявить регистровые выходы 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 с.)