Скачиваний:
196
Добавлен:
08.06.2016
Размер:
635.39 Кб
Скачать
      1. Объявления псевдоимен конечных автоматов (Machine Alias Declaration)

Используя процедуру объявления псевдоимени конечного автомата в разделе описания переменных, можно описать псевдоимя для данного, описанного или импортированного из другого файла конечного автомата. После указанной процедуры можно пользоваться псевдоименем конечного автомата наравне с его исходным. Например:

FUNCTION ss_def (clock, reset, count)

RETURNS (MACHINE ss_out);

VARIABLE

ss : MACHINE;

BEGIN

ss = ss_def (sys_clk, reset, !hold);

IF ss == s0 THEN

ELSIF ss == s1 THEN

END;

Процедура объявления псевдоимени конечного автомата имеет следующие характеристики:

  • Псевдоним представляет собой символическое имя. За псевдонимом следует символ двоеточия и далее ключевое слово MACHINE. В примере, показанном выше, символическое имя ss является псевдонимом конечного автомата.

  • Предусмотрена возможность импортирования и экспортирования конечных автоматов между текстовыми файлами проектов, а также другими файлами проектов путем определения входных и выходных портов с использованием ключевых слов MACHINE INPUT или MACHINE OUTPUT в разделе Subdesign.

  • При импортировании и экспортировании конечных автоматов прототип функции, представляющий файл описания конечного автомата должен определять какие входы и выходы являются конечными автоматами. В примере, показанном выше, ss_out является именем конечного автомата.

  • Декларация псевдонима конечного автомата заканчивается символом (;).

  • Порты типов MACHINE INPUT и MACHINE OUTPUT не могут использоваться в файлах проектов верхнего уровня.

    1. Раздел тела проекта (Logic)

Раздел Logic определяет логическое функционирование текстового файла проекта (TDF) и является собственно его телом.

Раздел Logic заключается в ключевые слова BEGIN и END. За ключевым словом END следует символ (;), заканчивающий раздел. Если используется оператор Defaults, то он должен предшествовать всем другим операторам в этом разделе.

AHDL является параллельным языком. Компилятор анализирует поведенческую модель, описанную в разделе Logic, параллельно. Выражения, осуществляющие множественные присваивания объекту, имеющему тип NODE или переменной, объединяются в соответствии с функцией монтажное ИЛИ.

В разделе Logic могут быть многократно использованы следующие операторы и разделы:

  • Булевские выражения.

  • Управляющие булевские выражения.

  • Оператор Case.

  • Оператор Defaults.

  • Оператор If Then.

  • Оператор If Generate

  • Оператор If Generate

  • Оператор таблицы истинности

  • Раздел Logic может также содержать оператор Assert.

      1. Задание исходных значений (Defaults Statment)

Оператор Defaults позволяет определять значения по умолчанию, применяемые в таблицах истинности, а также в операторах If Then и Case. Поскольку активно- высокие сигналы автоматически имеют значения по умолчанию GND, то оператор Default необходим лишь в случае использования активно-низких сигналов.

  • Не следует путать значения по умолчанию, присваиваемые переменным со значениями по умолчанию, присваиваемыми портам в разделе Subdesign.

Следующий пример демонстрирует использование оператора Defaults:

BEGIN

DEFAULTS

a = VCC;

END DEFAULTS;

IF y & z THEN

a = GND; % a активный низкий %

ENDIF;

END;

Оператор Defaults имеет следующие характеристики:

  • Значения по умолчанию заключаются в ключевые слова DEFAULTS и END DEFAULTS. Оператор заканчивается символом (;).

  • Тело оператора Defaults состоит из одного или более логических выражений, присваиваемых константам или переменным. В примере, показанном выше, значение по умолчанию VCC присваивается переменной a.

  • Каждое выражение заканчивается символом (;).

  • Оператор Default активизируется в том случае, когда какая-либо переменная, включенная в список оператора Default в каком-либо из операторов, оказывается неопределенной. В примере, показанном выше, переменная aоказывается неопределенной, еслиy и zимеют значения логического нуля; таким образом активизируется выражение (a= VCC) в операторе Default.

При использовании оператора Default необходимо соблюдать следующие правила:

  • В разделе Logic допускается использовать не более одного оператора Default и кроме того при его использовании он должен располагаться сразу за ключевым словом BEGIN.

  • Если в операторе Default в отношении одной и той же переменной производятся многократные присваивания, то все присваивания за исключением последней игнорируются.

  • Оператор Default не может использоваться для присваивания значения X (безразлично) переменным.

  • Многократные присваивания значений узлу, имеющему тип NODE, объединяются в соответствии с функцией логическое ИЛИ, за исключением того случая, когда значением по умолчанию для этой переменной является VCC. Следующий пример текстового файла проекта (TDF) иллюстрирует значения по умолчанию для двух переменных: aс значением по умолчанию GND иbnс значением по умолчаниюVCC:

BEGIN

DEFAULTS

a = GND;

bn = VCC;

END DEFAULTS;

IF c1 THEN

a = a1;

bn = b1n;

END IF;

IF c2 THEN

a = a2;

bn = b2n;

END IF;

END;

Этот пример эквивалентен следующему выражению:

a = c1 & a1 # c2 & a2;

bn = (!c1 # b1n) & (!c2 # b2n);

  • Переменные, имеющие активно низкий уровень и участвующие в многократных присваиваниях, должны иметь значение по умолчанию VCC. В следующем примере reg[].clrn имеет значение по умолчанию VCC:

SUBDESIGN 5bcount

(

d[5..1] : INPUT;

clk : INPUT;

clr : INPUT;

sys_reset : INPUT;

enable : INPUT;

load : INPUT;

q[5..1] : OUTPUT;

)

VARIABLE

reg[5..1] : DFF;

BEGIN

DEFAULTS

reg[].clrn = VCC;

END DEFAULTS;

reg[].clk = clk;

q[] = reg[];

IF sys_reset # clr THEN

reg[].clrn = GND;

END IF;

!reg[].prn = (load & d[]) & !clr;

!reg[].clrn = load & !d[];

reg[] = reg[] + (0, enable);

END;

Соседние файлы в папке Минина 2014
  • #
    08.06.2016338.77 Кб291113PV1.pdf
  • #
    08.06.2016635.39 Кб196ahdl.doc
  • #
    08.06.20167.32 Кб22Digital term.vi
  • #
    08.06.201651 б22L8.asv
  • #
    08.06.201645 б22L8.m
  • #
    08.06.201613.4 Кб24temp. analis.vi
  • #
    08.06.201616.62 Кб23temp. control.vi