Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПЛИС_Ответы_к_экзамену_8110.doc
Скачиваний:
16
Добавлен:
24.04.2019
Размер:
2.35 Mб
Скачать

Вопрос 31 - Оператор цикла For Generate. Назначение, синтаксис и применение оператора.

Синтаксис оператора For Generate:

FOR ( <symbolic name> ) IN <expression> TO <expression> GENERATE

<statements>

END GENERATE;

Пример:

FOR i IN 0 TO width-2 GENERATE

tr[i+1].d = tr[i].q;

END GENERATE;

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

  • Между ключевыми словами FOR и GENERATE заключаются следующие параметры:

  1. Временная переменная, представляющая собой символическое имя. Эта переменная используется лишь в пределах оператора For Generate и заканчивает свое существование после того, как компилятор обработает этот оператор. В примере, показанном выше такой переменной является переменная i. Это имя не может использоваться в качестве имени константы, параметра или узла в пределах данного проекта.

  2. За ключевым словом IN следует диапазон, ограниченный двумя арифметическими выражениями. Арифметические выражения разделяются между собой ключевым словом TO. В примере, показанном выше арифметическими выражениями являются 1 и NUM_OF_ADDRESS. Границы диапазона могут содержать выражения, состоящие только из констант и параметров; использование переменных при этом недопустимо.

  • За ключевым словом GENERATE следует один или более лог. опер., каждый из кот. закан. симв. (;).

  • Оператор If Generate закан. ключевыми словами END GENERATE, за которыми следует символ (;).

Вопрос 32 - Оператор объявления значения по умолчанию Defaults. Назначение, синтаксис и применение оператора.

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

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

Синтаксис оператора Defaults:

DEFAULTS

<default def> ;

{ <default def> ; }

END 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.

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