Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Altera / MAX+PLUS II - AHDL.doc
Скачиваний:
139
Добавлен:
10.12.2013
Размер:
7.02 Mб
Скачать

3.4.2 Размеры групп и подгрупп

Размеры линейной группы или группы-матрцы могут состоять из чисел или арифметических выражений, разделенных «..» и заключенных в квадратные скобки. Например:

a[4..1]

Группа с членами a4, a3, a2, a1

d[B”10”..B”00”]

Группа с членами d2, d1, d0

b[2*2..2-1]

Группа с членами b4, b3, b2, b1. В данном случае размеры групп заданы с помощью арифметического выражения

q[MAX..0]

Группа, верхняя граница которой задана с помощью константы MAX, предварительно объявленной в разделе констант

c[MIN(a, b)..0]

Группа, верхняя граница которой задана с помощью функции MIN, предварительно объявленной в разделе Define

Подгруппа – подмножество узлов объявленной группы. Подгруппы некоторой группы могут быть, так же как и сама группа, использованы в выражениях. Например, если вы объявили группу c[5..1], то вы можете использовать следующие её подгруппы:

c[3..1]

c[4..2]

c4

c[5]

(c2, , c4)

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

Для получения более подробной информации см. разделы:

  • Арифметические выражения

  • Имена в AHDL, использование кавычек

  • Использование констант и вычисленных функций

  • Описание групп

3.5 Числа вAhdl

Вы можете использовать двоичную, восьмеричную, десятичную и шестнадцатеричную систему счисления для представления чисел вAHDL. Синтаксис записи чисел в различных системах счисления представлен ниже:

Система счисления

Числа

Десятичная

<набор чисел от 0 до 9>

Двоичная

B”<набор 0 (нулей), 1(единиц), Х (Х = безразличное состояние – “don’t care”)>

Восьмеричная

Q”< набор чисел от 0 до 7>

O”< набор чисел от 0 до 7>”

Шестнадцатеричная

X”< набор чисел от 0 до 9 и от А до F>

H”< набор чисел от 0 до 9 и от А до F>”

Примеры чисел:

B”0110X1X10”

Q”4671223”

H”123AECF”

Следующие правила применимы к числам языка:

  • Компилятор MAX+PLUS IIвсегда интерпретирует числа, стоящие в логических уравнениях, как последовательность бит; числа указывающие границу групп интерпретируются как десятичные значения.

  • В логических выражениях числа не могут быть присвоены одному узлу, для этого существуют константы VCC иGND.

Для получения более подробной информации см. разделы:

  • Арифметические выражения

  • Использование чисел

  • Логические выражения

3.6 Арифметические выражения

Арифметические выражения могут использоваться для описания функции в разделе объявление (Define), для описания констант, для указания границ групп.

В следующем примере граница группы указана с помощью арифметического выражения:

SUBDESIGN foo

(

a[4..2+1-3+8] : INPUT;

)

В следующих примерах, константа и функция описаны с помощью арифметических выражений:

CONSTANT foo = 1 + 2 DIV 3 + LOG2(256);

DEFINE MIN(a, b) = ((a < b) ? a : b);

Операторы и компараторы, стоящие в этих выражениях, позволяют выполнять основные действия над числами. В таблице 3.3 приведен список всех арифметических операторов языка.

Таблица 3.3 Арифметические операторы языка AHDL

Оператор

Пример

Описание

Приоритет

+ (унарный)

+1

Указание на положительное число

1

- (унарный)

-1

Указание на отрицательное число

1

!

!a

Отрицание

1

^

а ^ 2

Возведение в степень

1

MOD

4 MOD 2

2

DIV

4 DIV 2

Деление

2

*

a * 2

Произведение

2

LOG2

LOG2(4-3)

Логарифм по основанию 2

2

+

1 + 1

Сложение

3

-

1 – 1

Вычитание

3

==

5 == 5

Численное равенство

4

==

“a”==“b”

Строковое равенство

4

!=

5 != 4

Неравенство

4

>

5 > 4

Больше

4

>=

5 >= 5

Больше либо равно

4

<

a < b+2

Меньше

4

<=

a <= b+2

Меньше или равно

4

&

AND

a & b

a AND b

И

5

!&

NAND

1 !& 0

1 NAND 0

И-НЕ

5

$

XOR

1 $ 1

1 XOR 1

Исключающее ИЛИ

6

!$

XNOR

1 !$ 1

1 XNOR 1

Исключающее ИЛИ – НЕ

6

#

OR

a # b

a OR b

ИЛИ

7

!#

NOR

a # b

a NOR b

ИЛИ-НЕ

7

?

(5<4) ? 5:4

Выбор

8

Унарные операторы «+» и «–» являются префиксными операторами. Оператор «+», стоящий перед числом никак не влияет на интерпретацию числа, он необходим для явного указания положительных величин.

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

CEIL(LOG2(255)) = 8

FLOOR(LOG2(255)) = 7

Следующие правила применимы к арифметическим выражениям:

  • В арифметических выражениях вы должны оперировать положительными числами

  • В случае когда результат функции LOG2не является целым числом, он автоматически округляется до следующего целого числа. НапримерLOG2(257) = 9

Для получения более подробной информации см. разделы:

  • Числа в AHDL

Соседние файлы в папке Altera