Міністерство освіти і науки, молоді та спорту України
Національний університет «Львівська політехніка»
ІКТА
Кафедра ЗІ
З В І Т
до лабораторної роботи №4
з курсу:
“Комп’ютерні методи аналізу та проектування електронних засобів”
на тему:
“Поведінкова форма проекту на мові VHDL. Явно заданий оператор process”
Мета: ознайомитись з синтаксисом явно заданого оператора process. Реалізація тригерів за допомогою оператора умовної передачі керування if.
Теоретичні відомості
Явно заданий оператор process – це основна конструкція для поведінкової форми опису проектів, яка дозволяє використовувати в його тілі послідовні оператори мови для опису поведінки цифрового пристрою що проектується регістрового типу на деякому часовому інтервалі.
Синтаксис явно заданого оператора process() має наступний вигляд:
[мітка_процесу:] process [(список_чутливості)] [is]
[оператори_оголошень_процесу] –-Розділ оголошень.
begin -- Розділ виконуваних операторів.
end process [мітка_тому];
Оператор if відноситься до сімейства послідовних операторів, які розміщуються в розділі виконуваних операторів явно заданого оператора process. Цей оператор відповідальний за виконання того чи іншого блоку послідовних операторів, які розміщені в його тілі. Вибір для виконання конкретного блоку залежить від істинності одної або декількох умов. Синтаксис оператора if має наступний вигляд:
if умова1 then
блок_операторів1;
[elsif умова2 then
блок_операторів2;]
. . .
[else блок_операторів;]
end if;
Таблиця істинності мультиплексора
G
S1
S0
Z1
Z2
Z3
1
x
x
0
0
0
0
0
0
A1
A2
A3
0
0
1
B1
B2
B3
0
1
0
C1
C2
C3
0
1
1
D1
D2
D3
G – строб
Z1, Z2, Z3 – виводи
A1, B1, C1, D1, A2, B2, C2, D2, A3, B3, C3, D3 – вхідні лінії
S0, S1 – адресні лінії
Текст програми:
library ieee;
use ieee.std_logic_1164.all;
entity my is
port(S0, S1, G, A1, B1, C1, D1, A2, B2, C2, D2, A3, B3, C3, D3 : in std_logic;
Z1, Z2, Z3: out std_logic);
end my;
architecture behav of my is
begin
P1: process(S0, S1, G, A1, B1, C1, D1, A2, B2, C2, D2, A3, B3, C3, D3)
begin
if(G ='1') then
Z1 <= not G;
Z2 <= not G;
Z3 <= not G;
elsif((not S1 and not S0)='1') then
Z1 <= A1;
Z2 <= A2;
Z3 <= A3;
elsif((not S1 and S0)='1') then
Z1 <= B1;
Z2 <= B2;
Z3 <= B3;
elsif((S1 and not S0)='1') then
Z1 <= C1;
Z2 <= C2;
Z3 <= C3;
elsif((S1 and S0)='1') then
Z1 <= D1;
Z2 <= D2;
Z3 <= D3;
end if;
end process;
end behav;
Часові діаграми:
/
Висновок: в даній лабораторній роботі, я ознайомився з синтаксисом явно заданого оператора process, реалізував синхронний 3-розрядний мультиплексор за допомогою оператора умовної передачі керування if.