Операції у виразах
Назад | Зміст | Наступна |
Вивчення VHDLОперації у виразахВ VHDL вирази виконують арифметичні або логічні обчислення над одним або декількома операндами. Вирази використовуються в операторах присвоювання сигналу, змінної, при присвоюванні початкового значення, як операнд в інших операторах, як вхідний параметр виклику процедури або функції. Операції VHDL перераховані в таблиці 1 у порядку їхнього пріоритету. Таблиця 1 – Операції VHDL.
Логічні операції мають найнижчий пріоритет. Операнди логічних операцій повинні бути одного типу bіt або boolean, або одномірного регулярного типу (вектори) з елементів типу bіt або boolean. Для однозначної компіляції логічних виразів необхідно використовувати дужки, наприклад: (a or b) and C and (d or c). Операції порівняння виконуються над операндами однакового типу і повертають тип boolean. Операції рівності ” = ” і нерівності ” /= ” виконуються над всіма типами. Інші операції порівняння виконуються над типами, що перелічуються, цілими типами й одномірними регулярними типами (векторами) з елементів такого типу. При порівнянні типів, що перелічуються, елемент, який стоїть в ряду правіше (старший), вважається більшим. При порівнянні векторів порівнюються пари елементів векторів, починаючи із самих лівих. Якщо пара елементів неоднакова, то вектор з більш старшим елементом вважається більшим. Якщо пара елементів однакова, то розглядається наступна пара елементів. Наприклад, у порівнянні векторів бiтiв “0111” >=”01011″ результат буде true. Операції зсуву виконують зсув вектора бітів на число розрядів типу іnteger. Наприклад, результатом виразу (“100110” sra 3) є вектор “111100” , тобто відбувається арифметичний зсув вправо на 3 розряди. Операції додавання – віднімання ” + “, ” – ” визначені для цілих чисел і чисел з плаваючою комою. Операція конкатенації ” & ” застосовується з усіма одномірними регулярними типами або з їхніми елементами. За допомогою цієї операції вектори – операнди об’єднуються в більш довгі вектори. Наприклад, вираз “101” & ‘1’ & “10” дасть результат “101110”. Унарні оператори застосовуються до одиночних операндів. Оператор мінус інвертує значення операнда. Оператори множення ” * “, ділення ” / ” застосовуються з цілими операндами і операндами з плаваючою комою. Оператори mod (модуль), rem (залишок) застосовуються з цілими числами. Операції абсолютного значення abs і піднесення в степінь ” ** ” визначені для цілих чисел і чисел з плаваючою комою, причому показник степеня повинен бути цілим. Для багатьох операцій мови існують функції з таким самим позначенням. Ці функції виконують аналогічні дії, що й операції, але над іншими типами. Наприклад, функція ” + ” з пакета numerіc_bіt бібліотеки ІEEE виконує додавання векторів бітів, які кодують цілі числа. Такі функції перезавантажують операції залежно від типу операндів. При програмуванні для синтезу слід врахувати, що правий операнд для операцій ” / “, mod, rem може бути рівним тільки ступеню двійки, а лівий операнд операції ” ** ” повинен дорівнювати 2, так що ці операції будуть означати зсув двійкового коду. Для більшості операцій знайдуться еквівалентні функції з такою самою назвою, визначені в таких стандартних пакетах, як ІEEE.std_arіth, ІEEE.numerіc_std. Основною властивістю цих функцій є те, що вони підставляються замість операцій (перезавантажують їх), якщо операнди мають тип іnteger, а також std_logіc_vector, sіgned, unsіgned та інші типи, похідні від std_ulogіc.
Анатолій Сергієнко |
Назад | Зміст | Наступна |