Міністерство освіти і науки України
Національний Університет “Львівська Політехніка”
Кафедра безпеки інформаційних технологій
Лабораторна робота № 1
з дисципліни «Комп’ютерні методи аналізу та проектуванняелектронних засобів»
Ознайомлення з середовищем проектування Aldec Active-HDL,
моделювання та синтез простої схеми
Варіант 13
Мета роботи – вивчення підходу до створення комп’ютерних пристроїв в програмованих логічних інтегральних схемах з використанням технології проектування програмних моделей комп’ютерних пристроїв, ознайомлення з середовищем проектування програмних моделей комп’ютерних пристроїв Aldec Active-HDL і набуття навиків моделювання і функціональної симуляції простих електронних схем мовою VHDL у цьому середовищі.
Короткі теоретичні відомості
Назва мови VHDL є скороченням виразу «Very high speed integrated circuits Hardware Description Language», що можна перекласти як «мова опису апаратних засобів у високошвидісних інтегральних схемах». На даний час діє стандарт VHDL, який описаний в документі ІЕЕЕ 1076-2008 що є промисловим стандартом, який широко використовується для опису роботи цифрових систем.
Незважаючи на те, що мова VHDL нагадує мови програмування, вона має ряд важливих відмінностей, а саме:
програмні моделі комп’ютерних пристроїв, створені за допомогою мови VHDL, мають, як правило, ієрархічну структуру;
специфікації модулів VHDL-проектів можуть використовувати або математичні алгоритми, які описують їх роботу, або опис апаратної структури. В залежності від цього, опис модуля може мати поведінкову або структурну форму;
моделювання алгоритму роботи пристрою базується на принципі управління за подіями;
VHDL дозволяє виконувати моделювання паралельних процесів в електричних схемах цифрових пристроїв, здійснювати часовий аналіз сигналів і їх параметрів;
VHDL підтримується рядом інструментальних засобів і систем автоматизованого проектування (САПР), які можуть створювати надвеликі інтегральні схеми (НВІС) шляхом синтезу програмних моделей комп’ютерних пристроїв, представлених на цій мові, в програмовних логічних інтегральних схемах;
використовуючи VHDL, можна проектувати, моделювати і синтезувати в програмовних логічних інтегральних схемах практично будь-який комп’ютерний пристрій, від простої комбінаційної схеми до завершеної мікропроцесорної системи на НВІС.
Інтерфейс описує входи і виходи пристрою.
Архітектура описує будову пристрою. Архітектура може описувати будову пристрою на трьох рівнях:
Поведінковому, коли описується алгоритм роботи пристрою.
Структурному, коли описується структура пристрою на рівні його компонентів, які не є компонентами найнижчого рівня ієрархії, тобто містять вкладені компоненти.
Міжрегістрових передач, коли описується структура пристрою на рівні елементів цифрової комп’ютерної схемотехніки – регістрів, мультиплекcорів, демультиплекcорів, шифраторів, дешифраторів, суматорів, логічних елементів тощо.
Поведінковий рівень та рівень міжрегістрових передач використовують для опису пристрою та його компонентів на найнижчому рівні ієрархії, а структурний – для опису на вищих рівнях ієрархії, інтегруючи набір компонентів в один пристрій та описуючи зв’язки між компонентами.
Оператори мови поділяються на послідовні і паралельні. Паралельні оператори вводяться для того, щоб відобразити паралельність обчислювальних процесів, що виконуються всередині пристрою. Складні паралельні оператори можна описати у вигляді процесу. Процеси виконуються паралельно, а оператори всередині процесів – послідовно. За допомогою процесів описують елементи схеми, які можуть працювати одночасно. Кожен паралельний оператор можна вважати процесом.
Сигнали пов'язують між собою процеси. Вони є зовнішніми по відношенню до процесу, тобто процес може зчитувати сигнал і виводити значення в сигнал. Тому сигнали можна оголошувати тільки в області декларацій архітектури. Так само сигнали можуть зберігати значення, які необхідно передавати від одного процесу до іншого.
Змінні використовуються всередині паралельного оператора процесу і виконують в ньому функції сигналів. Вони не передають інформацію від одного процесу до іншого.
Атрибути – це значення (характеристики), пов'язані з будь-якими об'єктами мови, наприклад типами, сигналами, змінними і т.д.
Типи об'єктів описують множини значень, які можуть приймати об'єкти (сигнали, змінні), деякі загальні характеристики об’єктів, а також набори операцій, які можуть виконуватися над об'єктами.
Пакети – структури, в яких зберігаються декларативні описи різних функцій, процедур, компонентів, типів, констант і т.п.
Бібліотеки – набори пакетів, які підключаються до проектів.
Завдання
Ознайомитись з підходом до створення комп’ютерних пристроїв в програмовних логічних інтегральних схемах з використанням технології проектування програмних моделей комп’ютерних пристроїв.
Ознайомитись з основами проектування на мові VHDL і моделювання цифрових комп’ютерних пристроїв та їх елементів в САПР Active-HDL.
Вибрати варіант завдання згідно списку в журналі викладача.
Розробити і відкомпілювати в середовищі проектування Aldec Active-HDL програмну модель на мові VHDL заданої варіантом цифрової схеми.
Виконати функціональну симуляцію програмної моделі цифрової схеми і навести отримані часові діаграми.
Здійснити тестування програмної моделі цифрової схеми з використанням макрокоманд.
/
Код програми та часові діаграми роботи схеми
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity lab1 is
port(
s_inA : in STD_LOGIC_VECTOR(0 to 3);
s_inB : in STD_LOGIC_VECTOR(0 to 3);
s_p0 : in STD_LOGIC_VECTOR(0 to 3);
CLK : in STD_LOGIC;
RES : in STD_LOGIC;
s_outQ : out STD_LOGIC_VECTOR(0 to 3)
);
end lab1;
architecture lab1 of lab1 is
signal s_comp : std_logic_vector(0 to 2);
signal s_comp_add, s_sm, s_pi : STD_LOGIC_VECTOR(0 to 3);
signal tmp_jk : std_logic;
signal tmp_cp : integer;
begin
CP: process(tmp_cp)
begin
if (s_inA(0) > s_inB(0)) OR ((s_inA(0) = s_inB(0)) AND (s_inA(1) > s_inB(1))) OR ((s_inA(0) = s_inB(0)) AND (s_inA(1) = s_inB(1)) AND (s_inA(0) > s_inB(0))) OR ((s_inA(0) = s_inB(0)) AND (s_inA(1) = s_inB(1)) AND (s_inA(2) = s_inB(2)) AND (s_inA(3) > s_inB(3))) then
tmp_cp <= 2;
elsif (s_inA(0) = s_inB(0)) OR ((s_inA(0) = s_inB(0)) AND (s_inA(1) = s_inB(1))) OR ((s_inA(0) = s_inB(0)) AND (s_inA(1) = s_inB(1)) AND (s_inA(0) = s_inB(0))) OR ((s_inA(0) = s_inB(0)) AND (s_inA(1) = s_inB(1)) AND (s_inA(2) = s_inB(2)) AND (s_inA(3) = s_inB(3))) then
tmp_cp <= 1;
elsif (s_inA(0) < s_inB(0)) OR ((s_inA(0) = s_inB(0)) AND (s_inA(1) < s_inB(1))) OR ((s_inA(0) = s_inB(0)) AND (s_inA(1) = s_inB(1)) AND (s_inA(0) < s_inB(0))) OR ((s_inA(0) = s_inB(0)) AND (s_inA(1) = s_inB(1)) AND (s_inA(2) = s_inB(2)) AND (s_inA(3) < s_inB(3))) then
tmp_cp <= 0;
end if;
case (tmp_cp) is
when 2 => s_comp <= "001";
when 1 => s_comp <= "010";
when 0 => s_comp <= "100";
when others => s_comp <= (others => '0');
end case;
end process CP;
s_comp_add <= '0'&s_comp;
SM: process(s_inA, s_comp_add, s_pi, s_sm)
begin
for i in 0 to 3 loop
s_sm(i) <= s_p0(i) XOR s_inA(i) XOR s_comp_add(i);
s_pi(i) <= s_inA(i) AND s_comp_add(i) AND s_p0(i) AND (s_inA(i) XOR s_comp_add(i));
end loop;
end process SM;
process (tmp_jk, res)
begin
if RES = '1' then
tmp_jk <= '1';
elsif RES = '0' then
tmp_jk <= '0';
end if;
end process;
RG: process(s_sm, s_pi, clk)
begin
if Clk'event and Clk = '1' then -- rising clock edge
for k in 0 to 3 loop
if (s_sm(k) = '1') and (s_pi(k) = '0') then
s_outQ(k) <= '1';
elsif (s_sm(k) = '0') and (s_pi(k) = '1') then
s_outQ(k) <= '0';
elsif ((s_sm(k) = '1') and (s_pi(k) = '1')) or ((s_sm(k) = '0') and (s_pi(k) = '0')) then
s_outQ(k) <= NOT tmp_jk;
end if;
end loop;
end if;
end process RG;
end lab1;
/
Рис. 1. Результат функціональної симуляції заданої схеми.
Використання макромови Active-HDL
ASIM lab1 lab1
WAVE -in s_inA
WAVE -in s_inA(0)
WAVE -in s_inA(1)
WAVE -in s_inA(2)
WAVE -in s_inA(3)
WAVE -in s_inB
WAVE -in s_inB(0)
WAVE -in s_inB(1)
WAVE -in s_inB(2)
WAVE -in s_inB(3)
WAVE -in s_p0
WAVE -in s_p0(0)
WAVE -in s_p0(1)
WAVE -in s_p0(2)
WAVE -in s_p0(3)
WAVE -in CLK
WAVE -in RES
WAVE -out s_outQ
WAVE -out s_outQ(0)
WAVE -out s_outQ(1)
WAVE -out s_outQ(2)
WAVE -out s_outQ(3)
FORCE -freeze s_inA(0) 1 0 ns, 0 50 ns, 1 100 ns, 0 150 ns, 1 200 ns, 0 250 ns, 1 300 ns, 0 350 ns
FORCE -freeze s_inA(1) 0 0 ns, 1 50 ns, 0 100 ns, 1 150 ns, 0 200 ns, 1 250 ns, 0 300 ns, 1 350 ns
FORCE -freeze s_inA(2) 0 0 ns, 0 50 ns, 1 100 ns, 1 150 ns, 0 200 ns, 0 250 ns, 1 300 ns, 1 350 ns
FORCE -freeze s_inA(3) 1 0 ns, 0 50 ns, 1 100 ns, 0 150 ns, 1 200 ns, 0 250 ns, 1 300 ns, 0 350 ns
FORCE -freeze s_inB(0) 0 0 ns, 1 50 ns, 0 100 ns, 1 150 ns, 0 200 ns, 1 250 ns, 0 300 ns, 1 350 ns
FORCE -freeze s_inB(1) 0 0 ns, 0 50 ns, 1 100 ns, 1 150 ns, 0 200 ns, 0 250 ns, 1 300 ns, 1 350 ns
FORCE -freeze s_inB(2) 1 0 ns, 0 50 ns, 1 100 ns, 0 150 ns, 1 200 ns, 0 250 ns, 1 300 ns, 0 350 ns
FORCE -freeze s_inB(3) 0 0 ns, 1 50 ns, 0 100 ns, 1 150 ns, 0 200 ns, 1 250 ns, 0 300 ns, 1 350 ns
FORCE -freeze s_p0(0) 0 0 ns, 0 50 ns, 1 100 ns, 1 150 ns, 0 200 ns, 0 250 ns, 1 300 ns, 1 350 ns
FORCE -freeze s_p0(1) 1 0 ns, 0 50 ns, 1 100 ns, 0 150 ns, 1 200 ns, 0 250 ns, 1 300 ns, 0 350 ns
FORCE -freeze s_p0(2) 0 0 ns, 1 50 ns, 0 100 ns, 1 150 ns, 0 200 ns, 1 250 ns, 0 300 ns, 1 350 ns
FORCE -freeze s_p0(3) 0 0 ns, 0 50 ns, 1 100 ns, 1 150 ns, 0 200 ns, 0 250 ns, 1 300 ns, 1 350 ns
FORCE -freeze CLK 0 0 ns, 1 50 ns, 0 100 ns, 1 150 ns, 0 200 ns
FORCE -freeze RES 0 0 ns, 1 150 ns, 0 200 ns
RUN 400 ns
/
Рис. 2. Результат функціональної симуляції за допомогою макрокоманд.
Висновки
У ході цієї лабораторної роботи було вивчено підходи до створення комп’ютерних пристроїв у програмованих логічних інтегральних схемах з використанням технології проектування програмних моделей комп’ютерних пристроїв. Також ми ознайомилися із середовищем проектування програмних моделей комп’ютерних пристроїв Aldec Active-HDL і набули навиків моделювання і функціональної симуляції простих електронних схем мовою VHDL у цьому середовищі.