Реферат Курсовая Конспект
Архітектура ЕОМ - раздел Образование, Міністерство Освіти І Науки України Запорізький Національний Технічн...
|
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
Запорізький національний технічний університет
МЕТОДИЧНІ ВКАЗІВКИ
до лабораторних робіт з дисципліни
“Архітектура ЕОМ”
для студентів спеціальностей 8.091 501 "Комп'ютерні системи та мережі” та 7.091 503 ”Спеціалізовані комп'ютерні системи” всіх форм навчання
Begin
–– enter уоur statements here ––
end beh;
Шаблон VHDL–програми складається з трьох основних частин:
- перелік стандартних бібліотек, що використовуються (модуль library);
- повністю оформлений опис об'єкту (модуль entity);
- порожні операторні дужки опису архітектури (модуль architecture).
Модуль libraryвизначає імена бібліотек проекту. VHDL–бібліотека може містити пакети, об'єкти, описи архітектури і конфігурації. В даному випадку використовується пакет std_logic_1164 стандартної бібліотеки IEEE.
В модулі entityоголошується ім'я сутності (demux_4), описується інтерфейс між сутністю і середовищем, в якому вона функціонує. Тут визначаються типи і напрями сигналів
Модуль architecture визначає внутрішню організацію, принцип функціонування сутності на мові опису апаратури VHDL.1.3.8 В модулі architecture замість надпису –– enter уоur statements here –– необхідно добавити код, який описує поведінку демультиплексора. В листингах 1.2 та 1.3 наведено два еквівалентні варіанти опису ЦС. Введіть програму, що приведена на листингу 1.2.
Рисунок 1.11 – Результат роботи майстра New Source File Wizard
Листинг 1.2 – Перший варіант програми
–– –– –– –– –– –– –– –– –– –– –– –– –– –– модуль library
library IEEE;
use IEEE.STD_LOGIC_1164.all;
–– –– –– –– –– –– –– –– –– –– –– –– –– –– модуль entity
entity demux_3 is
port(
x : in BIT_VECTOR(0 to 3);
w : in BIT;
у : out BIT_VECTOR(0 to 15)
);
end demux_3;
–– –– –– –– –– –– –– –– –– –– –– –– –– –– модуль architecture
architecture beh of demux_3 is
Begin
GO: process (x,w)beginL1: if w = '0'
then у <= "00000000";
Else
L2: case x is
when "000" => у <= "10000000";
when "100" => у <= "01000000";
when "010" => у <= "00100000";
when "110" => у <= "00010000";
when "001" => у <= "00001000";
when "101" => у <= "00000100";
when "011" => у <= "00000010";
when "111" => у <= "00000001";
end case L2;
end if L1;
end process GO;
end beh;
Листинг 1.3 – Другий варіант програми
–– –– –– –– –– –– –– –– –– –– –– –– –– –– модуль library
library IEEE;use IEEE.STD_LOGIC_1164.all;–– –– –– –– –– –– –– –– –– –– –– –– –– –– модуль entity
entity demux_3 is port( x : in STD_LOGIC_VECTOR(0 to 2); w : in STD_LOGIC; y : out STD_LOGIC_VECTOR(0 to 7) );end demux_3;–– –– –– –– –– –– –– –– –– –– –– –– –– –– модуль architecture
architecture beh of demux_3 is begin y(7)<= w and x(2) and x(1) and x(0) after 20 ns;y(6)<= w and x(2) and x(1) and not x(0) after 12 ns;y(5)<= w and x(2) and not x(1) and x(0) after 24 ns;y(4)<= w and x(2) and not x(1) and not x(0) after 18 ns;y(3)<= w and not x(2) and x(1) and x(0) after 15 ns;y(2)<= w and not x(2) and x(1) and not x(0) after 16 ns;y(1)<= w and not x(2) and not x(1) and x(0) after 21 ns;y(0)<= w and not x(2) and not x(1) and not x(0) after 14 ns;end beh;1.4 Компіляція проекту
1.4.1 Виконаємо компіляцію нашого проекту. Для цього можна натискувати клавішу <F11> або кнопку Compile панелі інструментів. На рис. 1.12 показані кнопки запуску компіляції і результат компіляції нашого VHDL–проекту. Якщо при складанні програми були допущені помилки, повідомлення про них можна побачити у вікні Console.
Рисунок 1.12 – Компіляція VHDL–проекту
Іноді виникають помилки компіляції, що обумовлені неправильним використанням бібліотек мови VHDL. Для виправлення такої помилки можна використати компонент Library Manager (рис. 1.13). Цей засіб дозволяє отримати доступ до раніше розроблених пакетів і бібліотек VHDL, у тому числі і до бібліотек інших САПР.
Рисунок 1.13 – Library Manager. Вікна і елементи керування
Для того, щоб підключити до проекту необхідну бібліотеку, треба:
Port (
INP1,INP2,INP3,INP4: in BIT;
O: out BIT);
end component AND_OR;
У виконавчій частині:
architecture CIRCUIT of LOGIC is
signal D: BIT;
component AND_OR
port (
INP1,INP2,INP3,INP4: in BIT;
O: out BIT);
end component AND_OR;
Begin
E5: AND_OR
port map(A,C1,B,C1,D);
E6: AND_OR
port map(D,C2,E,C2,F);
end CIRCUIT;
Опис елемента І-АБО-НІ в декларативній частині включає завдання типу компонента (AND_OR), його входів (INP1 ...INP4), на що вказує символ in, його виходу (О), відзначеного символом out, і типів сигналів (ВIТ). Опис входів і виходів є аналогічним описові формальних параметрів у процедурах алгоритмічних мов.
У виконавчій частині описуються конкретні екземпляри E5 і Е6 компонента AND_OR з фактичними параметрами. Тут А, В, С1, C2, D, E, F суть сигнали і, щоб відрізнити їх від звичайних змінних вони повинні бути описані в декларативній частині entity або architecture.
Опис дій, що виконуються над сигналами в елементі AND_OR повинен бути змістом окремого entity.
Опис того ж фрагмента в стилі data-flow має вигляд:
architecture CIRCUIT of LOGIC is
signal D: BIT;
Begin
F <= not ((D and C2) or (E and C2)) after 5 ns;
D <= not ((A and C P or (В and C 1)) after 5 ns;
end CIRCUIT;
В мові VHDL є три категорії даних, за допомогою яких описуються любі процеси в дискретних системах: константи, змінні і сигнали. Всі вони повинні мати імена: сукупність букв (A-Z), цифр (0-9) та символів підкреслювання '_'. Імена починаються з букви і не можуть закінчуватись символом підкреслювання. Регістр букв не має значення.
Змінна є ім‘ям, яке присвоюється виличинам, що змінюються, використовується для зберігання проміжних даних при виконанні послідовних операторів присвоювання в межах процесу.
Сигнал – це інформація, яка передається між модулями проекту і може бути вхідною чи вихідною. Сигнали передаються по фізичним лініям, які з‘єднують елементи схеми. Сигнали завжди пов‘язані з часом. Вони повинні бути об‘явлені в entity або architecture перед процесом. Присвоєння значення сигналу відображається знаком "<=", а змінній – ":=".
Символ"<=" – еквівалент символу присвоєння, але використовується в описах дій над сигналами на виміну від символу ":=", який застосовується до змінних. Відзначимо, що операції зі змінними можна використовувати в поведінкових описах і в підпрограмах, у той час як операції над сигналами можливі в описах і поведінкових, і потоків даних.
Особливості операторів "<=" у мові VHDL полягають у їхньому паралельному виконанні. Це означає, що порядок їхнього запису у виконавчій частині не має значення. Наприклад, якщо маємо запис
A <= D or S;
B <= A and S;
і відомо, що D="1", S="0" до моменту виконання цих операторів, то після їхнього виконання сигнали будуть мати значення А="1", B="0". Іншими словами, присвоєння нових значень сигналам відбувається в момент t+delta, де t - поточний час, delta - як завгодно мала позитивна величина.
Поведінковий опис для даного приклада оформляється у виді процесу:
architecture CIRCUIT of LOGIC is
signal D: BIT;
Begin
LAB: process (A,B,C1,C2,D,E)
Begin
D <= not ((A and C1) or (B and C1)) after 5 ns;
F <= not ((D and C2) or (E and C2)) after 5 ns;
end process LAB;
end CIRCUIT;
Особливість процесу в мові VHDL полягає в тому, що за його допомогою реалізується моделювання: процес активізується тільки тоді, коли змінюється який-небудь із сигналів, перерахованих у списку його параметрів (у даному випадку це A,B,C1,C2,D,E). Цей список називають списком чутливості (sensitivity list).
Один із варіантів повного опису приклада логічної схеми (рис. 2.1):
Листинг 2.1 – Варіант опису логічної схеми мовою VHDL
-- Декларативна частина сутності LOGIC
entity LOGIC is
port (
A,B,E,Cl,C2: in BIT;
F: out BIT);
end LOGIC;
-- Виконавча частина сутності LOGIC
architecture CIRCUIT of LOGIC is
signal D: BIT:
-- Декларація компоненту AND_OR
component AND_OR
port (
Inpl,Inp2,Inp3,Inp4: in BIT;
O: out BIT);
end component;
-- Архітектурне тіло сутності LOGIC
Begin
E1:AND_OR
port map (A,C1,B,C1,D);
E2: AND_OR
port map (D,C2,E,C2,F);
end CIRCUIT;
-- Декларативна частина сутності AND_OR
entity AND_OR is
port (
Inp1,Inp2,Inp3,Inp4: in BIT,
O: out BIT);
end AND_OR;
-- Виконавча частина сутності AND_OR
architecture GATE of AND_OR is
-- Архітектурне тіло сутності AND_OR
Begin
O <= not ((Inp1 and Inp2) or (Inp3 and Inp4));
end GATE;
Можна представити вхідні сигнали у вигляді двійкового вектора X. Тоді у вищенаведеному описі були б наступні зміни.
У декларативній частині LOGIC опис зв'язків мав би вид:
port (
X: in BIT_VECTOR(1 to 3);
C1,C2: in BIT;
O: out BIT);
У виконавчій частині CIRCUIT замість сигналів А, В, E фігурували сигнали X(1), X(2), X(3).
2.1.2 Типи даних і операції
Використовуються скалярні і складені (композитні) типи. У свою чергу, скалярні типи підрозділяються на типи нечислові (перелічувані), числові і фізичні.
До нечислових типів відносяться:
тип BOOLEAN з сукупністю значень "False", "True";
тип BIT з сукупністю значень "0", "1";
тип CHARACTER – значеннями є літери латинського алфавіту.
До числових типів відносяться:
тип REAL (дійсні значення);
тип INTEGER (цілі числа).
Фізичний тип використовується для позначення одиниць виміру. Прикладом фізичного типу є ТIМЕ для опису границь діапазону й одиниць вимірювання часу.
Серед складених типів виділяють ARRAY – масив, RECORD – запис, FILE – файл. Окремими випадками типу ARRAY є типи STRING (рядок) і BIT_VECTOR (вектор із двійковими елементами).
В пакеті STANDART, що поставляється разом з системою, декларуються типи BOOLEAN, BIT, BIT_VECTOR, INTEGER, REAL, NATURAL, POSITIV, CHARACTURE, STRING, а також TIME (час).
Ряд важливих визначень типів даних, наприклад, STD_LOGIC_VECTOR, STD_LOGIC, функцій і т.п. міститься в пакеті STD_LOGIC_1164 бібліотеки IEEE. Для цього на початку програми записуються інструкції
library IEEE;
use IEEE.STD_LOGIC_1164.all;
Введення нових типів здійснюється так, як це прийнято в алгоритмічних мовах типу Паскаль. Наприклад:
1) декларація фізичного типу:
type VOLTAGE is range 1 to 20;
Units
uv; -- microvolts (базова одиниця)--
mv = 1000 uv; -- millivolts--
v = 1000 mv; -- volts--
end units;
2) декларація перелічуваного типу, який задається користувачем:
type COLOR is(WHITE,BLACK,RED,GREEN,BLUE,YELLOW,MAGENTA);
3) декларація типу масива:
type VEC is array (12 downto 0) of INTEGER;
4) декларація типу запису:
type COMP is record
NAME: STRING (3 to 15);
PERF: REAL range 0.1 to 1E9;
FIRM: STRING (2 to 12);
end record;
5) об‘ява:
NAME: STRING (3 to 15);
Цікавою рисою мови VHDL є наявність у ній величин, що аналогічні стандартним числовим атрибутам мови GPSS і які також називаються атрибутами. Приклади часто використовуваних атрибутів:
S'LAST_VALUE | попереднє значення змінної S |
S'STABLE(T) | дорівнює true, якщо сигнал S стабільний протягом останніх Т одиниць часу |
S'DELAY(Т) | значення сигналу S у момент часу t-Т, де t – даний момент часу |
У VHDL можна оформляти описи типів у виді пакетів. Пакет - поняття, аналогічне поняттю підпрограми, але яке стосується не виконавчої, а декларативної частини. Структура пакета:
package PPP is
<описи, загальні для декількох частин моделі, в які можуть входити типи, підтипи, константи, сигнали процедури, функції й інші декларації>;
end PPP:
Якщо в загальний опис входять які-небудь функції і/або підпрограми, то додається опис їхніх тіл після заголовка пакету.
Доступ до пакета PPP з боку сутності ССС організується записом
use PPP.ALL
перед декларативною частиною сутності, тобто перед рядком. Це означає, що для сутності CCC стає "видимим" весь уміст пакета PPP.
Щоб визначити, які об'єкти проекту використані для створення цілого проекту, використовується об'ява конфігурації (package declaration). Таким чином, при описі ЦС мовою VHDL можна використати п'ять різних типів опису: об'ява об'єкта проекту, архітектурне тіло, об'ява конфігурації, об'ява пакета і тіло пакета.
В арифметичних і логічних виразах і в умовах виконання дій використовуються наступні символи операцій:
not, and, or, nand, nor, xor – для логічних операцій (НІ, І, АБО, І-НІ, АБО-НІ, виключне АБО відповідно);
"=", "/=", "<", "<=", ">", ">=" – для відношень (дорівнює, не дорівнює, менше, менше або дорівнює, більше, більше або дорівнює);
"+", "-", "*", "**" – для арифметичних операцій додавання, віднімання, множення, зведення в ступінь відповідно.
Оператори мови VHDL
У VHDL застосовуються оператори присвоєння, умовний, вибору, циклу, очікування, контролю, блоку. Більшість з них за змістом збігається з операторами алгоритмічних мов загального застосування.
Вид умовного оператора:
if <умова> then <оператори>
elsif<умова> then <оператори>
else <оператори>
end if;
Вид оператора вибору:
case <вираз> is
when <альтернатива> => <оператори>
...
when others => <оператори>
end case;
Вид оператора циклу:
[<мітка циклу>]
while <умова> [for < опис параметрів >]loop
<оператори>
end loop;
Вихід з циклу можливий за допомогою оператору
exit [<мітка циклу>] [when <умова>];
Оператор очікування використовується для припинення процесу на деякий відрізок часу, під час зміни значення сигналу, при виконанні деякої умови:
wait on <ім'я сигналу> until <умова> for <час затримки>;
Наприклад:
wait on A,B until C=0 for 50 ns;
Оператор контролю ASSERT потрібен для одержання користувачем повідомлень про помилковій ситуації.
Оператор блоку BLOCK вживають для поділу описів в архітектурних тілах на блоки, кожний з яких має свої внутрішні описи і виконавчу частину.
Як і в алгоритмічних мовах, у VHDL можна використовувати два типи підпрограм:
процедури, які можуть повертати множину значень;
функції, які можуть повертати єдине значення.
Наведемо формат їх виклику та об‘яви:
формат виклику:
<ім‘я функції або процедури> (<фактичні параметри>);
формат об‘яви:
function | procedure <ім‘я> (<формальні параметри>) return <тип значення, що повертається> is
Begin
<тіло функції або процедури>
end [<ім‘я >];
Наприклад, функція перетворення типу BIT на тип BOOLEAN:
function BIT_BOOL (inp_bit: in BIT) return BOOLEAN is
Begin
if(inp_bit='1') then return true;
else return false;
endif;
end BIT_BOOL;
Наведемо варіант програми, в якому використовуються оператори і процедури.
Листинг 2.2 – Використання процедур у програмі
library IEEE;
use IEEE.STD_LOGIC_1164.all;
-- декларативна частина
entity example is
port(
a : in STD_LOGIC;
c : out STD_LOGIC_VECTOR (0 to 1)
);
end example;
-- Виконавча частина
architecture ex_beh of example is
-- Процедура proc1
procedure proc1 (c: out STD_LOGIC_VECTOR (0 to 1)) is
Begin
c := "00";
assert a = '1' report "Signal a is one" severity WARNING;
end procedure proc1;
-- Процедура proc2
procedure proc2 (c: out STD_LOGIC_VECTOR (0 to 1)) is
variable count : integer := 0;
Begin
while count < 5 loop
case count is
when 0 => c := "11";
when 1 => c := "11";
when 2 => c := "11";
when 3 => c := "11";
when others => c := "ZZ";
end case;
count := count + 1;
end loop;
assert a = '0' report "Signal a is zero" severity WARNING;
end procedure proc2;
-- Архітектурне тіло
Begin
EXP: process (a)
variable value: STD_LOGIC_VECTOR (0 to 1);
Begin
if a = '1' then
proc1 (value); -- виклик proc1
c <= value;
Else
proc2 (value); -- виклик proc2
c <= value;
end if;
end process EXP;
end ex_beh;
Зверніть увагу на те, що всередині процедури замість символу призначення сигналу "<=" треба використовувати символ присвоєння значення змінній ":=".
Begin
S <= A xor B xor C;
P <= (A and B) or (A and C) or (B and C);
end Fub1;
3.8.2.9 Клацнувши кнопку Compile All (компілювати все) , додайте створений блок Fub1 до бібліотеки VHDL-проекту. Тепер цей компонент можна використовувати як складову частину проекту більш складної ЦС.
3.8.3 Створення файлу верхнього рівня
3.8.3.1 Створіть логічну схему файла верхнього рівня проекту. Для цього можна використати команду Add new file у вікні Design Browser. У контекстному меню виберіть режим New ® Block Diagram.
3.8.3.2 З'явиться вікно New Source File Wizard. Під час роботи з майстром New Source File Wizard залиште активним прапорець "Add the generated file to the design" (додати файл програми до проекту), виберіть мову опису апаратури VHDL, вкажіть ім'я файлу програми, ім'я сутності, ім'я опису архітектури. У вікні New Source File Wizard – Ports вкажіть порти: входи a(0)-a(2), b(0)-b(2), c і виходи s(0)-s(2), p.
3.8.3.3 Після натискання кнопки Done буде автоматично створений шаблон файлу логічної схеми. Цей файл буде завантажений у редактор логічних схем САПР Active-HDL. Натисніть кнопку Show Symbols Toolbox (показати список символів) . З'явиться вікно Symbols Toolbox, що містить список вбудованих компонентів (built-in symbols) і компонентів, що належать бібліотеці поточного VHDL-проекту.
3.8.3.4 Перетягніть компонент SUM з вікна Symbols Toolbox у вікно редактора логічних схем. За допомогою клавіш <Ctrl+C> і <Ctrl+V> зробіть так, щоб логічна схема файлу верхнього рівня VHDL- проекту містила три компонента SUM (U1, U2 і U3). Наприкінці роботи логічна схема повинна мати вид, як на рис. 3.9.
Рисунок 3.9 – Додавання символів до логічної схеми
3.8.3.5 За допомогою інструментів Wire і Bus (шина) добудуйте логічну схему суматора SM(3) (рис. 3.10).
Рисунок 3.10 – Логічна схема суматора SM(3)
3.8.3.6 Вибравши команду головного меню File ® Save All, збережіть всі зміни у VHDL-проекті.
3.8.3.7 Створений файл логічної схеми є файл верхнього рівня (top-level file) VHDL-проекту, тому його треба компілювати першим. Змініть порядок компіляції файлів проекту. Для цього у вікні Design Browser виділіть піктограму проекту і в контекстному меню виберіть команду Design Compilation Order. Перетягніть піктограму вашого файлу на першу позицію у списку, що міститься у вікні Design Compilation Order.
3.8.3.8 За допомогою кнопки Compile with file reorder (компіляція у встановленому порядку) виконайте заключну частину роботи – компіляцію готового VHDL-проекту, що має ієрархічну організацію. Якщо ніяких помилок під час компіляції не виявлено, будуть автоматично створені файли, що містять структурний опис ЦС.
Листинг 3.2 – Структурний опис суматора SM(3)
library IEEE;
use IEEE.std_logic_1164.all;
-- Декларативна частина сутності Sum_3
entity Sum_3 is
port(
c : in STD_LOGIC;
a : in STD_LOGIC_VECTOR(0 to 2);
b : in STD_LOGIC_VECTOR(0 to 2);
p : out STD_LOGIC;
s : out STD_LOGIC_VECTOR(0 to 2)
);
end Sum_3;
-- Виконавча частина сутності Sum_3
architecture Sum_beh of Sum_3 is
-- Декларація компоненту SUM
component SUM
port (
A,B,C : in STD_LOGIC;
S,P : out STD_LOGIC
);
end component;
-- Декларація допоміжних сигналів
signal NET137 : STD_LOGIC;
signal NET145 : STD_LOGIC;
Begin
-- Реалізація екземпляра U1
U1 : SUM
port map(A => a(2),B => b(2),C => c,P => NET145,S => s(2));
-- Реалізація екземпляра U2
U2 : SUM
port map(A => a(1),B => b(1),C => NET145,P => NET137,S => s(1));
-- Реалізація екземпляра U3
U3 : SUM
port map(A => a(0),B => b(0),C => NET137,P => p,S => s(0));
end Sum_beh;
-- Декларативна частина сутності SUM
entity SUM is
port(
A,B,C : in STD_LOGIC;
S,P : out STD_LOGIC
);
end SUM;
-- Виконавча частина сутності SUM
architecture FUN of SUM is
-- Декларація компоненту Fub1
component Fub1
port (
A,B,C : in STD_LOGIC;
S,P : out STD_LOGIC
);
end component;
Begin
-- Реалізація екземпляра U1
U1 : Fub1
port map(A => A,B => B,C => C,P => P,S => S);
end FUN;
На рис. 3.11 наведений фрагмент часової діаграми, що була отримана під час функціонального моделювання суматора SM(3).
Рисунок 3.11 – Тестування моделі суматора SM(3)
ЛІТЕРАТУРА
1. Проектирование цифровых систем с использованием языка VHDL: Уч. пособие/ В.В. Семенец, И.В. Хаханова, В.И. Хаханов.– Харьков: ХНУРЭ, 2003.– 492 с.
2. Бибило П.Н. Синтез логических схем с использованием языка VHDL.– М.: СОЛОН–Р, 2002.– 384 с.
3. Кондратенко Ю.П., Сидоренко С.А., Пiдопригора Д.М. Поведiнковий синтез цифрових пристроїв у середовищі Active–HDL: Навчальний посiбник.– Миколаїв: МФ НаУКМА, 2002.– 116 с.
4. Стешенко В.Б. ПЛИС фирмы Altera: элементная база, система проектирования и языки описания аппаратуры. – М.: Издательский дом Додэка –XXI, 2002.– 576 с.
5. Шапо Ф.С., Шапо В.Ф. Введение в VHDL – язык проектирования цифровых систем.– Одесса: Астропринт, 2001.– 220 с.
6. Дж. Ф. Уэйкерли Проектирование цифровых устройств. В 2–х томах: Пер. с англ. М.: Постмаркет, 2002.
7. Угрюмов Е.П. Цифровая схемотехника.–СПб.: БХВ–Петербург, 2001.–528с.(Гл.9)
8. Бибило П.Н. Основы языка VHDL.– М.: Солон–Р, 2000.–200с.
Підписано до друку 22.03.2004 Формат 60х84 1/16, 3.25 др. арк. Тираж 50 прим. Зам. № 501
69063 м. Запоріжжя, ЗНТУ, друкарня, вул. Жуковського, 64
– Конец работы –
Используемые теги: Архітектура, еом0.055
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Архітектура ЕОМ
Если этот материал оказался полезным для Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов