
- •Мова опису апаратури ahdl
- •1. Елементи мови
- •1.1. Ключові слова й ідентифікатори
- •1.2. Символи
- •1.3. Імена
- •1.4. Групи
- •1.5. Числа
- •1.6. Вирази
- •1.6.1. Арифметичні вирази
- •1.6.2. Логічні вирази
- •1.7. Оператори
- •1.7.1. Логічні оператори
- •1.7.2. Арифметичні оператори
- •1.7.3. Оператори порівняння
- •1.8. Пріоритет виконання операцій
- •1.9. Примітиви
- •1.9.1. Примітиви буферів
- •1.9.2. Буфер ланцюгового переносу (carry)
- •1.9.3. Буфер каскадного нарощування логічної функції (cascade)
- •1.9.4. Буфер логічного розширювача (ехр)
- •1.9.5. Буфер глобального ланцюга поширення управляючого
- •1.9.6. Буфер розміщення логічного осередку (lcell),
- •1.9.7. Буфер виходу з відкритим колектором (opndrn)
- •1.9.8. Буфер розміщення логічного осередку (soft),
- •1.9.9. Буфер виходу з z станом (tri)
- •1.10. Примітиви тригерів
- •2. Структура текстового опису
- •2.1. Загальна структура
- •Include Statement.
- •2.2. Розділ оголошення операторів
- •2.2.1. Title Statement
- •2.2.2. Parameters Statement
- •2.2.3. Include Statement
- •2.2.4. Constant Statement
- •2.2.5. Define Statement
- •2.2.6. Function Prototype Statement
- •2.2.7. Options Statement
- •2.2.8. Assert Statement
- •2.3. Subdesign Section
- •2.4. Variable Section
- •2.5. Logic Section
- •3. Застосування конструкцій мови
- •3.1. Логічні рівняння
- •3.2. Змінні типу node
- •3.3. Іменовані оператори
- •3.4. Групи
- •3.4.1. Одновимірні й часові групи
- •3.4.2. Двовимірні групи
- •3.5. Таблиця істинності
- •3.6. Оператор if then
- •3.7. Оператор case
- •3.8. Базові значення логічних функцій
- •3.9. Константи
- •3.10. Оператор for generate
- •3.11. Параметри
- •3.12. Оператор if generate
- •3.13. Оператор assert
- •3.14. Примітиви
- •3.15. Прототип модуля
- •Часть 1. Основы языка ahdl. М. 2005.- 50 с.
2.2.6. Function Prototype Statement
Function Prototype Statement (оператор опису прототипу) дозволяє описати інтерфейс (входи, виходи, передані параметри) модулів або примітивів, які будуть використані в даному текстовому описі. Оператори Function Prototype відіграють ту ж саму функцію, що і символи в графічних файлах проекту. І ті, і інші представляють собою короткий опис функції, задаючи її ім’я, а також вхідні, вихідні і двонаправлені порти. Для функцій, які імпортують і експортують скінчені автомати, можуть використовуватись порти автоматів.
Приклади:
FUNCTION lpm_add_sub (Cin, dataa[LPM_WIDTH-1..0],
datab[LPM_WIDTH-1..0], add_sub) -- входи модуля
WITH ( LPM_WIDTH, LPM_REPRESENTATION,
LPM_DIRECTION, ADDERTYPE,
ONE_INPUT_IS_CONSTANT) -- передані параметри
RETURNS (result[LPM_WIDTH-1..0], Cout, overflow) ; -- виходи модуля
FUNCTION compare (a[3..0], b[3..0])
RETURNS (less, equal, greater);
Правила використання оператора:
Оператор починається із ключового слова FUNCTION, за яким слідує ім'я модуля, а за ним - укладений у дужки список вхід модуля. При описі прототипу параметризованого модуля далі слідує ключове слово WITH і укладений у круглі дужки список переданих у модуль параметрів. Потім вказується ключове слово RETURNS, і далі - укладений у круглі дужки список вихід модуля. Оператор закінчується крапкою з комою.
Елементи списків (входів, переданих параметрів, виходів) відділяються один від одного комами.
У файлі з текстовим описом даний оператор може використовуватися необмежене число раз.
2.2.7. Options Statement
Options Statement (оператор задання опції) дозволяє визначити в групі елемент із меншим індексом (ВITО) як:
LSB - молодший розряд (Least Significant Bit). При цьому індекси в групах повинні вказуватися в спадній, зліва направо, послідовності;
MSB - старший розряд (Most Significant Bit). При цьому індекси в групах повинні вказуватися в зростаючій, зліва направо, послідовності;
ANY. При цьому порядок перерахування індексів у групі може бути довільним.
Порушення порядку перерахування індексів у групах веде до появи попередження на етапі синтаксичного аналізу текстового опису.
Приклад:
OPTIONS BITO = MSB;
Правила використання оператора:
Оператор задання опції починається зі ключового слова OPTIONS, за яким слідує ключове слово BITO, символ «дорівнює» (=) і одне із трьох ключових слів LSB, MSB, ANY. Далі ставиться крапка з комою (;).
Якщо опція не задана, то за замовчуванням передбачається, що BITO = LSB.
Значення опції, задане у файлі верхнього рівня ієрархії описів проекту, поширюється й на файли з описом модулів нижніх рівнів ієрархії, якщо в них явно не задане інше значення опції.
У файлі з текстовим описом даний оператор може використовуватися тільки один раз.
2.2.8. Assert Statement
Assert Statement (оператор контролю) дозволяє проконтролювати істинність арифметичного виразу, а для випадку, коли воно хибно, указати текст повідомлення й визначити реакцію компілятора.
Приклад:
ASSERT (WIDTH>0)
REPORT "Width (%) must be a positive integer" WIDTH
SEVERITY ERROR
Правила використання оператора:
Оператор починається із ключового слова ASSERT, за яким слідує арифметичний вираз. Якщо значення виразу False (хибно), то контрольована умова вважається невиконаною і процесор повідомлень (Message Processor) відображає укладене в подвійні лапки повідомлення, що слідує за ключовим словом REPORT.
Повідомлення може містити символ відсоток (%), який замінюється значенням змінної, що вказується після закриваючих подвійних лапок. Якщо використовується кілька символів відсотка (%), то змінні перераховуються через кому в тому порядку, в якому повинні підставлятися їхні значення.
Необов'язкове ключове слово SEVERITY дозволяє задати реакцію компілятора («рівень строгості» повідомлення): ERROR - помилка, WARNING - попередження, INFO - інформація. При відсутності ключового слова SEVERITY повідомлення, за замовчуванням, має «Рівень строгості» - ERROR.
Якщо ключове слово REPORT і відповідне повідомлення не були зазначені в операторі, то при невиконаних умовах контролю процесор повідомлень (Message Processor) відображає наступний рядок:
<”рівень строгості" >:Line<номер рядка>, File<ім'я файлу>Assertion failed
Оператор контролю закінчується символом крапка з комою (;).
Припустимо застосування оператора в розділі опису логіки (Logic Section).
У файлі з текстовим описом даний оператор може використовуватися необмежене число раз.