МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах
РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ" ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах Гендерна антидискримінаційна експертиза може зробити нас моральними рабами ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів Контакти
Тлумачний словник |
|
|||||||
ПРОЦЕДУРИ ТА ФУНКЦІЇМАСИВИ ПЕРЕЛІЧУВАЛЬНІ ТИПИ ТИП З РУХОМОЮ КРАПКОЮ ТИПИ ФІЗИЧНИХ ВЕЛИЧИН ЦІЛОЧИСЕЛЬНІ ТИПИ TYPE <ідентифікатор> IS RANGE <значення_від> TO|DOWNTO <значення_до>; Максимальний діапазон від -2147483647 до +2147483647 визначений як тип integer. Це числові типи, які описують якусь фізичну величину, таку як маса, довжина, час, напруга тощо. Опис такого типу дуже схожий на опис цілочисельного типу, в якому задаються базові одиниці, що утворюються множенням коефіцієнту на базові одиниці. Важливим наперед визначеним типом в VHDL є час. Він використовується при описі затримок часу, що є необхідним для процесу симуляцій. Цей тип є дискретним наближенням до множини чисел з рухомою крапкою у вказаному інтервалі. Точність наближення не вказується в стандарті VHDL, але вона має бути хоча б 1E-6. VHDL має наперед визначений тип real в діапазоні від -1Е-38 до +1Е38. Опис типу з рухомою крапкою такий самий як і опис цілочисельного типу. Перелічувальний тип - це впорядкований набір ідентифікаторів або символів. В межах цього набору ідентифікатори та символи повинні відрізнятись: TYPE <ідентифікатор_перелічувального_типу> IS ({<ідентифікатор>|<символ>,}); Масив у мові VHDL - це набір індексованих елементів одного типу. Масиви можуть бути одновимірні (з одним індексом) та багатовимірні (з багатьма індексами). Масиви також можуть бути обмеженими та необмеженими. Декларування типу масив: TYPE <ідентифікатор_масиву> IS ARRAY <межі_для_індексів> | RANGE <> OF <тип>; ЗАПИСИЗапис є набором іменованих елементів однакового або різних типів: TYPE <ідентифікатор_запису> IS RECORD <елемент>{,<елемент>} END RECORD; ОБ’ЄКТИОб’єкт - це спеціальний тип в VHDL. Є три класи об’єктів: константи, змінні та сигнали. Розглянемо два перших, третій розглянемо згодом. Декларування та використання констант та змінних дуже схоже на їх використання в мовах програмування. Константа - це об’єкт, що ініціалізується вказаним значенням в момент створення. Далі це значення не змінюється. CONSTANT <ідентифікатор>:<тип>[:=<значення>]; Константи без присвоєного їм значення використовуються при декларуванні пакетів. Це значення буде присвоюватись у відповідному тілі пакета. Змінна- це об’єкт, значення якого може змінюватись після його створення. VARIABLE <ідентифікатор>:<тип>[:=<значення>];
2. Вирази і оператори.
Вирази в VHDL, як і в більшості мов програмування, включають імена об’єктів, літералів, оператори, виклики функцій та операції з дужками. VHDL має наступні оператори (в порядку зменшення приоритету): ** ABS NOT * / MOD REM +(sign) -(sign) + - & = /= < <= > >= AND OR NAND NOR XOR Логічні оператори AND, OR, NAND, NOR, XOR і NOT працюють над значеннями типу bit або boolean, а також одновимірний масив з елементів вказаних типів. Для операндів-масивів операція виконується над відповідними елементами масивів. Розмірність вхідних та вихідного масивів однакова. AND, OR, NAND використовують свій другий операнд, якщо перший операнд не визначає результату. Так AND і NAND використовує другий операнд, якщо перший дорівнює true (‘1’), а OR та NOR використовує другий операнд, якщо перший дорівнює false (‘0’). Операції порівняння =, /=, <, <=, > та >= повинні мати два оператори однакового типу. Тип результату порівняння завжди boolean. Оператори еквівалентності (= та /=) можуть мати операнди будь-якого типу. Два складених типи вважаються однаковими, якщо однаковими є усі відповідні елементи. Решта операторів порівняння вимагають, щоб їх операнди були скалярного типу або одновимірного масиву. Знакові оператори (+ та -), а також оператори додавання (+) та віднімання (-) опрацьовують числові операнди. Оператор конкатенації (&) опрацьовує одновимірні масиви та дає результат - масив, що складається з елементів першого, за яким слідують елементи другого. Він може також під’єднати один новий елемент до масиву або два незалежних елементи об’єднати в масив. Найчастіше цей оператор використовується з рядками. Оператори множення (*) та ділення (/) працюють над цілими числами, числами з рухомою крапкою та з типами фізичних величин. Операції ділення без остачі (MOD) та остача від ділення (REM) працюють лише з цілими. Операція абсолютного значення (ABS) працює лише з числовими типами. І нарешті, піднесення до степеню (**) може мати цілочисельний або тип з рухомою крапкою першого операнду та цілочисельній тип другого операнду. Від’ємний другий операнд дозволяється лише за умови, коли перший операнд є число з рухомою крапкою.
3. Підпрограми та пакети.
Як і інші мови програмування, VHDL підтримує підпрограми у формі процедур та функцій. VHDL також підтримує пакети для групування декларувань та об’єктів в окремі модулі. Пакети також забезпечують деяку абстракцію даних та приховування певних блоків інформації. Декларування функцій та процедур відбувається за такими правилами: PROCEDURE [<список_формальних_параметрів>] |FUNCTION [<список_формальних_параметрів>] RETURN <тип_значення>; Для функцій також вказується тип результату, що буде повертатись коли функція виконається. Така форма декларування підпрограм (не вказуючи їх тіла) часто використовується в пакетах, де тіло підпрограми дається в тілі пакету, а також при визначенні взаємно рекурсивних процедур. В списку формальних параметрів можуть бути константи, змінні та сигнали. Приклад: PROCEDURE reset; Тут визначається процедура reset без параметрів. Її тіло буде визначене далі в програмі VHDL. Виклик процедури буде таким: reset; Визначення процедури з параметрами: PROCEDURE increment_reg (VARIABLE reg: INOUT word_32; CONSTANT incr: IN integer:=1); Визначення функції: FUNCTION byte_to_int (byte:word_8) RETURN integer; Функція має один параметр. Для функції режим параметрів має бути IN, що можна і не вказувати. Якщо клас параметра не вказується, то він приймається константою. Значення, що повертається тілом цієї функції має бути integer. Коли потрібно вказати тіло підпрограми, то це робиться за наступним правилом: <декларація_програми> IS <локальна_декларація> BEGIN <тіло>; [RETURN [<вираз>]]; END <ім’я>; Локальна декларація визначає речі, що будуть локальними в тілі цієї підпрограми. Імена цієї секції є недоступними поза межами тіла підпрограми. Крім цього, вони заміняють такі ж імена, якщо вони є зовні.
Читайте також:
|
||||||||
|