Типи
Назад | Зміст | Наступна |
Вивчення VHDLТипиСигнали, змінні, константи і інші об’єкти мови VHDL служать для зберігання деяких значень. Ці значення можуть бути присвоєні об’єктам в одному місці і потім використані в іншому місці програми, як операнди у виразах, функціях і т.п. Перш ніж зупинитися на описі об’єктів, необхідно розглянути типи об’єктів. Не плутати з об’єктом проекту – частиною програми, що описує інтерфейс деякої одиниці проекту. Тип – це множина значень з загальною ознакою. VHDL – строго типізована мова. Кожний об’єкт оголошується зі своїм типом і може присвоювати значення тільки даного типу. Дотримання правил присвоювання об’єктів і відповідності їхніх типів вимагає додаткових зусиль програміста. Але завдяки цій особливості, програми VHDL мають високу надійність і забезпечують економію часу при налагоджуванні. Перерелічний тип, визначається як список (перерахування) всіх можливих значень даного типу. Оголошення цього типу виглядає як: type \ім’я типу\ is (\перерелічний літерал\ Тут текст у фігурних дужках може повторюватися 0,1,2,… разів. Елементи списку літералів нумеруються при компіляції зліва – направо, починаючи з нуля. Наприклад, оголошення type \напрямок\ is (\ліворуч\,\прямо\,\праворуч\); означає, що стани ідентифікатора \напрямок\ будуть кодуватися так, що \ліворуч\ відповідає 0, \праворуч\ – 2. Цілий тип. Оголошення цього типу виглядає як: type \ім’я типу\ is range \діапазон цілих\; де \діапазон цілих\::=\вираз\ to\вираз\ Вираз цілого типу в діапазоні повинен бути обчислюваним в період компіляції. Максимальний діапазон цілих задається як: Тип із плаваючою комою визначається аналогічно цілому типу, але з діапазоном із плаваючою комою. Максимальний діапазон залежить від компілятора. Регулярний тип являє собою безліч елементів однакового типу. Розрізняють необмежені і обмежені регулярні типи Необмежений тип оголошується як: type \ім’я регулярного типу\ is де \ім’я типу діапазону\ – ім’я типу integer або якогось підтипу від integer. Обмежений регулярний тип оголошується як: type \ім’я регулярного типу\ is Необмежений регулярний тип застосовують тоді, коли заздалегідь невідомий діапазон типу, наприклад, у процедурі. Але на період компіляції або в момент виконання програми діапазон об’єкта цього типу повинен бути визначений. Наприклад, під час виклику процедури з конкретним операндом. Представника одномірного регулярного типу зазвичай називають вектором. VHDL допускає багатомірні регулярні типи або багатомірні масиви. У їхніх визначеннях діапазони індексів перераховуються через кому, наприклад: type matrix is array (integer range <>, integer range <>) of integer. Комбінований тип визначає множину значень, як і регулярний тип, але ці значення можуть бути різнотипними. Оголошення комбінованого типу виглядає як: type \ім’я комбінованого типу\ is record Фізичний типпредставляється цілим числом, одиниця якого має вагу одиниці виміру деякої фізичної величини. Найпоширенішим фізичним типом в VHDL є час tіme, який вимірюється у фемтосекундах (fs), пікосекундах (ps), наносекундах (ns) і т.д. Об’єкти фізичного типу, як правило, не синтезуються, але вони можуть брати участь як операнди в обчисленнях констант інших типів. Інші типи об’єктів Особливими типами є тип посилання (access) і тип файлу (file). Тип посилання дає змогу маніпулювати масивами змінних, об’єм яких заздалегідь невідомий і які створюються, доповнюються й ліквідуються динамічно під час обчислень. Тип файлу забезпечує доступ до файлів, записаних у дисковій пам’яті. Його застосовують для вводу-виводу вхідних даних і результатів обчислень. Підтип. \підтип\::=subtype \ім’я підтипу\ is \базовий тип\ [\обмеження\]; Тут \обмеження\ – діапазон або підмножина, залежно від базового типу. Підтип використовують для ототожнення групи об’єктів. За допомогою підтипу можна позначити групу об’єктів з особливими властивостями, щоб потім було легше розбиратися в програмі. Обмеження підтипу дає змогу виявити помилки на етапі моделювання. Об’єкти різних підтипів, у яких один родоначальний, базовий тип, можуть брати участь в обчисленнях без конфліктів типів. Визначені типи даних. type boolean is (false, true); type bit is ('0', '1'); type integer is range -2147483647 to 2147483647; subtype natural is integer range 0 to 2147483647; type bit_vector is array (natural range <>) of bit; Варто помітити, що тип integer покриває всі значення, що представляються 32-бітовими словами, крім одного: -231 . Також визначені: підтип positive, , що включає позитивні значення типу integer, тип character, як набір букв, цифр і знаків, включаючи букви альтернативного алфавіту, тип string, як одномірний регулярний тип з елементів типу character.
Анатолій Сергієнко |
Назад | Зміст | Наступна |