- •К лабораторным работам
- •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 Контрольні запитання
- •Література
4.5 Побудова графу переходів
Далі наведені покрокові інструкції щодо створення моделі МПА Мура S1 і порядку її тестування.
4.5.1 За МФ ПСТ складіть опис автомата мовою VHDL. Наприклад, для МПА Мура S1, що розглядається, програма може мати наступний вигляд (листинг 4.1).
Листинг 4.1 – Файл MOORE.VHD
library IEEE;
use IEEE.std_logic_1164.all;
-- декларативна частина
entity Moore is
port (
X: in std_logic_vector (1 to 4); -- логічні умови
CLK: in STD_LOGIC; -- синхросигнал
RESET: in STD_LOGIC; -- скидання
y: out STD_LOGIC_VECTOR (1 to 6) ); -- мікрокоманда
end Moore;
-- виконавча частина
architecture automat of Moore is
type T_state is (a1, a2, a3, a4, a5, a6, a7, a8);
signal state: T_state;
begin
machine: process (CLK, RESET)
begin
if RESET = '1' then
state <= a1;
elsif CLK'event and CLK = '1' then
case state is
when a1 => -- стан a1
state <= a2;
when a2 => -- стан a2
if x(1) = '0' then
state <= a6;
elsif x(1) = '1' and x(2) = '1' then
state <= a3;
elsif x(1) = '1' and x(2) = '0' and x(3) = '1' then
state <= a4;
elsif x(1) = '1' and x(2) = '0' and x(3) = '0' then
state <= a2;
end if;
when a3 => -- стан a3
state <= a5;
when a4 => -- стан a4
if x(2) = '0' then
state <= a1;
elsif x(2) = '1' then
state <= a7;
end if;
when a5 => -- стан a5
if x(2) = '0' then
state <= a1;
elsif x(2) = '1' then
state <= a7;
end if;
when a6 => -- стан a6
if x(4) = '0' then
state <= a5;
elsif x(4) = '1' and x(1) = '0' then
state <= a8;
elsif x(4) = '1' and x(1) = '1' then
state <= a6;
end if;
when a7 => -- стан a7
state <= a8;
when a8 => -- стан a8
state <= a1;
when others => null;
end case;
end if;
end process;
-- формування мікрокоманд
y <= "101000" when (state = a2) else –- МК = y1y2 стан a2
"011000" when (state = a3) else –- МК = y2y3 стан a3
"000100" when (state = a4) else –- МК = y4 стан a4
"100100" when (state = a5) else -- МК = y1y4 стан a5
"010000" when (state = a6) else –- МК = y2 стан a6
"000010" when (state = a7) else –- МК = y5 стан a7
"000001" when (state = a8) else –- МК = y6 стан a8
"000000";
end automat;
Для мікрооперацій і логічних умов автомата звичайно використовують унітарне кодування. Наприклад, кожний розряд унітарного коду вектора y (див. листинг 4.1) відповідає окремій мікрооперації.
4.5.2 Запустіть САПР Active-HDL. В своєму робочому каталозі створіть робочий простір і проект з ім'ям MooreN, де N – номер індивідуального завдання. Наприклад, Moore2 – ім'я проекту автомата Мура, якщо N=2.
4.5.3 У вікні Design Browser оберіть піктограму Add New File (додати новий файл). У вікні, що з'явилося, виберіть режим VHDL Source File.
4.5.4 За допомогою редактора HDE введіть свою версію програми. Особливу увагу зверніть на умовні оператори, вкладені в оператор вибору. За допомогою них описуються функції переходів МПА. Ім'я сутності (entity) VHDL-проекту – Moore, ім'я опису архітектури (architecture) – automat.
4.5.5 Збережіть зміни у файлі VHDL-програми, натисніть кнопку Compile All, – виконайте компіляцію проекту. Якщо синтаксичних помилок в програмі немає, то у вікні Console з'явиться повідомлення "Compile success 0 Errors 0 Warnings ...". Якщо є помилки в програмі, то виправте їх і повторіть спробу ще раз.
4.5.6 В головному меню САПР виберіть пункт Tools→Code2Graphics Conversion Wizard. З'явиться вікно майстра перетворення тексту програми в граф переходів автомата (рис.4.7).
Рисунок 4.7 – Вікно Code2Graphics Conversion Wizard
4.5.7 В першому вікні оберіть режим "Generate diagram files and add them to current design" (синтезувати файли зображення і додати їх в поточний проект). Клацніть кнопку Next.
4.5.8 В наступному вікні клацніть кнопку Add (додати) і виберіть файл VHDL-програми. Ім'я цього файлу буде додано в список. Клацніть кнопку Finish.
4.5.9 У вікні Console з'явиться запрошення "CODE2GRAPHICS: Double click on this line to view generated log file" (для поглядання файлу звіту двічі клацніть на цьому рядку). Виконайте.
4.5.10 У файлі звіту знайдіть посилання "File ... has been successfully generated.". Клацніть на ньому. З'явиться результат роботи майстра Code2Graphics Conversion Wizard – граф переходів автомата Мура (рис.4.8).
Рисунок 4.8 – Результат роботи Code2Graphics Conversion Wizard
4.5.11 Перевірте граф переходів автомата Мура. Всім станам автомата повинні відповідати мікрокоманди. Граф переходів повинен містити всі гілки. Сигнал RESET повинен переводити автомат в початковий стан a1. Якщо є помилки, то виправте текст VHDL-програми і повторіть її перетворення в граф переходів.