Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
кафедра ЗІ
З В І Т
до лабораторної роботи №4
з курсу: «Комп’ютерні методи аналізу та проектування електронних засобів»
на тему: «Поведінкова форма проекту на мові VHDL. Явно заданий оператор PROCESS. Умовний оператор IF, оператор вибору CASE. »
Львів 2010
Мета роботи: ознайомитись з синтаксисом явно заданого оператора process. Реалізація тригерів за допомогою оператора умовної передачі керування if.
Короткі теоретичні відомості
Явно заданий оператор process – це основна конструкція для поведінкової форми опису проектів, яка дозволяє використовувати в його тілі послідовні оператори мови для опису поведінки цифрового пристрою що проектується регістрового типу на деякому часовому інтервалі.
Синтаксис явно заданого оператора process() має наступний вигляд:
[мітка_процесу:] process [(список_чутливості)] [is]
[оператори_оголошень_процесу] –-Розділ оголошень.
begin -- Розділ виконуваних операторів.
end process [мітка_тому];
Оператор if відноситься до сімейства послідовних операторів, які розміщуються в розділі виконуваних операторів явно заданого оператора process. Цей оператор відповідальний за виконання того чи іншого блоку послідовних операторів, які розміщені в його тілі. Вибір для виконання конкретного блоку залежить від істинності одної або декількох умов. Синтаксис оператора if має наступний вигляд:
if умова1 then
блок_операторів1;
[elsif умова2 then
блок_операторів2;]
. . .
[else блок_операторів;]
end if;
Асинхронний JK-тригер
Умовне позначення
Повна таблиця переходів JK-тригера
J
K
Q
Qt
0
0
0
0
0
0
1
1
0
1
0
0
0
1
1
0
1
0
0
1
1
0
1
1
1
1
0
1
1
1
1
0
Q – попередній стан
Qt- наступний стан
Якщо J=0, K=0 – тригер зберігає попередній стан
Якщо J=0, K=1 – тригер буде в нульовому стані
Якщо J=1, K=0 – тригер буде в одиничному стані
Якщо J=1, K=1 – тригер переходить в стан протилежний попередньому
Програма
library ieee;
use ieee.std_logic_1164.all;
entity JK is
port( J, K, Q: in std_logic; Qt: out std_logic);
end JK;
architecture BEHAV of JK is
begin
process(J, K, Q)
begin
if((J = '0') and (K = '0')) then
Qt <= Q;
elsif((J = '0') and (K = '1')) then
Qt <= '0';
elsif((J = '1') and (K = '0')) then
Qt <= '1';
elsif((J = '1') and (K = '1')) then
Qt <= (not Q);
end if;
end process;
end BEHAV;
Часові діаграми роботи тригера
Висновок: на даній лабораторній роботі я ознайомилася з синтаксисом явно заданого оператора process, з умовним оператором if та оператором вибору case , та здійснила реалізацію асинхронного JK-тригера за допомогою оператора умовної передачі керування if.