Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



ПРОЦЕДУРИ ТА ФУНКЦІЇ

МАСИВИ

ПЕРЕЛІЧУВАЛЬНІ ТИПИ

ТИП З РУХОМОЮ КРАПКОЮ

ТИПИ ФІЗИЧНИХ ВЕЛИЧИН

ЦІЛОЧИСЕЛЬНІ ТИПИ

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 <ім’я>;

Локальна декларація визначає речі, що будуть локальними в тілі цієї підпрограми. Імена цієї секції є недоступними поза межами тіла підпрограми. Крім цього, вони заміняють такі ж імена, якщо вони є зовні.

 

 


Читайте також:

  1. Адвокатура в Україні: основні завдання і функції
  2. Алгоритм знаходження ДДНФ (ДКНФ) для даної булевої функції
  3. Але відмінні від значення функції в точці або значення не існує, то точка називається точкою усувного розриву функції .
  4. Аналіз коефіцієнтів цільової функції
  5. Аналітичні процедури внутрішнього аудиту та їх класифікація.
  6. АРХІВНІ ДОВІДНИКИ В СИСТЕМІ НДА: ФУНКЦІЇ ТА СТРУКТУРА
  7. Асимптоти графіка функції
  8. Аудиторські докази: поняття та процедури отримання
  9. Базальні ядра, їх функції, симптоми ураження
  10. Базові функції, логічні функції
  11. Банки як провідні суб’єкти фінансового посередництва. Функції банків.
  12. Банківська система та її основні функції




Переглядів: 885

<== попередня сторінка | наступна сторінка ==>
Структура проекту у середовищі Active-HDL | Етапи проектування. Технічне завдання.

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.011 сек.