Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебники / Язык AHDL.DOC
Скачиваний:
56
Добавлен:
13.06.2014
Размер:
995.84 Кб
Скачать
        1. Оператор Defaults.

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

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

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

BEGIN

DEFAULTS

a = VCC;

END DEFAULTS;

IF y & z THEN

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

END IF;

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;