МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
ПОВЕДІНКОВА ФОРМА ПРОЕКТА НА МОВІ VHDL.
ЯВНО ЗАДАНИЙ ОПЕРАТОР PROCESS.
УМОВНИЙ ОПЕРАТОР IF, ОПЕРАТОР ВИБОРУ CASE.
МЕТОДИЧНІ ВКАЗІВКИ
до лабораторної роботи № 4
з курсу «Комп’ютерні методи аналізу та проектування електронних засобів»
для студентів спеціальностей:
7.160102 “Захист інформації з обмеженим доступом та автоматизація її обробки”, 7.160103 “Системи захисту від несанкціонованого доступу”, 7.160104 “Адміністративний менеджмент в сфері захисту інформації з обмеженим доступом”, 7.160105“Захист інформації і комп'ютерних системах і мережах”, 8.160102 “Захист інформації з обмеженим доступом та автоматизація її обробки”, 8.160103 “ Системи захисту від несанкціонованого доступу”, 8.160104 “Адміністративний менеджмент в сфері захисту інформації з обмеженим доступом”, 8.160105“Захист інформації і комп'ютерних системах і мережах”.
Затверджено
на засiданнi кафедри
“Захист інформації”
Протокол № ___ від __ ________ 2010 р.
Львів 2010
Поведінкова форма проекту на мові VHDL. Явно заданий оператор Process. Умовний оператор if, оператор вибору case. Інструкція до лабораторної роботи № 4 з курсу “ Комп’ютерні методи аналізу та проектування електронних засобів.” для студентів спеціальностей 7.160102 “Захист інформації з обмеженим доступом та автоматизація її обробки”, 7.160103 “Системи захисту від несанкціонованого доступу”, 7.160104 “Адміністративний менеджмент в сфері захисту інформації з обмеженим доступом”, 7.160105“Захист інформації і комп'ютерних системах і мережах”, 8.160102 “Захист інформації з обмеженим доступом та автоматизація її обробки”, 8.160103 “ Системи захисту від несанкціонованого доступу”, 8.160104 “Адміністративний менеджмент в сфері захисту інформації з обмеженим доступом”, 8.160105“Захист інформації і комп'ютерних системах і мережах” / Укл.: Горпенюк А.Я., Будз Б.Д. – Львів: НУЛП, 2010.- 9 с.
Укладачі: Горпенюк А.Я., к.т.н, доцент,
Будз Б.Д., асистент
Мета роботи: - Ознайомитись з синтаксисом явно заданого оператора process. Реалізація тригерів за допомогою оператора умовної передачі керування if.
1. ТЕОРЕТИЧНІ ВІДОМОСТІ
1.1. Явно заданий оператор PROCESS.
Явно заданий оператор process – це основна конструкція для поведінкової форми опису проектів, яка дозволяє використовувати в його тілі послідовні оператори мови для опису поведінки цифрового пристрою що проектується регістрового типу на деякому часовому інтервалі.
В мові VHDL розрізняють два підкласи явно заданого оператора process:
явно заданий оператор process() зі списком чутливості;
явно заданий оператор process без списку чутливості.
Синтаксис явно заданого оператора process() має наступний вигляд:
[мітка_процесу:] process [(список_чутливості)] [is]
[оператори_оголошень_процесу] –-Розділ оголошень.
begin -- Розділ виконуваних операторів.
--В цьому розділі розміщуються оператори наступних типів:
-- присвоєння значень змінним;
-- виклику процедур;
-- оператори case;
-- оператори exit;
-- оператори if;
-- оператори loop;
-- оператори next;
-- оператори null;
-- оператори wait;
end process [мітка_тому];
Розглянемо приклад використання оператора process в проекті D-тригера з асинхронним скидом, який перемикається за переднім фронтом синхроімпульсу CLK.
library ieee;
use ieee.std_logic_1164.all;
entity DT_clear is
port(CLK, CLEAR, D: in std_logic; Q: out std_logic);
end DT_clear;
architecture BEHAV of DT_clear is
begin
process(CLK, CLEAR)
begin
if(CLEAR = ‘1’) then
Q <= ‘0’;
elsif(CLK’event and CLK = ‘1’) then
Q <= D;
end if;
end process;
end BEHAV;
Сам явно заданий оператор process розташований в розділі виконуваних операторів паралельної обробки, оскільки відноситься до операторів відповідного класу. Однак оператори, які розміщені всередині оператора process, виконуються послідовно. Як і інші оператори паралельної обробки, оператор process може зчитувати значення сигналів на вихідних портах інтерфейсу, а також взаємодіяти з іншими об'єктами архітектури проекту. Вираз CLK’event and CLK = ‘1’ перевіряє наявність переднього фронту сигналу CLK.
Список чутливості, який може використовуватись в оголошенні явного оператора process, – це набір сигналів, зміна значень яких призводить до негайного виконання оператора process. Оператор process без списку чутливості завжди запускається на виконання автоматично в момент початку процесу моделювання роботи проекту.
Змінні і константи, які використовуються в тілі оператора process, повинні бути визначені в розділі оголошення оператора, тобто перед ключовим словом begin. Ключове слово begin повідомляє про початок виконуваної частини оператора process. Оператори, які можуть розташовуватись в цьому розділі, виконуються послідовно, у відповідності з алгоритмом проекту.
Слід пам'ятати, що операція присвоєння значення змінної в тілі оператора process виконується миттєво і позначається символом ":=" і відрізняється від операції встановлення значення сигналу, яка позначається символом "<=", оскільки значення сигналу змінюється після заданого часу затримки.
1.2. Оператор умовної передачі керування
Оператор if відноситься до сімейства послідовних операторів, які розміщуються в розділі виконуваних операторів явно заданого оператора process. Цей оператор відповідальний за виконання того чи іншого блоку послідовних операторів, які розміщені в його тілі. Вибір для виконання конкретного блоку залежить від істинності одної або декількох умов. Синтаксис оператора if має наступний вигляд:
if умова1 then
блок_операторів1;
[elsif умова2 then
блок_операторів2;]
. . .
[else блок_операторів;]
end if;
Як бачимо із синтаксису, оператор if є складовим оператором, тобто від дозволяє розміщувати в його тілі нові оператори if або декілька дочірніх конструкцій elsif, при цьому, дочірня конструкція else може бути лише одна. Тіло оператора "закривається" словами end if.
Кожна умова є логічним виразом, тобто виразом, значення якого має тип boolean. При виконанні оператор if перевіряє кожну вкладену умову в тому порядку, як вони представлені в його тілі, допоки не буде знайдено першу умову із значенням true. Як тільки таку умову знайдено, виконання передається тому блоку послідовних операторів, який відповідає даній умові.
Оператор if повинен розташовуватись в підрозділі виконуваних операторів оператора process.
Оператор if може використовуватись для опису комбінаційних пристроїв. Наведемо приклад побудови однобітного чотириканального мультиплексора.
library ieee;
use ieee.std_logic_1164.all;
entity MX_4 is
port(S0, S1, A, B, C, D: in std_logic;
Z: out std_logic);
end MX_4;
architecture BEHAV of MX_4 is
begin
P1: process(S1, S0, A, B, C, D)
begin
if((not S1 and not S0)='1') then
Z <= A;
if((not S1 and S0)='1') then
Z <= B;
if((S1 and not S0)='1') then
Z <= C;
else
Z <= D;
end if;
end process P1;
end BEHAV;
1.3. Оператор вибору CASE
Оператор вибору case завжди виконує лише один блок послідовних операторів із декількох, які є в тілі оператора на основі значення задаючого виразу. Вибирається блок, у якого значення умови відповідає поточному значенню задаючого виразу. Оператор вибору case має наступний синтаксис:
case задаючий_вираз is
when значення_1 =>
блок_операторів1;
when значення_2 =>
блок_операторів2;
[when others => блок_операторів;]
end case;
Значення задаючого виразу повинно мати цілий або перечислювальний тип або бути одномірним масивом бітів. При виконанні оператор case порівнює поточне значення обчислюваного виразу з кожним вказаним в тілі оператора значенням. Коли значення які порівнюються тотожньо рівні, відбувається вибір відповідного блоку послідовних операторів. При написанні операторів case потрібно дотримуватись наступних правил:
- в одному операторі неможна вказувати два блоки з одинаковими значеннями вибору;
- якщо в операторі case відсутня конструкція when others, всі можливі значення задаючого виразу повинні бути представлені відповідними значеннями вибору.
Наведемо приклад проекту мультиплексора, який розглядався вище, з використанням оператора case.
library ieee;
use ieee.std_logic_1164.all;
entity MX_4 is
port(SEL: : in std_logic_vector(2 downto 1);
A, B, C, D: in std_logic;
Z: out std_logic);
end MX_4;
architecture BEHAV of MX_4 is
begin
PR_MX: process(SEL, A, B, C, D)
begin
case SEL is
when "00" => Z <= A;
when "01" => Z <= B;
when "10" => Z <= C;
when "11" => Z <= D;
when others => Z <= 'X';
end case;
end process PR_MX;
end BEHAV;
3. ЗАВДАННЯ
1. . Ознайомитись з теоретичними відомостями.
2. Ознайомитись з синтаксисом умовного оператора if і оператора вибору case.
3. Скласти і відкомпілювати програму на мові VHDL, яка моделює роботу тригера, вибраного відповідно до номеру варіанту (таблиця 1).
5. Промоделювати роботу даного пристрою в редакторі часових діаграм і отримати часові діаграми.
Таблиця 1
№ варіанту
Тип тригера
С
СE
Примітки
D
асинхронний
є
RS
синхронний 1
є
JK
синхронний 0
нема
T
синхронний 0
є
D
синхронний 1
є
RS
асинхронний
нема
JK
синхронний 1
є
T
асинхронний
нема
D
синхронний 0
нема
RS
синхронний 0
є
JK
асинхронний
нема
T
синхронний 1
є
4. ЗМІСТ ЗВІТУ*
1. Назва і мета роботи.
2. Теоретичні відомості, необхідні для написання програми на мові VHDL які описують роботу розробленого блоку чи вузла (рівняння, структурні схеми, тощо.), згідно із завдання лабораторної роботи або вимог викладача.
3. Програма на мові VHDL, яка описує роботу розробленого блоку чи вузла.
4. Часові діаграми роботи пристрою.
5. Короткі висновки за результатами роботи.
Література
1. Бабак В.П., Корченко А.Г., Тимошенко Н.П., Филоненко С.Ф. VHDL: Справочное пособие по основам язика. – М.: Издательский дом «Додэка-ХХІ», 2008. – 224 с.:ил.
2.
00
01
10
11
0
1
*
*
*
*
1
0
Навчальне видання
ПОВЕДІНКОВА ФОРМА ПРОЕКТА НА МОВІ VHDL.
ЯВНО ЗАДАНИЙ ОПЕРАТОР PROCESS.
УМОВНИЙ ОПЕРАТОР IF, ОПЕРАТОР ВИБОРУ CASE.
ІНСТРУКЦІЯ ДО ЛАБОРАТОРНОЇ РОБОТИ № 4
З КУРСУ “ КОМП’ЮТЕРНІ МЕТОДИ АНАЛІЗУ ТА ПРОЕКТУВАННЯ ЕЛЕКТРОННИХ ЗАСОБІВ”
та студентів спеціальностей:
7.160102 “Захист інформації з обмеженим доступом та автоматизація її обробки”, 7.160103 “Системи захисту від несанкціонованого доступу”, 7.160104 “Адміністративний менеджмент в сфері захисту інформації з обмеженим доступом”, 7.160105“Захист інформації і комп'ютерних системах і мережах”, 8.160102 “Захист інформації з обмеженим доступом та автоматизація її обробки”, 8.160103 “ Системи захисту від несанкціонованого доступу”, 8.160104 “Адміністративний менеджмент в сфері захисту інформації з обмеженим доступом”, 8.160105“Захист інформації і комп'ютерних системах і мережах”.
Укладачі: Горпенюк А.Я., к.т.н, доцент,
Будз Б.Д., асистент
Львів: Національний університет “Львівська політехніка”