- •К лабораторным работам
- •1 Компьютерное моделирование с помощью ewb
- •1.1 Основные технические характеристики микросхем
- •1.2 Типы логики
- •1.3 «Стандартные» микросхемы
- •1.4 Семиотика «стандартных» микросхем
- •1.5 Микросхемы-аналоги
- •1.6 Техническая документация
- •1.7 Краткий англо-русский словарь терминов
- •2 Разработка испытательного стенда
- •3 Структурное моделирование с помощью сапр aldec active-hdl
- •4 Моделювання мікропрограмного автомата
- •4.1 Мікропрограмний автомат
- •4.2 Абстрактний автомат
- •4.3 Мова опису цифрових систем vhdl
- •4.4 Модель мікропрограмного автомату
- •4.5 Побудова графу переходів
- •X: in std_logic_vector (1 to 4); -- логічні умови
- •4.6 Моделювання роботи автомата
- •4.7 Отримання часових діаграм
- •4.8 Хід роботи
- •4.10 Контрольні запитання
- •5 Економічне кодування станів автомату
- •5.1 Структурний автомат
- •5.2 Тригери
- •5.3 Економічне кодування станів
- •5.4 Хід роботи
- •5.6 Контрольні запитання
- •6 Канонічний метод структурного синтезу
- •6.1 Кодована форма пст
- •6.2 Складання логічної схеми
- •6.3 Ціна логічної схеми за Квайном
- •6.4 Хід роботи
- •6.6 Контрольні запитання
- •7 Проектування мікропрограмного автомата
- •7.1 Реалізація автомату на плм
- •7.2 Хід роботи
- •7.4 Контрольні запитання
- •Література
7.2 Хід роботи
7.2.1 На основі КФ ПСТ складіть VHDL-проект. Він складається з трьох логічних файлів:
AUTOMAT.VHD – файл верхнього рівня, що включає всі основні компоненти керуючого автомата;
COMBINE.VHD – файл опису комбінаційної схеми;
MEMORY.VHD – файл опису пам'яті автомата;
На рис.7.3 показана ієрархія зв'язків між логічними файлами проекту. В листингах 7.1– 7.3 наведені тексти програм.
Рисунок 7.3 – Організація VHDL-проекту
Листинг 7.1 – Файл AUTOMAT.VHD
library IEEE;
use IEEE.std_logic_1164.all;
-- декларативна частина
entity AUTOMAT is
port (
CLK: in STD_LOGIC;
RESET: in STD_LOGIC;
x: in STD_LOGIC_VECTOR (1 to 4);
y: out STD_LOGIC_VECTOR (1 to 6)
);
end AUTOMAT;
-- виконавча частина
architecture AUTOMAT_BEH of AUTOMAT is
-- компоненти COMBINE і MEMORY
component COMBINE
port (
T: in STD_LOGIC_VECTOR (1 to 3);
D: out STD_LOGIC_VECTOR (1 to 3);
x: in STD_LOGIC_VECTOR (1 to 4);
y: out STD_LOGIC_VECTOR (1 to 6)
);
end component;
component MEMORY
port (
CLK : in STD_LOGIC;
RESET: in STD_LOGIC;
D : in STD_LOGIC_VECTOR (1 to 3);
T : out STD_LOGIC_VECTOR (1 to 3)
);
end component;
-- сигнали D і T
signal D : STD_LOGIC_VECTOR (1 to 3);
signal T : STD_LOGIC_VECTOR (1 to 3);
begin
-- правила підключення компонентів COMBINE і MEMORY
DD1 : COMBINE
port map (
T => T,
D => D,
x => x,
y => y
);
DD2 : MEMORY
port map (
CLK => CLK,
RESET => RESET,
T => T,
D => D
);
end AUTOMAT_BEH;
Листинг 7.2 – Файл COMBINE.VHD
library IEEE;
use IEEE.std_logic_1164.all;
-- декларативна частина
entity COMBINE is
port (
T: in STD_LOGIC_VECTOR (1 to 3);
x: in STD_LOGIC_VECTOR (1 to 4);
D: out STD_LOGIC_VECTOR (1 to 3);
y: out STD_LOGIC_VECTOR (1 to 6)
);
end COMBINE;
-- виконавча частина
architecture COMBINE_BEH of COMBINE is
begin
RUN: process (T, x)
begin
-- стан a1
if T = "000" then
D <= "001";
-- стан a2
elsif T = "001" and STD_LOGIC_VECTOR'(x(1) & x(2) & x(3)) = STD_LOGIC_VECTOR'("100") then
D <= "001";
elsif T = "001" and STD_LOGIC_VECTOR'(x(1) & x(2)) = STD_LOGIC_VECTOR'("11") then
D <= "100";
elsif T = "001" and STD_LOGIC_VECTOR'(x(1) & x(2) & x(3)) = STD_LOGIC_VECTOR'("101") then
D <= "101";
elsif T = "001" and x(1) = '0' then
D <= "011";
-- стан a3
elsif T = "100" then
D <= "010";
-- стан a4
elsif T = "101" and x(2) = '0' then
D <= "000";
elsif T = "101" and x(2) = '1' then
D <= "111";
-- стан a5
elsif T = "010" and x(2) = '0' then
D <= "000";
elsif T = "010" and x(2) = '1' then
D <= "111";
-- стан a6
elsif T = "011" and x(4) = '0' then
D <= "010";
elsif T = "011" and STD_LOGIC_VECTOR'(x(3) & x(4)) = STD_LOGIC_VECTOR'("11") then
D <= "011";
elsif T = "011" and STD_LOGIC_VECTOR'(x(3) & x(4)) = STD_LOGIC_VECTOR'("01") then
D <= "110";
-- стан a7
elsif T = "111" then
D <= "110";
-- стан a8
elsif T = "110" then
D <= "000";
end if;
end process;
-- формування мікрокоманд
y <= "000000" when T = "000" else -- стан a1
"101000" when T = "001" else -- стан a2
"011000" when T = "100" else -- стан a3
"000100" when T = "101" else -- стан a4
"100100" when T = "010" else -- стан a5
"010000" when T = "011" else -- стан a6
"000010" when T = "111" else -- стан a7
"000001" when T = "110" else -- стан a8
"000000";
end COMBINE_BEH;
Листинг 7.3 – Файл MEMORY.VHD
library IEEE;
use IEEE.std_logic_1164.all;
library ACT2;
use ACT2.components.all;
-- декларативна частина
entity MEMORY is
port (
CLK : in STD_LOGIC;
RESET: in STD_LOGIC;
D : in STD_LOGIC_VECTOR (1 to 3);
T : out STD_LOGIC_VECTOR (1 to 3)
);
end MEMORY;
-- виконавча частина
architecture MEMORY_BEH of MEMORY is
-- компоненти
for DD1 : DFC1B use entity ACT2.DFC1B;
for DD2 : DFC1B use entity ACT2.DFC1B;
for DD3 : DFC1B use entity ACT2.DFC1B;
begin
-- правила підключення компонента DFC1B
DD1 : DFC1B
port map (
CLK => CLK,
D => D(1),
Q => T(1),
CLR => RESET
);
-- правила підключення компонента DFC1B
DD2 : DFC1B
port map (
CLK => CLK,
D => D(2),
Q => T(2),
CLR => RESET
);
-- правила підключення компонента DFC1B
DD3 : DFC1B
port map (
CLK => CLK,
D => D(3),
Q => T(3),
CLR => RESET
);
end MEMORY_BEH;
Рекомендовані зміни програм:
Файл AUTOMAT.VHD – ширина шин D і T однакова. Вона дорівнює розрядності коду стану автомата.
Файл COMBINE.VHD – ширина шин D і T дорівнює розрядності коду стану автомата. Правила формування функцій збудження D і функцій виходу Y повинні відповідати КФ ПСТ.
Файл MEMORY.VHD – кількість компонентів - тригерів дорівнює розрядності коду стану автомата.
7.2.2 Запустіть САПР Active-HDL. В своєму робочому каталозі створіть робочий простір і проект з ім'ям LAB4N, де N – номер індивідуального завдання. Наприклад, LAB42 – ім'я проекту, якщо N = 2.
7.2.3 У вікні Design Browser виберіть піктограму Add New File (додати новий файл). У вікні, що з'явилося, виберіть режим VHDL Source File.
7.2.4 За допомогою редактора HDE додайте в проект свої версії файлів AUTOMAT.VHD, COMBINE.VHD і MEMORY.VHD.
7.2.6 У вікні Design Browser знайдіть піктограму опису об'єктів файлу AUTOMAT.VHD (AUTOMAT (AUTOMAT_BEH)). Клацніть правою кнопкою на ній і в контекстному меню виберіть команду Set as Top-Level.
7.2.7 Виконайте компіляцію проекту. Якщо будуть знайдені помилки, внесіть виправлення і повторіть компіляцію.
7.2.8 Збережіть зміни у файлі VHDL-програми і, натискуючи кнопку Compile All with File Reorder, виконайте компіляцію проекту, що відновлює ієрархію логічних файлів. Якщо синтаксичних помилок в програмі немає, то у вікні Console з'явиться повідомлення "Compile success 0 Errors 0 Warnings ...". Якщо є помилки, то виправте їх і спробуйте ще раз.
7.2.9 В головному меню САПР виберіть пункт Tools → Code2Graphics Conversion Wizard. З'явиться вікно майстра перетворення тексту програми в логічну схему пристрою (рис.1.7).
7.2.10 В першому вікні виберіть режим "Generate diagram files and add them to current design" (синтезувати файли зображення і додати їх в поточний проект). Клацніть кнопку Next.
7.2.11 В наступному вікні клацніть кнопку Add і, тримаючи натиснутою клавішу <SHIFT>, виберіть файли AUTOMAT.VHD і MEMORY.VHD. Імена цих файлів будуть додані в список. Клацніть кнопку Finish.
7.2.12 У вікні Design Browser поряд з вже існуючими файлами проекту повинні з'явитися файли AUTOMAT.BDE і MEMORY.BDE – логічні схеми відповідних компонентів.
7.2.13 Відкрийте ці файли (рис.7.4).
а – файл AUTOMAT.BDE; б – файл MEMORY.BDE
Рисунок 7.4 – Результат роботи майстра Code2Graphics Conversion Wizard
7.2.14 Перевірте логічні схеми. Якщо є помилки, то виправте текст VHDL-програм і повторіть запуск майстра Code2Graphics.
7.2.15 Складіть тестову послідовність вхідних сигналів і програму випробувального стенду (test bench). В якості зразка використовуйте файл MOORE_TB.VHD (листинг 1.2).
7.2.16 У вікні Design Browser знайдіть піктограму опису об'єктів файлу mooreN_tb.vhd (moore_tb (tb_architecture)). Клацніть правою кнопкою на ній і в контекстному меню виберіть команду Set as Top-Level.
7.2.17 Натиснувши кнопку Compile All with File Reorder, виконайте компіляцію проекту з налагодженням ієрархії логічних файлів. Якщо синтаксичних помилок в програмі нема, то у вікні Console з'явиться повідомлення "Compile success 0 Errors 0 Warnings ...". Якщо є помилки, то виправте їх і повторіть спробу ще раз.
7.2.18 Клацніть кнопку New Waveform. З'явиться вікно часової діаграми (ЧД), розділене на дві частини по горизонталі.
7.2.19 В лівій частині ЧД клацніть правою кнопкою миші і в контекстному меню виберіть команду Add signals (додати сигнали).
7.2.20 Додайте у ЧД сигнали x, CLK, RESET, у.
7.2.21 Виконайте компіляцію проекту. Якщо будуть знайдені помилки, внесіть виправлення і повторіть компіляцію.
7.2.22 В головному меню виберіть команду Simulation → Initialize Simulation (почати моделювання).
7.2.23 В комбінованому списку управління кроком моделювання встановіть величину кроку автоматного часу – 50ns.
7.2.24 Натискуючи кнопку <F5>, виконайте покрокове відлагодження. У вікні часових діаграм відображатимуться зміни сигналів.
7.2.25 Результати трасування повинні співпадати з тими, що були отримані під час виконання лабораторної роботи №1 (рис.1.11). Якщо поведінка автомата відрізняється від очікуваного, внесіть зміни в VHDL-проект і повторіть спробу.
7.2.26 Правильно працюючий VHDL-проект автомата покажіть викладачу.
7.3 Зміст звіту
Титульний лист з номером студентського квитка і варіанту індивідуального завдання. Мета роботи.
Мнемонічна і кодована форми структурної таблиці МПА Мілі.
Розрахунок параметрів проекту на ПЛМ(s,t,q).
Реалізація логічної схеми ШМК і ШНС на ПЛМ.
Текст VHDL-програм і ЧД результатів моделювання.
Висновки.