Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VHDL-47-56.docx
Скачиваний:
4
Добавлен:
10.12.2018
Размер:
489.47 Кб
Скачать

47.Оператор паралельного умовного присвоєння. Приклад.

Умовне присвоєння сигналу

Деколи необхідно виконати присвоєння сигналу, якщо умова істинна. В зв’язку з тим, що умовний оператор “if…then…” є послідовним оператором і може використовуватись тільки впроцесах, необхідне умовне присвоєння сигналу, яке можна було би використовувати всередині архітектури. Це функціональний еквівалент умовного оператора, але він записується інакше для того , щоби їх можна було б розрізнити між собою .Синтаксис умовного оператора присвоєння відповідає порядку, за яким він записується:“присвоїти визначене значення сигналу, якщо виконується умова, а якщо ні (else) – присвоїти іншезначення”. Підоператор else може бути відсутнім.Важлива різниця між у мовним присвоєнням сигналу і умовним оператором полягає в тому ,що використання першого обмежено тільки присвоєннями сигналів, в той час як останній може використовуватись для довільних послідовних операторів.

48.Оператор паралельного присвоєння за вибором. Приклад

Присвоєння сигналу із вибором

Для умовного присвоєння сигналу одного з декількох значень використовується конструкція присвоєння сигналу із вибором. Це паралельна конструкція, яка не може використовуватись всередині процесів, де замість неї використовується оператор case, і навпаки, оператор case не може використовуватись поза процесами, замість нього в такому випадку використовується присвоєння сигналу із вибором. Слід зауважити, що присвоєння сигналу із вибором, на відміну від оператора case, обмежено тільки операторами присвоєння і не може містити інших операторів.

49.Оператор блоку. Призначення та синтаксис.

Пакет

(package) у VHDL – це блок, який може містити багато різних декларацій для того ,щоби використовувати їх в різних проектах. Для більшої зручності вони зберігаються вбібліотеках.

Синтаксис опису пакету:

Пакет складається з обов’язкової декларації пакету і може містити одне необов’язкове тіло

пакету.Пакети використовуються для декларування типів, підтипів, констант, сигналів, компонетів ,

процедур та фу нкцій, що можуть розділятись між різними незалежними проектами.

Об’єкти, задекларовані в пакеті, видимі в інших частинах проекту , якщо використовується

Оператор

Двохрівнева специфікація пакету (декларація та тіло) дозволяє декларувати так звані

відкладені константи, значення для яких не задається в декларації пакету. Значення відкладеної

константи повинно бути вказане у відповідному тілі пакету.Стандарт мови VHDL визначає два стандартних пакети, що мають бути доступними в довільному середовищі VHDL – пакет STANDARD і пакет TEXTIO. Перший містить базові декларації типів, констант та операторів, а другий визначає операції для маніпулювання текстовими файлами. Обидва розташовані в бібліотеці STD. Тіло пакету містить закінчені визначення декларацій тіл підпрограм та значеня відкладених констант, задекларованих у відповідній декларації пакету. Інші декларації (подібні до декларації пакету) в тілі пакету також допускаються, але вони будуть видимі тільки всередині тіла пакету.

Відкладені константи, задекларовані в декларації пакету, можуть використовуватись тільки у

виразах за замовчуванням для локальних параметрів

generic

, локальних портів та формальних

параметрів підпрограм.

Відкладені константи, задекларовані в декларації пакету, можуть використовуватись тільки у

виразах за замовчуванням для локальних параметрів

generic

, локальних портів та формальних

параметрів підпрограм.

Відкладені константи, задекларовані в декларації пакету, можуть використовуватись тільки у

виразах за замовчуванням для локальних параметрів

generic

, локальних портів та формальних

параметрів підпрограм.

Відкладені константи, задекларовані в декларації пакету, можуть використовуватись тільки у

виразах за замовчуванням для локальних параметрів

generic

, локальних портів та формальних

параметрів підпрограм.

Відкладені константи, задекларовані в декларації пакету, можуть використовуватись тільки у

виразах за замовчуванням для локальних параметрів generic, локальних портів та формальних параметрів підпрограм. На рис.7.3 наведено приклад пакету

50.Оперратор блоку з охоронним виразом.приклад

Оператор блоку BLOCK, подібно до оператора PROCESS, є складовим оператором, тіло якого включає декілька операторів, але, в даному випадку, паралельних. Оператори тіла блоку, як і інші паралельні оператори, забезпечують можливість подання паралелізму в моделюється системі. Ці оператори ініціюються не за послідовного, а по подієвому принципом, а результати їх виконання стають доступні іншим операторам як включеним до блоку, так і розміщеним в інших блоках або "індивідуально", тільки після виконання всіх операторів, ініційованих однією подією. У цьому сенсі оператори, включені в блок, не відрізняються від "індивідуальних" паралельних операторів. Об'єднання операторів в блоки забезпечує наступні можливості: структуризація тексту опису, тобто можливість явного і наочного виділення сукупності операторів, що описують закінчений функціональний вузол; можливість оголошення в блоці локальних типів, сигналів, підпрограм і деяких інших локальних об'єктів; можливість приписування всіх або деяким операторам блоку загальних умов ініціалізації. Спрощені правила запису оператора блоку визначені таким чином <Мітка блоку>: BLOCK [(охоронне вираз)] [IS] [<Розділ декларацій блоку>] BEGIN <Розділ операторів блоку>

END BLOCK [<мітка блоку>]; Найбільш специфічними аспектами блокової організації є поняття охоронного вираження і охороняється оператора присвоювання. Охоронне вираз - це будь-який вираз логічного типу, аргументами якого є сигнали. Будь-яка зміна сигналів, що входять в охоронне вираз, викликає обчислення значення цього виразу і присвоєння отриманого значення визначеної змінної QUARD. Область дії змінної QUARD - все тіло блоку, і вона може використовуватися як звичайна логічна змінна у вкладених операторах блоку. Охороняється оператор присвоювання використовує значення змінної QUARD без явної вказівки умови в програмі. Якщо QUARD = 0 ", то виконання операторів присвоювання, що містять ключове слово QUARDED, у такому блоці заборонено. Розглянемо однорозрядних суматор. ENTITY add1_e IS PORT (b1, b2, enable: IN BIT; c1, s1: out BIT); END add1_e; ARCHITECTURE struct OF add1_e is BEGIN

p0: BLOCK (enable = '1 ') BEGIN s1 <= GUARDED (b1 XOR b2); c1 <= GUARDED (b1 AND b2); END BLOCK p0; END struct; Охоронним виразом блоку є вираз enable = 1. Якщо цей вислів набуває значення TRUE (істина), то охоронювані конструкції (призначення сигналів) виконуються, тобто однорозрядних суматор складає числа, якщо ж значення виразу є FALSE (неправда), то охоронювані призначення сигналів не виконуються, тобто суматор не складає числа b1, b2. Охорона призначення сигналів, здійснюється вказівкою ключового слова GUARDED. В якості іншого прикладу охороняється блоку наведемо приклад опису D-тригера з асинхронним скиданням у вигляді блоку з охоронним виразом (clk = '1 'or clr = '1'). D_LATCH: block (clk = '1 'or clr = '1') begin Q <= guarded 0 "when clr = '1 '; else D when clk = '1 '; else Q; end block D_LATCH; У даному прикладі clk - вхід синхронізації, clr - асинхронний скидання, D - вхід даних, Q - вихід тригера. Коли охоронне вираз має значення брехня, то сигнал Q в лівій частині зберігає своє колишнє значення. Cігнал асинхронного скидання має пріоритет по відношенню до сигналу clk.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]