Диапазоны и поддиапазоны шин 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Диапазоны и поддиапазоны шин



Диапазоны в именах шин могут состоять из чисел или арифметических выражений, разделенных двумя точками (..) и заключенных в скобки []. Например,

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 была описана в операторе Constant.

c[MIN(a,b)..0] допустимая шина, если оцениваемая функция MIN была описана в операторе Define.

t[WIDTH-1..0] допустимая шина, если параметр WIDTH был описан в операторе Parameters.

 

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

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

 

Если Вы объявили шину c[5..1], то Вы можете использовать следующие поддиапазоны этой шины:

c[3..1]

c[4..2]

c4

c[5]

(c2,, c4)

В поддиапазоне (c2,, c4), запятая используется для сохранения места не назначенному члену шины.

 

Диапазоны обычно приводятся в убывающем порядке. Для указания диапазонов в возрастающем порядке или как в убывающем так и в возрастающем порядке Вы должны определить опцию BIT0 с помощью оператора Options для предотвращения выдачи предупреждающих сообщений компилятором. В шинах с двумя диапазонами эта опция воздействует на оба диапазона.

Числа в AHDL

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

 

Основание:Значения:

Десятичное <последовательность цифр от 0 до 9>

Двоичное B"<последовательность 0-ей, 1-ц и

X-ов>" (где X = "безразличное состояние")

Восьмеричное O"<последовательность цифр от 0

до 7>" или Q"< последовательность цифр от 0 до 7>"

Шестнадцатеричное X"< последовательность цифр

от 0 до 9, A до F>"

H"< последовательность цифр

от 0 до 9, A до F >"

К числам применяются следующие правила:

1. Компилятор MAX+PLUS II всегда интерпретирует числа в булевых выражениях как группы двоичных цифр; числа в диапазонах шин как десятичные значения.

2. Числа нельзя присваивать одиночным узлам в булевых уравнениях. Вместо этого используйте VCC и GND.

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

Арифметические выражения можно использовать для определения оцениваемых функций в операторах Define, констант в операторах Constant, значений параметров в операторах Parameters и в качестве ограничителей диапазонов шин.

Пример. Диапазон, определенный с помощью арифметического выражения:

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);

 

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

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

Оператор/ компаратор: Пример: Описание: Приоритет
+ (унарный) +1 положительный  
- (унарный) -1 отрицательный  
! !a NOT  
^ a ^ 2 степень  
MOD 4 MOD 2 модуль  
DIV 4 DIV 2 деление  
* a * 2 умножение  
LOG2 LOG2(4-3) логарифм по основанию 2  
+ 1+1 сложение  
- 1-1 вычитание  
== (числовой) 5 == 5 числовое равенство  
== (строковый) "a" == "b" строковое равенство  
!= 5!= 4 не равно  
> 5 > 4 больше чем  
>= 5 >= 5 больше чем или равно  
< a < b+2 меньше чем  
<= a <= b+2 меньше чем или равно  
& a & b AND  
AND a AND b    
!& 1!& 0 NAND  
NAND 1 NAND 0    
$ 1 $ 1 XOR  
XOR 1 XOR 1    
!$ 1!$ 1 XNOR  
XNOR 1 XNOR 1    
# a # b OR  
OR a OR b    
!# a!# b NOR  
NOR a NOR b    
? (5<4)? 3:4 тернарный  

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

1. Арифметические выражения должны давать не отрицательные числа.

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

 

Арифметические операторы, поддерживаемые в арифметических выражениях, являются надмножеством арифметических операторов, поддерживаемых в булевых выражениях, которые описываются в 2.9.2.



Поделиться:


Последнее изменение этой страницы: 2017-02-05; просмотров: 74; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.23.92.209 (0.01 с.)