Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРМПП.doc
Скачиваний:
49
Добавлен:
07.02.2016
Размер:
8.14 Mб
Скачать

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 В головному меню САПР виберіть пункт ToolsCode2Graphics 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-програми і повторіть її перетворення в граф переходів.