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

6.3. Основные элементы языка.

6.3.1 Булевы уравнения, группы.

Комбинационная логика реализуется на языке AHDL с помощью булевых выражений и уравнений, таблиц истинности. Булевы выражения являются набором узлов, чисел, констант и других булевых выражений, разделенных операторами. Булево уравнение устанавливает узел или шину равной величине булевого выражения.

Файл template1.tdf, приведенный ниже, демонстрирует два простых булевых выражения, представляющие два логических вентиля.

SUBDESIGN template1

(

In0, in21, in3 : input;

out1, out2 : OUTPUT;

)

BEGIN

out1 = in0 OR in1;

out2 = out1 & !in3;

END;

В этом файле выход out1 является логическим ИЛИ входов in0 и in1, а выход out2 логическим И out1 и НЕ in3. Следует заметить, что порядок следования их в файле не важен.

В языке AHDL можно определять группы, включающие в свой состав до 256 бит и работающие, как одно целое.

В булевых уравнениях группа может приравниваться булеву выражению, другой группе, единственному узлу, VCC, GND, 1 или 0. В каждом из этих случаев значение группы различно. Оператор Options можно использовать для определения того, каким будет самый младший бит: наиболее значимым битом (MSB) или наименее значимым битом(LSB) или каким-либо другим.

Как только группа определена, скобки [ ] являются коротким способом определения всего диапазона. Например, in0[4..1] можно также указать как in0[]; out0[5..4][3..2] можно представить как out0[][].

Следует заметить, что :

1) Если группа приравнивается к VCC или GND, все биты шины соединяются с этим значением.

2) Если группа приравнивается к 1, только наименее значимый бит шины соединяется со значением VCC. Остальные биты шины соединяются с GND.

3) Если группа приравнивается к другой группе того же самого размера, то каждый член справа приравнивается каждому члену слева в соответствующей позиции.

4) Когда приравниваются группы не одинакового размера, количество битов шины с левой стороны уравнения должно точно делиться на количество битов шины с правой стороны уравнения.

Пример : out[6..3] = in[2..1]. В этом уравнении биты отображаются следующим образом: out6 = in2, out5 = in1, out4 = in2, out3 = in1.

6.3.2 Операторы IF THEN, CASE.

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

Следует помнить, что условную логику, реализуемую с помощью операторов If Then и Case, не следует путать с логикой, создаваемой условно оператором If Generate, так как эта логика не обязательно является условной.

Файл if_then.tdf, демонстрирует приоритетный шифратор, который преобразует уровень активного входа с наивысшим приоритетом в значение с использованием оператора If Then.

SUBDESIGN if_then

(

In_f, in_s, in_t : input;

out[1..0] : OUTPUT;

)

BEGIN