Автор: Пользователь скрыл имя, 26 Октября 2011 в 23:34, реферат
Як вказувалося раніше, мова VHDL призначена для опису ЦС на різних рівнях проектування, починаючи з етапу системного (алгоритмічного, высокорівневого) проектування і закінчуючи етапом логічного (низкорівневого) проектування з використанням методології нисхідного проектування. Ця методологія припускає ієрархічний опис проектованої ЦС як системи, що складається з окремих компонентів (підсистем, модулів, вузлів тощо), з поступовим переходом від абстрактного (системного чи алгоритмічного) опису до більш детального (структурного чи схемного) опису.
architecture architecture_name of entity_name is
[architecture_
begin
[architecture_
end
[architecture] [architecture_name];
Необхідно
відзначити, що границя між різними
стилями опису архітектури не є твердою,
часто в одній і тій же моделі змішуються
різні стилі.
Таблиця 1.1
Архітектурні стилі | Рівні опису (абстракції) об'єкта | |
Структурний | Фізичний
рівень
Схеми з логічних елементів Булевы рівняння | |
Потоків даних | Арифметичні
оператори
Оператори присвоювання Рівень регістрових передач | |
Алгоритмічний
(поведінковий) |
Кінцеві
автомати
Послідовностні пристрої Системні тести Описи високого рівня | |
У загальному випадку опис архітектури складається з двох частин – декларативної й операторной. У декларативній частині містяться тільки ті оголошення, що відносяться до даної архітектури, наприклад, оголошення типів, підтипів, констант, сигналів, підпрограм, компонент і ін. Тут не можуть бути декларовані локальні змінні.
В
операторной частини
Архітектура не може використовуватися без об'єкта.
Розглянемо приклади.
а) Опис архітектури на алгоритмічному (поведінковому) рівні (behavioral style, поведінковий стиль).
Процес
функціонування логічного елемента
И (andgate), розглянутого в попередньому
розділі, може бути описаний так:
Приклад 1.3.
architecture arch1of andgate is
begin
process (a, b);
begin
if a = '1' and b = '1' then
c <= '1' after 1 ns; else
c <= '0' after 1 ns;
end if;
end process;
end
arch1;
Опис містить процес, у якому використовуються оператори присвоєння. У даному випадку алгоритм функціонування і ключові слова, що виділені жирним шрифтом, очевидні. Відзначимо, що ця архітектура описує поведінок об'єкту подібно тому, як це робиться в програмуванні. Затримка вихідного сигналу с залежить від значення, зазначеного після ключового слова after.
При
низхідному проектуванні алгоритмічний
опис архітектури звичайно є одним
з перших етапів, дозволяючи розроблювачу
приділити головну увагу самому
процесу функціонування. Згодом уточнюються
різні деталі процесу, наприклад, розрядність
шин, кодування й ін.
б) Опис архітектури на рівні потоків даних (dataflow style, стиль потоків даних) звичайно використовується для опису функціонування простих комбінаційних логічних схем, таких як сумматоры, компаратори, мультиплексоры, дешифратори й ін. Розглянемо як приклад двувхідный логічний елемент ИСКЛЮЧИТЕЛЬНОЕ ИЛИ (xor2).
Приклад 1.4.
entity xor2 is
generic (m: time := 1.0 ns);
port (a, b: in bit;
c: out bit):
end xor2;
architecture dataflow of xor2 is
begin
c <= (a xor b) after m;
end
dataflow;
Після
компіляції цього елемента і запису
його в бібліотеку він може бути
використаний в іншому проекті по
посиланню на ім'я об'єкта (entity name)
xor2 і опису параметрів трьох його
портів.
в) Опис архітектури на структурному рівні (structural style, структурний стиль) застосовується, щоб об'єднати і зв'язати воєдино раніше скомпільовані об'єкти проекту.
На
мал. 1.2 представлена схема простого
компаратора, що складається з двох
логічних елементів: u0 – ИСКЛЮЧИТЕЛЬНОЕ
ИЛИ (xor2) і u1- інвертор (inv).
Приклад 1.5.
entity comparator is
port (a, b: in bit; c: out bit);
end
comparator;
architecture structural of comparator is
signal i: bit;
component xor2 [is]
port (x, y: in bit; z: out bit);
end component xor2;
component inv
port (x: in bit; z: out bit);
end component inv;
begin
u0: xor2 port map (a, b, i);
u1: inv port map (i, c);
end
structural;
Оголошена архітектура має
Кожен
стиль опису архітектури об'
1.4.
Configuration (конфігурація)
Як указувалося раніше, різні архітектурні стилі для опису об'єкта (компонента) можуть використовувати різні чи алгоритми рівні абстракції. Для кожного об'єкта повинний бути обраний конкретний варіант його реалізації (з деякої безлічі варіантів); при цьому необхідно визначити відношення (задати зв'язок) між об'єктом і обраної для нього конкретною архітектурою. Для цієї мети служить поняття конфігурації (сonfiguration), за допомогою якого встановлюється необхідна відповідність.
Синтаксис:
сonfiguration сonfiguration_name of entity_name is
[сonfiguration declarations]
for architecture_name
for instance_label: component_name
use entity library_name.entity_name (arch_name);
end for;
[інші вираження]
end for;
сonfiguration сonfiguration_name of entity_name is
[сonfiguration declarations]
for architecture_name
for instance_label: component_name
use сonfiguration library_name.config_name;
end for;
[інші вираження]
end
for;
Оголошення конфігурації починається з імені конфігурації і прив'язано до даного об'єкта проекту. Декларативна частина опису конфігурації (сonfiguration declarations) може містити пропозиції використання, різні технічні дані й ін. Основна частина оголошення конфігурації містить так називану конфігурацію блоку. У ній указується, яка архітектура буде використовуватися з об'єктом, визначеним раніше, або які елементи конфігурації будуть використовуватися в реалізації компонента й ін.
Приклад 1.6.
сonfiguration alu1_fast of alu is
for alu1;
for u0: comparator use entity work.comparator (dataflow);
end for;
end for;
У
цьому прикладі конфігурація alu1_fast
створена для об'єкта alu і архітектури
alu1. Вираження use
ідентифікує бібліотеку, об'єкт і архітектуру
компонента (компаратор). У результаті
отримана конфігурація, названа alu1_fast,
що є варіантом проекту alu. Оголошення
конфігурації дозволяє вибрати конкретну
архітектуру. Якщо оголошення конфігурації
не використовується, стандарт VHDL визначає
набір інструкцій, що забезпечують вибір
конфігурації за замовчуванням. Наприклад,
якщо об'єкт має більш ніж одну архітектуру,
для нього вибирається остання скомпільована
архітектура.
1.5.
Library (бібліотека)
Бібліотечна конструкція library визначає логічні імена бібліотек проектів, що використовуються модулями проекту. У бібліотеках зберігаються результати компіляції VHDL об'єктів і їхній компонент, що можуть бути необхідні для наступного чи моделювання використані в інших проектах. Бібліотека може містити пакети (найчастіше), об'єкти, опис чи архітектури конфігурації.
Синтаксис:
library
logical_name1 [logical_name2, …];
Бібліотека, визначена в бібліотечній пропозиції первинного (тобто більш високого рівня) модуля (пакета, об'єкта проекту, архітектурі), доступна в кожнім вторинному модулі (тілі пакета, конфігурації й ін.). У VHDL маються дві убудованих (визначених) бібліотеки, що використовуються неявно в кожнім проекті: STD і WORK. Перша з них містить стандартні пакети STANDARD і TEXTIO; друга – робоча бібліотека, у якій за замовчуванням зберігаються всі розроблені і скомпільовані модулі проекту. Розроблювач може створити інші бібліотеки, де будуть зберігатися зазначені їм модулі. Щоб до існуючого бібліотеці можна було звертатися як до складового частині VHDL проекту, ім'я бібліотеки повинне бути оголошене першим. Стандартні бібліотеки STD і WORK не вимагають оголошення, тому що вони автоматично включаються в кожен модуль проекту. Інші бібліотеки повинні бути оголошені з використанням оператора use. Наприклад, ряд важливих визначень типів даних, функцій і т.п. містяться в пакеті std_logic_1164 бібліотеки IEEE. Щоб зробити їх доступними, необхідно попередньо оголосити
library IEEE;
use IEEE. std_logic_1164.all;
Такі оголошення повинні передувати кожному об'єкту проекту, що використовує визначення в пакеті std_logic_1164.
До
інформації, що зберігається в бібліотеці,
можна звертатися трьома способами:
library_name.package_
(ім'я_бібліотеки.ім'я_
чи
library_name. item_name;
чи
item_name
(якщо інформація зберігається
в бібліотеці WORK).
Усі
модулі в бібліотеці повинні мати
унікальні імена; усі імена об'єктів
проекту і пакетів також