Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
кафедра ЗІ
З В І Т
до лабораторної роботи №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 – тригер зберігає попередній протилежний стан стан
CLEAR- система переходить в нульовий стан
С- тактова частота (при один система працює як JK тригер нуль – зберігає попередній стан)
Програма
library ieee;
use ieee.std_logic_1164.all;
entity JK is
port( J, K, Q , CLEAR, C: in std_logic; Qt: out std_logic);
end JK;
architecture BEHAV of JK is
begin
process(J, K, Q,CLEAR,C)
begin
if((J = '0') and (K = '0')and(CLEAR = '0')and(C = '0')) then
Qt <= Q;
elsif((J = '0') and (K = '1') and(CLEAR = '0')and(C = '0')) then
Qt <= Q;
elsif((J = '1') and (K = '0') and(CLEAR = '0')and(C = '0')) then
Qt <= Q;
elsif((J = '1') and (K = '1') and(CLEAR = '0')and(C = '0')) then
Qt <= Q;
elsif((J = '0') and (K = '0') and(CLEAR = '0')and(C = '1')) then
Qt <= Q;
elsif((J = '0') and (K = '1') and(CLEAR = '0')and(C = '1')) then
Qt <= '1';
elsif((j = '1') and (K = '0') and(CLEAR = '0')and(C = '1')) then
Qt <= '0';
elsif((J = '1') and (K = '1') and(CLEAR = '0')and(C = '1')) then
Qt <= Q;
elsif((J = '0') and (K = '0')and(CLEAR = '1')and(C = '0')) then
Qt <= '0';
elsif((J = '0') and (K = '1') and(CLEAR = '1')and(C = '0')) then
Qt <= '0';
elsif((J = '1') and (K = '0') and(CLEAR = '1')and(C = '0')) then
Qt <= '0';
elsif((J = '1') and (K = '1') and(CLEAR = '1')and(C = '0')) then
Qt <= '0';
elsif((J = '0') and (K = '0') and(CLEAR = '1')and(C = '1')) then
Qt <= '0';
elsif((J = '0') and (K = '1') and(CLEAR = '1')and(C = '1')) then
Qt <= '0';
elsif((J = '1') and (K = '0') and(CLEAR = '1')and(C = '1')) then
Qt <= '0';
elsif((J = '1') and (K = '1') and(CLEAR = '1')and(C = '1')) then
Qt <= '0';
end if;
end process;
end BEHAV;
Часові діаграми роботи тригера
Висновок: на даній лабораторній роботі я ознайомвся з синтаксисом явно заданого оператора process, з умовним оператором if та оператором вибору case , та здійснила реалізацію синхронного JK-тригера за допомогою оператора умовної передачі керування if.