Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
кафедра ЗІ
З В І Т
до лабораторної роботи №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.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!