![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
У табл. 3 перераховані символи, використовувані в мові AHDL.
Таблиця 3. Символи, використовувані в мові AHDL
Символ | Опис |
_ | Підкреслення (Underscore) |
- | Тире (Dash) |
/ | Коса риса (Slash) |
-- | Подвійне тире |
% | Відсоток (Percent) |
(..) | Відкриваюча й закриваюча дужки (Left and Right Parentheses) |
[.. ] | Відкриваюча й закриваюча прямокутні дужки (Left and Right Brackets) |
'...' | Відкриваюча й закриваюча лапки (Quotation marks) |
“…” | Подвійні лапки (Double Quotation marks) |
. | Крапка (Period) |
.. | Подвійна крапка |
; | Крапка з комою (Semicolon) |
, | Кома (Comma) |
: | Двокрапка (Colon) |
= | Рівність (Equals) |
=> | Стрілка (Arrow) |
+ | Плюс (Plus) |
- | Мінус (Minus) |
= = | Подвійна рівність |
! | Знак оклику (Exclamation point) |
!= | Знак оклику й рівність |
> | Більше (Greater than) |
>= | Більше або дорівнює |
< | Менше (Less than) |
<= | Менше або дорівнює |
& | Амперсанд (Ampersand) |
!& | Знак оклику й амперсанд |
$ | Долар (Dollar sign) |
!$ | Знак оклику й долар |
# | Фунт (Pound sign) |
!# | Знак оклику й фунт |
? | Знак питання (Question mark) |
Імена
У мові AHDL визначені три типи імен:
■ Символічне ім'я (Symbolic name)
■ Ім'я модуля (Subdesign name)
■ Ім'я виводу (Port name).
Символічне ім'я — обумовлене користувачем ім'я, використовуване для задання:
■ змінних;
■ констант;
■ станів і розрядів скінченого автомата;
■ параметрів;
■ позначуваних арифметичних виразів;
■ іменованих операторів.
Ім'я модуля — обумовлене користувачем ім'я, використовуване для іменування модуля, а також логічного файлу, у якому зберігається його текстовий опис.
Ім'я виводу — обумовлене користувачем ім'я, використовуване для позначення:
■ входу модуля;
■ виходу модуля;
■ двонаправленого виводу модуля;
■ входу для імпортованого скінченого автомата;
■ виходу для експортованого скінченого автомата.
Ім'я може бути задане в одній із двох форм:
■ рядком символів (від 1 до 32 символів) - Unquoted name;
■ рядком символів (від 1 до 32 символів), укладеним в одинарні лапки - Quoted name.
Правила використання зазначених форм зведені в табл. 4.
Таблиця 4
Quoted Subdesign Name | Unquoted Subdesign Name | Unquoted Symbolic Name | Quoted Symbolic Name | Unquoted Port Name | Quoted Port Name | |
Символи A..Z | + | + | + | + | + | + |
Символи a..z | + | + | + | + | + | + |
Цифри 0..9 | + | + | + | + | + | + |
Підкреслення (_) | + | + | + | + | + | + |
Коса риска (/) | + | + | + | + | ||
Тире (-) | + | + | + | |||
Тільки цифри 0..9) | + | + | + | + | + | |
Ключове слово | + | + | + | |||
Ідентифікатор | + | + | ||||
Максимальне число символів |
Групи
Група - набір однотипних змінних або виводів. Порядковий номер змінної (виводу) у групі - індекс. Максимальне число змінних (виводів), об'єднаних в одну групу, не повинне перевищувати 256. У мові AHDL визначені три типи груп:
■ одновимірні (Single-range);
■ двовимірні (Dual-range);
■ послідовні (Sequential) або, що за змістом більш точно, часові.
Одновимірні групи задають, указуючи:
■ ім'я групи (символічне ім'я або ім'я виводу);
■ діапазон зміни індексів групи.
Двовимірні групи задають, указуючи:
■ ім'я групи (символічне ім'я або ім'я виводу);
■ пари діапазонів зміни індексів.
Послідовні (часові) групи задають списком, укладеним у круглі дужки. Елементами списку можуть бути змінні, виводи модуля, одновимірні групи, двовимірні групи. Елементи списку відділяються один від одного комами.
Індекси одновимірних і двовимірних груп повинні бути цілими додатними числами. Діапазон зміни індексів вказується в наступному форматі:
[ границя А.. границя В ].
Кожна із границь може бути визначена: числом, арифметичним виразом, константою або параметром.
Типовий порядок задання індексів - спадна зліва направо послідовність: границя А - більше ціле, границя В - менше. Якщо ж вони задані в зростаючій зліва направо послідовності або ж у рамках одного логічного файлу, використовуються обидва способи задання індексів, то рекомендується встановити опцію BITO=MSB або BITOANY відповідно. У протилежному випадку компілятор видасть попередження.
Приклади:
1. А[5..0] - одновимірна група. Індекси задані спадною, зліва направо, послідовністю. Члени групи А5, А4, A3, А2, А1, А0.
2. CONSTANT UPPER=H"4"; B[UPPER..1] - одномірна група. Верхня границя діапазону зміни індексів визначена константою. Індекси задані спадною, зліва направо, послідовністю. Члени групи В4, ВЗ, В2, В1.
3. С[2*2..0][3..2] - двовимірна група. Верхня границя діапазону зміни першої групи індексів задана арифметичним виразом. Індекси задані спадною, зліва направо, послідовністю. Члени групи С43, С42, СЗЗ, С32, С23, С22, С13, С12, С0З, С02.
4. D[1..4] - одновимірна група. Індекси задані зростаючою зліва направо послідовністю. Члени групи: D1, D2, D3, D4.
5. (А, Е[2.. 1], F); - часова група. Члени групи: А, Е2, Е1, F.
Числа
Мова AHDL допускає можливість використання десяткових, двійкових, вісімкових та шістнадцяткових чисел. Правила задання чисел:
§ Десяткове число - сукупність цифр від 0 до 9.
§ Двійкове число - В "сукупність символів 0, 1, х", або b "сукупність символів 0, 1, х".
§ Вісімкове число - О "сукупність цифр від 0 до 7", або о "сукупність цифр від 0 до 7", або Q "сукупність цифр від 0 до 7", або q "сукупність цифр від 0 до 7".
§ Шістнадцяткове число - Н "сукупність цифр від 0 до 9 і букв від А до F", або h "сукупність цифр від 0 до 9 і букв від А до F", або X "сукупність цифр від 0 до 9 і букв від А до F", або х "сукупність цифр від 0 до 9 і букв від А до F".
Приклади:
В "10x01"; х "А1"; О"73".
Число не може бути присвоєно однорозрядній змінній або виходу. Замість числа варто використовувати константну одиницю (b”1” або VCC) або константний нуль (b"0", або GND).
Приклади:
1. out = b”1”; -- правильне присвоєння
2. out = 0; -- неправильне присвоєння
3. out = GND. -- правильне присвоєння.
Вирази
У мові AHDL визначені два типи виразів (Expressions):
■ Арифметичні вирази (Arithmetic Expressions);
■ Логічні вирази (Boolean Expressions).
1.6.1. Арифметичні вирази
Арифметичні вирази використовуються для задання:
■ позначуваного виразу в операторі позначення (Define Statement);
■ констант в операторі задання констант (Constant Statement);
■ границь діапазону зміни індексів одновимірних і двовимірних груп;
■ границь діапазону зміни внутрішньої змінної в операторі FOR GENERATE;
■ оцінюваного вирази в операторах IF GENERATE, ASSERT.
Приклади:
1. DEFINE Min (a,b) = ((a<b)? a:b); -- ((a<b)? a:b) - арифметичний вираз.
2. CONSTANT Const = 1+2DIV3+LOG2(256); -- 1+2DIV3+LOG2(256) – арифметичний вираз;
3. A[2+4^2..3-2]: INPUT; -- 2+4^2 і 3-2 – арифметичний вираз.
Значення арифметичних виразів оцінюється й підставляється компілятором на етапі перевірки синтаксису проекту і тому для реалізації не потрібні логічні ресурси НВІС ПЛ. У табл. 5 перераховані арифметичні, логічні оператори й оператори порівняння, які можуть використовуватися в арифметичних виразах Так само в табл. 5 зазначений пріоритет виконання операторів: чим менше число, тим вище пріоритет.
Результат арифметичного виразу повинен бути цілим додатним числом. У протилежному випадку він, за замовчуванням, округляється до найближчого більшого цілого.
Таблиця 5.
Оператор | Приклад | Опис | Пріоритет виконання |
+ (unary) | +1 | Плюс | |
-(unary) | -1 | мінус | |
! | !a | Заперечення | |
^ | a^2 | Степінь | |
MOD | 4 MOD 2 | Модуль | |
DIB | 4 DIV 2 | Ділення | |
* | a*2 | Множення | |
LOG2 | LOG(4-3) | Логарифм за основою 2 | |
+ | 1+1 | Додавання | |
- | 1-1 | Віднімання | |
= =(numeric) | 5= =5 | Рівність чисел | |
= = (string) | “a”= = “b” | Рівність рядків | |
!= | 5!=4 | Не дорівнює | |
> | 5>4 | Більше | |
>= | 5>=5 | Більше або дорівнює | |
< | a<b+2 | Менше | |
<= | a<=b+2 | Менше або дорівнює | |
& або AND | a&b або a AND b | І | |
!& або NAND | 1!& 0 або 1 NAND b | І-НІ | |
$ або XOR | 1 $ 1 або 1 XOR 1 | Виключаюче АБО | |
!$ або XNOR | 1!$ 1 або 1 XNOR 1 | Виключаюче АБО-НІ | |
# або OR | a # b або a OR b | АБО | |
!# або NOR | a!# b або a NOR b | АБО-НІ | |
? | (5<4)? 3:4 | Тернарна операція |
Крім того, у мові AHDL визначені дві функції, які можуть використовуватися в арифметичних виразах для явного задання правила округлення:
§ CEIL — округлення до найближчого більшого цілого;
§ FLOOR — округлення до найближчого меншого цілого.
Приклади:
1. CEIL (LOG2(255)) = 8.
2. FLOOR (5DIV3) = 1.
1.6.2. Логічні вирази
Логічні вирази (Boolean expressions) містять операнди, об’єднані:
§ логічними операторами;
§ арифметичними операторами;
§ операторами порівняння.
Логічні вирази використовуються:
§ у логічних рівняннях (Boolean Equations);
§ у логічних рівняннях, що задають керуючі сигнали (Boolean Control Equations);
§ в операторі CASE;
§ в операторі IF THEN.
Дата публикования: 2014-11-29; Прочитано: 710 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!